Splitscreen branch (3.42.03a(h2))

Latest build: Eternity-BananaSplit-3.42.03a(h2).7z (5.83 MB)

 

Branch progress:

  • Rendering: Working with "enough" widgets split between each player. Needs refactoring/clean up, screen wiping needs some thinking. Only works in GL2D, will likely stay that way.
  • Input: Now functional, and controllers can be mapped per player. The Keyboard/Mouse is permanently player 1, but you can assign a controller to them too.
  • Netplay: Destroyed at this stage. Will need some core rewrites of how the node and consoleplayer values are managed.
  • Sound: Actually 90% finished. Some minor aspects about the displayplayer need to be found and replaced, but any issues are currently unnoticeable. Reverbs probably wont work for a while/at all, however.
  • Logic: At its core, there is no distinction between a network player and local player at this stage (hence why netplay wont work at this stage). Automap needs some globals nixxed.

Features:

  • 2-4 player splitscreen
  • No loss of Doom/Boom/ZDoom 1.22 compatibility
  • Demo playback
  • You could also technically use this to record vanilla multiplayer demos. I wouldn't rely on it, but it sure is useful in a pinch.
  • No loss of sound attenuation (unlike the Xbox Doom branch)
  • Single instance, so only one gamesim is actually running (again, unlike Xbox Doom)
  • Seriously, what else am I supposed to list other than "it has splitscreen"?


Notes for use:
Make sure your game is in GL2D in the video options. Splitscreen will abort if attempted in SDL software.
Demos are automatically handled. Simply play back a multiplayer demo and all perspectives are rendered.
To play local splitscreen, you need to do 3 things:

  • There is a new cvar, localplayers. Setting this value in the console assigns X many players to the next game you start. By default it's at 1, meaning singleplayer. The game will automatically become co-op if you leave the gamemode at singleplayer and more than one local player exists.
  • Go to options->mouse/gamepad, and at the last page there are now 4 gamepad assignments. You can assign any player to any controller (including none at all, or even duplicates). Currently, player 1 will always have the keyboard and mouse, in addition to any controller assigned. If you have two listings for the same controller (XInput and SDL), you most likely want the XInput option.
  • You can assign keybindings (if not automatically done already, as these builds assign a default layout) by loading an SDL profile to assign the axis, and then remap any remaining keys to your desire. Currently, all players will use the same controls.

Changelog:
v0.11: Keyboard turnspeed hotfix

3.42.02: Sync release for 3.42.02 Heimdal, Splitscreen acts as netgames

3.42.03a Hotfix 2: Sync release for 3.42.03a Hotfix 2

 

9f5be76ebd.png

d74dce3d5e.png

Edited by Edward850
4 people like this

Share this post


Link to post

Uploaded "first public" build. Duunloab it here: Eternity-BananaSplit-0_11.7z
It's quite rough around the edges, especially so that I wont be able to spend all that much time on this for the next few months, so be sure to check the notes in first post. It should otherwise be fully playable.

Edit: Uploaded keyboard turnspeed hotfix.

Share this post


Link to post

Thanks for making this. This would have been really handy a few years ago while I was investing in setting up a multiplayer doom theatre room in my house. This gives me hope that things will be easier.

Perhaps this is premature, but do you have any intention of implementing multiplayer game modes like team deathmatch or capture the flag?

Share this post


Link to post

Nice! I was just looking for something like this to record vanilla demos.

Didn't Eternity already had split-screen support?

Share this post


Link to post

While Remood and Doom Legacy obviously have split screen, 3DGE is very close to having working Split Screen, and apparently the Doomsday engine is planning to support split screen eventually, I wasn't expecting the Eternity Engine to support Split Screen. This might be the most vanilla-accurate Split Screen supporting Doom source port since Doom3D.

Edward850 said:

  • Netplay: Destroyed at this stage. Will need some core rewrites of how the node and consoleplayer values are managed.


  • I was under the impression that Eternity's online multiplayer support was as bad as PrBoom-Plus's (only works well on LAN). Or am I wrong in that regard (works as well as Chocolate Doom, ZDoom, or even DOS source ports through DOSBOX's IPXNET)?

    Share this post


    Link to post
    axdoom1 said:

    Didn't Eternity already had split-screen support?

    Clearly not, otherwise why would I be adding it now? :P

    Danfun64 said:

    I was under the impression that Eternity's online multiplayer support was as bad as PrBoom-Plus's (only works well on LAN). Or am I wrong in that regard (works as well as Chocolate Doom, ZDoom, or even DOS source ports through DOSBOX's IPXNET)?

    It has Vanilla Doom's exact implementation, which IIRC is also what PRBoom+ has. They just aren't very recommended online for the same reason why you wouldn't use Vanilla if you can avoid it, that and Eternity only has the -net function, which is quite complicated to setup games with.

    Share this post


    Link to post

    You know for a person who blocked me on twitter, of all things, because you didn't like being questioned about the point of encrypting local stats files, it sure is odd asking such a question of me. :P

    Anything Doom related I make can usually be found on my github profile, and it is forked off Eternity so it'll be listed off its own page too, and as such: https://github.com/Edward850/eternity/tree/BananaSplit

    Share this post


    Link to post

    If you recall, I did answer your question. The issue was you were being a dick.

    But that's off-topic. Thank you for doing the right thing and providing a link to the source with the binaries.

    Share this post


    Link to post
    bradharding said:

    Thank you for doing the right thing and providing a link to the source with the binaries.

    I already did, actually. You will note that my GitHub profile is listed as part of my profile/posts. GPL is strange like that, but it only cares that it's accessible, it doesn't need to be directly provided with the actual binary.

    For the same reason, you could actually just answer source code requests by email within a 3 day (week?) time span. Not exactly efficient, though, and runs you in the risk of violating it if you eventually fail to respond.

    bradharding said:

    If you recall, I did answer your question. The issue was you were being a dick.

    Dick, maybe. Honest? Absolutely.

    Share this post


    Link to post
    Edward850 said:

    stuff


    I'm well aware of how the GPL works. I just thought, since you are so friendly and helpful towards other members of the Doom "community", that a more direct link to the source might be of benefit to some.

    Edward850 said:

    Dick, maybe. Honest? Absolutely.


    You must be very popular IRL.

    Share this post


    Link to post
    Edward850 said:

    You seem to have created some weird paradox where I'm both simultaneously helpful and a dick.

    Also I'm unsure why community is in quotes. There is infact a community, it's not a hypothetical concept. :P


    Please don't PM me again. A paradox? I'm sure you're very clear on what you are. And, yes, I understand that a community is not a hypothetical concept. Do you?

    Share this post


    Link to post

    Nicely done Edward; split screen is something sorely missing from many games these days...

    1 person likes this

    Share this post


    Link to post

    Don't listen to him Brad, he's just trying to get under your skin.

    Share this post


    Link to post
    Edward850 said:

    Clearly not, otherwise why would I be adding it now? :P


    I don't know, may be it's better split-screen. I think I got confused with EDGE.

    Share this post


    Link to post

    This is wonderful.

    While I'll admit I'm waiting for a Zdoom splitscreen, Eternity is a great secondary engine for it.

    Edit: The plug in play natures is absolutely fantastic. Thanks!

    Share this post


    Link to post

    Sorry for bumping, but I noticed this just recently.

    I love it. Nice thing that can be played with vanilla compatibility. And the possibility of playing it with keyboard and mouse while rest of the players use gamepad is gorgeous.

    Keep up the good work!

    Share this post


    Link to post

    This is literally the best thing ever. Will have to update the multiplayer tutorial. It took 12 years, but I can finally stop dragging an old copy of Legacy 1.42 everywhere I intend to Doom with a group of people!

     

    Thanks a million for this, Edward.

    Share this post


    Link to post

    Alas, Doom Legacy (as of this writing) is still necessary for Heretic split screen until either Eternity finishes its Heretic support or 3dge finishes its Split Screen support...and until Zandronum gets Split Screen (something I doubt will happen for years, if ever), it will always be needed for Chex Quest Zorchmatch...

     

    Although... why 1.42 instead of 1.46.3?

    Edited by Danfun64

    Posted (edited)

    Share this post


    Link to post

    To be honest, that was the last version I could get to just.. work. I probably will use newer versions if I do find myself wanting to play it again though!

    Share this post


    Link to post
    1 hour ago, Doomkid said:

    I probably will use newer versions if I do find myself wanting to play it again though!

    Hah! Like I said, the legitimate uses of Doom Legacy keep shrinking more and more. One of the few uses I know of AFAIK is online split screen, which can be useful in a LAN setting.

     

    @Edward850 What does you setting Split Screen as a netgame mean exactly? Does it mean connecting four computers in a LAN with 4 split screens each works now?

    Share this post


    Link to post

    No, that's still likely broken (and Eternity still has a 4 player limit anyway, extending produces demo compat issues and requires special spawn handling in co-op). The netgame flag controls some subtle behavior in the playsim, and is expressly required for multiplayer demos recorded in splitscreen to play back in sync. I'll likely investigate it when there's an actual point to it (i.e if/when the player limit is ever extended).

    Edited by Edward850

    Posted (edited)

    Share this post


    Link to post

    So I've set everything up and, once I got used to navigating the menu, everything feels fine. Played back some demos, it was cool to be able to watch both points of view at once. The only thing I have left to figure out: How do I actually go about starting a game in splitscreen? Other than not being able to find that, this feels great. EDIT: duh I need to learn to read. Excuse me, it's kind of late here..

     

    On the little thing that pops up asking which iwad before starting up, it would be cool to be able to select pwads, gamemode and 2/3/4 player splitscreen from this window as well. I know this is a work in progress, but I think those small additions would make it a great little launcher.

     

    EDIT 2: Shit, now every time I start a New Game, I get a crash - I_NetGetError:Tried to get a packet without net init! Even after closing and reopening, I'm still getting this error. Yet another edit: If I set localplayers to 1 before starting the game, this allows me to play, but if I set it to 2, even selecting the coop or deathmatch gamemodes rather than single, it still crashes to that I_NetGetError message upon trying to start a round.

    Edited by Doomkid

    Posted (edited)

    Share this post


    Link to post

    Bah, of course it would do that when I'm not looking. I'll fix that asap.

     

    Also the launcher has nothing to do with the splitscreen branch, and PWADs and gamemode options can be set from the options menu anyway.

    Edited by Edward850
    1 person likes this

    Posted (edited)

    Share this post


    Link to post

    Create an account or sign in to comment

    You need to be a member in order to leave a comment

    Create an account

    Sign up for a new account in our community. It's easy!


    Register a new account

    Sign in

    Already have an account? Sign in here.


    Sign In Now