Game-Engine Architecture
-
-
Also ich finde die Idee erstmal gut, dass du dir sowas vornimmst. Bei so ein Projekt kann man viel lernen.
Mein Vorschlag: Du schreibst für die Physik, Sound, KI, Grafik, Mathe, Core jeweils eine eigene Dll und fängst für jedes Unterprojekt erstmal an die die Anforderungen und die Schnittstelle zu überlegen.
Es wäre sogar leichter, wenn du jedes dieser Unterprojekte sogar zuerst erstmal einzeln anlegst, und ein separates kleines Spiel dafür machst, was erstmal nur dieses Unterprojekt testet.
D.h. ein kleines Spiel mit einfacher Grafik aber toller Physik. Dann ein einfaches Spiel mit einfacher Grafik und Physik dafür aber mit tollen Sound. Usw. für jedes Unterprojekt.
Danach weißt du dann erstmal, was du mit den Unterprojekten machen willst und kannst nun anfangen dafür eine Schnittstelle dir zu überlegen. Das Core-Projekt vereinigt dann die ganzen Unterprojekte und kennt nur die Schnittstelle für die Unterprojekte, nicht aber die konkreten Klassen.
Wenn du dann lauter Unterprojekte hast, wirst du feststellen, dass z.B. Physik und Grafik als gemeinsame Basis ein 3D-Objekt hat. All diese Dinge lagerst du dann aus und das wäre dann ein Projekt, was quasi ganz unten die Basis von den Teilprojekten ist.
Fang also erstmal mit den Teilprojekten an und siehe dann zu, wie du sie vereinigst. Das wäre mein Vorschlag für diese Aufgabe.
-
wasting schrieb:
Egal, was du konkret geschrieben hast (habs nicht gelesen), hier ist deine Antwort: was du vorhast, ist Zeitverschwendung.
Argumente?
dot schrieb:
Danke für den Artikel, aber eine einseitige Diskussion über "immer diese Kiddies, die wenn sie ein Spiel entwickeln wollen auch gleich immer anfangen wollen eine Engine zu bauen" hilft mir nicht weiter.
For any number of reasons, many neophyte game developers (and even some moderately experienced ones) seem to think that a game engine is a required, critical part of a game. They think that—in keeping with the mechanical analogy from which the term “engine” comes from in the first place—like a car, a game with no engine will simply not run. But that mechanical analogy starts to break down when you take it this far, because when you look at the reality of the situation, a game engine is about reusable components. Much like you can build a car with custom parts or generic ones, you can build a game with custom components or reusable ones. The notion that you must have an engine to build a non-trivial game is a fallacy, something perpetuated largely by people who don’t know any better.
Alles schön und gut und mag für Medieninformatiker zutreffen, die kein Bock haben sich mit der Technologie auseinander zu setzen, die hinter einer Engine steckt und diese nur für ihre Zwecke misshandeln. Ich hab jedoch Interesse an Grafikprogrammierung (nicht Spiele) und an ein größeres Projekt für mich selbst.
XMAMan schrieb:
Also ich finde die Idee erstmal gut, dass du dir sowas vornimmst. Bei so ein Projekt kann man viel lernen.
Mein Vorschlag: Du schreibst für die Physik, Sound, KI, Grafik, Mathe, Core jeweils eine eigene Dll und fängst für jedes Unterprojekt erstmal an die die Anforderungen und die Schnittstelle zu überlegen.
Es wäre sogar leichter, wenn du jedes dieser Unterprojekte sogar zuerst erstmal einzeln anlegst, und ein separates kleines Spiel dafür machst, was erstmal nur dieses Unterprojekt testet.
D.h. ein kleines Spiel mit einfacher Grafik aber toller Physik. Dann ein einfaches Spiel mit einfacher Grafik und Physik dafür aber mit tollen Sound. Usw. für jedes Unterprojekt.
Danach weißt du dann erstmal, was du mit den Unterprojekten machen willst und kannst nun anfangen dafür eine Schnittstelle dir zu überlegen. Das Core-Projekt vereinigt dann die ganzen Unterprojekte und kennt nur die Schnittstelle für die Unterprojekte, nicht aber die konkreten Klassen.
Wenn du dann lauter Unterprojekte hast, wirst du feststellen, dass z.B. Physik und Grafik als gemeinsame Basis ein 3D-Objekt hat. All diese Dinge lagerst du dann aus und das wäre dann ein Projekt, was quasi ganz unten die Basis von den Teilprojekten ist.
Fang also erstmal mit den Teilprojekten an und siehe dann zu, wie du sie vereinigst. Das wäre mein Vorschlag für diese Aufgabe.
Danke, ich habe gestern Nacht noch Kontakt zu Leuten auf anderen Plattformen gesucht, die bereits einiges an Erfahrung im Design einer Engine besitzen und im Grunde haben sie mir genau das gleiche vermitteln wollen, wie du. Außerdem ist deine die einzige Antwort, die wirklich auf meine Fragen eingegangen ist.
-
Kluddizz schrieb:
Alles schön und gut und mag für Medieninformatiker zutreffen, die kein Bock haben sich mit der Technologie auseinander zu setzen, die hinter einer Engine steckt und diese nur für ihre Zwecke misshandeln. Ich hab jedoch Interesse an Grafikprogrammierung (nicht Spiele) und an ein größeres Projekt für mich selbst.
D.h. du bist also schon fit in mindestens einer der drei wichtigen APIs. Um dort hinzukommen hast du notwendigerweise schon viele Demos geschrieben, erst um die Grundlagen zu festigen und Erfahrung zu sammeln und später immer mehr um einige fortgeschrittene Effekte zu implementieren. In dem Fall kannst du ja dennoch einfach dem Vorschlag aus dem verlinkten Artikel folgen und anfangen, gemeinsam benutzte Funktionalität aus den letzten paar deiner Demos zu abstrahieren und in eine Library zu packen. Und die nächsten Demos die du schreibst, baust du alle auf dieser Library auf und refactorest wann immer nötig...
-
Kluddizz schrieb:
wasting schrieb:
Egal, was du konkret geschrieben hast (habs nicht gelesen), hier ist deine Antwort: was du vorhast, ist Zeitverschwendung.
Argumente?
Mein Argument ist, dass es Zeitverschwendung ist. Du wirst weder irgendwas "fertig" bekommen, noch wird sich irgendjemand für den nutzlosen Haufen Code interessieren, den du Meganoob dir da zusammenklöppelst. Niemand wird ein Spiel damit schreiben. Quasi jeder mit Erfahrung auf dem Gebiet wird dir davon abraten.
Ich hab jedoch Interesse an Grafikprogrammierung (nicht Spiele) und an ein größeres Projekt für mich selbst.
Oooooh, klar. Kein Interesse an Spielen, aber Game Engines schreiben. Heh. Na dann mal viel Erfolg.
-
dot schrieb:
D.h. du bist also schon fit in mindestens einer der drei wichtigen APIs. Um dort hinzukommen hast du notwendigerweise schon viele Demos geschrieben, erst um die Grundlagen zu festigen und Erfahrung zu sammeln und später immer mehr um einige fortgeschrittene Effekte zu implementieren. In dem Fall kannst du ja dennoch einfach dem Vorschlag aus dem verlinkten Artikel folgen und anfangen, gemeinsam benutzte Funktionalität aus den letzten paar deiner Demos zu abstrahieren und in eine Library zu packen. Und die nächsten Demos die du schreibst, baust du alle auf dieser Library auf und refactorest wann immer nötig...
Ja, danke für den Hinweis.
wasting schrieb:
Mein Argument ist, dass es Zeitverschwendung ist. Du wirst weder irgendwas "fertig" bekommen, noch wird sich irgendjemand für den nutzlosen Haufen Code interessieren, den du Meganoob dir da zusammenklöppelst. Niemand wird ein Spiel damit schreiben. Quasi jeder mit Erfahrung auf dem Gebiet wird dir davon abraten.
1. Geile Argumentationsmethodik, der du da folgst.
2. Wer bist du, dass du private Projekte, von denen weder behauptet wird, dass diese vermarktet werden sollen, noch dass dritte jemals Zugang zu Quellcode bekommen werden, versuchst schlecht zu machen. Ich gehe ja auch nicht in die Uni, um dem Prof zu erzählen: "Junge, deine Vorlesung ist Zeitverschwendung. Weil es Zeitverschwendung ist. Und [...] weil sich niemand um deine für uns ausgedachten Hausarbeiten interessieren wird. Du Meganoob!"
Es wird dir vielleicht nicht jeder, der Erfahrung in diesem Gebiet hat, das folgende sagen, aber ich mit meinem beschränkten Denken und meiner offiziell anerkannten Meganoob-Auszeichnung sehe mich befähigt zu sagen: Junge, wenn man keine Ahnung hat, einfach mal die ....wasting schrieb:
Ich hab jedoch Interesse an Grafikprogrammierung (nicht Spiele) und an ein größeres Projekt für mich selbst.
Oooooh, klar. Kein Interesse an Spielen, aber Game Engines schreiben. Heh. Na dann mal viel Erfolg.
Und auch hier sehe ich kein Gesprächspotential. Du willst mir also sagen, dass jeder, der an einer Engine bastelt auch vor hat, diese exzessiv zu nutzen und damit Spiele zu entwickeln? Sorry, aber ich glaube nicht einmal, dass sich die Entwickler von meinetwegen Unity sich hinsetzen und Spiele damit entwickeln. Warum müssen sie dies auch tun? Um zu sehen, ob das Teil gut nutzbar ist, gibt's Usability-Experten. Um zu sehen, ob implementierte Funktionen so funktionieren wie sie sollen, werden diese sicherlich im laufenden Entwicklungsprozess ausgiebig getestet.
Also ja, wenns mir darum ginge ein Spiel zu entwickeln, würde ich nicht auf meinen eigenen "nutzlosen Haufen Code, den niemand interessiert" zurückgreifen, sondern besser implementierten "Haufen Code" nutzen.Um vielleicht zu wissen, dass
Kluddizz schrieb:
Dabei ist es mir nicht wichtig, direkt eine lauffähige Engine zu programmieren, sondern eher, dass ich versuche das erste große Projekt anzugehen und dabei sauber zu arbeiten.
müssest du vielleicht meine Posts erst einmal lesen, um ordentlich zu argumentieren, aber was bei dir abgeht, beschreibst du ziemlich gut selbst mit:
wasting schrieb:
Egal, was du konkret geschrieben hast (habs nicht gelesen), hier ist deine Antwort: was du vorhast, ist Zeitverschwendung.
Schönen Gruß
-
Du scheinst mich mit jemandem zu verwechseln, den es einen Dreck interessiert was du treibst und schnallst nicht, dass man dir einen Gefallen tun möchte. Du hast einen ganzen Artikel vorgesetzt bekommen, der dir und den Millionen anderen Noobs erklärt, warum dieses Vorhaben dumm ist und zu nichts führt - aber du weißt es besser. Dann einfach mal los, ne.
-
Der Artikel ist aber ebenso Schrott. Als Anfänger gilt sowieso: Don't write [3D] games!
Wenn man aber Spiele entwickelt (wie ich es lange Zeit getan habe), dann wird man eine geeignete Architektur aufsetzen, welche auf einer Engine basiert. Und selbst, wenn man auf eine professionelle Engine aufbaut, so wird man trotzdem einen Layer (Library) entwickeln, welcher Anpassungen ermöglicht (also quasi eine eigene "Engine").
-
Und ich find solche Artikel sowieso ziemlich sinnlos, wenn es um private Projekte geht (zumindest, wenn man halbwegs weiß, was man tut). Eine Engine zu schreiben kann viel mehr Spass machen, als ein Spiel zu schreiben. Punkt. Artikel sinnlos.
-
Ich kann nur aus Erfahrung sprechen. Ich war selber mal ein Noob, hab ungefähr 28× genau die gleichen Fehler gemacht. Low-level Grafikprogrammierung ist, wofür ich dieser Tage bezahlt werde. Aber was weiß ich schon...steht jedem frei einen gut gemeinten Rat zu ignorieren...
-
@Kluddizz
nimm dir die Antworten nicht so sehr zu Herzen, denn wenn du 100 Entwickler fragst was sie davon halten, wirst du 100 Antworten bekommen. Und jeder wird dir natuerlich den einzig richtigen weg sagen, weil jeder dich davon abhalten will dieselben fehler zu machen (Hab ich oben ja auch), wenn auch diese fehler eventuell die entwickler zu dem machte was sie sind. (und natuerlich werden manche elaboriert antworten, andere in einzeilern "mach xyz, oder willst du ein idiot sein" sagen. trotzdem entspannt bleiben!)und vergiss nicht dich zu regestrieren ;), selbst die die dir hier von allem abraten, werden dir vermutlich gerne bei technischen/programmier-problemen helfen.
-
rapso schrieb:
@Kluddizz
nimm dir die Antworten nicht so sehr zu Herzen, denn wenn du 100 Entwickler fragst was sie davon halten, wirst du 100 Antworten bekommen. Und jeder wird dir natuerlich den einzig richtigen weg sagen, weil jeder dich davon abhalten will dieselben fehler zu machen (Hab ich oben ja auch), wenn auch diese fehler eventuell die entwickler zu dem machte was sie sind. (und natuerlich werden manche elaboriert antworten, andere in einzeilern "mach xyz, oder willst du ein idiot sein" sagen. trotzdem entspannt bleiben!)und vergiss nicht dich zu regestrieren ;), selbst die die dir hier von allem abraten, werden dir vermutlich gerne bei technischen/programmier-problemen helfen.
Keine Sorge, ich bin ja derjenige der dumm gefragt hat, von daher darf ich mich auch nicht beschweren
Falls ich einen neue Fragen habe, werde ich mich natürlich auch registrieren (Ich hoffe du bekommst jetzt einen Anwerber-Bonus )
-
Kluddizz schrieb:
Falls ich einen neue Fragen habe, werde ich mich natürlich auch registrieren (Ich hoffe du bekommst jetzt einen Anwerber-Bonus )
Nur wenn du einfachste Worte falsch schreibst, wo etwas ähnliches wie Englisch sprichst und als Einziger glaubst, Rechtschreibung sei total unwichtig. Dann schon.
-
-
Dieser Beitrag wurde gelöscht!