PDA

View Full Version : Let's do this. (Open Sauce//Separate app[?])



Dwood
September 15th, 2009, 09:12 PM
Okay guys. I'm asking for help now. I don't have much time to detail what this is but I want to label everything that we would have to do to get AI to sync. I figure it would be better if everyone in the community would figure it out.

If you want to say this won't work//can't, please don't say it unless you want to pm me.





In order to Sync ai (possible, but NFWOS)

There are going to need to be 2 main things (i believe)

1: Get Clients to stop from creating their own bipeds
****Pulls out chat logs***
2. Has like 4 possibilities.
---a. Get ai to always make the same decisions
---b. Unrandomize ai decisions
---c. Make the clients depend on the server for the ai's actions.



There are some other things I've said in Xfire Logs that flesh the idea out a lot more, but let's expand on those two sections.

If we went with C, expect a major increase in net traffic. If B, then we could base ai decisions off a map's Hash code(?) if a- "Attack the player nearest"

In the end, if based off difficulty, I would say C is easiest, setting netcode aside...

I'm going to expand this idea with other notes i've gathered when I can.

Note: I plan on outlining to the detail what would need to happen, where the only part that a person would have to do is grab cheat engine and odbg and get the Addresses for use in OS' codecaving functions.

FRain
September 15th, 2009, 09:17 PM
AI can, and will not, be syncable in MP.

Skyline
September 15th, 2009, 09:19 PM
Options 'a' and 'b' are the same thing, your just wording it differently.

Pyong Kawaguchi
September 15th, 2009, 09:32 PM
Turn the AI into a vehicle, or make the ai always be in a vehicle, and have it control that vehicle that functions as if it was the ai.
Wouldn't that work?

Limited
September 15th, 2009, 09:35 PM
Making AI not randomize decisions defeats the whole idea of having AI. AI thinks for itself.

You basically mean you want to have a biped, that moves around and the location "syncs" across.

Skyline and I briefly looked into AI, it wont work because the server creates 2 bipeds, the AI and a dummy biped. AI decisions are calculated on the client, they are hardcoded.

Dwood
September 15th, 2009, 09:51 PM
Thats why i have #1 there limited. We need to get clients to check if there is a biped already there, and if so, dont spawn. Theres also the next igm app wich i am not at liberty to discuss, but i think it wouldnt hurt to say that it lessens the gap between this netcode and gbx' original.

I think it could be utilized if properly expanded upon in this case, if we chose c.

ShadowSpartan
September 15th, 2009, 10:17 PM
If you want to say this won't work//can't, please don't say it unless you want to pm me.
Why? That kind of defeats the purpose of having a community discussion about this subject doesn't it?


Note: I plan on outlining to the detail what would need to happen, where the only part that a person would have to do is grab cheat engine and odbg and get the Addresses for use in OS' codecaving functions.
You make it sound like it will be easy to do this, which it is not. You should go read this post (http://www.modacity.net/forums/showpost.php?p=290219&postcount=132). Kornman is about the only person in the community who could do this, and if he says you are "better off buying a 360 and Halo 3", then it's safe to assume nobody will get this working.


Making AI not randomize decisions defeats the whole idea of having AI. AI thinks for itself.
This. If the AI always makes the same decisions, then you will have very poor gameplay.


heres also the next igm app wich i am not at liberty to discuss
So why mention it if you aren't allowed to discuss it?


Thats why i have #1 there limited. We need to get clients to check if there is a biped already there, and if so, dont spawn.
A and B are still the same thing though, just reworded.

the1
September 16th, 2009, 12:49 AM
OK..... I have an idea if anyone's interested in paying attention...
AI currently don't sync because. server doesn't update the client... and because clients have the un-synced AI + the client side AI which is equally useful... and OS allows us to make our own Tag Groups correct???... I'm sure if we had enough brain power we could make a new tag collection type and a new MP based Encounter that we could ultimately get to work the way we want... because lets face it... only 1 person here could make the already integrated AI sync.. and he won't... for now anyway... and no that dosn't mean i don't love him lol

Masterz1337
September 16th, 2009, 01:06 AM
The vehicle idea is the only non retarded idea in this thread, Even then, i'm sure it's going to have its problems. The only good way it can be attempted is if people stop being secretive and communicate (9mm and Skyline and IGM mainly)

AAA
September 16th, 2009, 01:29 AM
The vehicle idea is the only non retarded idea in this thread, Even then, i'm sure it's going to have its problems. The only good way it can be attempted is if people stop being secretive and communicate (9mm and Skyline and IGM mainly)

Now, lets not start criticizing other people.

Keep It clean.

legionaire45
September 16th, 2009, 01:35 AM
The vehicle idea is the only non retarded idea in this thread, Even then, i'm sure it's going to have its problems. The only good way it can be attempted is if people stop being secretive and communicate (9mm and Skyline and IGM mainly)
Wrong.

The only good way it can be attempted is if someone or a group of someones can get people from outside of this arrogant community. People who don't have any priorities like work or school.

Everyone who has enough C/C++ experience who is involved in this community is either busy on other projects or they are dealing with their own things (like school or work).

It's not like there are only 3 programmers on the planet who have enough C/C++ experience to play around with this stuff and actually have a clue as to what is going on.

Kornman00
September 16th, 2009, 01:36 AM
One issue is due to determinism. Another part to that issue is how Halo was engineered for LAN use, not for use across the internet. The way Halo on the Xbox worked was with a networked lock-step approach, which works fine because it was designed for use over a small, reliable local network.

Playing across the internet is not the same, at all. You suffer from constant latency and packet loss issues, even if you're playing with just your neighbor. There is no luxury of a single switch handle the communication between four boxes who are probably within about 50 ft of each other.

When Halo PC was developed, they engineered another component into the networking system for keeping objects and other state specific data in sync. Xbox didn't use data packets for things such as object creation, deletion etc because it was assumed to be in lock-step with the rest of the machines. This new PC system also allowed them to let players drop in and out of games.

Even if you could target and fix any and all non-deterministic game elements (hello custom scripts), you still have to handle keeping clients in sync and up to date even when there are latency issues or packet loss. If a client falls out of lock-step synchronization (ie, due to a missed packet), then they are no longer valid. If their state can't be properly updated (by a delta message, etc) then they and any one else in the party can't continue to run the game (thus, you can't just drop in and out of a campaign game).

It's not about sending more packets with more data (really, that is just adding to the problem, especially since your computer is suspect to be sending out other network traffic, ie if you have a chat program open). Halo 3 doesn't work that way, it's not sending out information in packets which say 'ok, brute A decided to move to firing point 32'. Halo 3 falls back on the lock-step approach like that of Halo 1, which is why things which in MP cases wouldn't normally cause the game to end due to state conflicts, will cause the game to end in campaign due to failed states.


This is no easy problem to solve, even with the source.

Limited
September 16th, 2009, 03:46 PM
The vehicle idea is the only non retarded idea in this thread, Even then, i'm sure it's going to have its problems. The only good way it can be attempted is if people stop being secretive and communicate (9mm and Skyline and IGM mainly)
The reason we keep things secret is because if they don't fully work, we can drop them and nothing happens, we don't want to give people false hope.

There's probably 5 coders that look into OS stuff that is actually competent with it. We don't ask korn because we don't want to pester him. We all talk though minus firesythe who is never on lol.

FireScythe
September 16th, 2009, 04:27 PM
I did have an idea for multiplayer bots, whereby the server adds fake players and controls them with AI (probably custom built), so that clients are none the wiser, but without even researching this it's obvious the sheer amount of work to get even something basic makes its not feasible/worth the effort.


We all talk though minus firesythe who is never on lol. :O Am too, I AIM frequently.

Inferno
September 16th, 2009, 04:44 PM
I did have an idea for multiplayer bots, whereby the server adds fake players and controls them with AI (probably custom built), so that clients are none the wiser, but without even researching this it's obvious the sheer amount of work to get even something basic makes its not feasible/worth the effort.

:O Am too, I AIM frequently.


I'd script working MP bots with pathing and shit if someone where to code them to show up as players.

Dwood
September 16th, 2009, 05:10 PM
Oooh scythe thats a good one... I know this
is a massive stretch but how could we add more than 16 players? (not human but ai)

Btw korn there was another idea to use the maps hash as the seed for all ai's 'random' actions. Then the biggest problems would occur when a player joins the game. If we used c lets assume minimal packet loss. (eg lan)

When i get back on my main computer I will research how the original AvP games got ai to sync and report back.

malolo420
September 17th, 2009, 12:43 AM
I found a way to take away the second biped, set the ai to spawn outside of the map and teleport them with a command list to where you want it to spawn. Then script it so once there spawned to delete all the objects on the map then recreate them and make sure the will spawn only once more then when the script deletes all the objects on the map it will delete the second biped and when it respawns the second biped wont be there. I can't remember if you can do an ai_erase_all because I think if that worked for it I wouldn't have made my old map delete everything. Then I just changed the biped tags so the AI's running speed is 0. They don't move but atleast clients can kill them and theres no invincible biped. Its a pain in the ass, but Its easiest way that I found.

Epsilon927
September 17th, 2009, 01:02 AM
The vehicle idea is the only non retarded idea in this thread, Even then, i'm sure it's going to have its problems. The only good way it can be attempted is if people stop being secretive and communicate (9mm and Skyline and IGM mainly)

I spent some time experimenting with vehicles, and bipeds, because both technically should sync. I did an experiment where I attached a biped to an AI encounter, and every few seconds or so, I would attach it to a vehicle that was defined in the globals, save the information about the biped, (EG health and shields), detach and then delete the biped. I would then create a new biped, set it's health and shields to the previous biped's, attach it to the vehicle, detach the vehicle, and teleport the vehicle elsewhere. The problem with this, is that instead of the vehicle keeping the AI in sync, the vehicle itself dropped out of sync, similar to how players dropped out of sync in Kirby's player - AI fusion experiment. With this method, the AI didn't really sync the position, but at least there were no duplicates of the AI.

Kornman00
September 17th, 2009, 06:23 AM
Multiplayer games use the same random seed, so generating a new seed won't help anything. It's the issue of deterministic code. You'd have to make the AI code be completely deterministic (good luck with that when you don't have the source). Possibly even a few other campaign related engine components.

Attaching a vehicle to an AI unit will do NOTHING to that AI in terms of syncing, that AI's unit doesn't depend on that other unit which is attached to it. Yes, vehicles and bipeds have network delta messages to keep the clients in sync. However those messages are JUST for those actual unit objects and nothing else.

If you can't grasp (http://rework3d.com/forums/viewtopic.php?p=863859#p863859) the issues involved (read: the problem), then you really shouldn't be trying to figure out a solution.

=sw=warlord
September 17th, 2009, 08:00 AM
I know im rather uninformed on how the game is engineered and all but there is something i was wondering for some time.
Is there a control in the games code stopping different varients of the same map being used in servers and if not would it be possible to have serside maps holding the ai and client side having just lifeless bipeds and then script the server side ai to attatch to the lifeless bipeds?
I mean instead of having the ai spawn as normal attach the server side actor varient's to the client side bipeds.
Im just throwing this idea out there as it's something i've always been curious about but never had a chance to test out for myself.

Dwood
September 17th, 2009, 08:20 PM
For your idea Warlord, the best way is Firescythes idea.

In effect, we would have to fake there being multiple clients from the server. This is different from Kirby_422's ai-player fusion in that we would have to code our own ai, pathfinding and all.

Would be a start, however. It is probably the most feasible idea as well.

Another thing is if done right, this would work great for machinima peeps. (I'm looking at you Silicon)

SnaFuBAR
September 17th, 2009, 08:47 PM
one day you'll realize...

AI won't sync.

thanks (:

Dwood
September 17th, 2009, 09:02 PM
one day you'll realize...

AI won't sync.

thanks (:

Short of coding our own ai and adding them as though they were clients,

You're probably right.

But i also refer you to my first post. This thread was not made for people to say it wont work. It was for us to discuss the challenges, as well as possibilities for getting ai to sync. Even if its 'simple' things like what i said above.

Limited
September 18th, 2009, 05:14 AM
The issue with the Halo engine, is thinking of how it might work, usually ends up not being the way. In theory it should work but doesnt. Therefore if you want to try and get it to work, just discussing the idea won't help. You need to get stuck in and actually try.

Dwood
September 18th, 2009, 05:25 AM
I will, when I get on my main computer. Im just not sure how one would go faking a client to the server.

Dwood
September 18th, 2009, 07:26 PM
Oh sorry it was Firescythe's idea not Skyline's lol. :|

boogerlad
September 19th, 2009, 12:45 AM
ORLY?

near perfect ai syncing.

http://hce.halomaps.org/index.cfm?fid=2961

Limited
September 19th, 2009, 03:29 AM
Oh sorry it was Firescythe's idea not Skyline's lol. :|

Skyline and I attempted creating a fake player, I believe it's alo easier in v2 OS and then syncing it up with the AI. You still can't get it shooting though.

Mysterion
October 21st, 2009, 05:11 PM
If anyone know how to create/modify Doom 3 maps, weapons, characters and AI, you could create a map that looks very similar to a Halo CE map, then use the downloadable Open-Coop Mod for at least 4 players to play in Sync with the AI. Unfortunately, there would not be any vehicles to mod...

S3anyBoy
October 21st, 2009, 05:34 PM
If anyone know how to create/modify Doom 3 maps, weapons, characters and AI, you could create a map that looks very similar to a Halo CE map, then use the downloadable Open-Coop Mod for at least 4 players to play in Sync with the AI. Unfortunately, there would not be any vehicles to mod...
That's not really relevant, making a TC for Doom3 is totally different from what they're trying to do, also bump.

Something relevant: AI always seem to sync over system-link on the xbox version of Halo, so anyone with knowledge of the engines could compare stuff between the two and see what's up?

KiLLa
October 21st, 2009, 05:41 PM
Kornman already explained the difference in PC and Xbox's net code..

S3anyBoy
October 21st, 2009, 05:57 PM
Kornman already explained the difference in PC and Xbox's net code..
Yea I see that now.