» » » Eine Engine, was ist das denn eigentlich?

Eine Engine, was ist das denn eigentlich?

eingetragen in: Hinter den Kulissen | 0

Eine sehr gute Frage. Viele Spiele haben Eine mit sehr klangvollen Namen.

Man fragt sich wofür man sie braucht und ob man sie überhaupt benötigt.

 

Geht es nicht auch ohne?

Um die Frage zu beantworten: Eine Engine zu haben ist keine unbedingte Notwendigkeit! – In vielen Fällen ist sie aber äußerst nützlich.

Um ein Beispiel zu nennen, Ich selbst arbeite zurzeit am Soundsystem der PentaCore (für jeden der es noch nicht weiß: das ist der Name unserer Engine). Dieses basiert wiederum auf der Bibliothek lwjgl. Und diese verwendet wiederum die open Graphics Library für alles was auf dem Bildschirm zu sehen ist (auch bekannt als opengl), die open Audio Library die für das ausgeben von Tönen zuständig ist(auch bekannt als openal) und die open Computing Library für beschleunigte Berechnungen(auch bekannt als opencl). Man sieht dass es nicht alleine auf die PentaCore ankommt, sondern auf eine ganze Hierarchie von Engines (viele nennen sie auch Bibliotheken). Doch noch immer habe Ich die Frage nicht beantwortet, wofür diese Engines eigentlich gut sind. Die Antwort darauf wird Studenten der Informatik im ersten Semester eingehämmert…

Ein Programm der Größenordnung von Pentaquin kann kein Mensch alleine schreiben. Wir sind zurzeit ein Team von 5 Programmierern und keiner von uns kann und will den gesamten Quellcode bis ins kleinste Detail verstehen. Um wieder auf mein Beispiel zurück zu kommen:

Ich selbst schreibe das Sound System bis ins kleinste Detail, das würde dann in etwa so aussehen:

alGenBuffers(...);
alGenSource(...);
alSource(...);
alBufferData(...);
alSourcePlay(...);

Jeder der sich nicht unbedingt mit openal auskennt wird sich erst einmal am Kopf kratzen und in einer Referenz nachschauen müssen was die einzelnen Befehle tun.  Würde man statt obigen folgendes schreiben:

playSound("irgendeinsound.wav");

würde sogar der Laie verstehen was man damit Sagen will. Leider ist Computertechnik nicht so einfach dass man dies so einfach tun kann, allerdings kann man sie sich so vereinfachen, dass man wirklich nur noch Letzteres aufrufen muss um einen Sound abzuspielen. Genau das tut die Engine!

Sie versteckt solche komplizierten Anweisungen hinter einfachen Fassaden, so dass der nächste Programmierer sich nicht damit beschäftigen muss, was dahinter steht. Es hat noch einen weiteren Vorteil:

Finden wir zum Beispiel einen Fehler in der Engine, können wir ihn – ohne viel im Hauptprogramm zu ändern oder den Programmierer der eigentlich nur playSound aufrufen will zusätzlich zu belasten – beheben. Im Prinzip muss der eben erwähnte Programmierer nur den Lichtschalter drücken während andere sich darum kümmern wie der Schaltkreis dahinter funktioniert.

Und das ist eines dieser Dinge die wir Programmierer machen, wir nehmen diese allgemeinen Befehle (die mit al, gl und cl anfangen), die standartisiert und durch lwjgl jedem Betriebssystem zugänglich sind und bündeln sie, so dass sie auf unsere Bedürfnisse zugeschnitten und vereinfacht sind.

Nostritius (Sound Team/Programmierer Team)

Bitte hinterlasse eine Antwort