S
Hallo, ich bin glaub ich neu hier und will daher erst einmal etwas über mich sagen, damit eventuelle Antworten nicht auf einem zu hohen Niveau kommen.
Nachdem ich nun einige C++-Bücher gelesen habe, und OOP halbwegs verstanden habe, wollte ich mich nun endlich an eine eigene Engine machen.
Zumindest an eine kleine, um das gelernte anzuwenden und vorallem neues zu lernen.
Mir ist klar, dass das nicht alles so einfach geht, grade weil ich von OpenGL (was ich ausgewählt habe) noch keine und von Mathe nicht viel (halt nichts von Vektoren und Matrizen, bin in der 9. Klasse...) Ahnung habe.
Nunja, ich habe also die Vorstellung, vor dem ganzen anderen Kram eine Terrainengine zu implementieren, und mitlerweile hab ich (unter enormer Zuhilfenahme von Beispielcode aus Tutorials :D) immerhin erstmal ein Fenster mit variabler Auflösung erstellt, Kameracode eingebastelt, so dass ich durch leeren Raum laufen kann, und 2dFont-Code von Gametutorials.com in eine Klasse gewrappt.
Meine erste Frage ist nun allgemeinerer Natur:
Schon etwas enttäuscht stelle ich überall in Tutorials und Quelltexten (außer in fertigen Engines) fest, dass intensiv von C Gebrauch gemacht wird, aber so gut wie keiner von C++. Ich hab mir erst gedacht, dass ich das dann halt alles selbst umschreibe, aber dabei fällt mir immer mehr auf, dass es dabei nur umständlicher wird, oder sogar unlösbare (zumindest für mich) Probleme auftreten! Ich scheine was OOP betrifft noch nicht sicher genug zu sein, aber ich weiß wirklich nicht, wie man die gefürchteten globalen Variablen, von denen sich bei mir immer mehr anhäufen, ersetzen sollte, ohne gleichzeitig den 100fachen Speicherplatz zu benötigen!
Also endlich zur Frage: Ist es üblich Spiele größtenteils in C zu schreiben, globale Variablen zu verwenden und so weiter, um sich den Code zu vereinfachen und die Performance zu erhöhen, und ist dies nicht verurteilenswert?
Und nun Fragen zur Threadüberschrift:
Meine Todoliste sieht so aus:
-einfache LOD-Algorithmen einbauen
-Beleuchtung oder sowas
-Heightmaps laden können (werden im Moment noch mit sin und cos generiert)
-Camera mit Kollisionsabfrage ausrüsten um auf Landschaft laufen zu können
-einfache Texturierung
-Schatten
-verbesserter LOD-Algorithmus mit Geomorphing
-Multitexturing oder sowas (hab was von Splatting gehört)
Im Moment befinde ich mich beim ersten Punkt, und ich hoffe dass ich das mit Tutorials selbst bewerkstelligen kann. Aber: Der nächste bereitet mir Kopfzerbrechen! Ich will selbstverständlich endlich mehr sehen als nur ein einfarbiges Gebilde, das nur bei Bewegung an der Kontur als Hügel zu identifizieren ist.
Nur, wenn ich das richtig verstanden habe, gibt man bei OpenGL jedem Vertex eine Richtung (Normalvektor oder so?) und dann kann man Licht einschalten, Lichtquellen setzen und Materialeigenschaften und so, und dann wird ein Objekt schön Beleuchtet. Aber ist denn das nicht viel zu viel Aufwand für eine Landschaft, die sich ja garnicht bewegt? (Genausowenig wie eine Sonne als Lichtquelle) Würde denn nicht die Landschaft immer gleich beleuchtet sein, so dass man das irgendwie vorberechnen könnte? Und nennt man sowas dann etwa Lightmap? Oder ist das sowieso Quatsch, und man muss nur eine Textur mit einer SHADOWmap drauflegen, wie auch immer das geht? Wodurch entsteht denn eigentlich der realistische Eindruck des Terrains wie es von Terragen oder so einem Prog gerendert wurde?
Habt ihr allgemeine Tipps für mich, Codeschnipsel, Ideen, und würdet ihr die To-do-liste vielleicht ganz anders aufbauen?
Vielen Dank für die Mühe den langen Text zu lesen, und im Voraus für Antworten abgesehen von "Fang mit was leichterem an..." und so :p