Gamestudio-Physik

Gamestudio enthält ein z. T. auf der Open Dynamics Engine basierendes Physik-Subsystem, welches ein realistisches Bewegungsverhalten für Modelle ermöglicht. Derzeit werden starre Körper (rigid bodies) - d.h. 3D-Modelle werden während einer Simulation oder aufgrund eines Aufpralls nicht verformt - sowie Wasserkörper unterstützt.

Da dieser Simulationstypus sehr rechenintensiv ist, ist das Physik-Subsystem standardmäßig ausgeschaltet. Wenn Sie sie benutzen möchten, müssen Sie physikalische Entities registrieren und der Simulation zugängig machen. Das bedeutet, Sie delegieren der Engine die alleinige Bewegungskontrolle über diese Objekte. Brauchen Sie eine physikalische Entity nicht länger, sollten Sie ihre Registrierung aufheben oder das Physiksystem abschalten. Auch wenn es verführerisch sein mag, einfach jedes Objekt in Ihrem Game als physikalische Entity zu registrieren, raten wir aus Gründen der Performance dringend davon ab.

Wann immer Bewegung unter Verwendung physikalischer Näherungswerte simuliert wird, besteht immer ein Risiko von "Ausbrüchen". Grundsätzlich heißt das, dass Ihre Objekte unerwartete Dinge machen, wie z.B. bei voller Geschwindigkeit davonzufliegen. Um diesen Ausfällen vorzubeugen, wurde einige Mühe in die Physik-Engine gesteckt. Eine 100-prozentige Pannensicherheit ist jedoch nicht machbar. All diesen Warnungen zum Trotz ist simulierte Physik eine großartige Möglichkeit Ihr Spiel aufzupeppen, erlaubt sie es dem Player doch, in diese künstliche Umgebung einzutauchen und neue, unerwartete Dinge zu unternehmen. Auf der Seite Physics FAQ finden Sie Hilfe für alle möglichen Probleme, denen Sie begegnen könnten.

Wie mit allen Kollisionen muss der Level von einem ausgehöhlten Sky-Block umgeben sein, damit die Physik-Kollisionserkennung funktioniert. Nicht-Physik-Objekte dürfen nicht mit Physikobjekten kollidieren, doch Physikobjekte dürfen mit ruhenden Nicht-Physik-Objekten kollidieren. Auf der Downloadseite finden Sie Physik-Beispiele - ein über ein Terrain fahrendes Auto oder ein Kran, der Gegenstände vom Boden aufnimmt.

Funktions-Übersicht

Es gibt drei Funktionskategorien, die sich mit der Steuerung physikalischer Objekte in GameStudio befassen:
ph_ Globale Funktionen, die das Verhalten des Physik-Simulators oder der simulierten Welt verändern.
phent_ Physik-Entityfunktionen, die sich jeweils auf eine einzelne Entity auswirken.
phcon_ Beschränkte Funktionen, die die Bewegung physikalischer Entities begrenzen.

Entity-Funktionen

Nur 3D-Entities wie MDL- und WMB-Modelle können Physik-Entities werden. Die grundlegenden Schritte, eine Physik-Entity zu erstellen, sind:

1. Erstellen der Entity durch ent_create oder durch Platzieren im WED.
2. Bewegen der Entity zur gewünschten Startposition.
3. Aufrufen von phent_settype , um GameStudio zu informieren, dass Sie dieses Objekt vom Physik-Untersystem gesteuert haben wollen.
4. Bestimmen derr Objekteigenschaften ( phent_setmass , phent_setdamping , phent_setgroup )
5. Festlegen der Gravitation mit ph_setgravity.
6. Aktivieren der Physik-Engine durch Aufrufen von ph_selectgroup.

Disclaimer

Open Dynamics Engine
Copyright (c) 2001-2004, Russell L. Smith.
All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

Neither the names of ODE's copyright owner nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

 

► Aktuelle Version Online