Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
29.06.2005, 19:07
Adrian_Broher
Admin


Hallo zusammen,

ich arbeite hier schon seit mehreren Tagen an einem Problem was ich nicht lösen kann. Es geht hierbei um einen modifizierten Fahrzeug Code für hl2.

Wie vielleicht schon den Leuten bekannt ist, welche sich mit Fahrzeugen unter hl2 beschäftigt haben, können diese in unmodifizierter quellcodeversion nur 4 räder haben. Nun haben wir in unserer mod aber Fahrzeuge, die nicht auf dieses Schema (4 räder) passen, wie z.B. verschiedenste Panzer ( http://media.idf-mod.de/public/adrianbroher/steering_prob/idf_dev_puma.jpg ). Daher sollte ich mich um die Abänderung kümmern.

Soweit, so gut. Im Endeffekt war die Änderung der Radanzahl einfacher als ich erwartet hatte und hatte auch relativ flott ein nicht 4 rad Fahrzeug ( http://media.idf-mod.de/public/adrianbroher/steering_prob/idf_dev_6_wheel.jpg ).

Doch leider hatte das ganze einen schönheitsfehler: Das Fahrezeug lies sich nicht lenken. Also hab ich r_VehicleDrawDebug angeschaltet und siehe da, die Räder werden nicht korrekt gelenkt (idf_dev_6_wheel_steer.jpg). Die Hinterachse (rechte Bildseite) sollte sich eigentlich nach rechts drehen, was sie aber nicht tut (erkl: Die grünen debugoverlays geben die Position und Rotation der räder in der Physikengine an).

Also habe ich mir mal die anderen Fahrezuge angeschaut ( http://media.idf-mod.de/public/adrianbroher/steering_prob/idf_cat.jpg | http://media.idf-mod.de/public/adrianbroher/steering_prob/idf_cat_debug.jpg ) und siehe da ( http://media.idf-mod.de/public/adrianbroher/steering_prob/idf_cat_steer.jpg | http://media.idf-mod.de/public/adrianbroher/steering_prob/idf_cat_steer_debug.jpg ) es werden nur die 1. und die 3. achse gelenkt. Die 2. und 4. lenken überhaupt nicht mit. (Ich habe zuerst gedacht die Infos über die Lenkung werden aus den Attachments ausgelesen, welche die Position der räder angeben. => falsch gedacht.)

Also im quellcode nachgeschaut was man dagegen tun könnte:

Innerhalb der CNWheelVehiclePhysics ( datei: nwheelvehiclephysics.h, es ist nur eine leicht geänderte Kopie der CFourWheelVehiclePhysics, Datei : fourwheelvehiclephysics.h ) gibt es 3 methoden, welche etwas mit lenken zu tun haben:

Quellcode:void SteeringRest( float carSpeed, const vehicleparams_t &vehicleData );
void SteeringTurn( float carSpeed, const vehicleparams_t &vehicleData, bool bTurnLeft );
void SteeringTurnAnalog( float carSpeed, const vehicleparams_t &vehicleData, float sidemove );
diese machen nichts anderes (inclusive einiger Korrekturberechnungen ) als in einem struct

Quellcode:vehicle_controlparams_t        m_controls;
den lenkwinkel zu speichern.

Dieser wird dann beim innerhalb der methode CNWheelVehiclePhysics::Think() verarbeitet:

Quellcode:m_pVehicle->Update( gpGlobals->frametime, m_controls);
m_pVehicle is ein pointer auf ein IPhysicsVehicleController, welche nur eine Interface-Klasse ist, die die Engine zur Verfügung stellt.

Quellcode:IPhysicsVehicleController::Update( );
hat folgendes erklärendes Kommentar:

// updates the IPhysicsVehicleController object

O.o'' Boah, wirklich?

Sprich: ich komme nicht an den Code ran und weiss auch nicht was der Code macht, daher fällt das nach/umbauen der Methode weg.

Google, SourceSDK, diverse Foren und Kollegen konnte mir auch nicht weiterhelfen.
Ich bin so ziemlich mit meinem Latein am Ende und bin für jede Art von Ideen und Vorschlägen zu dem Thema offen.

€dit: code-tags hinzugefügt

--

There is nothing wrong with high standards. It's your problem that you don't meet them.
If you think it's simple, then you have misunderstood the problem.
When a customer says "nothing has changed", assume they're lying.


Dieser Beitrag wurde am 29.06.2005 um 19:23 von Adrian_Broher bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
001
01.07.2005, 12:21
Adrian_Broher
Admin


So, ich habe mich mal ein wenig informiert und eine E-Mail an Yahn Bernier (Lead-Coder bei Valve) gesendet. Er hat mir folgende Antwort geschickt:

Zitat:
From Jay:

There are some internal wheel limits: 10 for real wheels, 12 for raycast
cars. Also, no more than 2 per axle. So really a 5-axle car with 10
wheels is the max supported.

Also, there are some bits of code that still assume 4 wheels. Some of
the steering uses wheel index 0,1 as the "front" and index 2,3 as the
"rear" for some calcs. Maybe he can reorder his axles to fix his
problem?

I built a test 6-wheel vehicle before we shipped but didn't have time to
fix all of the bugs and make it work. I haven't gone back to work on
this since then, so I'm still not sure if it's possible to fix this
without modifying vphysics.

-----------------

Let us know if re-ordering the wheel indices is a sufficient workaround
and actually gets you closer to having it working.

Yahn

Ich versuche mal seine Idee umzusetzen und werde euch auf dem laufenden halten.

--

There is nothing wrong with high standards. It's your problem that you don't meet them.
If you think it's simple, then you have misunderstood the problem.
When a customer says "nothing has changed", assume they're lying.


Dieser Beitrag wurde am 01.07.2005 um 12:22 von Adrian_Broher bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
002
01.07.2005, 21:51
Fetti



kannste mal bitte übersetzten was der da labert ?? bin nich so informiert in englisch ^^ *g*

--

[URL=http://www.ice-gaming.de/forum]ICE-GAMING FORUM (BESSER)[/URL]

zum Seitenanfang zum Seitenende Profil || Suche
003
02.07.2005, 11:50
theDon



Im Kern sagt er, dass der Steuerungcode von vier Raedern ausgeht und deshalb glaubt, Raeder 2 und 3 waeren die hintere Achse. Deshalb soll er die Raederindizes anders verteilen, damit Raeder 2 und 3 hinten sind.

--

\o tanz den naziprau! o/

And more than ever, I hope to never fall,
Where enough is not the same it was before

zum Seitenanfang zum Seitenende Profil || Suche
004
22.07.2005, 16:10
The Gear



Is schon geil das einer von Valve einem eine Email schickt und sogar ein test
wagen baut mit 6 rädern !

er sagte noch das er nicht alle fehler korriegieren kann er müsste wieder arbeiten...

--

zum Seitenanfang zum Seitenende Profil || Suche
005
22.07.2005, 17:08
feigling



Zitat:
The Gear postete
Is schon geil das einer von Valve einem eine Email schickt und sogar ein test
wagen baut mit 6 rädern !

er sagte noch das er nicht alle fehler korriegieren kann er müsste wieder arbeiten...

Das sagte er nicht.

Er sagte, dass er vor dem Release (von HL 2) einen Test Wagen mit 6 Rädern gebaut hat, aber dann keine Zeit mehr hatte weiter dran zu arbeiten.

Der Testwagen mit 6 Rädern war also schon lange da, bevor die Email verschickt wurde.

--

zum Seitenanfang zum Seitenende Profil || Suche