BlackBoard (http://www.black-board.net/index.php)
- Design, Programmierung & Entwicklung (http://www.black-board.net/board.php?boardid=55)
-- Programmieren (http://www.black-board.net/board.php?boardid=4)
--- [Logik] Spiel programmieren (http://www.black-board.net/thread.php?threadid=17466)


Geschrieben von Champus am 01.06.2004 um 17:12:

  [Logik] Spiel programmieren

Servus,
ich glaub ich hab mir ein Denk-ohrwurm eingefangen. Ich überlege jetzt schon seit 2 Tagen über ein (vlt. meinerseits) Problem mit einer Gewissen Logik beim Spieleprogrammieren.
Und zwar geht es mir darum, dass wenn man z.B. in 3D Studio Max ein Modell erstellt hat, dieses Modell in ein neues Spiel einzufügen. Vielleicht schwer verständlich, deshalb mal ein Beispiel:
Sagen wir, ich habe einen Hubschrauber gemodellt, der der seine Propellor (richtig geschrieben? anm. d. Autors) drehen kann. Jetzt code ich mir ein Spiel, in dem man auf den Hubschrauber klicken kann (man sieht ihn von aussen, ähnlich wie bei C&C Generals o.ä.), und der Hubschrauber anfängt, seine Propellor zu drehen. So als wenn er starten will.
Das alles direkt als Animation, also in 3D Studio Max als Film zu rendern, ist kein Problem, aber ich wüsste nicht, wie man es "Interaktiv" "programmiert", dass der Propeller bei der hubschrauberanwahl rotiert. Ich hoffe ihr versteht mein Problem.
Jetzt mal direkte Fragen dazu, dass vorher war nur dass aussen rum:

- Wie wird das Objekt (der Hubschrauber) in das Spiel eingebunden, also die Modelldatei aufgerufen?
- Wie wird der Hubschrauber so programmiert, dass sein Propellor bei einem Klick rotiert?
- Könnt ihr mir da vielleicht direkt ein Codebeispiel zu geben (Programmiersprache ist egal)?



Geschrieben von MyK am 04.06.2004 um 17:13:

 

Zitat:
- Wie wird der Hubschrauber so programmiert, dass sein Propellor bei einem Klick rotiert?


So was nennt sich Event-Driven-Programming. Dein Objekt Hubschrauber stellt dann eine Aktion zur Verfügung (hier: Rotation des Propellers), und die GUI ist dann ein Subscriber dieser Aktion. Wenn dann ein Click an der richtigen Stelle geschieht, wird die Aktion ausgeführt.

Wie man das genau implementiert, kann ich dir momentan noch nicht sagen. Habe selbe noch kein Projekt in der Art geschrieben, aber schau doch mal unter Google. Da findest du sicher was zum Stichwort 'Event-Driven-Programming'



Geschrieben von Compuholic am 07.06.2004 um 11:42:

 

Du brauchst eine Engine, die die Modelle von 3dStudioMAX lesen kann. Ich glaube die Genesis 3d Engine kann das.
Ich habe 3DStudioMAX noch nie benutzt aber ich vermute mal, daß das ähnlich läuft wie bei Milkshape 3d. Du fügst eine Animation in das Modell ein (nur auf Drahtgitterebene, keine Animation rendern lassen). Dann kannst Du in der Engine auf ein bestimmtes Ereignis hin (deinem Klick) diese Bewegung starten. Normalerweise funktioniert das nach dem folgenden Prinzip.


Du hast eine Programm-Hauptschleife in der bei jedem Durchlauf die Szene erst als Modell berechnet wird und danach wird die Szene gerendert. Du hast eine Variable, die die verstrichene Zeit seit dem letzten Schleifendurchlauf festhält. Aufgrund dieser Zeit kannst Du dann die Veränderungen der Positionen berechnen. Bei Genesis3d gibt es eigene Funktionen für die Bewegung von Objekten (z.B. SetPose(blah, blah, blah) ). Dieser Funktion übergibt man dann das Zeit-Offset der Bewegung und die sucht automatisch die richtige Stellung des Objektes heraus.

Lade Dir mal die Genesis3d Engine und ProjectX (das ist ein Framework für Spiele mit der Genesis Engine in C geschrieben). Da ist Beispielcode en Masse dabei.


Forensoftware: Burning Board 2.3.6, entwickelt von WoltLab GmbH