is it possible to do a coop of the sp missions. is it possible to reformat the lvl sp lvls to mp lvls. i think it b awsome to have like a 4 man group going and doing the campain on legendary
18th November 2004
It's been tried and it doesn't work. AI simply cannot synchronize properly online.
It seems possible to me to convert sp maps to multiplayer maps so they could be played the way you suggest. But I'm not one to question Zamamee's knowledge so it probably isn't possible.
Off course it doesn't work, the AI doesn't sync, the best they will do is stand there and shoot you (sometimes not even that). Blame halo's crappy netcode to cater 256KB users (read: people with crap internet).
(sigh) And I guess I'm not always against 343's word either...
If you stretch "dumb" AI, you can get them to do basic stuff, like dodge grenades, croutch, etc. It would be possible, but would depend upon how many AI capabilities you were willing to sacrifice.
And the more the AIs suck, the more the map will suck.
18th November 2004
You can convert a map, and you can include AI, but they will not show up properly. They might appear to be somewhere to a player, but can actually be in an entirely different room. It just doesn't work.
Unless you make everyone wait at the beginning of the level until you have a full server (or disable access, is that possible?), and play an AI map with "dumb" AI. A map like that syncs perfectly. As I said, it depends what sacrifices you're willing to make.
This post explains the whole thing, netcode and how you can get imperfect syncing. Read it if you will:
Sunray;3905790To explain the whole dumb AI thing completely you actually have to understand how Halo's netcode works. I doubt whether any of you truly understand how it works (I sure as hell don't, I only know the basics). So here is a quick summary of that first: First of all, for those of you who don't know, a netcode is something that an application uses to communicate with another application over a network. It does so by exchanging information to acertain what is going on with the other program (characters in this case). When Bungie first designed Halo PC's netcode, they did so for broadband users. They came up with a good netcode that worked well and was all loverly. Then Microsoft came in and said "we want a netcode that works for 56k ers". So a few weeks/months before release, Bungie had to re-write the netcode. Consequently the new netcode was not as good as the old one, but still did the job, however not as well. Halo's current netcode allows the location of vehicles, players and weapons in the host map to be transferred to the client when the client joins a game. The client (one connected) communicates with the server what the player does (moves left, strafes, picks up a weapon etc) and so the server and client know what is going on and broadcasts this information to the other clients. When people "lag" there is a brief breakdown in communication between host and client so the host gets confused as to the client's ware-abouts and the player warps. With Halo PC's netcode, the location of the player is communicated between host and client, and the host tells the client where weapons, vehicles etc are in the map, so all is fine and dandy. Now onto the slightly more complicated bit; AI. AI were not included in Halo PC's netcode; the host and client do not tell each other where the AI on their games is because it has no code with which to do so. It cannot speak the language as it were. So this lack of communication presents a problem to us. Here is why: Take person A. They want an AI game. Thus they start an internet game with AI in. They start playing and get a quarter of the way through the level. Person B also fancies an AI game, so they join person A. Now because on the initial connection person B's computer was not told that person A had killed the first 3 elites, person B's computer places those AI where it thinks they should be. Now person A comes back to find person B, but cannot see the AI on person B's computer as it thinks they are already dead. All person A sees is person B firing at thin air, then he randomly dies, as person B's computer has told person A's computer that the elite has opened fire on person A and that has killed him. Naturally person A is irritated. Now let's assume they reach the same stage (B has killed as many AI as A has). They both go to the next point in the level and an elite pops up. Person A throws a grenade and due to the randomised nature of Halo's AI, the elite on his computer ducks right. However the elite on person B's computer ducks left. The computers are out of sync; the AI are in different places. Thus the same elite becomes "ghost" AI on the client (B) machine. Now all sorts of problems will occur with people being killed by things not on their computer and the like. So that is the physical manifestation of the problem. Now we know what happens, and the netcode controlling what happens, we can start to fix it or create ways around it. So we have reprogrammed an elite's AI. Now what it does is stand there and not move at all. This means that it will not get out of sync on either person's machine as it will not move. As long as no-one joins after the elite has been killed that elite will be in the same place on all machines. So person A's computer's netcode sees person B firing at a point on the map that nothing is in. However person A's map conveniently has an elite standing in that position that the netcode cannot see, and so after sustaining the required amount of damage, the elite will die. The same goes for the other computer; it will see the other person firing into a space that is conveniently filled by an elite. Now lets move onto more complex commands; firing. We have the elite syncing movement wise, but what happens when he tries to shoot? If the elite is programmed so that as soon as he sees a target of any form, he fires 3 shots, each 0.25 seconds apart, pauses 1 second then fires another 3 shots, with accuracy 100 on the spartan, no matter which machine the elite is on, it will see the same spartan first and will therefore deliver the same amount of damage due to the accuracy. It is then programmed to do the same every 5 seconds at the nearest target until dead, the thing should work and it should be the same on all computers, as the same things have happened to the space occupying that elite and the elite has fired on the same person on both computers. So you see, there are ways of getting round the netcode, but they are by no means foolproof. All randomised aspects of the elite's programming have to be removed and redone, otherwise the elites on both computers will end up doing different things. You then need to expand on these simple principles to make the gameplay interesting and to make sure the elites are not all in sync and fire simultaneously. Thus you see that it is not as simple as it all sounds, and true Syncronisation of AI is impossible, but computers can be tricked into believing that AI don't exist where they do and behave in certain ways. If I had time I would do it, but sadly I have too little time to mod any more. If any of you actually got this far and understood, congratulations; you deserve to succeed. It is information well worth noting for anyone playing the game and wishing to mod it. Any questions or points you would like me to explain, just post/PM and I will do my best to answer. Personal note; Cartographer, you need to know all of this and have exact knowledge if you are to hope to succeed. Hit me up on MSN if you want any guidance/help.