For direct access use https://forums.oldunreal.com
It's been quite a while since oldunreal had an overhaul, but we are moving to another server which require some updates and changes. The biggest change is the migration of our old reliable YaBB forum to phpBB. This system expects you to login with your username and old password known from YaBB.
If you experience any problems there is also the usual "password forgotten" function. Don't forget to clear your browser cache!
If you have any further concerns feel free to contact me: Smirftsch@oldunreal.com

HX - A Deus Ex Coop Modification

Please add information, maps, mods, links or anything else related to DeusEx here.
Post Reply
User avatar
han
Global Moderator
Posts: 686
Joined: Wed Dec 10, 2014 12:38 am

HX - A Deus Ex Coop Modification

Post by han »

As I mentioned on some occasions before I was developing a Coop Mod for DeusEx, but dropped Development of it in favor of Revision Framework. However I have decided to wrap up the most severe things and release it soon. Even if it's not going to be perfect (perfect as in you won't even notice that you are playing on a server), but as it's still far more advanced then any other DeusEx coop mod and would be a shame if not release. Also I have finished in the meanwhile the Launcher i also wanted to use for HX.

I spent the last 2-3 years working on this rewrite making up 100k+ lines of source code and it still feels like my baby.

Rough list of what needs to be done before release:
- Making a set of hand crafted spawn points for all the countless maps and map transitions and put them in.
- Fixing inventory handling for conversations.
- Some last remaining gc crashes (probably just needs a few dropped travel keywords)
- Maybe making items reappear at the toolbelt after traveling.
- Finish the damn background of the augmentation selection window.
- Inventory tends go get crappity smacked up when traveling with 2+ players. (Can't reproduce)

In anticipation of it, i created a Mod DB page for it and uploaded some of the (older) media:
http://www.moddb.com/mods/hx

If someone wants to contribute i could make use of a 2D artist for doing some minor as window backgrounds, console background and maybe some minor hx artwork graphics for splash screen, etc. Also i would fancy to have some playtesters and folks doing ingame footage like screenshots and gameplay videos. And ultimately, as current focus of rf is not coop, and probably will take some time to catch up with the capabilities of HX, i would highly appreciate some programmer picking up or contributing to fix some more remaining issues, working towards difficulty balancing and polish it. :)
Last edited by han on Fri Jun 12, 2015 6:11 am, edited 1 time in total.
HX on Mod DB. Revision on Steam. Löffels on Patreon.
User avatar
han
Global Moderator
Posts: 686
Joined: Wed Dec 10, 2014 12:38 am

Re: HX - A Deus Ex Coop Modification

Post by han »

...and videos!

Recorded training mission with Jay. Setup was a dedicated server running on my machine where i joined and Jay connecting over internet from the other end of the western hemisphere. Still quite not perfect but it's playable. :)

Han:
Jay:
HX on Mod DB. Revision on Steam. Löffels on Patreon.
User avatar
AlCapowned
OldUnreal Member
Posts: 179
Joined: Tue Dec 22, 2009 3:53 pm

Re: HX - A Deus Ex Coop Modification

Post by AlCapowned »

I've never played Deus Ex, but it's great to see games getting co-op. Did the game already have IpDrv and stuff, or did you make your own netcode?
User avatar
han
Global Moderator
Posts: 686
Joined: Wed Dec 10, 2014 12:38 am

Re: HX - A Deus Ex Coop Modification

Post by han »

Game did actually have a buildin multiplayer, but they did change an awful lot of things in gameplay i had to undo. In the end it would have been easier and less work if they would not have added their own multiplayer (Game was always shipped with an IpDrv).

However, their multiplayer just used a fraction of the features what was in the game and when you would load up a singleplayer map on a dedicated server and join as a client pretty much nothing did work out of the box.
HX on Mod DB. Revision on Steam. Löffels on Patreon.
User avatar
[]KAOS[]Casey
OldUnreal Member
Posts: 4497
Joined: Sun Aug 07, 2011 4:22 am
Location: over there

Re: HX - A Deus Ex Coop Modification

Post by []KAOS[]Casey »

This is something that I also worked on at some point but shelved due to a broken flag that I couldn't fix even with a native mod to fix the name in the name table. I had gotten the entirety of the first map to work online pretty much 100%... but when you level transition a conversation with manderly didn't work with one flag --

If you kill/knock out the unatco troop in the first map who shows up to "arrest" (actually just stands around near the terrorist leader) the terrorist leader, a flag is set something like Unatcotrooper_Unconcsious or similar, it works in single player, but for whatever reason, the "U" on unconscious is lower case and thus Manderly didn't mention the "missing" unatco operative. I spent several weeks trying to fix this bug to no avail and as far as I know i'd have to hex edit the conversation to fix it

Have you encountered this issue, or anything like it? I wasn't able to figure out how to fix the issue 5~ years ago.
User avatar
han
Global Moderator
Posts: 686
Joined: Wed Dec 10, 2014 12:38 am

Re: HX - A Deus Ex Coop Modification

Post by han »

Haven't checked that particular flag, but whether it's upper or lowercase should not matter. But I noticed another issue with names (of flags) they if you use them clientside that adding DeusExConText.u to serverpackages solved the issues. However starting replicating flags was a bad idea anyway..
HX on Mod DB. Revision on Steam. Löffels on Patreon.
User avatar
[]KAOS[]Casey
OldUnreal Member
Posts: 4497
Joined: Sun Aug 07, 2011 4:22 am
Location: over there

Re: HX - A Deus Ex Coop Modification

Post by []KAOS[]Casey »

The discrepancy was weird. Offline it one character is uppercase, and online it was lower. I attributed that to what I thought was the Conversation thing checking for case sensitivity -- its possible its not though. I dont think I ever used anything but the custom packages + my defaults in server packages. Perhaps that would fix the issue. I've since lost (ages ago) my source code though it was just heavily modified original DxCoop, and I decided if I were to try again i'd modify dots' MultiMapServerMod to work on DeusEx and run all the current mission maps simultaneously since I couldn't figure out a good/perfect way to store the original gamestate of the map you left(moved crates, dead enemies, etc) and it would make sense to just keep the gamestate by "hibernating" the map.

In any case, you should try out that flag and if it works, i'm happy about that.. that flag caused me to lose a lot of steam on making the coop mod work, since I figured if I couldn't fix one piddly optional flag what others would break as well.
Last edited by []KAOS[]Casey on Wed Oct 14, 2015 10:56 pm, edited 1 time in total.
User avatar
han
Global Moderator
Posts: 686
Joined: Wed Dec 10, 2014 12:38 am

Re: HX - A Deus Ex Coop Modification

Post by han »

Maybe another reason was that I put the flag names as strings into the travelinfo and without it might have caused a missmatch in the mapping of ints to names which might have changed upon level transition.

Basically I'm saving the state of the map like it was done in singleplayer. A savegame is created for each map you leave (which is basically just a map package with some editor related data removed). Afterwards you can simply open the map. However that caused a lot of issues first with network roles fucked up on client, package missmatches, etc, so I came up with the idea to conform the savegames to the original maps as this engine feature works on all kinds of packages. Not only did it solve those issues, but it even removed the need for the client to download the maps. Remember, when a network client loads a map he basically deletes every actor which is not bStatic or bNoDelete.

However this triggered a heavy cascade of garbage collection related issues as Deus Ex makes heavy use of Objects instead of Actors (Windows, DeusExGoal, DeusExNote, EventManager, FlagBase. etc.). And nearly every non Actor object did cause crashes. So with a lot of cleanup code to remove Object->Actor references and vice versa, rewritting parts, killing EventManager during travel, etc. I managed to get the dedicated server stable, the client largely stable, while the listen server still remains a bit crashy. However with rewriting of some parts to remove the Objects this will likely getting stable too.

For storing non map related gamestate, like goals, flags, datavault images aquired, I use some Actor (called HXSteve) which basically stores these instead of a player and use the TravelInfo to carry it over map transitions.
HX on Mod DB. Revision on Steam. Löffels on Patreon.
User avatar
[]KAOS[]Casey
OldUnreal Member
Posts: 4497
Joined: Sun Aug 07, 2011 4:22 am
Location: over there

Re: HX - A Deus Ex Coop Modification

Post by []KAOS[]Casey »

Now I'm wondering why I didn't think of using conforming, I tried the savegame thing too but abandoned that when it was 30mb to change maps :P

Although I am surprised that conform actually works in this instance, I know in U1/UT map conforming breaks pretty badly since MyLevel is deleted.

Looks like you found the secret sauce towards getting this thing actually working. :)
User avatar
han
Global Moderator
Posts: 686
Joined: Wed Dec 10, 2014 12:38 am

Re: HX - A Deus Ex Coop Modification

Post by han »

Now I'm wondering why I didn't think of using conforming
Took me actually a few months to come up with that solution. Before I tried all kinds of stuff like checking/fixing/netroles, etc, ... just a lot of awful trial and error.

However I have no special handling for MyLevel, basically just:

Code: Select all

            FString SaveDir = SaveDirString( DirectoryIndex );
            FString IniFile = SaveDir + TEXT("\\Save.ini");

            GFileManager->MakeDirectory( *SaveDir );

            FString ConformPackage, ConformFile;
            INT Generation = 0;

            GConfig->GetInt( TEXT("Generations"), *(LevelInfo->MapName), Generation, *IniFile );

            ConformPackage = LevelInfo->MapName + TEXT("_OLD");
            ConformFile = FString::Printf( TEXT("..\\Maps\\%s.dx"), *(LevelInfo->MapName) );

            FString SaveFile = FString::Printf( TEXT("%s\\%s.s%02d"), *SaveDir, *(LevelInfo->MapName), Generation + 1 );

            BeginLoad();
            ULinkerLoad* OldLinker = GetPackageLinker( CreatePackage( NULL, *ConformPackage ), *ConformFile, LOAD_NoWarn | LOAD_NoVerify, NULL, NULL );
            EndLoad();
One thing which is still odd, is that I can't overwrite the current loaded map (save) package, so I need to increment the filename/extension and keep track of it manually.
However one approach could be to save it to a temporary name and move it once the new map is loaded.

HX on Mod DB. Revision on Steam. Löffels on Patreon.
Post Reply

Return to “Deus Ex”