A Community discussion forum for Halo Custom Edition, Halo 2 Vista, Portal and Halo Machinima

Home  Search Register  Login Member ListRecent Posts
»Forums Index »Halo Custom Edition (Bungie/Gearbox) »Halo CE General Discussion »Spider tank, spider tank...

Author Topic: Spider tank, spider tank... (6 messages, Page 1 of 1)
Moderators: Dennis

Joined: Apr 3, 2013

Posted: Apr 14, 2016 04:17 AM    Msg. 1 of 6       
Goes wherever a spider tank wants.
Can it stick, to the walls?
Unfortunately not, cause only bipeds have a "sticks to walls" flag.

So from some testing it appears that the ground normal k1 affects how much your vehicle's acceleration decreases as you reach its max incline(the max angle it can be at before the powered mass points have no effect), and the ground normal k0 IS the max angle of incline your vehicle can go to before sliding under gravity. Setting k1 to 0.0 and k1 to -1.0 makes it so you can go full speed across walls(until you flip and tumble). Setting k1 to 1.0 makes it so you cant even drive at all.
Edited by MosesofEgypt on Apr 17, 2016 at 01:12 AM

Super Flanker
Joined: Oct 5, 2012

The length of your life depends on my aim.

Posted: Apr 14, 2016 04:28 AM    Msg. 2 of 6       
Quote: --- Original message by: MosesofEgypt
Goes wherever a spider tank wants.
Can it stick, to the walls?
Unfortunately not, cause only bipeds have a "sticks to walls" flag.

Adding to the drive anywhere ability perhaps if you have the time you should add studded wheels? You know, just to sell it a bit more.

Yeesh I'd hate to be the victim of those tires!

Joined: Dec 8, 2015

¡Voy A comer tù corazon!

Posted: Apr 14, 2016 09:41 AM    Msg. 3 of 6       
Those tires would be a pain.

And really, Spider tanks? I mean I'm imaging how powerful a Scorpion would be if it could climb through anything...

Joined: Jun 27, 2009

Jesus is a friend to the vindictive sociopath

Posted: Apr 14, 2016 10:05 AM    Msg. 4 of 6       
Quote: --- Original message by: MosesofEgypt
Goes wherever a spider tank wants.
Can it stick, to the walls?
Unfortunately not, cause only bipeds have a "sticks to walls" flag.

Biped does have some hidden physics values:

Quote: // ! decipher
// offset 1180 = 108 bytes of 0
// offset 1288 = 5 float values in little endian (internal use):
// 1 1 1 0x00000080("-0") 0x00000080("-0")
// offset 1308 = 8 bytes of 0
// offset 1316 = int32_t value of -1 (0xFFFFFFFF)
// ! end

// deciphering:
// there are 8 float values which are populated at least during map compilation
// example data from sbscbeach_12 at offset 326003224:
// 0000003F ABAA2A3E F304353F 431DAFBE F30435BF 431DAF3E F304353F 00000C00
// which means:
// 0.5 0.166667 0.707107 -0.34202 -0.707107 0.34202 0.707107 1.10203E-39 (or 3072 in big endian)
// these looked like coordinates, however, during testing, this is what I am finding:
// these values affect first-person camera behavior, not the behavior of the third-person model; the footstep sounds are related to the third-person model

// value 1: setting to <0 prevents the footstep turning sound; setting to >1 makes the footstep turning sound constant (not sure why, since the third-person model is what affects footstep sounds) [moment scale?] [foot gravity multiplier?] [foot weight (as in, percentage weight, 0-1)?] *[ground normal k0]*
// value 2: snaps crouching camera movement [fp camera crouching velocity, 0-1], affects player speed (so you could set this to 0 and be crouching in third-person view but be able to move at running speed)
// value 3: physics: [relative ground depth?] (can be used for legit walking on walls (negative value) or floating (>0.707107)) *[ground normal k1]*
// value 4: unknown (related to water/air?) [water/air acceleration multiplier?]
// value 5: unknown [water/air normal k1?] (water depth?)
// value 6: [ground acceleration modifier] (0 and 1 = default) (-1 to 1) (negative values keep speed at minimum, higher values reach maximum speed) [foot weight] (how heavy the feet are)
// value 7: (similar effect as value 6)
// value 8: unknown [mass? then unused] (default value is -1, 0xFFFFFFFF)
// end of deciphering

According to your description of k1 and k0, I might have their labels here backwards, which would mean k1 precedes k0 like their listed order in the physics tag class.

But physics does not:

Quote: typedef struct {
float radius;
float moment_scale_frac;
float mass;
float center_of_mass_x;
float center_of_mass_y;
float center_of_mass_z;
float density;
float gravity_scale;
float ground_friction;
float ground_depth;
float ground_damp_fraction_frac;
float ground_normal_k1;
float ground_normal_k0;
// 116, 4
float water_friction;
float water_depth;
float water_density;
// 132, 4
float air_friction_frac;
// 140, 4
float xx_moment_calc; // Calculated regardless of the values stored here;
float yy_moment_calc; // even though the values are stored as specified,
float zz_moment_calc; // Guerilla only displays its calculated values instead.

// representation 1 board, offset 156
// r1b_inertial_matrix_and_inverse_
uint32_t r1b_inertial_matrix_and_inverse_entrycount; // maximum of 2 cells
uint32_t r1b_inertial_matrix_and_inverse_random_id;
uint32_t r1b_inertial_matrix_and_inverse_sig_id; // example value = 0x684B9D00

// representation 2 board, offset 168
// r2b_powered_mass_points_
uint32_t r2b_powered_mass_points_entrycount; // maximum of 32 cells
uint32_t r2b_powered_mass_points_random_id;
uint32_t r2b_powered_mass_points_sig_id; // example value = 0x304C9D00

// representation 3 board, offset 180
// r3b_mass_points_
uint32_t r3b_mass_points_entrycount; // maximum of 32 cells
uint32_t r3b_mass_points_random_id;
uint32_t r3b_mass_points_sig_id; // example value = 0x604D9D00

struct phys_r1c {
// representation 1 cells
// r1c_inertial_matrix_and_inverse_
// all these are calculated regardless of their stored values

float r1c_inertial_matrix_and_inverse_yyzz_xy_zx_i_calc;
float r1c_inertial_matrix_and_inverse_yyzz_xy_zx_j_calc;
float r1c_inertial_matrix_and_inverse_yyzz_xy_zx_k_calc;

float r1c_inertial_matrix_and_inverse_xy_zzxx_yz_i_calc;
float r1c_inertial_matrix_and_inverse_xy_zzxx_yz_j_calc;
float r1c_inertial_matrix_and_inverse_xy_zzxx_yz_k_calc;

float r1c_inertial_matrix_and_inverse_zx_yz_xxyy_i_calc;
float r1c_inertial_matrix_and_inverse_zx_yz_xxyy_j_calc;
float r1c_inertial_matrix_and_inverse_zx_yz_xxyy_k_calc;


struct phys_r2c {
// representation 2 cells
// r2c_powered_mass_points_

char r2c_powered_mass_points_name[32];
uint32_t r2c_powered_mass_points_flags; // verified 4 bytes written
float r2c_powered_mass_points_antigrav_strength;
float r2c_powered_mass_points_antigrav_offset;
float r2c_powered_mass_points_antigrav_height;
float r2c_powered_mass_points_antigrav_damp_fraction;
float r2c_powered_mass_points_antigrav_normal_k1;
float r2c_powered_mass_points_antigrav_normal_k0;

// 68


struct phys_r3c {
// representation 3 cells
// r3c_mass_points_

char r3c_mass_points_name[32];
uint16_t r3c_mass_points_powered_mass_point_sel;
uint16_t r3c_mass_points_model_node;
uint32_t r3c_mass_points_flags; // verified 4 bytes written
float r3c_mass_points_relative_mass;
float r3c_mass_points_mass_calc; // calculated regardless of stored value
float r3c_mass_points_relative_density;
float r3c_mass_points_density_calc; // calculated regardless of stored value
float r3c_mass_points_position_x;
float r3c_mass_points_position_y;
float r3c_mass_points_position_z;
float r3c_mass_points_forward_i;
float r3c_mass_points_forward_j;
float r3c_mass_points_forward_k;
float r3c_mass_points_up_i;
float r3c_mass_points_up_j;
float r3c_mass_points_up_k;
uint16_t r3c_mass_points_friction_type;
// 2
float r3c_mass_points_friction_parallel_scale;
float r3c_mass_points_friction_perpendicular_scale;
float r3c_mass_points_radius;
// 20


} type_meta_phys;

Edited by sparky on Apr 14, 2016 at 10:13 AM
Edited by sparky on Apr 14, 2016 at 10:20 AM

Joined: Mar 22, 2016

Posted: Apr 14, 2016 10:41 AM    Msg. 5 of 6       
I always loved blaster master, is this car referent to it ?

Joined: Apr 3, 2013

Posted: Apr 14, 2016 02:14 PM    Msg. 6 of 6       
Quote: --- Original message by: OctaVinyl
Those tires would be a pain.

And really, Spider tanks? I mean I'm imaging how powerful a Scorpion would be if it could climb through anything...

Be thankful I didn't want to try and script in its hover or jump abilities.

Quote: --- Original message by: JohnCraftz
I always loved blaster master, is this car referent to it ?

Yes, but it will be revealed at CE3 if it's accepted.

And sparky, I'm not 100% sure about the exact behavior and use behind the k values. I really only did testing for about 2 hours last night when I got the idea to do it. I didn't try more than about 6 test cases, and they weren't all that varied. Judging by the name I'm thinking they each might be the k component of two ijk vectors, each of which defines a plane whose angle it makes with the xy plane is some max incline angle. Since they're both a unit length of 1, getting the angle simplifies down to acos(normal_k1) or acos(normal_k0).

The regular values for k1 and k0 are sqrt(2)/2 and 1/2, which give the angles 45 and 60 degrees. Maybe one is a value for when the powered mass points are totally cut off, and the other is when they begin to slip. idk. I'm not in the mood to do anymore testing. Got a calc3 and physics2 exam next week and then finals week after. I'm gonna be very busy for a couple weeks and be trying to stay away from here

Also, flanker, I'm not modifying the model or textures. This thing is meant to do this anyway, and I'm not putting any more effort into it than this. I'll have to release updated physics tags(if I decide to keep this) after CE3 releases it(if they accept it).

A few more pics for the heck of it.

This thing is going to break so many map designs if they dont design it in lol. The camera gets hard to see at steep angles cause it zooms in, but oh well. I might try to fix it later.
Edited by MosesofEgypt on Apr 15, 2016 at 12:31 AM


Previous Older Thread    Next newer Thread

Time: Sat January 18, 2020 1:30 AM 203 ms.
A Halo Maps Website