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 »[Release] Relay

Page 1 of 3 Go to page: · [1] · 2 · 3 · Next
Author Topic: [Release] Relay (77 messages, Page 1 of 3)
Moderators: Dennis

sparky
Joined: Jun 27, 2009

Jesus is a friend to the vindictive sociopath


Posted: Apr 23, 2016 10:04 PM    Msg. 1 of 77       
Relay is a console application that facilitates extra network communications for the Halo PC or Halo CE games. Basically, what that means is that you can synchronize stuff with it. It is a helper application, intended to be used by a SAPP script or otherwise in the background.

You don't need SAPP. You can just launch Relay directly.

Requirements: https://www.microsoft.com/en-us/download/details.aspx?id=48145

Version 1.0 demo

- It can launch Halo. No biggie. Read the instructions, or open it and enter "play halo", "play haloce", "host halo", or "host haloce". For playing, you'll probably want to add some startup options like enabling the console, which would be "play halo -console" or "play haloce -console". Hosting is for running haloded.exe or haloceded.exe, so you'll definitely want to specify options there, either through a shortcut link's target text field or directly in the program window, for example:

-exec "dedicated servers\inits\init 1.txt" -port 2322 -path "dedicated servers\sapp configurations\1\cg"


...if you're using my dedicated server starting kits for Halo or Halo CE.

The official version 1.0 will be more useful and will come with a SAPP Lua script for hosts. This is currently just a demo of the program, for comments and giggles.
Edited by sparky on Apr 23, 2016 at 10:05 PM



-----
Update May 7, 2016

1) https://www.microsoft.com/en-us/download/details.aspx?id=48145
2) Download Relay
Optional) Download Relay Source Code (no stealing please; this is under development)
3) Forward to your computer ports 35400-35416 (UDP) with your router.
-----

Change Log:

May 7, 2016

- Early this morning, I got Relay to work: https://www.youtube.com/watch?v=r7h0Wgv0gIE
- I cleaned up the source code, so now it is available for you to peruse / compile at your leisure.
- In its current state, it works only with halo.exe. I think it is somewhat of a trivial matter to add compatibility, and I intend to do so with haloded.exe, haloce.exe and haloceded.exe.
- You can also use it with Multiclient.exe if you have that placed inside your game folder.
- Start relay.exe then type in something like "play halo -console -windowed -novideo" and then wait for the game to launch and then host or join a game in it. To use it with Multiclient, place Multiclient.exe inside your game's folder, then use a command like this in Relay: "play multiclient halo -console -windowed -novideo".
- This is a beta testing version for Halo PC (halo.exe). The console window is chatty.


-

Edited by sparky on May 7, 2016 at 04:23 PM



THIS ENTIRE THREAD IS OUTDATED AS IS ALL THE INFORMATION HEREIN ABOUT THIS PROGRAM.
Edited by sparky on May 20, 2016 at 10:20 PM


DOOM899
Joined: Jul 23, 2013

{DM} [gamesmaster] if i can ill help maybe


Posted: Apr 24, 2016 12:11 AM    Msg. 2 of 77       
Quote: --- Original message by: sparky

Relay is a console application that facilitates extra network communications for the Halo PC or Halo CE games. Basically, what that means is that you can synchronize stuff with it. It is a helper application, intended to be used by a SAPP script or otherwise in the background.

Download: http://www.mediafire.com/download/5tx1du1u2hdsw80/relay.zip
Requirements: https://www.microsoft.com/en-us/download/details.aspx?id=48145

Version 1.0 demo

- It can launch Halo. No biggie. Read the instructions, or open it and enter "play halo", "play haloce", "host halo", or "host haloce". For playing, you'll probably want to add some startup options like enabling the console, which would be "play halo -console" or "play haloce -console". Hosting is for running haloded.exe or haloceded.exe, so you'll definitely want to specify options there, either through a shortcut link's target text field or directly in the program window, for example:

-exec "dedicated servers\inits\init 1.txt" -port 2322 -path "dedicated servers\sapp configurations\1\cg"


...if you're using my dedicated server starting kits for Halo or Halo CE.

The official version 1.0 will be more useful and will come with a SAPP Lua script for hosts. This is currently just a demo of the program, for comments and giggles.
Edited by sparky on Apr 23, 2016 at 10:05 PM
to bad I, no can use


Mootjuh
Joined: Mar 12, 2008

Hilariously derailing oneliner


Posted: Apr 24, 2016 12:38 AM    Msg. 3 of 77       
With synchronizing stuff, I am assuming you mean AI?


DaLode
Joined: Oct 4, 2014

Ho ho hooooly doodle!


Posted: Apr 24, 2016 04:25 AM    Msg. 4 of 77       
Sparky, what does this program mean for the average Joe?
Could you give some practical cool examples of what this applications allows?


Super Flanker
Joined: Oct 5, 2012

The length of your life depends on my aim.


Posted: Apr 24, 2016 08:04 AM    Msg. 5 of 77       
3 paragraphs max!


SOI_7
Joined: Mar 23, 2012

ZA WARUDO! TOKI WO TOMARE!


Posted: Apr 24, 2016 08:47 AM    Msg. 6 of 77       
Quote: --- Original message by: Super Flanker
3 paragraphs max!




sparky
Joined: Jun 27, 2009

Jesus is a friend to the vindictive sociopath


Posted: Apr 24, 2016 04:22 PM    Msg. 7 of 77       
Sorry! But to be clear, I'll have to still use more than 20 words. If it's still too wordy, I'll use pointed phrases. (There's a TL;DR at the bottom!)

The program is called Relay (relay.exe). It lets you run the game as usual, but adds additional network communication, meaning that when a person uses it to host haloded.exe or haloceded.exe, then players who open the game through Relay and join their server can have their game data like machine switch states and other stuff synchronize which don't normally synchronize (hopefully including AI at some point).

First thing you want to do is install Visual C++ Redistributable for Visual Studio 2015
so you can use this, because it was compiled with Visual Studio 2015. Otherwise, you'll get an error when you open relay.exe.

Then just double click on relay.exe. Windows Firewall will ask you about opening ports (well, in the future it will, but right now there's no network traffic). Click "Allow" to allow network connections.

Now if you want to join other games, double click on relay.exe and type in "play halo" or "play haloce". If you would rather host a dedicated server game, double click on relay.exe and type in "host halo" or "host haloce". Relay will do the rest; just play or host as usual. But you can add options, like play haloce -console -windowed -screenshot and host haloce -exec "my server inits\init 55.txt" -port 2355 -path "my server sapp configs\55\sapp\cg" .

Sorry but I don't have plans for the first release to support hosting games through the game client itself; in some later release, I'll make it work without SAPP so you can just host through the game instead of using haloded.exe or haloceded.exe.

If Halo or Halo CE are not in the default recommended installation directories, then just put a copy of relay.exe wherever you installed those games, and run it from there. Relay only looks in its current folder and the usual locations for the Halo applications, rather than looking at a registry key. I will probably change that so it looks at the registry keys instead, minimizing hassle.

Right now, this demo lets you run halo.exe, haloce.exe, haloded.exe, or haloceded.exe through commands. That's nothing you can't basically already do without it.

That's all it does right now. When I update it, it will have all the features of networking, specifically:

- synchronizing doors and machine switches

and later, attempts at synchronizing AI, etc.

Players who want to synchronize stuff with the servers they connect to will need to double-click on relay.exe and type "play halo" or "play haloce", and servers will have to type "host halo" or "host haloce" and then stuff will synchronize between those servers and players who join those servers.

----- TL;DR -----

Relay synchronizes AI, etc.

Not yet... but try it out!

1. Install Visual C++ Redistributable for Visual Studio 2015
2. Download Relay.exe
3. Put relay.exe with Halo or Halo CE
4. Open relay.exe
5. Wanna host? Type host halo or host haloce. Wanna play? Type play halo or play haloce.

That's how to sync stuff with Relay!


Edited by sparky on Apr 24, 2016 at 04:34 PM


Super Flanker
Joined: Oct 5, 2012

The length of your life depends on my aim.


Posted: Apr 24, 2016 04:59 PM    Msg. 8 of 77       
Quote: --- Original message by: sparky

Sorry! But to be clear, I'll have to still use more than 20 words. If it's still too wordy, I'll use pointed phrases. (There's a TL;DR at the bottom!)

The program is called Relay (relay.exe). It lets you run the game as usual, but adds additional network communication, meaning that when a person uses it to host haloded.exe or haloceded.exe, then players who open the game through Relay and join their server can have their game data like machine switch states and other stuff synchronize which don't normally synchronize (hopefully including AI at some point).


All I needed for my intellect.


SOI_7
Joined: Mar 23, 2012

ZA WARUDO! TOKI WO TOMARE!


Posted: Apr 24, 2016 05:53 PM    Msg. 9 of 77       
Quote: --- Original message by: sparky
(There's a TL;DR at the bottom!)
Edited by sparky on Apr 24, 2016 at 04:34 PM


Saitama-sensei approves
Edited by SOI_7 on Apr 24, 2016 at 05:53 PM


sparky
Joined: Jun 27, 2009

Jesus is a friend to the vindictive sociopath


Posted: Apr 26, 2016 05:16 PM    Msg. 10 of 77       
I'm making it so you don't need to use SAPP. It will work if you want to host or play with the game client and if you want to host with the game server.

It will be as simple as double-clicking relay.exe and typing one of these commands:

play halo
play haloce
host haloded
host haloceded

You can add parameters like -console and dedicated server configuration options.

Since I just discovered that it exists, I'll make it compatible with Halo Multiclient, so you would run the commands:

play multiclient halo.exe
play multiclient haloce.exe

To use multiclient, you will have to put multiclient.exe in your game installation folder.

The command to "host" always means hosting a dedicated server game. If you want to host through the game client, just do "play" and start a new multiplayer game.
Edited by sparky on Apr 26, 2016 at 05:21 PM
Edited by sparky on Apr 26, 2016 at 05:42 PM


lolslayer
Joined: Mar 21, 2015

https://www.youtube.com/watch?v=uMHbAKvPJkU


Posted: Apr 26, 2016 05:35 PM    Msg. 11 of 77       
One step closer to synchronized AI :)


sparky
Joined: Jun 27, 2009

Jesus is a friend to the vindictive sociopath


Posted: Apr 26, 2016 05:53 PM    Msg. 12 of 77       
Added support for multiclient. You put multiclient.exe inside your Halo or Halo Custom Edition folder, then run relay.exe and enter the commands:

play multiclient halo.exe -console
play multiclient haloce.exe -console

...for example.

Gonna get to the fun parts now, memory reading and the rest.

--

Edit: Success so far, no foreseeable hindrances.
Edited by sparky on Apr 27, 2016 at 12:05 AM


Super Flanker
Joined: Oct 5, 2012

The length of your life depends on my aim.


Posted: Apr 27, 2016 01:32 PM    Msg. 13 of 77       
Quote: --- Original message by: sparky

I'm making it so you don't need to use SAPP.


Somewhere in Hungaria sehee just exploded.


sparky
Joined: Jun 27, 2009

Jesus is a friend to the vindictive sociopath


Posted: Apr 28, 2016 05:00 PM    Msg. 14 of 77       
Great news: I just figured out how to get this to work, logically, since memory values change at different times. I know, it's basic. ;)

The solution for disjunct memory value states and waiting for memory values to change is to use separate timers that periodically check for memory values.

The timers have their own public values that they alter, and since they loop (actually trigger cyclically) constantly, they can check each others' values in passing, thus giving a switch-based progression through logic. They can also progress deeper or rescind back out of their own "if" statements based upon memory values, since they trigger repeatedly.

So for example, the first timer updates the player ip and port list which is only valid once the program is in hosting mode. So it needs to know if the game is in hosting mode. So its updates use "if (isHosting)" before updating the list.

So at the same time, another timer alters isHosting based upon other memory values.


DaLode
Joined: Oct 4, 2014

Ho ho hooooly doodle!


Posted: Apr 28, 2016 05:58 PM    Msg. 15 of 77       
Holy doodle.
Some mad h4x right there.


sparky
Joined: Jun 27, 2009

Jesus is a friend to the vindictive sociopath


Posted: Apr 28, 2016 06:17 PM    Msg. 16 of 77       


Sparky vs. the bots

EDIT: I'm on the networking stage now. I expect to have a nicely functional demo version for this weekend.
Edited by sparky on Apr 29, 2016 at 03:23 AM


Super Flanker
Joined: Oct 5, 2012

The length of your life depends on my aim.


Posted: Apr 29, 2016 01:12 PM    Msg. 17 of 77       
Cupid and whisp must be using wifi.....


sparky
Joined: Jun 27, 2009

Jesus is a friend to the vindictive sociopath


Posted: Apr 30, 2016 10:50 PM    Msg. 18 of 77       
I had to do some more experiments, but now the goal is in sight. I'm going to take it easy tomorrow and I expect that I'll have a working release some time in the first week of May.



Kinnet
Joined: Dec 27, 2013

FeelsGoodMan


Posted: May 2, 2016 10:49 AM    Msg. 19 of 77       
Cool


Skidrow925
Joined: Mar 19, 2010

"ideological sense of respect and tact of a 5yo"


Posted: May 3, 2016 07:56 PM    Msg. 20 of 77       
this should be pretty interesting actually, assuming it does what's on the tin


sparky
Joined: Jun 27, 2009

Jesus is a friend to the vindictive sociopath


Posted: May 3, 2016 10:45 PM    Msg. 21 of 77       
I decided that when hosting a game, relay listens on port 35400 UDP and when joining a game, relay connects through ports 35400-35500 UDP. I am using a range for connecting because there can be potentially 16 players with the same IP address, such as kids in school, all connected to the same game server using the port numbers their school router provided them. If in those situations, there is any means of forwarding ports, then they should forward ports 35400-35500 UDP. If you use a router, you should do this also, and you should also allow both incoming and outgoing connections to relay.exe through Windows Firewall; you can limit these to ports 35400-35500 if you want. Having a range of ports would let me do fancy things like connect to additional servers and enable spectating and I guess have more than 16 players, etc.


Super Flanker
Joined: Oct 5, 2012

The length of your life depends on my aim.


Posted: May 4, 2016 01:47 PM    Msg. 22 of 77       
Quote: --- Original message by: sparky
Having a range of ports would let me do fancy things like connect to additional servers and enable spectating and I guess have more than 16 players, etc.


I wonder if leather face ever invisioned that his saw would allow him to do "fancy things".


sparky
Joined: Jun 27, 2009

Jesus is a friend to the vindictive sociopath


Posted: May 6, 2016 02:33 PM    Msg. 23 of 77       
I'm trying to figure out how I should pack the data to send.

I'm doing the "device groups" memory table, which is 8248 bytes in total. I check to see which values change in it, and then I have two options:

A) If a value changes, send the entire 8248 bytes of the memory table over the wire to each client. (That would be after having checked all the values in the memory table, so only once per check cycle, not once per value change within each check cycle.) So that means sending the whole memory table over in its changed state, and basically overwriting the player's device groups memory table in its entirety. This is very simple, but might make it difficult for when I want to compare what has changed on the client's side also. (Which brings to mind, "never trust the player", but oh well.)

B) Collect all the changed values, including their respective indices, and send them over to all the clients. The index would be a set 4 bytes in size (an integer). This would generally be a less amount of data to send, unless we're dealing with highly volatile memory tables, such as AI. But for device groups, this should be preferable.

I was thinking of using Base64 encoding, but that's not necessary if I'm just going to have the same encoding format. See, the sizes of values can be ascertained based upon their index value, so I don't even need to specify how many values I'm sending (in fact, it would be better to not do that).


Btcc22
Joined: Dec 17, 2012


Posted: May 6, 2016 11:05 PM    Msg. 24 of 77       
Quote: --- Original message by: sparky
I am using a range for connecting because there can be potentially 16 players with the same IP address, such as kids in school, all connected to the same game server using the port numbers their school router provided them. If in those situations, there is any means of forwarding ports, then they should forward ports 35400-35500 UDP.


You might be better off providing a basic NAT punchthrough service rather than hoping for forwarded ports, or simply don't have the server initiating connections to the clients. There is no need to have a range of ports for the client.

Edited by Btcc22 on May 6, 2016 at 11:16 PM


DOOM899
Joined: Jul 23, 2013

{DM} [gamesmaster] if i can ill help maybe


Posted: May 7, 2016 12:45 AM    Msg. 25 of 77       
I would love to see this working, for open {S} they use the same net code.


sparky
Joined: Jun 27, 2009

Jesus is a friend to the vindictive sociopath


Posted: May 7, 2016 01:26 AM    Msg. 26 of 77       


EtchyaSketch
Joined: Apr 11, 2014

S P I N


Posted: May 7, 2016 02:08 AM    Msg. 27 of 77       
Hey, that's pretty good.


DaLode
Joined: Oct 4, 2014

Ho ho hooooly doodle!


Posted: May 7, 2016 03:33 AM    Msg. 28 of 77       
Three cheers to Sparky!
Cheers.
Cheers.
Cheers!


sparky
Joined: Jun 27, 2009

Jesus is a friend to the vindictive sociopath


Posted: May 7, 2016 11:53 AM    Msg. 29 of 77       
Quote: --- Original message by: Btcc22

Quote: --- Original message by: sparky
I am using a range for connecting because there can be potentially 16 players with the same IP address, such as kids in school, all connected to the same game server using the port numbers their school router provided them. If in those situations, there is any means of forwarding ports, then they should forward ports 35400-35500 UDP.


You might be better off providing a basic NAT punchthrough service rather than hoping for forwarded ports, or simply don't have the server initiating connections to the clients. There is no need to have a range of ports for the client.

Edited by Btcc22 on May 6, 2016 at 11:16 PM


This is all using UDP, protocol 17; I was considering protocol 27, RDP, but since it is more of a manual situation for router configuration, it would probably be easier for players to forward ports for UDP. Protocol Numbers.

At the moment, it is organized so that it uses ports 35400 to 35416, based upon the player's index. So when you are hosting a game and playing in it also (halo.exe or haloce.exe), then you are playing in slot 0 (of 0-15), which is the hosting slot with port 35400. Since you don't have to send any information to yourself, you can connect to players 2-16 using ports 35401 to 35415. When you join a network game hosted using a dedicated server where the server does not "play" in the game, then the server communicates at port 35400, and players communicate at ports 35401 to 35416, since there are 17 network devices.

Can you recommend any previous work to achieve the NAT translation? Nil does something with the Port Mapper extension for Halo Mini Demo. I don't know who actually developed that, whether nil, 002, Samuco, or someone else.

Initially, I was going to have the players send a message to the server telling it which UDP port they would be using. Instead, I could have the players' first message to the server be the UDP port on which they are listening, but that still does not mean that the UDP messages directed to those ports will get through the player's router. I could go with a 2-way connection such as TCP, but that is slower than UDP, and when a door opens for mere seconds, and there is the potential to fall off a platform or warp-glitch-lag up and down while riding it, I need to keep latency minimal.
Edited by sparky on May 7, 2016 at 11:59 AM

This is in the works for the first major update after initial release:


Edited by sparky on May 7, 2016 at 02:29 PM

---

See the OP for downloads to get the program and the source code.
Edited by sparky on May 7, 2016 at 04:18 PM

---

To get compatibility with all four games (Halo PC, Halo PC Dedicated SErver, Halo CE, and Halo CE Dedicated Server), I'm using an approach similar to the Phasor Lua file.

public static void setMemoryAddresses()
{
switch (exe_type)
{
case gameprogramtype.HALOPC:
{
MA_NEWESTCONNECTION = 0x006A3F38;
MA_MT_NETWORK = 0x00861340;
MA_MT_NETWORK_MAXPLAYERS = 0x008614E5;
MA_MT_NETWORK_PLAYERCOUNT = 0x008614E8;
MA_MT_NETWORK_ENTRIES_CLIENTS = 0x008614EA;
MA_MT_NETWORK_IPPORT = 0x008616F8;
MA_MT_DEVICEGROUPS = 0x40026BD0;
MA_MT_DEVICEGROUPS_ENTRYCOUNT = 0x40026BFC;
MA_MT_DEVICEGROUPS_ENTRYCOUNT2 = 0x40026BFE;
MA_MT_DEVICEGROUPS_ENTRYCOUNT3 = 0x40026C00;
MA_MT_DEVICEGROUPS_NEXTID = 0x40026C02;
MA_MT_DEVICEGROUPS_ENTRIES = 0x40026C08;
MA_MT_PLAYERS = 0x402AAF94;
MA_MT_PLAYERS_ENTRIES = 0x402AAFCC;

break;
}

case gameprogramtype.HALOCE:
{
MA_NEWESTCONNECTION = 0x0063EE28;
MA_MT_NETWORK = 0x007FC6A0;
MA_MT_NETWORK_MAXPLAYERS = 0x007FC885;
MA_MT_NETWORK_PLAYERCOUNT = 0x007FC888;
MA_MT_NETWORK_ENTRIES_CLIENTS = 0x007FC88A;
MA_MT_NETWORK_IPPORT = 0x007FCA98;
MA_MT_DEVICEGROUPS = 0x40026BD0;
MA_MT_DEVICEGROUPS_ENTRYCOUNT = 0x40026BFC;
MA_MT_DEVICEGROUPS_ENTRYCOUNT2 = 0x40026BFE;
MA_MT_DEVICEGROUPS_ENTRYCOUNT3 = 0x40026C00;
MA_MT_DEVICEGROUPS_NEXTID = 0x40026C02;
MA_MT_DEVICEGROUPS_ENTRIES = 0x40026C08;
MA_MT_PLAYERS = 0x402AAF94;
MA_MT_PLAYERS_ENTRIES = 0x402AAFCC;

break;
}
case gameprogramtype.HALODED:
{
MA_NEWESTCONNECTION = 0x0062CC38;
MA_MT_NETWORK = 0x00745B80;
MA_MT_NETWORK_MAXPLAYERS = 0x00745D25;
MA_MT_NETWORK_PLAYERCOUNT = 0x00745D28;
MA_MT_NETWORK_ENTRIES_CLIENTS = 0x00745D2A;
MA_MT_NETWORK_IPPORT = 0x00745F38;
MA_MT_DEVICEGROUPS = 0x40026B48;
MA_MT_DEVICEGROUPS_ENTRYCOUNT = 0x40026B74;
MA_MT_DEVICEGROUPS_ENTRYCOUNT2 = 0x40026B76;
MA_MT_DEVICEGROUPS_ENTRYCOUNT3 = 0x40026B78;
MA_MT_DEVICEGROUPS_NEXTID = 0x40026B7A;
MA_MT_DEVICEGROUPS_ENTRIES = 0x40026B80;
MA_MT_PLAYERS = 0x4029CE90;
MA_MT_PLAYERS_ENTRIES = 0x4029CEC8;

break;
}
case gameprogramtype.HALOCEDED:
{
MA_NEWESTCONNECTION = 0x005B0C18;
MA_MT_NETWORK = 0x006C7960;
MA_MT_NETWORK_MAXPLAYERS = 0x006C7B45;
MA_MT_NETWORK_PLAYERCOUNT = 0x006C7B48;
MA_MT_NETWORK_ENTRIES_CLIENTS = 0x006C7B4A;
MA_MT_NETWORK_IPPORT = 0x006C7D58;
MA_MT_DEVICEGROUPS = 0x40026B48;
MA_MT_DEVICEGROUPS_ENTRYCOUNT = 0x40026B74;
MA_MT_DEVICEGROUPS_ENTRYCOUNT2 = 0x40026B76;
MA_MT_DEVICEGROUPS_ENTRYCOUNT3 = 0x40026B78;
MA_MT_DEVICEGROUPS_NEXTID = 0x40026B7A;
MA_MT_DEVICEGROUPS_ENTRIES = 0x40026B80;
MA_MT_PLAYERS = 0x4029CE90;
MA_MT_PLAYERS_ENTRIES = 0x4029CEC8;

break;
}
default:
break;
}
}

Edited by sparky on May 7, 2016 at 07:52 PM


Super Flanker
Joined: Oct 5, 2012

The length of your life depends on my aim.


Posted: May 10, 2016 05:27 AM    Msg. 30 of 77       
Are there any updates to be made?


sparky
Joined: Jun 27, 2009

Jesus is a friend to the vindictive sociopath


Posted: May 11, 2016 12:33 AM    Msg. 31 of 77       
Sure, but I've got another hurdle to get over before I share anything.

I added Halo CE support and optimized and fixed some things, laid some groundwork for growth, and determined what needs to be added.

I'm working on synchronizing more memory tables -- namely, loopobjects and objects. I am getting it set up so that when a player joins a game that is in progress, the player has all the relevant information sent to them at once, updating them on the states of all relevant objects. So for example later on, when a player joins a game where there is an AI firefight in progress, they will see all the AI exactly how the host server or host player sees them, minus some latency. More contemporaneously, when a player joins, they will see elevators, doors, bridges, and other devices in the states they are actually in. Synchronizing the device groups memory table has those devices MOVE TOWARDS those states (lowering or raising an elevator, opening or closing a door, and so on). That's fine, but they should see it immediately how it is instead, exactly in the position it is (fully or partially raised/lowered/opened/closed/extended).

I haven't given much analysis to objects, but comparing some tests with the Phasor Lua document is helping.

I'm not sure how long this will take to complete. We'll see.

Please keep my threads bumped! Thank you.


Super Flanker
Joined: Oct 5, 2012

The length of your life depends on my aim.


Posted: May 11, 2016 05:04 AM    Msg. 32 of 77       
I hope this means AI sync soon!


altis94
Joined: Oct 5, 2012

Join my Discord https://discord.gg/GDVEaRD


Posted: May 11, 2016 06:10 AM    Msg. 33 of 77       
Would object synchronization also include velocity synchronization as well?


lolslayer
Joined: Mar 21, 2015

https://www.youtube.com/watch?v=uMHbAKvPJkU


Posted: May 11, 2016 06:37 AM    Msg. 34 of 77       
The big question now is

Will SPV3 support co-op if AI-sync works?


altis94
Joined: Oct 5, 2012

Join my Discord https://discord.gg/GDVEaRD


Posted: May 11, 2016 07:20 AM    Msg. 35 of 77       
That's not how things work, AI syncing would only sync them in multiplayer games and SPV3 is single player. Even if it was remade in mulltiplayer, most of its features would not work (armor abilities, hijacking etc).

 
Page 1 of 3 Go to page: · [1] · 2 · 3 · Next

 
Previous Older Thread    Next newer Thread







Time: Sun December 15, 2019 4:34 PM 437 ms.
A Halo Maps Website