A level editor and multiplayer could be pretty nice and co op mode if it was possible. I don't want to over reach but all of that would surely revive this game better then it was before.
I've seen various info about co-op in the engine, if it was in the actual game on other consoles (Xbox specifically) we could easily re-enable it and synchronize AI data over the network as well after completing the basic Multiplayer stuff.
Ah, okay. Sorry for the misunderstandings. My mind is in another place.
No problem.
How did you manage to enable online multiplayer? I assumed that support for that was basically nonexistent since they greyed out the menu option. Also, I am interested in the scripting data as having the ability to change the behaviors of things would be absolutely useful in the level editor.
There was no "Online" functionality previously, what I did was first enabled the split-screen multiplayer (This is a port of the Xbox Original version) so the code for the multiplayer split-screen is still there.
I reverse engineered the player structures, including the information needed to spawn the player's object using it's constructor which causes the player to actually be placed on the map then once you know the offsets of the flags that control things like jumping, animations, shooting etc you just synchronize it over the network and manipulate it using an injected dll.
Beyond that I disabled the split screen rendering (HUD elements, and separate view port), the camera was left in-tact due to the fact we were using the x/y of the camera to determine where the player should be shooting and just synchronizing the fire action, it was horribly synced and I need t come up with a better method to handle this in the future.
The only way anything was synchronized in the past was via constant while loops rather then hooks around things like damage functions which is when I should've synchronized the data but I'm starting to wonder if it'd be better to build a snapshot of information and send that.... I've got some obvious research to do there.
Right now the state I'm at is I'm attempting to track down the main rendering loop in the engine again so I can disable the split screen rendering stuff,
There are graphics issues that come along with enabling the split-screen multiplayer (all players are invisible, I have no idea why I wasn't the one who fixed it previously) though they're visible in the death camera so I'm not 100% sure what's changing but I think it's a rendering setting.
Here's the video I've posted in the other thread I created about the Multiplayer functionality.
There are tons of bug fixes I applied the first time I did this, like a fix for the pistol zoom crash which I've already re-done again, a fix for the spider mine crash, as well as the invisible players.
I just looked the file you posted, it could be very useful to me for decoding even more data more easily. I wish we had access to the files #included from it as well. It would be a GODsend.
Let me know if you'd like to see the source code I use for loading ATI/ATR/MTF files.
That'd be pretty cool, so far the way I handled it was just writing a 010 template and doing manual modifications I just started working on this all again last night and stumbled across this forum,
So far what I've modified is I've replaced the MainMenu's "Cheats" option with the Multiplayer screen atr and then modified MultiplayerJoin.ati to disable the 3rd and 4th player's input removed the "back" definition from player 2 as it technically has no ability to control the menu option then forced it to select a player to begin with as if a second player had already completed the join action once you've reached the menu and is ready to play.
Then there was some trickery with the player 1 that had to be done to allow them to select their player.
What tools do you use to do this? I have IDA Pro but I haven't learned how to use it effectively yet.
IDA Pro, OllyDBG, and memory tools like
http://www.memoryhacking.com and Cheat Engine in order to find player objects faster in memory.
I.E. search player's health, break point on write access to the area of memory and then reverse engineer the offset to determine the base player object pointer
Which I've just done and it's allowed me to determine the x,y,z cords of the player position in real time as well as their camera position so far just by guessing information.
Not only that but watching the memory change in real time you can easily determine things like current weapon, ammo, scaling information, animation indexes, 'firing' and etc.
P.S.
I believe I've added you on Skype Stinkee.
UpdateI also made a video demonstrating the rendering issues maybe with your knowledge of 3D/D3D/OpenGL programming you can provide some insight on possible theories of why this would happen and ways to fix it,
http://www.turokforums.com/turok-evolution/pc-version-multiplayer-online-modification/msg3140/#msg3140EDIT:I'm also curious if you've looked into the .tre files or their format at all I decided to grab the Game Cube and Xbox copies of the game and it seems they each pack all of the game's data into these archives, I could attempt to figure it out but don't want to re-invent the wheel if it's been done.