Spieleentwicklung
-
Hoi,
ich interessiere mich schon immer für Spieleentwicklung. Da ich aber gerade mal dabei bin, mir entsprechende Sprachen zu lernen, habe ich nicht gerade vor, mir demnächst einen 3D-Action-Shooter zu programmieren. Dennoch interessiert mich die Materie und hätte daher einfach ein paar Fragen, rein interessehalber.
1. Es gibt eine Vielzahl von Engines (Unity, UDK, CryEngine, ...). Basieren "alle" (Ausnahmen sollten die Regel bestätigen) heutigen modernen Spiele auf solche Engines? Wenn ja: in welcher Sprachen werden solche Engines geschrieben? Und: Basiert beispielsweise Doom 3 nicht auf einer Engine, sondern wurde wirklich "programmiert" (wie erkläre ich mir sonst, dass IDSoftware den Sourcecode herausgeben konnte?)
2. Ausgehend von einem beliebigen Multiplayer-Spiel; werden spielrelevante Daten (Positionen X/Y/Z, HP, ...) durchgehend in einer Datenbank gespeichert/geupdatet und - andersrum - durchgehend abgefragt? Clientseitig speichern erscheint mir etwas suspekt, da man das relativ schnell verfälschen könnte (Stichwort Hacks) - aber welche Belastungen müssen solche Datenbanken denn bitte aushalten? Und welche Datenbanken werden da verwendet?
Das wärs glaube ich mal. Mehr fällt mir im Moment nicht ein ;)...
Danke schonmal
-
Yada schrieb:
(Unity, UDK, CryEngine, ...).
Also Unity würde ich mit dem UDK und der CryEngine nicht mal in einem Atemzug nennen.
Die verbreitetste Sprache für solche Engines ist wohl C++.Und ja, so ziemlich alle AAA Titel basieren irgendwie auf einer Engine. (Und wenns eine eigene ist.) Das muss aber im Umkehrschluss nicht heißen, dass du für jedes 3D Spiel erst mal eine eigene Engine schreiben solltest.
Yada schrieb:
Basiert beispielsweise Doom 3 nicht auf einer Engine, sondern wurde wirklich "programmiert" (wie erkläre ich mir sonst, dass IDSoftware den Sourcecode herausgeben konnte?)
Doom 3 basiert auf der id Tech 4 Engine.
Yada schrieb:
aber welche Belastungen müssen solche Datenbanken denn bitte aushalten?
Das sind keine Datenbanken im Sinne von riesigen Tabellen die auf Festplatten liegen. Für die meisten Spiele (außer MMOPRGs) sind die paar Daten recht trivial und liegen alle im RAM.
Wer genau was wann wie und wo schickt hängt aber von dem Spiel selbst ab.
-
Der Begriff "Engine" war immer schon sehr unscharf und wird heute leider immer und überall verwendet und jeder versteht was anderes drunter.
Bevor man da eine sinnvolle Antwort geben kann, musst du uns also erstmal verraten was du unter einer "Engine" verstehst
-
Danke erstmal für die Antworten!
Also Unity würde ich mit dem UDK und der CryEngine nicht mal in einem Atemzug nennen.
Ist mir schon klar, aber es sollten nur Beispiele sein.
Doom 3 basiert auf der id Tech 4 Engine.
Ist der auf Github veröffentliche Quellcode von ID also jener Quellcode der in die Engine implementiert wurde?
Das sind keine Datenbanken im Sinne von riesigen Tabellen die auf Festplatten liegen. Für die meisten Spiele (außer MMOPRGs) sind die paar Daten recht trivial und liegen alle im RAM.
Wer genau was wann wie und wo schickt hängt aber von dem Spiel selbst ab.Ah okay, an RAM dachte ich gar nicht. Wie werden diese Daten denn dann im RAM abgelegt? Also so, dass man sie auch rückverfolgen kann, welchem Objekt welche Eigenschaft aus dem RAM kriegen? Werden "einfach" Speicherzellen mit entsprechenden Werten belegt, ein Objekt bekommt die Speicherzellen-Adressen und so holt man sich die Infos wieder raus? Klingt - zumindest so einfach gesagt - nicht so kompliziert wie ichs mir gedacht habe.
Stichwort MMORPGs: Dort werden also die Daten in Datenbanken gespeichert. Welche kommen hier zum Einsatz (soweit bekannt).Der Begriff "Engine" war immer schon sehr unscharf und wird heute leider immer und überall verwendet und jeder versteht was anderes drunter.
Bevor man da eine sinnvolle Antwort geben kann, musst du uns also erstmal verraten was du unter einer "Engine" verstehstSandbox-Editoren mit integrierten, verbreiteten Elementen der Spieleentwicklung (Schattenberechnung, Partikel, ...), der Möglichkeit noch eigenen Code "einzubauen" - eben wie die genannten Beispiele.
-
Yada schrieb:
Ah okay, an RAM dachte ich gar nicht. Wie werden diese Daten denn dann im RAM abgelegt? Also so, dass man sie auch rückverfolgen kann, welchem Objekt welche Eigenschaft aus dem RAM kriegen? Werden "einfach" Speicherzellen mit entsprechenden Werten belegt, ein Objekt bekommt die Speicherzellen-Adressen und so holt man sich die Infos wieder raus? Klingt - zumindest so einfach gesagt - nicht so kompliziert wie ichs mir gedacht habe.
Nein, das ist überhaupt nicht kompliziert. Man merkt aber, dass du noch überhaupt nicht programmieren kannst, sonst wäre das wirklich eine Selbstverständlichkeit. Aber solange du nicht weißt wie ein simples Programm aufgebaut ist, was Variablen sind, Arrays, Pointer etc. macht es keinen Sinn das zu erklären.
Yada schrieb:
Stichwort MMORPGs: Dort werden also die Daten in Datenbanken gespeichert. Welche kommen hier zum Einsatz (soweit bekannt).
Das wird alles selbst geschrieben und genau für diesen Zweck hochoptimiert sein.
Yada schrieb:
Sandbox-Editoren mit integrierten, verbreiteten Elementen der Spieleentwicklung (Schattenberechnung, Partikel, ...), der Möglichkeit noch eigenen Code "einzubauen" - eben wie die genannten Beispiele.
Hui, die Editoren gehören eher zum DevKit als zur Engine.
-
Yada schrieb:
Und: Basiert beispielsweise Doom 3 nicht auf einer Engine, sondern wurde wirklich "programmiert" (wie erkläre ich mir sonst, dass IDSoftware den Sourcecode herausgeben konnte?)
"Engines" werden auch programmiert. Die fallen nicht einfach so vom Himmel
-
Hmm... Und ich dachte, wenige momente nach dem Urknall wurden die Engines direkt mit Universum erschaffen. Weltbild zerstört, was solls ;)...
Nein, ernsthaft:
Ist mir schon klar, dass Engines auch programmiert werden. Ich meine mit "programmiert" folgendes: wenn ich einen Würfel erstellen will, kann ich diesen einfach über die "Programmierung zeichnen" (sprich Eckpunkte, Kanten, etc.) via DX/OpenGL/etc. - eine Engine hingegen erlaubt mir das ich das Objekt "Würfel" einfach via Drag&Drop hineinziehe. Das im Endeffekt noch immer eine Programmierung hinter dem Würfel steckt, ist mir klar - nur der Aufwand dahin zu kommen ist doch verschieden.
-
Yada schrieb:
eine Engine hingegen erlaubt mir das ich das Objekt "Würfel" einfach via Drag&Drop hineinziehe.
Nein. Eine Engine gibt dir vielleicht Funktionen zum Anzeigen von Models, Funktionen zum Laden, zum Spielen von Musik etc., aber drag&drop ist immer noch ein Editor.
-
Ah okay, ich dachte Engines gehen mit entsprechenden Editoren einher.
-
Wie gesagt, der Begriff ist sehr schwammig