Spiel mit OpenGL in C schreiben


Granitehead

Advanced Member
Joined
Oct 16, 2009
Messages
3,011
Ich möchte mal mit grafischer (3D) Programmierung anfangen.
Jetzt habe ich aber noch ein paar Fragen, wie ich das am besten genau mache, so dass es dann auch mit möglichst wenig Aufwand auch auf Windows/Mac/der Pandora/... läuft.
Ich denke für 3D Spiele ist OpenGL auf jeden Fall das richtige, gibt's ja auch für viele Plattformen. Oder?
Dann geht's aber schon los. Was nehme ich da am besten für das Zeug drumrum (I/O, Menüs, Übersetzung)? Ich habe mir Glut für schon ein bisschen angeschaut, was meint ihr dazu?
Und obwohl es eher in Richtung Spiel geht, braucht es ein ziemlich viel UI Zeugs, also Menüs, Texteingaben, usw., kann man das mit Glut auch /komfortabel/ machen? (es /geht/ natürlich immer, aber solches Zeug würde ich gerne einer Lib überlassen, die das möglichst für mich macht).
Dann hätte ich nachher auch gerne die Möglichkeit das Spiel komfortabel zu übersetzen, was nimmt man dazu am besten, wenn es möglichst einfach portierbar sein soll?

Ich habe mir schon diverses Zeug angeschaut, aber ich finde es als Anfänger in dem Bereich so schwierig mich da zurechtzufinden, die Dokumentationen sind manchmal auch nicht so gut, oder ich finde sie vielleicht auch einfach nicht.
Da habe ich es mir jetzt erlaubt einen Thread für etwas zu öffnen, was ich zwar wahrscheinlich auch selbst herausfinden könnte, aber ewig dafür brauchte. Ich hoffe ihr nehmt mir das nicht übel. ;)
 
Man muss vor allem auch beachten, dass die Pandora "nur" OpenGL ES kann.
http://pandorawiki.org/OpenGL_ES_1.1_Tutorial
http://pandorawiki.org/Combining_OpenGL_ES_1.1_and_SDL_to_create_a_window_on_the_Pandora

Vile Erfolg, es gibt meiner Meinung nach viel zu wenig gute 3D Homebrew. ^^
 
Ah, schön, schön, SDL kann ich sogar schon mehr oder weniger (hab damit mal ein 2D Spiel angefangen zu programmieren, dann hatte ich irgendwann keine Lust mehr...), war nur nicht sicher ob das auch für so etwas gut ist (wieso eigentlich nicht :dash: ).

Okay, dann hätten wir jetzt Fenster und I/O.

Was noch bleibt, wäre Menüs, usw und Übersetzung (wobei Übersetzung weniger dringend ist).

Gibt's da irgendwas, was auf SDL/OpenGL aufbaut, was man nehmen könnte?
Es sollte natürlich vom Aussehen her dem Spiel angepasst werden können und es sollte leicht sein, in dem Fenster neben Buttons/Auswahllisten/Textfeldern/... auch noch mit OpenGL was anzuzeigen (beziehungsweise in dem eigentlichen Spiel drin noch Buttons/... anzuzeigen).

Und dann noch etwas, was ich vergessen habe, vorher, das Speichern der Levels. Ich habe da einige Sonderwünsche, die es erfüllen muss... Das Format ist im Prinzip ein riesiges 3D Array, in jedem Feld muss eine Zahl sein, die zwischen 0 und <keine Ahnung, nicht /allzu/ gross> ist. Ich könnte machen, dass die niedrigen Zahlen öfters vorkommen (in dem Mass, dass die ersten 20 Zahlen 80% aller ausmachen, je nach dem ein bisschen unterschiedlich, genau weiss ich es noch nicht), also wäre es praktisch, wenn nur Speicherplatz für die Anzahl Ziffern, die ich auch verwende, gebraucht würde. Es sollte auch nachträglich leicht in der Grösse geändert werden können.
Ich denke, das könnte ich schon irgendwie programmieren, das die halt alle in Dateien geschrieben werden - aber ich weiss nicht, wie man es von der Performance her am besten macht, wenn die Level richtig gross werden können? Könnt ihr mich da beraten?

@Fusi: Ich weiss, ich muss mir mal anschauen, wie die Unterschiede aussehen...
Vorerst lerne ich mal noch besser OpenGL, sobald meine Pandora da ist, schaue ich auch mal OpenGL ES genauer an. Ich werde sicher einen Port schreiben, ist fest eingeplant.
Es sei denn ich verliere vorher die Lust daran das Spiel zu programmieren, aber ich glaube (und hoffe) eher nicht...
 
^ Ich bin interessiert: Als was willst du deine Levels denn abspeichern? Massive Point Cloud Data, oder so? Für Datenkomprimierung gibts Sachen wie die zlib.
 
Schnatterplatsch said:
^ Ich bin interessiert: Als was willst du deine Levels denn abspeichern? Massive Point Cloud Data, oder so? Für Datenkomprimierung gibts Sachen wie die zlib.
Also ehrlich gesagt habe ich noch nie etwas von "Massive Point Cloud Data" gehört. :wub:

Hab eigentlich nicht so viel Ahnung davon, hatte einfach die Idee das so zu machen (und bei der Grundlegenden Art der Grafik bleibe ich, daher muss ich auch so ungefähr dabei bleiben). Ich dachte ich überlege mir was, probiere es aus, schaue wie gut es ist, und wenn ja nehme ich es. Sonst habe ich eigentlich keinen konrketen Plan.

Wie geschrieben, so ein Level wäre halt einfach ein 3D Array mit (für ein "normal" grosses Level) vielleicht 200x200x100 Werten (einfach Zahlen, drin, kann aber stark variieren.

Wie ich das genau speichern will, weiss ich eben noch nicht, ich dachte ihr könnt mich da beraten, wie man das am schlauesten speichert.
Spontan dachte ich da an eine (oder mehrere) Textdatei(en), in die ich das Zeug irgendwie speichere und dann halt vielleicht irgendwie komprimiere.
Für die ideale Grösse der Dateien würde ich Tests machen und vielleicht auch die Möglichkeit bieten je nach Computer unterschiedliche auszuwählen.

Aber für grössere Level wären diese Dateien riesig. Und ich möchte die Möglichkeit haben riesige Level zu machen. :)

Also bin ich für Verbesserungsvorschläge jederzeit offen. :)
 
boeseronkel2k said:
Ganz klassisch für den Anfang mit OpenGL sind ja die Lessons von Nehe Productions

Die haben auch dort Beispielcode für OpenGL und SDL
Ja, die kenne ich, sind relativ gut und du hast sie indirekt schon mal verlinkt (2. Post im Thread). ;)

Mit OpenGL komme ich zurecht.
Im Augenblick bin ich mehr beim Levelformat am überlegen, soll ja auch mindestens halbwegs effizient sein.
OpenGL finde ich super, geht relativ leicht, die Art der Grafik die ich anstrebe hat auch gerade den Vorteil, dass sie sehr leicht anzuzeigen ist. :)
 
Back
Top