# Suche GUI-Bibliothek welche mit C++ verwendet werden kann



## DJPX (20. Februar 2020)

Hallo,
Ein paar Studienkollegen möchen nochmal kurz bevor wir nun alle unseren Bachelore haben einen letztes Projekt zusammen machen. Unsere Entscheidung ist auf ein einfaches Spiel in 2D welches wir gerne entwickeln möchten dafür brauchen wir noch eine Bibliotek um die Grafischeoberfläche. Nun sind wir gerade dabei Ideen zusammel vielleicht hat jemand hier auch schon gemacht und möchte hier seine Erfahrungen teilen.
Vielen Dank schon mal im vorraus.


----------



## Malkolm (20. Februar 2020)

Qt ist sehr beliebt.


----------



## DJPX (20. Februar 2020)

Ja das hatten wir auch schon mal im Gespräch, aber ist es damit auch möglich Spiele mit Höherer Framerate umzusetzen oder ist das eher nur für einfache GUIs für normale Programme gedacht? (Wir hatte auch schon QT mit QML in die  Liste der zu eva*lu*ie*ren Techniken aufgenommen aber sind uns da auch noch nicht sicher ob das damit funktinoiert)

// Edit haben jetzt QT evaluiert und es ist ungeeignet für unser Projekt (man kann leider nicht alles so Einstellen wie wir es brauchen) wir haben und jetzt vorläufig erst mal auf SDL entschieden das dies bisher als einziges GUI Framework am besten alle Kriterien abdeckt


----------



## kaepteniglo (24. Februar 2020)

Die Unity Engine schon mal angeschaut? Oder Unreal Engine? 

Gesendet von meinem SM-G950F mit Tapatalk


----------



## fisch@namenssuche (25. Februar 2020)

DJPX schrieb:


> Unsere Entscheidung ist auf ein einfaches Spiel in 2D welches wir gerne entwickeln möchten dafür brauchen wir noch eine Bibliotek um die Grafischeoberfläche


Unity


----------



## Freddycbv (25. Februar 2020)

Da schon Unity vorgeschlagen wurde, das auf C# aufsetzt, möchte ich gerne noch MonoGame empfehlen. 
MonoGame ist deutlich simpler; man kann Audio abspielen, den User Input abfragen, und Texturen (sowie Shader) auf den Bildschirm zeichnen. Im Prinzip haben die meisten eigenen Klassen dann eine Update Funktion für die Spiellogik, sowie eine Draw Funktion, die vorgibt, welche Textur wo gezeichnet werden soll.
Der Vorteil ist, dass man nicht viel lernen muss, um alle Funktionalitäten des Spieles realisieren zu können, das ist aber auch der Nachteil, dass es keine vollwertige Spieleengine ist, und man erweiterte Funktionen wie Physik, Animationen, und auch GUI Elemente selbst designen muss.
Ein Button wäre zB eine Klasse, die eine Hintergrundtextur mit etwas Text zeichnet, und in einer Update() Funktion überprüft, ob darauf geklickt wurde. 
Ich kann MonoGame wirklich sehr empfehlen, es ist sehr einfach, man hat die volle Kontrolle, es läuft auf Windows, Linux, Konsolen und Handys, und bei unserem 2D Spiel war es mehr als performant genug, es lief auf zB auf einem Intel Atom auf integrierter Grafik mit 60FPS. 
Dafür gibt es zwar dann ein paar Kniffe (wie zB in Draw() Funktionen die Zeichenaufufe nicht direkt an die Grafikkarte senden lassen, sondern pro Frame nur ein, bzw wenige Male, gebündelt in einem sogenannten SpriteBatch).
Es wird auch von viele Spielen wie zB. Stardew Valley oder Bastion, benutzt.
Ah, und keine Angst vor C#, es ist von der Syntax sehr ähnlich zu C++, etwas wie Java, und ist unter Visual Studio sehr angenehm zu Entwickeln. Man kann zB beim Debuggen Code verändern, der dann direkt in das laufende Spiel übernommen wird.

Das ist dann aber auch Werbung genug, ich lass noch ein paar Links da:
MonoGame Wiki
MonoGame Download
XNA Referenz (MonoGame ist eine OpenSource Implementation der XNA API, wenn man Fragen hat, findet man unter zB. "SpriteBatch XNA" meist mehr wie mit "SpriteBatch MonoGame", die Lösungen lassen sich aber 1 zu 1 übertragen.


----------



## DJPX (26. Februar 2020)

kaepteniglo schrieb:


> Die Unity Engine schon mal angeschaut? Oder Unreal Engine?
> 
> Gesendet von meinem SM-G950F mit Tapatalk



Ja haben wir beide schon ageschaut. Das Problem an Unreal Engine ist leider, dass die Unreal Engine nicht gut für 2D Spiele geeignet ist.
Und Unity und Unreal sind generell mit sehr viel Funktionen überladen . Unity hat auch noch den entscheidenden Nachteil das der Sourcecode zwar jetzt auf öffentlich einsehbar ist aber nicht modifizert werden darf wie bei der Unreal Engine. 
Das Ziel das Projktes ist auch möglichst viel Opensource und falls es nicht anders geht das der Code trotzdem vorhanden ist und modifiziert werden kann. (und Unity unt stützt C++ nicht richtig)

Natürlich sobald man auf 3D Ebene geht macht natürlich so eine Engine(-editor) wie Unreal oder Unity mehr Sinn aber mit einer Gui Biliotek bzw Framework haben wir den Vorteil das wir noch sehr offen sind und die Engine mit unserem Spiel wachsen kann .


----------



## bockwurst90 (29. Februar 2020)

GitHub - google/flatui: Efficient Immediate Mode UI for Games


----------

