Simulierung von 3D Flugbahn ohne 3D Befehle

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

bloxx01

Betreff: Simulierung von 3D Flugbahn ohne 3D Befehle

BeitragSa, Feb 12, 2005 12:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich programmiere zurzeit an dem Multiplayer 3D Spaceshooter Verzweifelter Feldzug.
Damit der Server die Bewegung der Gegner berechnen konnte, habe ich bisher mit 3D Befehlen gearbeitet und diesen Vorgang nicht gerendert.
Doch wenn man die Serversoftware bei Geräten ohne 3D Grafikkarte verwenden will bzw. ohne Direct3D Unterstützung, funktioniert das erstellen des Grafikmodis nicht (Graphics3D 640,480,16,2), dann kann ich diese 3D Befehle wie MoveEntity() nicht mehr benutzen - logisch oder?
Nun möchte ich aber die UDP Serversoftware auf einem "richtigen" Server laufen lassen (100Mbit, 3ghz, 3gb ram...), dieser verfügt leider um keine 3D Grafikkarte.

Jeder Gegner verfügt über verschiedene Typefelder wie x#,y#,z#,pitch#,yaw#,roll#,speed#
Gibt es irgendwelche Formeln oder Funktionen um die 3D Befehle nachzuahmen?
Also zb. Ein Gegner sitzt auf der Position X=100,Y=144,Z=450 und sein Pitch ist 40,Yaw=54,Roll=22
Er fliegt mit einer Geschwindikeit von 30.
Welche Position hat er im nächsten Frame?

Ich hoffe das mir jemand helfen kann.

mfg bloxx.
Space Threat - der kostenlose 3D Multiplayer Spaceshooter
www.SpaceThreat.de
 

Klaas

BeitragSa, Feb 12, 2005 14:07
Antworten mit Zitat
Benutzer-Profile anzeigen
ja, kann man ... aber das ist nicht so einfach.

Du brauchst dazu Verständniss von Vektorrechnung und im speziellen Matrizenrechnung.
hier gibt es einen Ansatz:
http://www.blitzbasic.com/code...?code=1193

aber wenn du die Mathematik dahinter nicht begreifst dann wird es dir schwer fallen das in dein Programm einzubauen!

bloxx01

BeitragSa, Feb 12, 2005 14:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich glaube da gibt es ein Missverständnis, ich will auf dem Server keine Modelle nachbilden oder so, ich möchte "nur" eine virtuelle Berechnung der Flüge haben. Also wenn Gegner in der Nähe vom Spieler dann soll er sich zum Spieler drehen und dann gleichzeitig nach vorne fliegen. Der Gegner wird im Moment wie ein Cube gehandhabt.
Space Threat - der kostenlose 3D Multiplayer Spaceshooter
www.SpaceThreat.de

tft

BeitragSa, Feb 12, 2005 16:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi...

dazu brauchst du die volle Emulation. Du must die objecte drehen und bewegen. Eine Einfache flugbahn berechnung wird da nicht reichen. Du must ja auch über Colision und so nachdenken........
Ansonsten such mal in Google unter "einfache Flugbahnberechnung"
TFT
https://www.sourcemagic.ch
Monkey,HTML5,CSS3,W 10 64 Bit, 32 GB Ram, GTX Titan, W8 ist Müll !!!!!!

Smily

Betreff: 2D Befehle

BeitragSa, Feb 12, 2005 19:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Für die Drehung und die Größe kann ich dir Leider Keine Hilfe geben.
Aber ich habe da einen Kleinen Trick, wie ich mit 2D Befehlen Die Poition in 3D Nachamen kann:
1. Z-Achse durch 2 Teilen
2. Die geteilte Z-Achse zu X# und Y# hinzufügen
3. Größe verkleinern. (Indirekt Proportional. Wenn sich die Entfernung verdoppelt, Halbiert sich die Größe. Wenn sich die Entfernung Verdreifacht, drittelt sich dir Größe...)
 

Klaas

BeitragSa, Feb 12, 2005 20:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Vektor- und Matritzenrechnungen brauchst du für die Transformationen (bewegen, drehen). Ob du damit ganze Objekte darstellst oder nur virtuelle Positionen errechnest ist egal, die Berechnungen sind die gleichen.

mein tipp an dich .. lass die Clients die Berechnungen machen! Wenn du kontrollieren willst ob geschummelt wird dann lass andere Clients die Bewegungen auf Richtigkeit überprüfen.
Denn spätestens bei Kollisionsberechnungen wird die Mathematik recht schwer!

stfighter01

BeitragSa, Feb 12, 2005 20:22
Antworten mit Zitat
Benutzer-Profile anzeigen
die kollision und bewegung würd ich sowieso nur vom client ausführen lassen, und dem server würde ich lediglich punktdaten vermitteln.

grossartig gegen schummeln zu schützen wäre overkill. (obwohl ich klaas idee dazu gut finde)
wenns denn sein muss: einfach das programm mittels checksum auf veränderung zu überprüfen reicht (und das kann man auch nachträglich nch einbauen)

mfg stfighter
Denken hilft!

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group