3D Punkte in Qt

Du hast eine Idee für ein Projekt?
Antworten
Pygoscelis papua
User
Beiträge: 206
Registriert: Freitag 13. März 2015, 18:36

Hallo,
Wir haben in diesem Halbjahr in Informatik ein Programm nach eigenem belieben zu Programmieren,
ich habe mich dabei für ein Weltraumstrategiespiel ähnlich zu konquest (https://games.kde.org/game.php?game=konquest) Programmieren, allerdings 3-Dimensional.
Dabei geht es ja letztendlich nur darum die Punkte der Planeten anzuzeigen, (und dann dort ein Bild für den Planeten platzieren)
und dann das Feld zu drehen/bewegen etc. um alle Planeten Auswählen bzw. sehen zu können.

Als Gui wollte ich Qt5 verwenden, für die api python3

Jetzt besteht die Frage ob man das 3Dimensionale leicht selbst programmieren könnte (da es sich ja nur um Punkte und nicht Flächen handelt), oder doch eher OpenGl verwenden sollte, was wenn ich das recht sehe einiges an Einarbeitung erfordert.
import this
hidden python features

JAVA = Just Another Vulnerability Announcement :D
BlackJack

@Pygoscelis papua: Ich würde wahrscheinlich weder Qt noch OpenGL verwenden sondern eine Game Engine/Bibliothek die für 3D-”GUIs” ausgelegt ist. Qt ist nicht 3D und OpenGL ist nicht die API die man als Anwendungsentwickler gerne haben möchte.

Was ist an Deinem Spiel denn anders gegenüber Konquest, so das 3D Sinn macht?
Pygoscelis papua
User
Beiträge: 206
Registriert: Freitag 13. März 2015, 18:36

Also eigentlich war Konquest nur so der Anfang für die Idee des Spiels,
es sollen noch etliche Features eingebaut werden die bei Konquest nicht vorhanden sind
und da fand ich es einfach interessant es 3-Dimensional zu machen.

Welche Engine würdet ihr denn verwenden?
Letztendlich geht es ja halt echt nur um Punkte ich habe jetzt auch nicht wirklich lust darauf die Planeten noch mir Blender etc. Als Modelle zu erstellen,
da ich diese auch einfach als Bilder darstellen könnte, die sich dann halt nicht drehen, sondern von allen Blickwinkeln gleich aussehen.

Letztendlich glaube ich von der Mathematik her zu wissen wie man das macht (drehen, perspektive ...), das könnte ich auch in Qt umsetzten.
Ich empfand Qt für sinnvoll, da ich bei dem Spiel nicht nur den Spielplan brauchen werden sondern auch z.B. eine Kommandozeile (einfaches inputfeld) oder eine Menüleiste.

Die Frage ist letztendlich nur, ob das die Rechengeschwindigkeit deutlich verlangsamen würde, da ich vielleicht nicht 100% effizienten code für das drehen schreibe, bzw. Qt dafür nicht optimiert ist.
Letztendlich wird sich da von Objekten nichts groß bewegen, außer am Rundenbeginn.
import this
hidden python features

JAVA = Just Another Vulnerability Announcement :D
BlackJack

@Pygoscelis papua: Also wenn das einfach nur ein Gimmick ohne echte Funktionalität ist, würde ich das zurückstellen und das Halbjahr eher für *echte* Funktionalität verwenden, statt Zeit in eine Pseudo-3D-Ansicht auf Daten zu versenken, die vom Spiel her letztlich doch nur 2D sind oder zumindest ohne Verlust in 2D dargestellt werden können. Auch wenn dieser Teilaspekt mehr Spass macht und wahrscheinlich auch ganz nett aussieht, ein spielbares Ergebnis mit einer 2D-Karte dürfte wichtiger sein als eine schicke 3D-Ansicht für ein unfertiges, vielleicht sogar nicht einmal spielbares Spiel zu haben.

Bei solchen Projekten macht es Sinn sich Meilensteine zu setzen und in die ersten Meilensteine die Anforderungen zu packen die minimal erfüllt werden müssen, damit man das Projekt als ”fertig” bezeichnen kann. Und die sollte man dann so terminieren das sie *nicht* die gesamte Projektlaufzeit ausfüllen. Man sollte die Planung so gestalten, dass man deutlich früher fertig ist, denn erfahrungsgemäss ist man das in der Realität dann nämlich *nicht*. Nach den Meilensteinen für die Minimalanforderungen kann man dann beliebige Zusätze, Ideen, und so weiter in weitere Meilensteine packen, falls am Ende noch Zeit für so etwas ist.
Pygoscelis papua
User
Beiträge: 206
Registriert: Freitag 13. März 2015, 18:36

Also im Moment denke ich habe ich noch genug zeit,
ich habe das Spiel auch in 2d schon mal so weit programmiert, das man es spielen konnte,
dann allerdings wieder weggelegt.
Wenn ich das jetzt mir so anschaue denke ich, es geht zwar aber ist ziemlich schlechter code
was Namensgebung und pep8 etc. :D

Deshalb bin ich gerade dabei die API neu zu schreiben und frage mich jetzt halt, ob ich gleich die Koordinaten 3D wählen sollte
oder halt 2D da ich nicht weiß wie leicht das im Nachhinein noch änderbar ist, wenn ich es nicht gleich am Anfang in Erwägung ziehe ...

Ich möchte jetzt auch nicht irgendwelchen Schrott schreiben den ich dan am Ende doch wieder wegwerfe, weil es zu langweilig ist,
ich überlege halt auch ob ich es später veröffentliche über GitHub etc.
Ich glaube auf die Zensur wird sich das auch nicht so sehr auswirken da so ein Spiel eh nicht erwartet wird... erwartet werden eher
einfachere Spiele :)
import this
hidden python features

JAVA = Just Another Vulnerability Announcement :D
BlackJack

@Pygoscelis papua: Wie gesagt, das mit dem Abschätzen von Zeit(bedarf) kann sehr leicht daneben gehen. Ich würde da eher auf Nummer sicher gehen.

Was hat denn die 3. Komponente für die Koordinate(n) für eine Bedeutung? Ausser für die Anzeige? Da bräuchte man am Ende nur eine zusätzliche Komponente die vom gesamten Code ausser der Anzeige einfach ignoriert werden kann. Bei 3D würde ich umgekehrt auch Code für 2D-Karten einbauen, denn 3D mag hübsch anzusehen sein, aber für die Bedienung ist eine 2D-Karte in der Regel praktischer und leichter bedienbar weil auf die wesentlichen Informationen abstrahiert wird und auf einem 2D-Bildschirm mit auf 2D abgestimmten Eingabegeräten abgebildet wird. Zudem ist so eine Planetenkarte auch real eher 2D. 3D wird da nur interessant wenn Du die Dimensionen auch tatsächlich *verwendest*. Also zum Beispiel die Planetenlaufbahnen mit tatsächlichen 3D Flugbahnen kombinierst wo die Konstellationen, Gravitationen, usw. berücksichtigt werden und die Flüge dann animiert angezeigt werden. *Das* ist dann allerdings recht Arbeitsintensiv (für den Programmierer) und wäre wahrscheinlich auch ohne Spiel schon ein vollwertiges Projekt.

Egal ob einfaches oder komplexeres Spiel, ich denke es wird ein spielbares Spiel erwartet. Darauf würde ich mich auch erst einmal konzentrieren. Wenn Du sagst, das wäre schnell umgesetzt, dann um so besser. *Dann* kannst Du ja problemlos einen Meilenstein für eine 3D-Anzeige hinterherschieben.
Pygoscelis papua
User
Beiträge: 206
Registriert: Freitag 13. März 2015, 18:36

Ok klar ich mach mich erstmal an die API in 2d, auch wenn es 3d witziger wäre ...
BlackJack hat geschrieben:Also zum Beispiel die Planetenlaufbahnen mit tatsächlichen 3D Flugbahnen kombinierst wo die Konstellationen, Gravitationen, usw. berücksichtigt werden und die Flüge dann animiert angezeigt werden. *Das* ist dann allerdings recht Arbeitsintensiv (für den Programmierer) und wäre wahrscheinlich auch ohne Spiel schon ein vollwertiges Projekt.
Gar keine schlechte idee mit den Planetenlaufbahnen :). Nein aber ich werde es wohl nicht einbauen ... vieleicht in 5 Jahren oder so in Physik hatten wir das Thema schon :)

Ok Vielen Dank für die schnellen Antworten BlackJack!
import this
hidden python features

JAVA = Just Another Vulnerability Announcement :D
Antworten