Oh noes! A DM Thief!
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:
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.
Framed (2/8/2008) - A more recent video of Framed. Many things had been fixed by this point, including most weapons and AI speech.
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.
Bank (9/9/2008) - A side-by-side video of the Bank mission from the perspective of the client (left) and the host (right).
Last edited by Tos; 9th Sep 2008 at 09:13. Reason: Added links to newer videos
Oh noes! A DM Thief!
Is this for real?
Good work!
boy am I glad it's not April 1st.
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?
Fascinating!
Most impressive, especially considering how every thread I have read about the multiplayer leftovers in Thief 2 has concluded that the code is impossible to revive.
Wow, looks great. I've always wanted to play Thief in LAN.![]()
I used Xvid to compress it. It should be viewable with either that or DivX installed on your system.
It was actually surprisingly simple to get working, given that. The biggest problem was that Thief makes no attempt to synchronize the game between all of the clients when a new game is started (as System Shock 2 does), and will be forever paused in the "Waiting for players" mode that System Shock 2 would be in under the same circumstances. Once that was corrected, my friend and I were able to see each other in the game world and to move around.
The issues now however are the rather large number of things that were simply never designed to work in multiplayer. I'm hoping someone more experienced with DromEd than myself will know how to fix at least a few of the problems I mentioned above.
Last edited by Tos; 11th Dec 2007 at 18:21.
Wow.
The other player not being able to do much, does that include hiding in the shadows? Or is it possible to ghost somewhat normally?
http://www.3dactionplanet.com/thief/...sall/index.asp
What is the current official word on Thief and multiplayer?
We don't want to put multiplayer into Thief just to be able to say that it has multiplayer. We want to be sure that any Thief multiplayer experiences are just as good as what we've been able to do with the single player experience. That said, I can confirm that we do have some people working on Thief multiplayer prototyping.
No seriously: your level of Utter Awesomeness is killing me.
Of course, the real test will be to figure out how two THIEVES can play together (or against each other) in a level.
I would suggest that you pick a level like First City Bank and Trust, and start the two players on opposite sides of the map, and see who can get away with the loot first.
Of course, then there is the issue of hiding from each other. How do you make someone all but invisible when they are crouched in a shadow? Invisible from another player, that is: not from the AIs.
Then, of course, there is the option of playing levels co-operatively. But you'd need bigger and harder levels. Ones where two players were NEEDED to bypass certain security systems would be the UTTER ZENITH of thievery.
Ooooh! That game would have to be called "Heist - the Combination"
SilentSleep did this with the Keepers in Equilibrium 6 years ago, and it's even easier to do nowadays than the comparatively Rube Goldberg setup he had to go through back then. It shouldn't be very hard to adjust the alpha of player models based on visibility, and I'm pretty sure by default that doing so won't affect AI's ability to see and hear players (which is still driven by the system that controls the light gem and sound propagation).
Just go play Thievery, end of thread, problem solved.![]()
Are you sure?
Admittedly, yours is more technically impressive.
One of the main reasons I never got far with that, though, was because there really is no place in Thief for multiplayer. It simply doesn't make sense in the context of the game.
Your video does a very good job of demonstrating what Thief multiplayer shouldn't be like: a mindless fragfest where you just run around and murder people. If you want a game like that, you may as well just play a standard FPS.
Still, I'll be impressed if you manage to get it to work properly!![]()
In my humble opinion a lot of things that the fans publish are waved through as somehow "thievy" although I cannot find a place for it in my imagination of the Thief universe. But usually I can accept them as something new or extraordinary. On the other hand, this mutliplayer seems to have a base in both technical aspect (after all it was somehow hidden code in the original game, did I get this right?) and in a gameplay/story way. The Downwinders work in teams, as far as I can remember, so why not take the multiplayer as a Downwinder game if we are (doubtlessly justified) afraid it could never fit the original gameplay?
If the technical side of things can be made to work smoothly, the best bet would be to completely redesign the levels to incorporate multi-person challenges and the like. I can see some great potential with types of games in fan missions; but clearly, playing through the official storyline as is with two players would be a bit odd - the game's just too story driven.
Heh, I was waiting for this.
As I said in my original post, the AI is not working well enough for both players yet to really play the game like it's Thief. Running around killing everyone isn't exactly how I'd play the game myself in single player, but I felt it would do a better job of showing everyone the problems with the current implementation of multiplayer (lag, missing animations, occasionally unresponsive AI) than just ghosting through a level. Blackjacking the guards was also out of the question, as that simply does not work right now.
With that said, yes, I did see your video before I started working on this, and I was quite curious about how you managed to get several things to work. It seems as if you've fixed the missing models and animations for one (at least in System Shock's engine, I hope it's possible in Thief's as well without too much effort). Would you be willing to share some of that information?
Assuming this can be made to work properly, that will probably be necessary. Most of the single player levels would probably be too easy for two players, even on expert difficulty.
SS2 already has working motions and weapon models for players, though the weapon models are hard-coded to the archetype names of the standard SS2 weapons, so a bit of trickery is involved (naming the Sword archetype Wrench, etc.) to get the appropriate models to show up.
I never quite got blackjacking to work properly, either. It almost worked, but the AIs would always finish whatever they were doing before falling over, which was rather disconcerting. You hit a guard who's walking, and he says "ow", takes another step, and then falls over . . .