Gamestudio/A8 enthält ein Physiksystem, das auf der PhysX™ Engine von nVIDIA basiert. Es ermöglicht ein realistisches Bewegungsverhalten von Modellen. Die Grundfunktionen unterstützen starre Körper (rigid bodies) und Gelenke (joints). Mit zusätzlichen PlugIns können verformbare Körper, Flüssigkeiten, Kleidung und viele andere Effekte unterstützt werden. Der Source-Code für die PhysX-Implementierung steht als Open Source zur Verfügung, so dasss Sie mit C++ Kenntnissen beliebige Zusatzfunktionen selbst integrieren können.
Da diese Art von Simulation CPU- bzw. GPU-intensiv ist, ist das Physikuntersystem per default abgeschaltet. Wenn Sie es verwenden wollen, inkludieren Sie den Header ackphysx.h und rufen physX_open() auf. Danach können Sie ein Level Laden und dynamische Physikobjekte für die Simulation registrieren. Dadurch wird die exklusive Bewegungskontrolle dieser Objekte auf die Engine übertragen und sie können nicht mehr über Positionsänderungen bewegt werden. Wenn Sie eine Physikentity nicht mehr brauchen, löschen Sie deren Registrierung oder schalten Sie das Physiksystem ab.
physX_ | Globale Funktionen, die den Physik-Simulator öffnen oder schließen. |
pX_ | Globale Funktionen, die das Verhalten des Physiksimulators oder die simulierte Welt verändern. |
pXent_ | Physikalische Entityfunktionen, die auf nur eine Entity auf einmal einwirken. |
pXcon_ | Gelenk-Funktionen, die die Bewegung physikalischer Entities einschränken. |
#include <default.c>
#include <ackphysx.h>
function main() { physX_open(); level_load(""); // load an empty level vec_set(camera.x,vector(-100,0,30)); pXent_settype(NULL,PH_STATIC,PH_PLANE); // create a static plane at groundlevel zero ENTITY* ball = ent_create(SPHERE_MDL,vector(0,0,100),NULL); pXent_settype(ball,PH_RIGID,PH_SPHERE ); // create a ball pXent_setelasticity(ball,50); pXent_addvelcentral(ball,vector(0,-10,0)); // make it jump and roll sidewards while(1){ pX_pick(); // pick and move the ball with the cursor wait(1); } }
Wenn Ihr publiziertes Projekt PhysX-Befehle verwendet, muss die aktuelle PhysX System Software von nVidia auf dem Zielsystem installiert sein. Das PhysX-Logo muss in Pressemitteilungen und auf Ihren Start oder Credit-Screens angezeigt werden. Der Standard-Startbildschirm enthält bereits das PhysX-Logo. Sie finden die detaillierten Anforderungen für das Publizieren in der PhysX EULA.
Zum Publizieren eines Physik-Games kopieren Sie folgendes in Ihren Ordner für publizierte Spiele: ackphysX.dll, PhysXLoader.dll, PhysXCooking.dll und NxCharacter.dll. Die erste Datei findet sich in acknex_plugins, die anderen drei im Gamestudio-Ordner. Normalerweise werden sie automatisch vom Publish-Prozess kopiert. Um sicherzustellen, dass der Endverbraucher die PhysX System Software auf dem Ziel-PC installiert hat, können Sie entweder einen Link zur nVidia Download-Seite (http://www.nvidia.com/object/physx_system_software.html) zur Verfügung stellen. Oder - besser - lassen Sie Ihre Anwendung selbst die Software installieren, z.B. durch einen exec_wait Befehl. Sie können die Installation unbemerkt mit der Befehlszeilenoption /quiet ausführen. Beispiele:
// installing PhysX from the application folder function main() { if (!physX_open()) { printf("Install PhysX System Software"); exec_wait("PhysX_9.10.0224_SystemSoftware.exe","/quiet"); // insert the recent filename here printf("PhysX System Software installed!\nPlease restart your PC now!"); sys_exit(NULL); } ... // installing PhysX from the nVidia Website function main() { if (!physX_open()) { printf("Install PhysX System Software from the web"); exec("http://www.nvidia.com/object/physx_system_software.html",NULL); printf("After installing, please restart your PC!"); sys_exit(NULL); } ...