logo
Main

Forums

Downloads

Unreal-Netiquette

Donate for Oldunreal:
Donate

borderline

Links to our wiki:
Wiki

Walkthrough

Links

Tutorials

Unreal Reference

Usermaps

borderline

Contact us:
Submit News
Page Index Toggle Pages: 1 Send TopicPrint
Normal Topic HX - A Deus Ex Coop Modification (Read 5471 times)
han
Global Moderator
Unreal Rendering Guru
Developer Team
*****
Offline


Oldunreal member

Posts: 572
Location: Germany
Joined: Dec 10th, 2014
Gender: Male
HX - A Deus Ex Coop Modification
Apr 6th, 2015 at 9:39pm
Print Post  
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. Smiley
« Last Edit: Jun 12th, 2015 at 6:11am by han »  

HX on Mod DB. Revision on Steam. Löffels on Patreon.
Back to top
 
IP Logged
 
han
Global Moderator
Unreal Rendering Guru
Developer Team
*****
Offline


Oldunreal member

Posts: 572
Location: Germany
Joined: Dec 10th, 2014
Gender: Male
Re: HX - A Deus Ex Coop Modification
Reply #1 - Jun 20th, 2015 at 9:59am
Print Post  
...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. Smiley

Han: https://www.youtube.com/watch?v=_wI8MGG3oRg
Jay: https://www.youtube.com/watch?v=6nVEzHEabLQ
  

HX on Mod DB. Revision on Steam. Löffels on Patreon.
Back to top
 
IP Logged
 
AlCapowned
Full Member
***
Offline


Oldunreal member

Posts: 167
Joined: Dec 22nd, 2009
Re: HX - A Deus Ex Coop Modification
Reply #2 - Jul 11th, 2015 at 6:14am
Print Post  
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?
  
Back to top
 
IP Logged
 
han
Global Moderator
Unreal Rendering Guru
Developer Team
*****
Offline


Oldunreal member

Posts: 572
Location: Germany
Joined: Dec 10th, 2014
Gender: Male
Re: HX - A Deus Ex Coop Modification
Reply #3 - Jul 11th, 2015 at 10:30am
Print Post  
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.
Back to top
 
IP Logged
 
[]KAOS[]Casey
Developer Team
Betatester
Offline


nedm

Posts: 3201
Joined: Aug 7th, 2011
Gender: Male
Re: HX - A Deus Ex Coop Modification
Reply #4 - Oct 13th, 2015 at 2:29am
Print Post  
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.
  
Back to top
 
IP Logged
 
han
Global Moderator
Unreal Rendering Guru
Developer Team
*****
Offline


Oldunreal member

Posts: 572
Location: Germany
Joined: Dec 10th, 2014
Gender: Male
Re: HX - A Deus Ex Coop Modification
Reply #5 - Oct 14th, 2015 at 9:08pm
Print Post  
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.
Back to top
 
IP Logged
 
[]KAOS[]Casey
Developer Team
Betatester
Offline


nedm

Posts: 3201
Joined: Aug 7th, 2011
Gender: Male
Re: HX - A Deus Ex Coop Modification
Reply #6 - Oct 14th, 2015 at 10:56pm
Print Post  
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.
  
Back to top
 
IP Logged
 
han
Global Moderator
Unreal Rendering Guru
Developer Team
*****
Offline


Oldunreal member

Posts: 572
Location: Germany
Joined: Dec 10th, 2014
Gender: Male
Re: HX - A Deus Ex Coop Modification
Reply #7 - Oct 15th, 2015 at 7:30am
Print Post  
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 crappity smacked 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.
Back to top
 
IP Logged
 
[]KAOS[]Casey
Developer Team
Betatester
Offline


nedm

Posts: 3201
Joined: Aug 7th, 2011
Gender: Male
Re: HX - A Deus Ex Coop Modification
Reply #8 - Oct 15th, 2015 at 4:19pm
Print Post  
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 Tongue

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. Smiley
  
Back to top
 
IP Logged
 
han
Global Moderator
Unreal Rendering Guru
Developer Team
*****
Offline


Oldunreal member

Posts: 572
Location: Germany
Joined: Dec 10th, 2014
Gender: Male
Re: HX - A Deus Ex Coop Modification
Reply #9 - Oct 16th, 2015 at 4:57pm
Print Post  
[]KAOS[]Casey wrote on Oct 15th, 2015 at 4:19pm:
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.
Back to top
 
IP Logged
 
Page Index Toggle Pages: 1
Send TopicPrint
Bookmarks: del.icio.us Digg Facebook Google Google+ Linked in reddit StumbleUpon Twitter Yahoo