Anfänger Fragen zu GUI's...


Miffy

Still Fresh
Joined
Jun 26, 2010
Messages
10
Hallo,
ich versuche gerade anhand einer praktischen Arbeit (ein kleines Quiz) C/C++ zu lernen, oder besser das bisher gelernte zu festigen. Nun verheddere ich mich immer weiter und werfe zuvor geplantes ständig über den Haufen und komme somit nicht richtig von der Stelle. Zwei zentrale Fragen die sich bei der Entwicklung des Spieles aufgetan haben und welche ich (trotz zum teil erheblichen Aufwandes) bisher nicht lösen konnte sind:

-auf der praktischen Ebene. Wie läuft das mit dem GUI in Spielen? Bastelt ihr die alle von Grund auf selber oder gibt es da empfehlenswerte libraries? Gerade mit Blick auf die Auswahl- und Einstellungsmenus verbrate ich da gerade viel Zeit und hab das Gefühl das da nix vernünftiges bei raus kommt. Da ich u.a. bisher auch keine Tips gefunden habe wie man so was vernünftig entwickelt.

-die eher philosophische Frage ist die nach der richtigen Sprache. "Alle" schreien immer OPP hier, C++ da. Aber das frisst doch riesig viel Ressourcen gegenüber prozeduraler Programmierung, oder? Gerade mit Blick auf die Leistungsaufnahme des Prozessors (und somit auf den Akku, bzw. dessen Laufzeit), sollte man doch eigentlich im Handheld-Bereich eher zu C tendieren. Besonders wenn es sich um eine kleine, gut überschaubare Anwendung handelt.

So das sind erstmal die Fragen die mich wohl zur zeit am meisten blockieren. Ja ich weiß nicht ob das für die Beantwortung wirklich wichtig ist, aber ich programmiere z.Z. unter Linux, C/C++ mit SDL und zwar für die Wiz oder wenn ich weiter so langsam bin wegen der obskuren Fragen in meinem Kopf wohl eher für den Cannoo...
Danke im Voraus.
 
Miffy said:
-auf der praktischen Ebene. Wie läuft das mit dem GUI in Spielen? Bastelt ihr die alle von Grund auf selber oder gibt es da empfehlenswerte libraries? Gerade mit Blick auf die Auswahl- und Einstellungsmenus verbrate ich da gerade viel Zeit und hab das Gefühl das da nix vernünftiges bei raus kommt. Da ich u.a. bisher auch keine Tips gefunden habe wie man so was vernünftig entwickelt.
Also ich hab's bis jetzt immer selber gebastelt, kenne auch keine gute Library für Spiele. Am besten ist, du machst es einfach total einfach! Wenn du für den Wiz/Caanoo programmierst, könntest ja einfach machen, dass man mit A, B, Y und X die Antworten auswählt. Auf dem Bildschirm ordnest sie dann am besten auch so an.
-die eher philosophische Frage ist die nach der richtigen Sprache. "Alle" schreien immer OPP hier, C++ da. Aber das frisst doch riesig viel Ressourcen gegenüber prozeduraler Programmierung, oder?
Nein, das ist kein Problem, auch auf einem Handheld. Nur einige OOP-Features brauchen etwas mehr Ressourcen (vtables, etc.), aber sowas ist vollkommen egal, das wird nie der Flaschenhals sein (sondern SDL, Sound, Partikel, Physik, etc.).
 
Als Bibliothek für die GUI könnte ich dir CEGUI ans Herz legen. Ich habs selber noch nicht genutzt, aber zum Bsp die Irrlicht-Engine nutzt CEGUI. Ist aber C++ und nutzt OpenGL, sollte aber auf dem Wiz laufen. Der unterstützt ja OpenGL soweit ich weiß.

http://www.cegui.org.uk/wiki/index.php/Main_Page
 
Nicht OpenGL, sonder nur OpenGL ES 1.1. Da müsstest du das ganze anpassen, könnte Probleme geben. Auf die schnelle hab ich dazu diesen Thread gefunden: http://www.cegui.org.uk/phpBB2/viewtopic.php?f=10&t=4171
Ich würd's lieber nicht machen, besonders wenn du bisher hauptsächlich SDL gemacht hast.
 
Tatsächlich, da hab ich mich ein wenig vertan ;) Wobei sich der Aufwand CEGUI nach ES1.1 zu porten in Grenzen halten sollte. Vorausgesetzt, CEGUI wurde so entwickelt, das GL Funktionen genutzt werden, die auch in ES implementiert sind. ES ist ja theoretisch nur ne abgespeckte Version vom GL, soweit ich das in Erinnerung habe.

Aber mit SDL kann man ja auch schnell mal ne kleine GUI für das Menü und nen HUD basteln. Brauch ja nicht mega professionell mit Design-Pattern geamcht werden ;) Einfach ne Klasse für Buttons erstellen, diese enthält halt einen Zustand für Ausgewählt und Nicht-Ausgewählt (Jeweils ne andere Grafik für jeden Zustand). Diese erzeugten Buttons in nen Array oder eine Liste, etc. Und dann je nach Eingabe einen bestimmten Button auf den Zustand "Ausgewählt" setzen und die anderen auf "Nicht-Ausgewählt".
Dann kann man jedem Button noch ne Funktion zuweisen, die zB beim drücken von "A" ausgeführt wird. Zum Bsp ne if-Abfrage.
Code:
Pseudo-Code:
Falls (Button 1 ausgewählt und A gedrückt wurde)
dann { starte das Spiel }

Das State-Pattern wäre, wenn du dich weiter an OOP ran wagst wohl die beste Lösung für ein Menü ;)
 
Hey...
danke danke für die Antworten. CEGUI hatte ich mir vor kurzem auch schon mal angeschaut, aber das dann auch noch umstricken ist wohl noch lange nix für mich. Nun das ich über Klassen für die einzelnen Bedienelemente ran gehe hab ich mir auch schon gedacht. Da war/ist nur mein zweifel wegen mit der OOP. Ich muss zugeben ich bin da immer noch verunsichert. Nur müsste mir wohl erstmal die Quelle wieder einfallen wo ich das mit dem Energiebedarf von C++ im Vergleich zu C her habe...
Nun ja erstmal danke soweit ich frickel dann einfach weiter vor mich hin, mal sehen was bei raus kommt.

-- Mo Jul 26, 2010 18:18 --

ich hab's: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.12.6227&rep=rep1&type=pdf
 
Back
Top