OpenGL, DirectX, SDL? Was nehmen als Neuling?
-
Hallo Leute,
ich studiere Informatik und möchte für ein kleines Projekt ein eigenes Spiel entwickeln. Es soll eine Art einarmiger Bandit werden (also 3 Walzen die sich drehen und auf Tastendruck langsam stehen bleiben), der alle Daten permanent auf einem Netzwerkserver (zur Sicherheit) hinterlegt.Da ich noch nicht sehr tief in C++ eingedrungen bin, hoffe ich hier Rat zu finden. Bisher habe ich ein paar Konsolenanwedungen geschrieben, aber noch nichts umfangreiches. Die Netzwerkprogrammierung macht mir nicht so die Sorgen, da ich die einigermaßen von Java her behersche.
Bevor ich mich nun aber gänzlich auf das Projekt einlasse möchte ich vorher wissen ob ich den Grafikteil eingermaßen hinbekommen kann. Nach ein wenig Recherche ist mir aufgefallen, dass anscheinend 3 Techniken weit verbreitet sind: OpenGL, Direct X und SDL. So nun weiß ich aber gar nicht auf was ich mich fixieren soll. Kriterien für mich sind das sich besagte Schnittstelle relativ einfach und schnell erlernen lässt und das man damit ganz passable 3D Effekte machen kann. Muss jetzt nicht eine mega Engine programmieren, aber ein paar schöne Animation möchte ich dem ganzen schon hinzufügen (etwa ein überstrahlen wenn man 3 gleiche Symbole hat oder das man sieht wie man den Hebel zieht).
Was könnt ihr mir empfehlen? Schön wären vielleicht auch ein paar Buch oder Turtorien Tipps.
Vielen Dank schon mal.
Gruß
Groove
-
sowohl mit opengl als auch directx ginge das gleichermassen gut.
fuer opengl: http://nehe.gamedev.net/
fuer direct3D: nimm die doku aus dem sdk, da steht alles noetige drinnen.
-
najo, so richtig 3D soll es also doch nicht werden, da ja der blickwinkel nicht verändert wird... in solchen fällen ist das wahrscheinlich einfacher, die ein paar 3D-Animationen vorzuberechnen und als ein filmchen bzw. animiertes sprite abzuspeichern, und in sdl dann wieder zusammenzusetzen, sodass eben ein 3D-eindruck entsteht... Kenn mich mit der SDL-bibliothek zwar überhaupt nicht aus, aber ich bin mir sicher, dass es kein riesenproblem sein wird. Ein schönes bild (bzw "film") von so einem einarmigen banditen aufzutreiben ist imho schwieriger... Das ganze ist ja an sich ein recht komplexes modell, es irgendwie zu fotographieren ist doof, und so ein modell mit irgendeinem CAD programm zu erzeugen ist auch keine sache von 5 minuten.
frage: muss es denn c++ sein? Das ist nähmlich eine aufgabenstellung, die richtig danach schreit, als flash-filmchen gelöst zu werden.
Denn der meiste programmieraufwand liegt dann wohl bei der netzwerk-geschichte, und die mathematik/physik/irgendwelche komplexe datenstrukturen/irgendwelche interessante algorithmen/anwendung von OOP sind ja in dem beispiel nicht vorhanden...
drei mal eine zufallszahl zu erzeugen ist an sich keine wirklich spannende aufgabe, also, imho ist es einfach langweilig... Da lohnt es sich gar nicht wirklich, sich dafür irgendeine grafikbibliotek anzuschauen... Wie wärs denn mit etwas spannenderen, zum beispiel ein billiard online spielchen, oder virtueller minigolf turnier oder irgendsowas in der art?

-
Der gepostete Link zur OpenGL ist wirklich gut, ich werde mich damit mal auseinander setzen, aber beim ersten Querlesen scheint das echt viel versprechend zu sein.
Danke schonmal.
@Andrey
Das Projekt dient zum warm werden. Am Ende wird das ganze auf 9 Walzen erhöht die in einer 3x3 Matrix angeordnet sind. Dann können alle belibigen 3er Reihen gewinnen, also z.B. die Diagonale, das wird statistisch schon anspruchsvoller. Vor allem soll die Gewinnwahrschenilichkeit nicht über 49% liegen. Die Datenhaltung der Ergbnisse muss gegen Stromausfall zu jeder Zeit gesichert sein, also es muss quasi jede Sekunde ein komplett Backup auf mehreren Servern gespeichert werden - nicht sonderlich komplex, aber es muss alles sehr schnell gehen.
Ich habe gelernt in kleinen Happen zu essen. Erstmal ne Basis schaffen und überhaupt was hinbekommen. Der nächste große Happen wird die Mathematik.
Die Grafik ist deshalb so wichtig, da sie den Spieler schon zum weiterspielen animieren soll und ehrlich gesagt finde ich Flashspielchen oder Videoanimation nicht sonderlich antreibend. Ausserdem müsste ich auch erst Flash lernen und da ich schon gerne mich weiter in C++ vertiefen möchte, wäre es mir unzuträglich.
Trotzdem danke für die Vorschläge.
-
Wenn du keinen Stress mit komplizierten "betriebssystemnahen" APIs zur Nachrichtenverwaltung und Fenstererstellung haben willst, nimm SDL (für die Fenstererstellung) und OpenGL (für 3D).
auf libsdl.org sind einige gute SDL Tutorials zu finden
-
Also ich fang auch erst seit kurzem mit 2D und 3D Grafiken an und bin recht zu frienden mit meiner IrrlichtEngine

Da kann man sich nämlich aussuchen ob man OpenGL, Direct3D 9, Direct3D 8, Software Rendering oder noch was anderes nimmt.

Ist auch eigentlich relativ leicht ein kleines Beispiel zu verstehen und selber was draus zu machen.
Fazit: ich kann die IrrlichtEngine nur weiter empfehlen
IrrlichtEngine: http://irrlicht.sourceforge.net/
Gruß LukasBanana
(PS: Falls ich Blödsinn gelabert habe liegt`s vielleicht daran dass ich mir eure ganzen langen Beiträge nicht durchgelesen habe ^^)
-
Mmh...wäre so eine Engine überhaupt praktikabel für mein Problem? Ich habe nicht so die Ahnung davon.
-
LukasBanana schrieb:
nähmlich
Da war doch was ...

@GrooveXT:
Ich glaube nicht, dass eine Engine dafür angebracht ist. Das was du da beschreibst kannst du ohne viel Aufwand direkt mit OpenGL schreiben. Die Modelle sind trivial genug von Hand im Programmtext geschrieben zu werden und Texturen laden bekommt man auch recht gut hin.Ich möchte übrigens auch hier nochmal auf glfw verweisen. Das ist ein ziemliches Leichtgewicht und bietet für einfache Anwendungen alles was du brauchst (Tastatureingaben, Texturen aus TIFF-Dateien laden).
-
als blutiger anfänger würde ich SDL empfehlen außer du willst nur wegen
der grafikausgaben seitenweise code schreiben