HX - A DeusEx Coop Modification
HX - A DeusEx Coop Modification
HX is a Coop Mod for Deus Ex which focuses on making the singleplayer storyline playable in Coop.
I want to start working on the conversation system in the near future, but i haven't yet decided how it should be. There are two possibilities:
(i) On player talks to the NPC and all other players see this conversation if they were that player, all other pawns are frozen like in sp.
(ii) Only one player is actually really in this dialoge system, and nearby players see the conversation as barks.
(i) somehow sucks, because it interrupts game flow for the other players. But there is one huge problem anyway: What should happen if the talking player leaves the game or gets killed? If two conversations run in (ii) this might have some game logic issues (but maybe circumvented, by only allowing one conversation). (i) has the problem of interrupting all players datalink playbacks.
What are your thoughts about this issue?
/edit:
Can anyone supply 3rd person corpse carrying animations? Animations for the player that he ducks so low that his head won't stuck in the ceiling would also be nice.
I want to start working on the conversation system in the near future, but i haven't yet decided how it should be. There are two possibilities:
(i) On player talks to the NPC and all other players see this conversation if they were that player, all other pawns are frozen like in sp.
(ii) Only one player is actually really in this dialoge system, and nearby players see the conversation as barks.
(i) somehow sucks, because it interrupts game flow for the other players. But there is one huge problem anyway: What should happen if the talking player leaves the game or gets killed? If two conversations run in (ii) this might have some game logic issues (but maybe circumvented, by only allowing one conversation). (i) has the problem of interrupting all players datalink playbacks.
What are your thoughts about this issue?
/edit:
Can anyone supply 3rd person corpse carrying animations? Animations for the player that he ducks so low that his head won't stuck in the ceiling would also be nice.
Last edited by Hanfling on Wed Jun 17, 2015 10:09 am, edited 3 times in total.
-
- Illuminati
- Posts: 2284
- Joined: Thu Mar 08, 2012 3:21 am
Re: HX - A Deus Ex Coop Modification
(ii) is the best for reasons you mentioned, but the logic issues would be hard to circumvent: Player picking up important objects (DTS for example), shooting NPC's in conversation or nearby NPC's, causing general chaos, talking to other NPCs as you mentioned, and just about any code you wouldn't want called on during a conversation... I say go with (ii), but I don't know the DX code well enough to clarify just how hard it would be to circumvent it all, but I'm guessing you'll be pulling your hair out at times....If you have any left that is, learning to code is frustrating to begin with, but I'm getting there.
Probably best to go with (i).
GAMEOVER;
}
If one of the players dies or leaves it's mission failed for both? Would be good since CO-OP would make the game significantly easier and this should counter it a bit. But this way you wouldn't be able to have drop in/out co-op either, yet I still think it would be better this way. Drop in/out is immersion killing and defeats the point in co-op to begin with.
Probably best to go with (i).
if (anyPlayer cumulative hitpoints<=0){Hanfling wrote:But there is one huge problem anyway: What should happen if the talking player leaves the game or gets killed? I.
GAMEOVER;
}
If one of the players dies or leaves it's mission failed for both? Would be good since CO-OP would make the game significantly easier and this should counter it a bit. But this way you wouldn't be able to have drop in/out co-op either, yet I still think it would be better this way. Drop in/out is immersion killing and defeats the point in co-op to begin with.
Re: HX - A Deus Ex Coop Modification
Coop is to a degree immersion killing anyway. E.g. take Unreal 1. No one reades the Universal Translator Messages in Coop. But drop in/out should be allow, game over is not an option. I thought last night of just saving the "frame" of the conversation and let the next player continue from there. But getting killed does not ruin the immersion, remember in sp you can also get killed or reload and reload the savegame which stops the gameflow, which is more immersion killing imho.
Trust me, i have more then enough hair left and spend a lot of time of messing around with dx code (and complaining about it).
Trust me, i have more then enough hair left and spend a lot of time of messing around with dx code (and complaining about it).
-
- Illuminati
- Posts: 2284
- Joined: Thu Mar 08, 2012 3:21 am
Re: HX - A Deus Ex Coop Modification
I never claimed it did.Hanfling wrote:But getting killed does not ruin the immersion, remember in sp you can also get killed or reload and reload the savegame which stops the gameflow, which is more immersion killing imho.
Trust me, i have more then enough hair left and spend a lot of time of messing around with dx code (and complaining about it).
It suits you
-
- UNATCO
- Posts: 100
- Joined: Wed Sep 28, 2011 10:48 pm
Re: HX - A Deus Ex Coop Modification
I actually found a way to have NPCs function and attack in Coop, but the dialogue and conversations threw me off.
-
- Thug
- Posts: 49
- Joined: Tue Jun 26, 2012 3:32 am
Re: HX - A Deus Ex Coop Modification
Basiclly all players who are playing the mod, must be linked...
if a player picks up the dragon tooth sword, tell all the other players that that goal has been completed, not just for the guy who picked it up.
if a player picks up the dragon tooth sword, tell all the other players that that goal has been completed, not just for the guy who picked it up.
Re: HX - A Deus Ex Coop Modification
Fixing the Weapons is simple. There are plenty of other ScriptedPawn related bugs i had to fix, like mechs are shaking the view even if the player is too far away, all pawns troughtout the level come running to a fight (unlike sp), replaced ScriptedPawn (by a mutator) are stuck somewhat in the ground, shadows on clients, etc. Still have to fix Enter/Leave world MissionScript related stuff.Captain_Destro wrote:I actually found a way to have NPCs function and attack in Coop, but the dialogue and conversations threw me off.
Remember MedBots/RepairBots? The keep wandering around and stop when you use them? This works now in hx too, i copied the system which is used for computers in mulitplayer.
Not just for goals (partly done, but no goals can be added for now since they are gained through convos/datalinks), same applies for NanoKeys (remain serverside, but nano key list need to be replicated to the clients) (done), notes of datacubes, etc (done.. they are added for each client, but whole notes system will be reworked so all players share all notes, and can edit them, and edited / user added notes appear on other clients, i have some ideas how to implement that..), images (undone), conversation history (undone). also all flag related stuff must be changed (partially done).atrey65789 wrote:Basically all players who are playing the mod, must be linked...
if a player picks up the dragon tooth sword, tell all the other players that that goal has been completed, not just for the guy who picked it up.
But those are the "small" issues. More severe is stuff like saving levels and level changing with keeping inventory (works pretty well, but my mover class change hack is incompatible with it). The inventory system is also pretty fucked up and not really mp compatible. (undone). Decoration system lags pretty hard in mp, and i'm trying to make the decorations simulted proxies, but thats a bit problematic.
The more you work on a coop mod, you will notice more and more issues/differences to sp. But so small stuff like the rep/med bots stopping, or mission startup display or compass working right are also important, since they are important for the feeling of deus ex, but also take a lot of time.
Re: HX - A Deus Ex Coop Modification
Does if anyone know if there are Datalinks which check non boolean flags (if they are used/supported at all)?
/edit
Oh btw:
Barks now seem to work:
http://coding.hanfling.de/hx_barks.png
/edit
Oh btw:
Barks now seem to work:
http://coding.hanfling.de/hx_barks.png
Re: HX - A Deus Ex Coop Modification
I'm pretty sure the infolink system doesn't support that at all, but don't take my word on it. Should be pretty trivial to check the code. I do know that DataLinkTriggers don't, though.
-
- Illuminati
- Posts: 1591
- Joined: Thu Apr 24, 2008 7:40 pm
- Location: Leicester, England, UK.
Re: HX - A Deus Ex Coop Modification
That's quite cool! Does this mean you've also got the Inventory System working?
I only ask because you've got the Keyring and the normal toolbelt in that image.
I only ask because you've got the Keyring and the normal toolbelt in that image.
The real trouble with reality is that there's no background music.
Re: HX - A Deus Ex Coop Modification
If you set bBeltIsMPInventory=False on Players inventory works to some degrees.
Re: HX - A Deus Ex Coop Modification
The convo system only accounts for bools, in vanilla.
I coded most of the conversation system to allow int/byte/whatever checks, but I did so terribly, by using very specific flagname syntax and checking for it (i.e. 'INT_PlayerDouchiness_GT_7' makes the convo system look for the int flag of playerdouchiness, and check whether it's greater than 7).
It's hacky but it works, so you could probably do that if you wanted.
I coded most of the conversation system to allow int/byte/whatever checks, but I did so terribly, by using very specific flagname syntax and checking for it (i.e. 'INT_PlayerDouchiness_GT_7' makes the convo system look for the int flag of playerdouchiness, and check whether it's greater than 7).
It's hacky but it works, so you could probably do that if you wanted.
Re: HX - A Deus Ex Coop Modification
Excellent. I just wanted to know what i should replicate to the client. Using only booleans for flags is fine. I just want the vanilla game running in coop. In UE only data types less (or maybe equal) then 448 bytes can be replicated. Flagbase has an array of 64 flag entries. If i use a 32bit hash for the flagnames, it would be 64*4 byte = 256 byte. Another array just consisting of booleans would be again 256 byte (this would be the convenient method, allthough 2 integeres are enough for storing all flags).
Re: HX - A Deus Ex Coop Modification
I'm not entirely sure about the 64 flags, actually.
I mean, you're much better at all this coding stuff than I am, but (as far as I can see empirically) despite it being declared as a 64 member array, the actual game seems more than capable of tracking the status of flags in excess of this number. Every conversation sets a _played flag automatically, for instance. Even with those expiring after a mission, by something like...mid hongkong, checking the flag list via the legend menu brings up a shitload of flags.
I mean, you're much better at all this coding stuff than I am, but (as far as I can see empirically) despite it being declared as a 64 member array, the actual game seems more than capable of tracking the status of flags in excess of this number. Every conversation sets a _played flag automatically, for instance. Even with those expiring after a mission, by something like...mid hongkong, checking the flag list via the legend menu brings up a shitload of flags.
Re: HX - A Deus Ex Coop Modification
I hate Ion code.
Okay Flag has a member var private travel Flag nextFlag; Seems quite possible that they are a just linked list and not stored in the table. Barf! I should fire up IDA Pro and take a peek. But i could easily go up to 112 (or 111) flags or sort some flags out which might not be related to datalinks. I have no savegame of later missions around to check how much flags are actually accumulated at the end of the game or a mission like in HongKong.
/edit:
I could also fill the client list via RPCs, but thats not good for network performance and makes code way more complicated.
Okay Flag has a member var private travel Flag nextFlag; Seems quite possible that they are a just linked list and not stored in the table. Barf! I should fire up IDA Pro and take a peek. But i could easily go up to 112 (or 111) flags or sort some flags out which might not be related to datalinks. I have no savegame of later missions around to check how much flags are actually accumulated at the end of the game or a mission like in HongKong.
/edit:
I could also fill the client list via RPCs, but thats not good for network performance and makes code way more complicated.