Realm667 / WolfenDoom

"WolfenDoom - Blade of Agony" | Important: This is only meant for development and testing purposes. You are NOT ALLOWED to use material from this repository for your own projects. Important: This repository is for development and testing purposes, you are NOT ALLOWED to use the copyrighted material for your own projects without our permission!
http://boa.realm667.com
259 stars 26 forks source link

[3.2] Cooperative Mode - Discussion? #623

Closed Tormentor667 closed 2 years ago

Tormentor667 commented 3 years ago

I got a few messages already regarding the cooperative mode for Blade of Agony. I wonder, would it be possible? While mapping, I always placed 4 player startes and also made sure to create places in a way that makes it coop-compatible. I am not sure about the code-side though.

Ozymandias81 commented 3 years ago

Well many maps wouldn't be possible in coop actually, such as Intermap, C1M6, C1M0, C2M4. C2M1, C3M1, C3INTRO, the blimpship, Keen maps, Castle Wolfenstein probably since there are many things involved that are single player (disguise uniforms, sneakable actors behavior, radio messages, maybe issues with PPShaders). A lot has to be done, and well BoA would be possible to be played coop only under GZDoom, which I am not sure if it is good for that.

Tormentor667 commented 3 years ago

How can you be that sure that the Intermap or C1M6 wouldn’t work?

AFADoomer commented 3 years ago

I can't think of anything major that won't work... some aesthetic things may need to be reworked (e.g., static skyboxes), and some map scripts weren't written with multi-player in mind. Disguises and stealth should still work, but one player being discovered will affect all players in the area.

Tormentor667 commented 3 years ago

What we could consider is trying this as soon as we have take care of the things that need to be done. I can do a full playtest of all 3 episodes at home with my girlfriend and check how the maps are working - try to break things for example.

There is also a question of balancing the mod when it comes to treasure. Do all players share the same money for example? Do we multiply that by a certain factor?

Regarding NPCs, which player are they following?

AFADoomer commented 3 years ago

Whichever one they see first. They iterate from player 1 to player 8 and see who they can see. All should be able to activate/deactivate them, though.

Tormentor667 commented 3 years ago

Regarding "connecting players", as of now there is no GZDoom interface but the console commands. Would it be possible to write some ZScript menue where players can "host" and "join" (via IP)?

Ozymandias81 commented 3 years ago

Because I play under Zandronum quite every night since 2014, coop wads mainly, and the most complex one has been Stronghold in my eyes. Here with BoA there are way too many things happening on player side, also returning to HQs will mean that players which aren't 1st will be placed on different zones at respawn, and what if a player will have all Eisenmann files and others not? What will happen also at training session? Money won't be shared, objectives such as treasure chests will be good just for 1 player only. Then we have railshooter sequences, such as c1m6 and c2m4, and imagine what could happen with tanks too. I just think that to implement these things we will open an infinite amount of issues again, idk how to code them okay and maybe I am wrong, but not on the issue side and the fact that BoA is only GZDoom compatible. This imho could happen only once we are 100% sure that everything works fine and that we are using a stable release of GZDoom. I just call myself out anyway from this choice, it is too early to cross this path.

Tormentor667 commented 3 years ago

I think most of the issues could be addressed if we implement a shared inventory - meaning that items, puzzle objects and other things are shared between all players.

If one player collects an Eisenmann file, all players have it. If a player gives a file to Gutenberg, it gets removed from everyone. That way, a lot of issues could be handled.

The objective scripts are global anyway, so if one player finishes an objective, it is finished for everyone. We‘d only make sure that the messages are printed for everyone and the sounds are played for everyone which is easily doable.

For the railshooting sequences we could either add all players to the sequence or make all players who do not take the ride give the opportunity to teleport to the ride‘s destination after a while.

I remember that I even added something like this to the ending battle of C2M2, having coop in mind.

Regarding the script parts, maybe @Talon1024 and @AFADoomer can say more about that.

This would be definitely something for a 3.2 release.

DoomJedi commented 3 years ago

We have 1dir Bosses and some enemies.

...what about fps? Can it be splitscreen too?

Tormentor667 commented 3 years ago

Won’t matter regarding fps. 1dir bosses is a thing but maybe we can come up with a clever trick instead of you having to draw full rotations for all bosses 😅

DoomJedi commented 3 years ago

I hope you will :) Not that I have ideas (beside scaling 64x64 Bosses in coop mode, but it'll work (without extra work) only for classic ones, and what about brightmaps etc....)

As a maker of "SplitWolf" (coop splitscreen Wolf3D mod, for Windows and for Retropie) - I have alot of experience on coop modes, related challenges and even coop game modes ideas, some used as BoA mutators. That's why I immediately mentioned 1-dir Bosses and enemies in particular, I was lucky that for Wolf3D in 64x64 - Boss work was already done by Untrustable. This is not the case with MACres Bosses and is simply impossible work at this point and in general.

DoomJedi commented 3 years ago

Another question - how enemy AI work in such cases? Will they attack closest player at sight, or some less predictable pattern? Also the mod can be too easy for coop play. In SplitWolf we solved that by auto-doubling of enemies by code, inside maps.

More questions we dealt with in SplitWolf:

Will killed player leave backpack when he dies with his stuff for other player to grab? What about keys etc.

https://www.youtube.com/watch?v=DOBheJbU9fk

Tormentor667 commented 3 years ago

Keys could be shared in all player inventories as well in my opinion.

Enemy AI attack the first player in sight or the first player they get damage from (or the player that is the highest treat) - common Doom AI

DoomJedi commented 3 years ago

Any progress?

Tormentor667 commented 3 years ago

Well I guess it’s not high priority currently for @AFADoomer when it comes to the things we need to prepare for 3.1

AFADoomer commented 3 years ago

Wait, what am I supposed to be doing? Shared inventory and/or keys?

Tormentor667 commented 3 years ago

Shared keys and puzzle items actually would make sense but it is still open for discussion . What do you think?

Username-N00b-is-not-available commented 3 years ago

coop

I have just launched two copies of BoA on one machine into a network game as suggested here (used boa -host 2 +map c2m3 +skill 0 and boa -join 192.168.X.X with my current local IP address), and was pleasantly surprised: there are little problems with the core 'gameplay loop'. As @Ozymandias81 stated in https://github.com/Realm667/WolfenDoom/issues/623#issuecomment-840553438 and https://github.com/Realm667/WolfenDoom/issues/623#issuecomment-840728174, there sure will be problems on specific maps currently, but at least now it seems to works adequately. Here are some minor problems I spotted for now after playing a few minutes (let's leave fixing them to time after 3.1 has been released):

Everything works properly with ZCajun bots, but with two game instances kicking prints this to the console:

B.J. Blazkowicz tried to puke script "QuickKick" (
)

--N00b, 15 Jun 2021


I'd say that multiplayer support could definitely make a good addition for v3.2 (3.3? 3.8..?) in the future (but will mean a lot of work obviously, with testing as the main problem).

Tormentor667 commented 3 years ago

I think this sounds promising and defintitlely solvable

Username-N00b-is-not-available commented 3 years ago

There is also such a thing as deathmatch, and it could be even easier to complete for us — if we manage to find map parts which could make good DM maps. For example, here is what can be done with the C2M4 town (WAD in zip): boa_dm.zip I tested it with zcajun bots, and it actually seems quite enjoyable, here are some problems/notes I figured.

DoomJedi commented 3 years ago

You can use also some scrapped art, like snow russian etc.

Username-N00b-is-not-available commented 3 years ago

Ah, we don't have crouching sprites for them...

DoomJedi commented 3 years ago

No russian has crouching sprites as they were allies, those were made only for enemies.

Crouching sprites are very easy to do, in general - and especially as they are just recolor of existing frames for other soldiers. Fuller rolling animation - is a bit different thing.

Username-N00b-is-not-available commented 3 years ago

OK, if so I hope you don't mind if I recolor them (including Douglas, Ascher and allied marines) myself when I have time. By the way, it seems that default ZDoom skin format does not work with BoA's player class, I should not forget to do some research in engine sources.

Tormentor667 commented 3 years ago

I really like where this is leading to, but I'd really postpone that for now until everything for the v3.1 release is finished and prepared. I think we (especially @AFADoomer ) have already enough to currently take care of atm. But I am eager to continue here.

Username-N00b-is-not-available commented 3 years ago

Yes, this must definitely wait until we release 3.1, nothing urgent obviously. I was just collecting here the issues I noticed, so that they won't get forgotten when we have time to deal with them.

Tormentor667 commented 3 years ago

The king is dead, long live the king.

Time to talk about the cooperative mode for the v3.2 release I guess.

Username-N00b-is-not-available commented 3 years ago

Some further comments. For some reason co-op (two clients on one machine) desynchronizes for me near the beginning on C2M5_B. I didn't manage to track down the source of the problem, but was able to reproduce it a few times... In deathmatch with bots, the red blood pool which appears under the player on his death sometimes carries over to the respawned player pawn. Is there a way to make the player skins feature (S_SKIN) work with our player class, by the way? Does anybody know where the code is located in GZDoom?

Tormentor667 commented 3 years ago

I noticed the red blood pool issue also when resurrecting myself after dying a number of times. It happens occationally.

Regarding S_SKIN, no idea, it's a Skulltag/Zandronum feature, isn't it?

ColerXXX commented 3 years ago

B.J. Blazkowicz tried to puke script "QuickKick" ( )

I think it's because it detects it as a cheat, same as when trying to show objectives for the little I tested, try to enable cheats with "sv_cheats true" command

Tormentor667 commented 3 years ago

I think it's because it detects it as a cheat, same as when trying to show objectives for the little I tested, try to enable cheats with "sv_cheats true" command

I wonder what can be done about this issue in general? Any idea or experiences?

Regarding Coop, I would like to prepare a coop beta version soon that I will make accessable for players out there. The question right now is simply: How do we prepare the coop version in general? With a launcher? Or with the explanation on how to start it command-line? And how do we deal with the boss enemies?

I'd be happy to start a discussion here with all of you @Ozymandias81 @AFADoomer @DoomJedi @doomjuan @MuadDib90 @Username-N00b-is-not-available

MuadDib90 commented 3 years ago

I would welcome the launcher for sure, but I am also capable of hosting/joining games using command lines. (Well, but if the launcher would be too complicated to do only for beta testing, let's stick with command line.)

And what exactly do you mean considering bosses? (I am saying it from the laic position.) It does not matter who - in coop - will slay him, or does it? When his death does not trigger anything, there should be no problem. If so, it gets triggered anyway...

ColerXXX commented 3 years ago

For me also is ok with batch command lines! I think it would be enough just to make it ask the ip to connect at when running the .bat file, and when hosting, map and difficulty (and maybe "dup" if any lag could occur) .. the rest of the command will always be the same thanks for your interest in coop mode! :)