Tos on 11/12/2007 at 05:04
After several rather frustrating days, I've managed to restore the unused multiplayer code in Thief 2 to at least a partially working state with a DLL hook. It's bug-ridden, laggy, and unreliable but it's working well enough at the moment for players to complete at least a few of the game's missions. Videos are available at the end of this post.
The two biggest issues at the moment are lag, and the inability of clients to do much of anything other than move around and attack things. The host of the game is able to do most things normally, but clients have difficulty opening some doors, picking locks, picking up certain items, using elevators, and using some inventory items.
There is also currently no in-game interface for connecting to multiplayer games, and hosting and joining must be done through the console. I'm not sure if this I'll ever be able to improve this, as adding a new menu to the game would be quite difficult. Once players have connected to the game, the host and the connected clients have to begin a new game through the main menu and hope (or pray) that it synchronizes properly. I should be able to fix the synchronization issues, however.
Other, less pressing issues include the lack of any form of in game chat, missing animations and visible models for weapons (copying over the wrench swinging animation from System Shock 2 should work for the sword, and possibly the blackjack, but I have no idea what to do with the bow), various sound issues, loot not being shared between all of the players in the game, and saving and loading do not work.
My friend and I have had some success in fixing some of the minor problems by modifiying object networking properties in the gamesys through DromEd, but neither of us know much about the editor. If someone could shed some light on how those work or how System Shock 2 handles things (since it appears to work much better), that would be a big help.
Another issue seems to be the way that the Dark engine distributes the AI processing load in multiplayer games by transferring control over AI-controlled objects to players other than the host. Guards are impossible to knock out and do not play any sounds when they're being controlled by another player, but behave normally when control over them is passed back to you. Lag is far worse than System Shock 2 when they're being controlled by another player, as well.
Some of the lag and connection problems might be solved by wrapping Thief's DirectPlay4 calls to DirectPlay8. I've created a wrapper class for the DirectPlay4 functions in my hook, but I haven't made much progress in converting the calls to DirectPlay8 yet. If anyone here is familiar enough with DirectX to do so, I could use some help with this.
Given the number of problems I'm currently facing with this, I definitely don't want to get anyone's hopes up for working multiplayer in Thief 2 yet. It seems as if more progress has been made with this than any previous attempts to get multiplayer operational however, and some of these issues should be fixable.
Videos:(
http://s149432842.onlinehome.us/files/Thief_MP.avi) Life of the Party (12/11/2007) - The earliest video released. Not particularly Thief-ish since blackjacks and the AI were fairly broken when this was recorded.
(
http://s149432842.onlinehome.us/files/framed.avi) Framed (2/8/2008) - A more recent video of Framed. Many things had been fixed by this point, including most weapons and AI speech.
(
http://s149432842.onlinehome.us/files/mission1.avi) Running Interference (5/20/2008) - A video of the Running Interference mission from start to finish. AI movements are significantly smoother, and blackjacking now works properly for all of the players in the game.
(
http://s149432842.onlinehome.us/files/bank_combined.avi) Bank (9/9/2008) - A side-by-side video of the Bank mission from the perspective of the client (left) and the host (right).
BrokenArts on 11/12/2007 at 05:19
Oh noes! A DM Thief!
Sluggs on 11/12/2007 at 05:30
:wot:
The_Raven on 11/12/2007 at 06:01
Is this for real?
Tos on 11/12/2007 at 06:27
Quote Posted by The_Raven
Is this for real?
Well, yes. I expected there to be some doubt, but I'd hoped the video would be enough to prove that it is indeed working -- at least partially -- in Thief 2's engine.
Volca on 11/12/2007 at 08:18
Good work!
nicked on 11/12/2007 at 08:51
boy am I glad it's not April 1st.
clearing on 11/12/2007 at 10:07
:wot:
Yandros on 11/12/2007 at 13:25
No kidding Nick, at first I double checked to make sure NV hadn't posted this.
Tos, I can't view the AVI. What codec is being used?
New Horizon on 11/12/2007 at 14:40
Fascinating!