Bipeds don't actually sync

Everything about HD, MD, and their mods.

Moderator: Halo Moderators

Post Reply
002
Ranger
Posts: 944
Joined: Wed Aug 16, 2006 5:48 pm
Location: ::1

Bipeds don't actually sync

Post by 002 » Fri Sep 06, 2013 11:43 pm

About a month ago, I was playing around with Phasor to see if I can spawn cyborgs and control them. A ran into a hitch. They would spawn normally if I scripted Phasor to spawn them, but the only thing that synced after that was if and when they died. Basically, Phasor told the clients "Here is where this biped spawned. You're on your own if it moves from this spot, though." I could launch them into the air and the client would see them die where they were standing if they fell to their deaths.

So, I wanted to play around in Eschaton to verify this. I replaced the pistol bullet with a cyborg spawn then hosted a server. The client did not see any changes at all, so I ended up having to give the client the mod. When I gave the client the mod, the client saw the cyborg spawn, but it spawned without weapons. When the client did enough damage to kill it, weapons and grenades appeared beneath the cyborg's feet. This means that it spawned a "dummy" biped, and the real biped was never sent to the client in the first place. To verify this, I disabled "Projectile is client side only" and still got the same result. To verify the accuracy of this test, I tested this by having the host spawn a vehicle instead, giving the client a fresh bloodgulch.map. The client saw the vehicle spawn and work correctly.

Another interesting thing I found is that player bipeds and vehicles don't sync very well, or only partially sync. Instead, Halo seems to "force" the players' bipeds or vehicles to sync. For example, if I blasted myself with a grenade, but the server had a mod where the grenade had no force, I would see myself flying into the air, then "lag" back to where I was, then flying back into the air, then "lag" back. Eventually, I would stop "lagging" back to where I was, because I would run out of momentum. The Halo server did not tell clients where the biped was going or how fast it was going. If it did, then I would end up snapping back into place on the first "lag". If it were the opposite, where I used a grenade that had no force, and the server had force enabled, I would appear to "lag" away. I would "lag" to points in the middle of the air until I landed on the ground, where I would either stop lagging, or die from the fall damage. Another example was if I set the game globals so players would be twice as fast when they crouched, only players with the mod would see the changes. Everyone else would "lag".

Basically, Halo works like this. Client #5 sends data on what its biped is doing in the server, then the server mimics this data and relays it to other clients, and it's up to the clients to figure out how fast the player is going, what direction it's going, etc. The clients know that the player is moving, so they'll appear to move. Earlier, I said that spawned bipeds do not sync. Since the spawned bipeds from earlier were not players, it doesn't receive any data from the spawned biped's owner because there is no owner, thus it has no reason to sync anything other than death, which is entirely handled by the server anyway. Since clients don't even receive a packet (unless it was done using the phasor plugin I made) that the cyborg spawned, not even death is synchronized.

My spiel is that non-player bipeds don't seem to sync. This may explain why artificial intelligence doesn't work very well/at all over multiplayer using basic conventional methods like Eschaton.
Last edited by 002 on Sat Sep 07, 2013 5:22 am, edited 2 times in total.

TaxiService
Night Stalker
Posts: 6887
Joined: Thu May 24, 2007 5:52 am
Location: 41.896198, 12.4165945
Contact:

Re: Bipeds don't actually sync

Post by TaxiService » Sat Sep 07, 2013 4:55 am

I've always had this idea in the back of my mind, but never really tested it. Let me explain.

We know that vehicles sync, and 002's observations kinda prove that bipeds don't. (now that i think about it, it was obvious. I mean, i've been playing around with them since forever, and in fact they did not sync to joiners. I just never realized this until now..!)

I'm sure all of you must have tried to swap the cyborg_mp bipd in the matg tag to, say, a warthog, or a banshee, and played as a vehicle, right?

What if... What if we edited a vehicle so much (swapping all references, editing speed, reassign functions, etc) that in the end it would look and act like a bipd?
I think vehi and bipd tags are both derived from the unit tag. If i recall correctly It's a deprecated tag, and info on it could be found on some Custom Edition documentation. I dunno. (also, remember the "only against units" flag found in some tags metadata? By that we know that at least bipd's and vehi's are considered units by the game. Vehi and bipd must be evolutions of the unit tag.)

Anyway, if we succeeded in doing a cyborg_mp vehi... like... think of the possibilities. o_o
We would basically have seated bipeds. Imagine a mod in which people spawn as invisible, flying entities, and there would be some of these bipd-looking vehis around. Players would then "get into the bodies" and play as the chosen biped..!!! One drawback would be that vehicles can't teleport (without CE, i guess), so: no teleports. But yo! Something like this could be the start of class-based combat in Halo!

And maybe, just maybe, if we used an actv to control these vehis, they would sync!
The problem is: would projectiles sync, then? If they don't, we could consider turning the proj themselves into vehicles..!! Idk how their respawn is going to work, though. (And, shit! Also the respawn of the actual bipd-looking vehi's, then! We could either use itmc's to spawn the vehis (i'm sure that it's going to work poorly), or make the vehi indestructible, and simply give a chainspawning effect to the death of the player(the flying invisible entity) that would spawn a... dead body. I... I don't know!)

What do you guys think? I think this needs more research. : )
  • TaxiService! Shitposting since 2007!
MGM Sig

002
Ranger
Posts: 944
Joined: Wed Aug 16, 2006 5:48 pm
Location: ::1

Re: Bipeds don't actually sync

Post by 002 » Sat Sep 07, 2013 7:39 am

Projectiles can probably sync if you uncheck "projectile is client side only". I don't know the extent of how much it'll sync. For example, explosions will not sync, only the projectile.

Technically, player bipeds are already kind of like that already, actually. Each player has its own biped that it controls. That's why player bipeds will sync exactly like vehicles.

I've found one more thing with vehicles that may be interesting. If you attempt to place AI into a vehicle and then host the map, the vehicle will no longer sync. This is probably because of my earlier statement, the vehicles' owner is an AI which has no player owner, so they have no reason to sync. However, clients will see that explosions, for some reason, have no effect on the vehicle in question until the AI occupants leave the vehicle, whether the vehicle was flipped from the explosion and the AI fell out, or if the occupants were killed.

I recorded this video a long time ago. The vehicle on the left is the "control" vehicle which has the host (me) in it. The vehicle on the right has an AI driver, gunner, and passenger in it. There are no further modifications to the map, and only the host has the mod, therefore the AI appear invisible.


WaeV
Peon
Posts: 126
Joined: Tue Aug 28, 2012 11:21 pm
Contact:

Re: Bipeds don't actually sync

Post by WaeV » Sat Sep 07, 2013 9:31 am

TaxiService wrote:What if... What if we edited a vehicle so much (swapping all references, editing speed, reassign functions, etc) that in the end it would look and act like a bipd?
I looked into a similar "tag fusion" thing a long while ago - I wanted to combine vehicles and projectiles to essentially get slow-moving rockets you could ride across the map in (before they hit the other wall and explode).

The best I could figure was that a tag is either one class or another at any given point in time. -- But that's not a complete answer! Is there something in the metadata that tells the game what type of tag it is?

Interestingly, there aren't just bipd, effe, vehi, and the other tag classes we're just used to. There are also 'unit' and 'obje'. Bipd, vehi, weap, proj, eqip, are all obje as their second tag class. I have a strong suspicion that if you look at their internal structure you'll find some common elements.
Image

002
Ranger
Posts: 944
Joined: Wed Aug 16, 2006 5:48 pm
Location: ::1

Re: Bipeds don't actually sync

Post by 002 » Sat Sep 07, 2013 9:47 am

It's basically Halo's way of subclassing things.

Code: Select all

#               obje
#                |
#          ---------------------------------
#         |         |            |    |    |
#        unit      item         proj scen ssce
#         |         |
#    -----|         |-----
#   |     |         |     |
#  bipd  vehi      weap  eqip
If you have ever experimented, you will notice that you can almost always replace obje tags with other obje tags. That means you can spawn as a vehicle, you can make a weapon shoot health packs, and you can replace scenery with bipeds (do not do this).

Code: Select all

#        shdr
#         |
#    -----+-----+----(etc.)
#   |     |     |
#  soso  schi  senv
You can also almost always (if not always) replace a shader class with another shader class.

I think subclassing works as a fallback method. For instance, if you change a weapon's tag class to a bipd, it will likely crash. But, if you subclassed the weap class, Halo would read it as a weap class as expected.

.... = nulled out (0xFFFFFFFF)

Code: Select all

Tag Class: weap     item     obje -- Original classes.
Tag Class: weap     ....     .... -- No crash. Works.
Tag Class: weap     bipd     schi -- No crash. Works.
Tag Class: bipd     unit     obje -- Crash. Does not work.
Tag Class: bipd     unit     weap -- No crash. Works.
Tag Class: bipd     schi     weap -- No crash. Works.
Tag Class: asdf     ghjk     weap -- No crash. Works.
Illusion uses this tag scrambling method for its own version of z-team and scrambles the correct class in a random order. Meanwhile, it sets the first tag class to a random 32-bit integer.
Last edited by 002 on Sat Sep 07, 2013 9:35 pm, edited 4 times in total.

TaxiService
Night Stalker
Posts: 6887
Joined: Thu May 24, 2007 5:52 am
Location: 41.896198, 12.4165945
Contact:

Re: Bipeds don't actually sync

Post by TaxiService » Sat Sep 07, 2013 12:45 pm

>http://www.youtube.com/watch?v=Tv9qqTE2snA

Goddammit then! Is it possible to, somehow, make halo treat AIs as players? Like, I don't know what should be hacked for this to happen. : \
The most effective method would be modifying the halo application itself, but of course how the fuck is anyone going to do that!?

Another thing would be a memory mod that the host must run, that would gather info about the AIs present in game, and somehow tell the joiners that there are players in their positions.

I mean, gee this is so dumb. There would probably still be the 16 players limit, and probably the AIs will be forced to use the cyborg_mp biped, or something.

...i don't know. Anyway AIs that don't sync are dumb. : (



PS: waev can you see this?---> ·⁔·

PPS: anyway yo, the class-based bipd-vehi thing is still something i want to test. Also that get-in-the-rocket thing sounds really interesting.
I'm thinking about a vehicle with a fucked up phys tag. It would need to have zero gravity, and somehow *fall* forward to its relative position...? (idk if i'm getting through with this)

...then, like, we could give the vehi a coll that destroys itself whenever it hits something! It should be possible, right? I've seen CE mods with vehicles that would hurt the player if they hit a wall; so by unchecking the passes damage to children flag it should take damage and explode!
How does this sound? (Incomprehensible?)
  • TaxiService! Shitposting since 2007!
MGM Sig

WaeV
Peon
Posts: 126
Joined: Tue Aug 28, 2012 11:21 pm
Contact:

Re: Bipeds don't actually sync

Post by WaeV » Sat Sep 07, 2013 1:38 pm

That gravity idea is great! Can we make a physics tag do that, though? If not, have it just float and propel it along with memory mods that edit its position and velocity, haha.

For AI as players... I wonder if it's possible to increase Halo's player limit? Btcc22 might have an idea of how to do that.
002 wrote:

Code: Select all

Tag Class: weap     item     obje -- Original classes.
Tag Class: weap     ....     .... -- No crash. Works.
Tag Class: weap     bipd     schi -- No crash. Works.
Tag Class: bipd     unit     obje -- Crash. Does not work.
Tag Class: bipd     unit     weap -- No crash. Works.
Tag Class: bipd     schi     weap -- No crash. Works.
Tag Class: asdf     ghjk     weap -- No crash. Works.
Are these experimental results, or predictions?
TaxiService wrote:PS: waev can you see this?---> ·⁔·
yep. :P
Image

TaxiService
Night Stalker
Posts: 6887
Joined: Thu May 24, 2007 5:52 am
Location: 41.896198, 12.4165945
Contact:

Re: Bipeds don't actually sync

Post by TaxiService » Sat Sep 07, 2013 3:08 pm

As for gravity: I think so!

What i don't know is if we can... basically make it fall horizontally. Maybe we just gotta give it a gravity scale and somehow set its antigravity shit to balance it so that it floats in place...? and then set its... wait lemme draw this.

Image

Like, see what i mean? I don't know if this could even work because i think antigravity works only if there's a driver inside the thing?
NEEDS MOAR RESEARCH!!!!!!!!
  • TaxiService! Shitposting since 2007!
MGM Sig

002
Ranger
Posts: 944
Joined: Wed Aug 16, 2006 5:48 pm
Location: ::1

Re: Bipeds don't actually sync

Post by 002 » Sat Sep 07, 2013 9:17 pm

WaeV wrote:Are these experimental results, or predictions?
These are results. The prediction was that they would all fail, and I was bored so I wanted to see what cool things happen. Illusion uses this class obfuscation for its protection, and I have released it a while ago. I really do not know how Halo still accepts the tags even if I subclass the wrong class.

edit: Oh, who can forget the active camo scorpion? I almost forgot about it a long time ago. https://dl.dropboxusercontent.com/u/302 ... sitank.PNG Talking about swapping weapons with vehicles sure reminded me of this.



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

The things I said about the AI are only based on conclusions drawn from experimentation. I really do not know why Halo does what it does.

WaeV
Peon
Posts: 126
Joined: Tue Aug 28, 2012 11:21 pm
Contact:

Re: Bipeds don't actually sync

Post by WaeV » Sun Sep 08, 2013 3:44 am

Interesting. I assumed an index entry's tag classes were just extra debug information, like tag names.
Image

Sparky
Delta Force
Posts: 4194
Joined: Wed Mar 31, 2004 8:59 pm
Location: New Jersey, USA
Contact:

Re: Bipeds don't actually sync

Post by Sparky » Sun Sep 08, 2013 6:37 am

Coordinates and orientation of certain tag type chunks are sent over the network. Chat text is also sent over the network.
Either you are groping for answers, or you are asking God and listening to Jesus.

Post Reply

Who is online

Users browsing this forum: No registered users and 37 guests