Starten der Engine

Die Entwickler-Version von GameStudios Engine - acknex.dll - befindet sich im GameStudio-Ordner. Dort gibt es auch ein kleines Starter-Programm, acknex.exe, welches die Engine aktiviert und ihr die Kommandozeile übermittelt. Dieses Programm kann zum direkten Engine-Start mit einem Level, Modell, Film oder einem Skript verwendet werden. Dazu gibt man folgenden Befehl:

"c:\programme\gstudio7\acknex.exe" "filename" [options]

Der Dateiname "file name" ist der Name der Anwendung - normalerweise entweder ein Skript oder eine Modell- oder Leveldatei zum Anschauen oder Durchlaufenl. Die Engine wechselt das aktuelle Directory auf den Ordner in dem sich die Anwendung befindet, kompiliert sie, wenn sie ein Skript ist und startet sie. Ist kein Dateiname gegeben, wird die Engine das aktuelle Directory auf ihren eigenen Ordner wechselnl. Um die Engine schenll und ohne SED oder WED zu starten, verwenden Sie die Windows-Kommandozeile oder erstellen einen Windows-Schortcut, dem sie die obige Kommandozeile zuweisen.

Nach dem Starten zeigt die Engine für zwei Sekunden ein StartUp-Panel mit ihrem A7- / lite-C-Logo an und startet dann die Anwendung.  P  Das Anzeigen des Logos läßt sich entweder über die Kommandozeilenoption -nwnd (s.u.) oder mit einer Starter Window Definition (wdf-Datei) im Work-Ordner unterdrücken. In beiden Fällen wird auch die Verzögerung von zwei Sekunden übersprungen und die Anwendung sofort gestartet.

Unterstützte Anwendungen

Die Engine startet folgende Dateitypen: uncompilierte Skripte (*.c), compilierte Skripte (*.exe), Ressourcen (*.wrs), Modelle (*.x, *.mdl), Level oder Terrain (*.wmb, *.hmp), Sky (*+2.tga, *+6.tga, *+6.dds), Sprites (*.bmp, *.pcx, *.tga, *.dds) und Filme (*.avi, *.mpg, *.wmv).

Compilierte Skripte werden direkt gestartet, uncompilierte Skripte werden vorher kompiliert. Das Kompilieren geschieht sehr schnell und dauert normalerweise nur wenige Sekunden.

A7.20 Ein compiliertes Skript (*.exe) wird vor dem Starten mit seiner unkompilierten Version (*.c) selben Namens verglichen. Existiert die kompilierte exe und ist diese neuer als die Datei .c, wird sie von der Engine gestartet. Andernfalls wird das Skript .c kompiliert, gespeichert und gestartet. Indem das Kompilieren des Skriptes, wenn es sich nicht geändert hat, übersprungen wird, wird der Startprozess beschleunigt. Beachten Sie, dass #define-Anweisungen in einem kompilierten Programm nicht ausgewertet werden. Sorgen Sie also dafür, dass Pfade oder andere Projekteinstellungen in einer .wdl-Datei enthalten sind (z. B. I mit PFAD-Anweisung).

Alternativ können Sie auch direkt eine Quelldatei (wrs), ein Level (wmb), ein Modell (mdl), ein Sprite- oder Sky-Bild (bmp, tga, pcx, dds) oder ein Movie (avi, mpg, wmv) starten. In diesem Fall wird die Engine als Betrachter für die betreffende Datei fungieren und das Skript include\viewer.c laufen lassen. Wird die Engine als Modell-Betrachter verwendet, wird das Modell auf den player-Pointer gesetzt. Auf diese Weise lassen sich Entityeigenschaften verändern und, nach Drücken der Tab-Taste, Entityfunktionen aufrufen.

Die Engine lässt sich mehrfach im Fenstermodus auf demselben PC starten. Per -d-Kommandozeilenoption (s. unten) lassen sich verschiedene Parameter an jede Engine-Instanz übermitteln. Damit kann man Engine-Fenster an verschiedenen Positionen auf dem Desktop öffnen. Jede Engine-Instanz kann mit jeder anderen über Multiplayerkommandos kommunizieren. Es ist zum Testen einer Multiplayer-Konfiguration sehr hilfreich, einige Engine-Instanzen auf demselben PC laufen zu haben. Eine andere Möglichkeit ist es, ein Multi-Monitor-System zu verwenden, indem man für eine Flug- oder Fahrzeugsimulation verschiedene Monitore, die verschiedene Views repräsentieren, benutzt. Jeder View kann von einer Engine-Instanz gerendert werden. Sie öffnet dann ein randloses Fenster an einer Desktop-Position, die einem einzelnen Monitor entspricht. Da die Engine zwischen verschiedenen Instanzen, die auf demselben PC laufen, und verschiedenen Instanzen auf verschiedenen PCs in einem Netzwerk überhaupt keinen Unterschied macht, lässt sich der Einzel-PC fast ohne Änderungen am Skript ersetzen.

Systemanforderungen

Die acknex.dll-Engine läuft unter jeder Windows-Version, die DirectX 9 oder höher unterstützt.Je nach Anwendung werden zwei DLLs gebraucht und die müssen entweder im Ordner Windows\system32 oder direkt im Anwendungsordner zu finden sein:

Die d3dx9_42.dll wird beim Publishing automatisch allen Anwendungen hinzugefügt. d3dcompiler_42.dll wird automatisch hinzugefügt wenn die Anwendung die Shader-Bibliothek (mtlFX.c) benutzt. Auf diese Weise läuft Ihre Anwendung auch auf PCs mit einer älteren DirectX-Version. Sorgen Sie dafür, dass diese beiden dlls wenn sie gebracuht werden auch auf dem Zielcomputer vorhanden sind. Fehlen sie, müssen Ihre Endanwender die neueste DirectX-Version installieren, damit die Engine läuft.

Möglicherweise erfordert Ihre Anwendung noch andere DLL-PlugIns. Beim Starten sucht die Engine im gegenwärtigen Ordner sowie im Ordner PLUGINDIR nach Plugin-DLLs. Das kann, dann zu einem langsamen Start führen, wenn der Ordner viele DLLs enthält, die keine Engine-Plugins sind - zum Beispiel, wenn die Engine als Screensaver verwendet und aus dem Windows-Ordner gestartet wird. Stürzt ein DLL beim Öffnen ab, stürzt auch die Engine ab. Achten Sie daher darauf, daß PLUGINDIR auf einen Order gesetzt ist, der ausschließlich Engine-Plugin-DLLs enthält. Oder Sie setzen es auf NULL und sorgen so dafür, dass die gepublishte Version überhaupt keine Plugins scannt. Im Ordner samples. finden Sie ein Beispiel für einen Screensaver.

Acknex.exe und acknex.dll sind Teil des Entwicklungssystems und dürfen nicht weitergegeben oder woandershin kopiert werden. Zum Vertrieb eines Spiels wird die PUBLISH-Funktion von WED und SED eine Vertriebsversion der Engine erstellen, die nach der Anwendung benannt wird.

Befehlszeilenoptionen

Durch Befehlszeilenoptionen lassen sich verschiedene Modi der Engine aktivieren. Benutzerdefinierte Befehlszeilenoptionen können von der Engine mittels command_str-String ausgewertet werden. Um Kommandozeilenoptionen beim Starten der Engine in SED oder WED zu setzen, tragen Sie die entsprechenden Optionen einfach ins Kommandozeilenfeld unter SED Preferences oder, in WED, im Start-Up-Dialog der Engine ein. In einer gepublishten ausführbaren Datei lassen sich Kommandozeilenoptionen über einen Shortcut oder eine Batch-Datei angeben - sämtliche Programminstllationspakete bieten solche Möglichkeiten an. Kommandozeilenoptionen lassen sich auch automatisch im StartUp-Fenster setzen P . Die Engine verwendet die folgenden Befehlszeilenoptionen:

-exe  LC 

Compiliert den .c-Code in eine binäre .exe-Datei im Projekt-Ordner (wird von der kostenlosen Version nicht unterstützt). Exe-Dateien brauchen nicht mehr kompiliert zu werden und starten daher schneller, als .c-Dateien. Damit die Exe-Datei im Pure-Modus eigenständig lauffähig ist, muss sie per Publish-Prozess kompiliert und eine Engine-DLL erzeugt werden. Im Legacy-Modus braucht die Exe-Datei keine Engine-DLL und kann direkt starten.

-fxo  P  A8

Kompiliert alle verwendeten .fx-Effektdateien in .fxo-Dateien im Projekt-Ordner. Kompilierte Effekte können die Ladezeit des Levels sowie die Zeit zum Generieren der Materialien deutlich reduzieren, und benötigen keine Shader-Compiler-Bibliothek in der publizierten Version. Die Engine erkennt anhand des Dateidatums, ob die .fx oder .fxo Datei neuer ist, und lädt automatisch die jeweils aktuelle Version.

-nwnd  P 

Unterdrückt die Anzeige des Startfensters sowie die Startverzögerung. Sinnvoll, wenn die Engine von einem anderen Programm gestartet wird.

-mon number  P  A7.2

Verwendet in einem Multi-Monitor-System anstelle des Hauptmonitors den Bildschirm mit der gegebenen Zahl (1,2,3,...) zur Vollbildanzeige. Um verschiedene Bildschirme gleichzeitig zu verwenden, starten Sie die Hauptapplikation im Server-Modus (-sv, s. unten) und pro Monitor starten Sie eine Klientenanwendung (-cl -mon).

-nc  P 

Verhindert die routinemäßige Selbstprüfung der Engine auf mögliche Viren- oder Hackerangriffe beim Spielstart. Auf diese Weise kann die .EXE in andere Programme eingebunden werden, um z.B. Registrierungs-Funktionen einiger Distributoren zu benutzen.

-cc

Verhindert das Ausführen des Skripts. Lediglich ein Syntax-Check wird durchgeführt und eventuelle Fehler angezeigt. Wird oft in Kombination mit -exe zum Kompilieren einer lauffähigen Datei benutzt, ohne diese auszuführen.

-eq A7.71

Beendet die Engine wenn im lite-C-Skript ein Syntaxfehler gefunden wurde ohne darauf zu warten bis der Anwender eine Taste drückt. Die Fehlermeldung wird in die Datei "ackerr.txt" im Workordner geschrieben.

-d name[,value]

Unter lite-C wird die Variable name beim Starten des Skripts auf 1 oder den angegebenen Wert (so vorhanden) gesetzt, wobei der vordefinierte Wert der Variablen ignoriert wird. Auf diese Art lassen sich beliebige Gameoptionen wie die Anfangsbildschirmauflösung, Schwierigkeitsgrade etc. per Befehlszeile setzen. Beachten Sie, daß lediglich ein '=' ohne jegliche Leerzeichen zwischen Name und Wert sein in der Kommandozeile darf.
Definiert name unter C-Script zur späteren Auswertung durch ifdef im Skript. Entspricht der Angabe von define name; bzw. define name,value; im Skript.

-diag

Schreibt Diagnosemeldungen in eine Datei des aktuellen Ordners. Im Servermodus (-sv) ist der Dateiname acklog_sv.txt, im Cient-Modus (-cl ) acklog_cl.txt, ansonsten einfach acklog.txt. Wird im dedizierten (ausschliesslich in diesem) Servermodus (-sv) gestartet, wird die -diag-Ausgabe zusätzlich ins Server-Konsolenfenster geschrieben. So lässt sich auf dem Server beobachten, welche Klienten sich ein- oder ausloggen und was im Spiel passiert. Schreibzugriffsrechte auf den gegenwärtigen Ordner sind erforderlich. Unter Vista oder höher läßt sich die Engine oder die Anwendung als Administrator starten und es kann in einen Programordner geschrieben werden.

-dir name

Gibt den Ordner an, der für das Speichern von Spielen und Screenshots definiert wurde; initialisiert den String save_dir auf den angegebenen Ordner-Namen.

-emu

Aktiviert die Vertex-Shader-Emulation für 3D Karten ohne Shader-Hardware, wie die GeForce1. Die Vertex-Shader-Emulation deaktiviert alle Hardware-Vertex-Prozesse, so dass die Framerate deutlich gesenkt werden kann, auch wenn keine Vertex-Shader eingesetzt werden. Einige Render- und Texture-Stufen-Modi, wie CameraSpaceReflectionVector, aber auch Pixel-Shader sind in der Emulation nicht verfügbar und führen zu einer Fehlermeldung bei der Verwendung im Effekt-Skript. Deswegen sollte die Emulation nur zum Testen verwendet werden. Eine Verwendung in fertigen Spielen wird nicht empfohlen.

-nj

Schaltet den Joystick und 3D Navigationsgeräte ab.

-nm

Schaltet die Maus ab.

-ns

Verhindert das Abspielen von Sound. DirectSound wird nicht initialisiert und es werden keine Sound-Dateien geladen. Media-Dateien werden weiterhin abgespielt.

-nv  P 

Verhindert das Rendern und initialisiert DirectX Graphics nicht.

-nx number

Größe des Nexus in Megabyte. Der Nexus ist ein zusammenhängender, virtueller Speicherbereich, den die Engine beim Starten bereits pae-allokiert, um Entity-Dateien, Leveltexturen und -Geometrie in den Cachespeicher aufzunehmen. Dies erhöht die Ladegeschwindigkeit des Levels und verhindert, dass die Engine während der Laufzeit aufgrund von Speichermangel abbricht. Die Größe des Nexus hängt von der Größe des größten Levels Ihres Spiels ab. Je größer der Nexus ist, desto grössere Levels können gerendert werden - je mehr virtueller Speicher wird allerdings auch beim Starten allokiert.

Wenn Sie den Nexus in Map Properties setzen, benutzt WED die -nx-Befehlszeilenoption, um die notwendige Größe an die Engine zu übermitteln. Der Defaultwert für den Nexus ist 40 Megabyte. Der Maximalwert ergibt sich aus der Virtual-Memory-Einstellung im Windows-System, ungefähr 500...1000 MB, die für das Betriebssystem frei bleiben sollten. Der benötigte Nexus wird im Statistik-Panel angezeigt und kann aus der nexus-Variable gelesen werden. Für komerzielle Games wird der Maximalwert des Nexus von 200 empfohlen. Setzen Sie diesen Wert höher, sollten Sie sich im Klaren darüber sein, daß einige Untersysteme von Windows - einschließlich DirectX - dazu neigen ohne Fehlermeldung abzustürzen, sobald der virtuelle Speicher knapp wird.

Beim Überschreiten der Nexus-Größe stellt die Engine zusätzlichen Speicher aus dem virtuellen Speicherpool des PCs bereit. Ist auch die virtuelle Speicherkapazität aufgebraucht, gibt die Anwendung eine Dehlermeldung aus und endet. Die Funktionen level_mark und level_free funktionieren nur, wenn der Nexus nicht überschritten wird. In Engines, älter als A7 führt das Überschreiten der Nexus-Größe zu der Fehlermeldung "Nexus too small". Daraufhin muß die Engine dann mit einem etwas höheren Nexus-Wert neu gestartet werden (z.B. -nx 80 für 80 MB Nexus).

-ip name

Hiermit kann beim Starten eines Clients im Multiplayer-Modus der PC-Name, Domainname oder die IP-Adresse des Servers angegeben werden. Beispiel:

acknex office.c -cl -ip 169.254.73.28

verbindet mit dem Server unter der angegebenen IP-Adresse im Netzwerk oder im Internet. Der angegebene Name oder die Adresse ist für die Dauer des Spieles im vordefinierten String server_name verfügbar. Wenn diese Option nicht angegeben wird, wird auf dem lokalen Netzwerk nach dem Server gesucht.

-pl name

Mitt dieser Option kann jedem Client in einem Multiplayersystem ein individueller Name gegeben werden (bis zu 16 Buchstaben). Andernfalls wird der Client-Name von der Engine generiert. Der Name ist während des Spiels im vordefinierten String player_name verfügbar.

-port number

Mit dieser Kommandozeilen-Option kann ein Port für eine TCP/IP-Client/Server-Kommunikation angegeben werden. Gültige Ports liegen im Bereich 2300..2400. Wird kein Port angegeben, wird eine voreingestellte Portadresse zugewiesen.

-sn name

Mit dieser Kommandozeilen-Option kann der Session-Name beim Starten eines Servers oder Clients im Multiplayer-Modus angegeben werden. Der vorgegebene Session-Name entspricht dem der Hauptskriptdatei ohne Extension, also z.B. "office" beim Starten der office.wdl. Der angegebene Name ist für die Dauer des Spieles im vordefinierten String session_name verfügbar.

-cl  P 

Stellt eine Verbindung zu einer laufenden Multiplayer-Session im Client-Modus her. Wird kein Server oder keine Session gefunden, wird das Spiel automatisch im Single-Player-Modus gestartet.

-sv  P 

Startet eine Multiplayer-Session als Server. In Kombination mit -cl läuft der Server zugleich als Client. Stand-alone Serverbetrieb ist nur mit der professionellen Edition möglich.

-w3d

Startet ohne Verwendung des Stencil-Buffers. Auf diese Weise lassen sich auch sehr alte 3D-Karten, wie Riva TNT, ohne T&L oder Stencilbuffer zum Laufen bringen.

-wnd

Startet im Fenster- statt Fullscreenmodus, auch wenn im Script Fullscreen definiert ist. Haben Sie die Funktion on_enter nicht umdefiniert, können Sie jederzeit mit [Alt-Eingabe] zwischen Fenster- und Fullscreenmodus wechseln.

► Aktuelle Version Online