Duke4.net Forums: NetDuke32 - Enhanced Duke3D Netplay! - Duke4.net Forums

Jump to content

  • 3 Pages +
  • 1
  • 2
  • 3
  • You cannot start a new topic
  • You cannot reply to this topic

NetDuke32 - Enhanced Duke3D Netplay!  "Netplay-centric EDuke32 fork, the successor to EDuke32-OldMP."

User is offline   WangNukem 

#61

View PostStriker, on 25 December 2022 - 07:07 PM, said:

After 6+ months of grueling work, I'm finally able to release NetDuke32 v1.2!

Merry Christmas everyone.

I haven't been able to get everything done that I wanted to, unfortunately. Still a lot of stuff I want to implement and fix. That'll have to come as a hotfix build or v1.3.

Download and Changelog Here: https://voidpoint.io.../NetDuke32_v1.2

EDIT: StrikerDM has also been updated: https://forums.duke4...post__p__376101

As a bonus, since NetDuke32 is much closer to modern EDuke32's CON featureset, I've ported Fox's Duke Nukem 64 TC to it, making the necessary changes to accommodate NetDuke32's prediction code quirks. (Along with a few bits of polish, like widescreen sprites) So, you can now play Duke 64 online for the first time in a long time, if not ever.

Posted Image


Download: https://shadowmaveri..._nd32_beta2.pk3

Just stick that in the mods folder, and select it when setting up a match in NetLauncher.

Just to note, there's a known issue with some sprites turning into white squares in the Duke64 TC. This is an engine bug that I'm waiting on the other Voidpoint lads to fix. If a fix comes soon, I'll update v1.2 with a hotfix.

I think after this release, I'll be taking a considerably long break. Getting this out and in a reasonable state has taken its toll on me mentally, and I'm pretty burned out.




Thank you very much for your great work you did and you're doing here :)

This week we had another retro LAN party and tried to get the Duke Nukem 64 mod running together with NetDuke32 v1.2.1 in the local network via NukemNet 0.3.8 - unfortunately without success.

It was probably due to NukemNet and we might not have configured it correctly.

Is there a short guide or something similar that explains how to properly use this for offline LAN multiplayer matches (with NetDuke32 and an active mod)?

We switched NukemNet to "offline mode" and the (listen) server opened an IRC room and configured the game and the map etc. accordingly. The others could also join the channel, but we couldn't start it.

If you only played it for yourself/alone for testing, everything also worked via NukemNet as a "launcher". Only not for several in the LAN.

A quick question on the side:

Back in the days we preferred to play the stadium map in multiplayer on the N64. But if I select the map, then it's only a small variant (only the "inner" stadium so to say) and you can't access the corridors. Isn't the "large variant" of the map included?
0

User is offline   Ninety-Six 

#62

View PostWangNukem, on 14 May 2023 - 08:19 AM, said:

Back in the days we preferred to play the stadium map in multiplayer on the N64. But if I select the map, then it's only a small variant (only the "inner" stadium so to say) and you can't access the corridors. Isn't the "large variant" of the map included?


It's the same map, the corridors are just locked during singleplayer. I think to open the corridors there should be a switch only accessible in MP, or you have to respawn in the corridors to open the doors from the other side.
0

User is offline   WangNukem 

#63

View PostNinety-Six, on 14 May 2023 - 09:04 PM, said:

It's the same map, the corridors are just locked during singleplayer. I think to open the corridors there should be a switch only accessible in MP, or you have to respawn in the corridors to open the doors from the other side.


If I remember it correctly there were switches located on the outside (so the inner part of the stadium) to open this doors/gates - but they are missing. I guess the included map is the one from the PC version (this was very "limited" compared to the N64 map)?
0

User is offline   Striker 

  • Auramancer

#64

View PostWangNukem, on 15 May 2023 - 01:11 AM, said:

If I remember it correctly there were switches located on the outside (so the inner part of the stadium) to open this doors/gates - but they are missing. I guess the included map is the one from the PC version (this was very "limited" compared to the N64 map)?

No, the N64 stadium is there, you just selected the wrong map. (Don't select E3L9.map, go to New Game, select episode 3, level 9. Or, select L28.map)
0

User is offline   WangNukem 

#65

View PostStriker, on 17 May 2023 - 11:40 PM, said:

No, the N64 stadium is there, you just selected the wrong map. (Don't select E3L9.map, go to New Game, select episode 3, level 9. Or, select L28.map)


Thank you very much mate. :)
Then we just have to find out why we couldn't start the LAN match or the LAN server via NukemNet (in a way that everyone can join and not just the host). We'll have to try again at the next LAN.
0

User is offline   Wesker666 

#66

Hi, loving Netduke and StrikerDM!


A quick question, is Netduke compatible with the _CLIPSHAPE0.map to add collison to 3D models/voxels?


Regards,
0

User is offline   Striker 

  • Auramancer

#67

View PostWesker666, on 03 June 2023 - 10:28 PM, said:

Hi, loving Netduke and StrikerDM!


A quick question, is Netduke compatible with the _CLIPSHAPE0.map to add collison to 3D models/voxels?


Regards,

To be honest, I'm not sure. I'd test it myself, but I'm currently away from my PC. Give it a shot and report back to me if it works, and if it doesn't, I'll try to get it working next time I'm able to.
0

#68

WangNukem, please contact me in NukemNet's discord to further debug your LAN issue.
0

#69

View PostWesker666, on 03 June 2023 - 10:28 PM, said:

Hi, loving Netduke and StrikerDM!


A quick question, is Netduke compatible with the _CLIPSHAPE0.map to add collison to 3D models/voxels?


Regards,


I don't think so.

$ grep -nr "clipshape" source/netduke32/
$ grep -nr "clipshape" source/duke3d/
   source/duke3d/src/cmdline.cpp:47:        "-clipmap [file.map]\tLoad an additional clipping map for use with clipshape\n"
   source/duke3d/src/cmdline.cpp:183:        char clipshape[16] = "_clipshape0.map";
   source/duke3d/src/cmdline.cpp:185:        clipshape[10] = j;
   source/duke3d/src/cmdline.cpp:186:        g_clipMapFiles.append(Xstrdup(clipshape));
   source/duke3d/src/player.cpp:5066:                clipshape_idx_for_sprite((uspriteptr_t)&sprite[spriteNum], -1) >= 0)
   source/duke3d/src/astub.cpp:8020:              "-clipmap [file.map]\t\tLoad an additional clipping map for use with clipshape\n"
   source/duke3d/src/astub.cpp:8055:        char clipshape[16] = "_clipshape0.map";
   source/duke3d/src/astub.cpp:8057:        clipshape[10] = j;
   source/duke3d/src/astub.cpp:8058:        g_clipMapFiles.append(Xstrdup(clipshape));
$ grep -nr "clipshape" source/build/
   source/build/src/clip.cpp:529:int clipshape_idx_for_sprite(uspriteptr_t const curspr, int curidx)
   source/build/src/clip.cpp:540:int32_t clipshape_idx_for_sprite(uspriteptr_t const curspr, int32_t curidx)
   source/build/src/clip.cpp:1155:    int clipshapeidx  = -1;
   source/build/src/clip.cpp:1191:            clipshapeidx = clipshape_idx_for_sprite(curspr, clipshapeidx);
   source/build/src/clip.cpp:1193:            if (clipshapeidx < 0)
   source/build/src/clip.cpp:1199:            clipsprite_initindex(clipshapeidx, curspr, &clipsectcnt, pos);
   source/build/src/clip.cpp:1247:#define CLIPMV_SPR_F_BASEZ getcorrectflorzofslope(sectq[clipinfo[clipshapeidx].qend], v.x, v.y)
   source/build/src/clip.cpp:1258:#define CLIPMV_SPR_C_BASEZ getcorrectceilzofslope(sectq[clipinfo[clipshapeidx].qend], v.x, v.y)
   source/build/src/clip.cpp:1921:            curidx = clipshape_idx_for_sprite(curspr, curidx);
   source/build/src/clip.cpp:2513:            curidx = clipshape_idx_for_sprite(curspr, curidx);
   source/build/include/build.h:1477:int clipshape_idx_for_sprite(uspriteptr_t curspr, int curidx);


While some code for it is present in the Build Engine source, the reference to `_clipshape0.map` is not present in the netduke32 folder (on the netduke32_main branch), so it is very likely not supported.

Edit: Also when trying it with case-insensitive search, no results for netduke32.

This post has been edited by Doom64hunter: 08 June 2023 - 10:53 AM

0

User is offline   Wesker666 

#70

View PostDoom64hunter, on 08 June 2023 - 10:52 AM, said:

I don't think so.

$ grep -nr "clipshape" source/netduke32/
$ grep -nr "clipshape" source/duke3d/
   source/duke3d/src/cmdline.cpp:47:        "-clipmap [file.map]\tLoad an additional clipping map for use with clipshape\n"
   source/duke3d/src/cmdline.cpp:183:        char clipshape[16] = "_clipshape0.map";
   source/duke3d/src/cmdline.cpp:185:        clipshape[10] = j;
   source/duke3d/src/cmdline.cpp:186:        g_clipMapFiles.append(Xstrdup(clipshape));
   source/duke3d/src/player.cpp:5066:                clipshape_idx_for_sprite((uspriteptr_t)&sprite[spriteNum], -1) >= 0)
   source/duke3d/src/astub.cpp:8020:              "-clipmap [file.map]\t\tLoad an additional clipping map for use with clipshape\n"
   source/duke3d/src/astub.cpp:8055:        char clipshape[16] = "_clipshape0.map";
   source/duke3d/src/astub.cpp:8057:        clipshape[10] = j;
   source/duke3d/src/astub.cpp:8058:        g_clipMapFiles.append(Xstrdup(clipshape));
$ grep -nr "clipshape" source/build/
   source/build/src/clip.cpp:529:int clipshape_idx_for_sprite(uspriteptr_t const curspr, int curidx)
   source/build/src/clip.cpp:540:int32_t clipshape_idx_for_sprite(uspriteptr_t const curspr, int32_t curidx)
   source/build/src/clip.cpp:1155:    int clipshapeidx  = -1;
   source/build/src/clip.cpp:1191:            clipshapeidx = clipshape_idx_for_sprite(curspr, clipshapeidx);
   source/build/src/clip.cpp:1193:            if (clipshapeidx < 0)
   source/build/src/clip.cpp:1199:            clipsprite_initindex(clipshapeidx, curspr, &clipsectcnt, pos);
   source/build/src/clip.cpp:1247:#define CLIPMV_SPR_F_BASEZ getcorrectflorzofslope(sectq[clipinfo[clipshapeidx].qend], v.x, v.y)
   source/build/src/clip.cpp:1258:#define CLIPMV_SPR_C_BASEZ getcorrectceilzofslope(sectq[clipinfo[clipshapeidx].qend], v.x, v.y)
   source/build/src/clip.cpp:1921:            curidx = clipshape_idx_for_sprite(curspr, curidx);
   source/build/src/clip.cpp:2513:            curidx = clipshape_idx_for_sprite(curspr, curidx);
   source/build/include/build.h:1477:int clipshape_idx_for_sprite(uspriteptr_t curspr, int curidx);


While some code for it is present in the Build Engine source, the reference to `_clipshape0.map` is not present in the netduke32 folder (on the netduke32_main branch), so it is very likely not supported.

Edit: Also when trying it with case-insensitive search, no results for netduke32.



I couldn't get it to work, had a feeling that may have been the case.

Thanks for the response.
0

User is offline   Striker 

  • Auramancer

#71

Sorry about that. I'll try to get it working once I'm done the netcode rewrite. (Which is has been taking me some time...)
0

User is offline   Ninety-Six 

#72

I'm suddenly having a strange problem. I've come back after a few months, and two issues have appeared that weren't there previously.

The first is that, upon loading it up for the first time after "a while," (I haven't figured out how long yet, but more than 6 hours) it runs fine. But if I close it out and then restart it (to change the number of players or whatever), suddenly the frame rate tanks hard. I don't understand how or why this happens. This happens regardless of if a mod is loaded or not.

The second problem is that mods aren't showing up as selectable options anymore. I wanted to try out StrikerDM, but not only is that not present, duke64 isn't either, despite me not having moved it since the last time I played with it. Both files are in the mods folder but neither can be chosen. The only workaround I've found is taking them out of the mods folder and into the root directory, and then adding their file name to the end of the command line.

This post has been edited by Ninety-Six: 30 August 2023 - 11:12 PM

0

User is online   Danukem 

  • Duke Plus Developer

#73

Hey Striker (or whoever knows answer): Can you explain the events PREWEAPONSHOOT (and POST), since these were just ported over to regular EDuke32? I'm always looking for easier ways to manipulate weapon stuff. Thanks in advance! In the commit note it says "Setting RETURN to non-zero in EVENT_PREWEAPONSHOOT cancels the shot" but there is more you can do, right?
0

User is offline   Striker 

  • Auramancer

#74

View PostNinety-Six, on 30 August 2023 - 11:10 PM, said:

I'm suddenly having a strange problem. I've come back after a few months, and two issues have appeared that weren't there previously.

The first is that, upon loading it up for the first time after "a while," (I haven't figured out how long yet, but more than 6 hours) it runs fine. But if I close it out and then restart it (to change the number of players or whatever), suddenly the frame rate tanks hard. I don't understand how or why this happens. This happens regardless of if a mod is loaded or not.

The second problem is that mods aren't showing up as selectable options anymore. I wanted to try out StrikerDM, but not only is that not present, duke64 isn't either, despite me not having moved it since the last time I played with it. Both files are in the mods folder but neither can be chosen. The only workaround I've found is taking them out of the mods folder and into the root directory, and then adding their file name to the end of the command line.

The mods folder is for NetLauncher and things like NukemNet, not for loading in singleplayer directly from the startup window. The main startup window is pretty much using unchanged code from mainline EDuke32, so it doesn't look in the mods folder for anything (yet). If you want to load StrikerDM or whatever else single-player, you'll need to use the command line (using the -g command line parameter, ie: netduke32.exe -g ./mods/StrikerDM-r#.pk3) or a launcher that loads grps, like NukemNet (which does let you launch SP games if you're not interested in launching a multiplayer match). I think you might be able to drag and drop the PK3 on top of netduke32.exe as well, but I haven't tested that in a while.

As for your performance problem. No idea. Never happened to me or any of the people who helped me test. Though, I did hear from someone who had a performance issue that their antivirus was causing problems.

I can't really help anyone nor work on NetDuke32 for a while, because I'm working full-time on Ion Fury: Aftershock right now, and things are incredibly busy in that regard. There's still tons of things I want to/need to work out with NetDuke32, but haven't been able to. Once Aftershock is out the door, I'll get back to NetDuke32.

Quote

Hey Striker (or whoever knows answer): Can you explain the events PREWEAPONSHOOT (and POST), since these were just ported over to regular EDuke32? I'm always looking for easier ways to manipulate weapon stuff. Thanks in advance! In the commit note it says "Setting RETURN to non-zero in EVENT_PREWEAPONSHOOT cancels the shot" but there is more you can do, right?

It's literally what it says on the tin. PREWEAPONSHOOT fires just before A_Shoot is called in-engine, setting RETURN to non-zero cancels the shot (though doesn't prevent ammo consumption, so keep that in mind). POSTWEAPONSHOOT is after the weapon was fired, RETURN being the sprite ID of the projectile fired. What you do with those events is up to you. In the Duke64 TC port to NetDuke32, PREWEAPONSHOOT is used to adjust the player angle for each of the two SMGs, so the shots are "split" down the middle, like in the original, and then POSTWEAPONSHOOT is used to revert to the correct angle in the same tick, preventing any jerkiness.
2

User is online   Danukem 

  • Duke Plus Developer

#75

View PostStriker, on 01 September 2023 - 09:59 PM, said:

It's literally what it says on the tin. PREWEAPONSHOOT fires just before A_Shoot is called in-engine, setting RETURN to non-zero cancels the shot (though doesn't prevent ammo consumption, so keep that in mind). POSTWEAPONSHOOT is after the weapon was fired, RETURN being the sprite ID of the projectile fired. What you do with those events is up to you. In the Duke64 TC port to NetDuke32, PREWEAPONSHOOT is used to adjust the player angle for each of the two SMGs, so the shots are "split" down the middle, like in the original, and then POSTWEAPONSHOOT is used to revert to the correct angle in the same tick, preventing any jerkiness.


Sounds like PREWEAPONSHOOT is extremely similar to DOFIRE (https://wiki.eduke32...ki/EVENT_DOFIRE), although I don't recall if ammo is consumed when DOFIRE is cancelled. In Duke 64 do the 2 SMGs fire simultaneously (i.e. both during the same tic)? I'm pretty sure if a weapon has multiple projectiles fired at one tic (e.g. a shotgun) then the DOFIRE event only triggers once, but it sounds like your event might trigger separately for each pellet...can't tell from your description.

POSTWEAPONSHOOT is a nice addition. Until now I've had to find other interventions like catching the projectiles in EVENT_EGS to make changes to them, which of course makes the code harder to follow. Unfortunately I have code going back many years now from different EDuke32 eras and it's a lot to refactor.
0

User is offline   Striker 

  • Auramancer

#76

View PostDanukem, on 02 September 2023 - 08:54 PM, said:

Sounds like PREWEAPONSHOOT is extremely similar to DOFIRE (https://wiki.eduke32...ki/EVENT_DOFIRE), although I don't recall if ammo is consumed when DOFIRE is cancelled. In Duke 64 do the 2 SMGs fire simultaneously (i.e. both during the same tic)? I'm pretty sure if a weapon has multiple projectiles fired at one tic (e.g. a shotgun) then the DOFIRE event only triggers once, but it sounds like your event might trigger separately for each pellet...can't tell from your description.

POSTWEAPONSHOOT is a nice addition. Until now I've had to find other interventions like catching the projectiles in EVENT_EGS to make changes to them, which of course makes the code harder to follow. Unfortunately I have code going back many years now from different EDuke32 eras and it's a lot to refactor.

DOFIRE only gets called once, not for every shot in a burst, and it happens before any ammo gets consumed.
0

User is offline   Ninety-Six 

#77

View PostNinety-Six, on 30 August 2023 - 11:10 PM, said:

The first is that, upon loading it up for the first time after "a while," (I haven't figured out how long yet, but more than 6 hours) it runs fine. But if I close it out and then restart it (to change the number of players or whatever), suddenly the frame rate tanks hard. I don't understand how or why this happens. This happens regardless of if a mod is loaded or not.


Update: It's not time-based. If I run eduke32 (yes, eduke) between sessions, this will prevent NetDuke32 from tanking the framerate.


I.....what?
0

User is offline   Striker 

  • Auramancer

#78

You wouldn't happen to be running any software that has any overlays? Discord and NVidia GeForce Experience come to mind. Both those can cause a similar issue to the one you're describing, but I'm just kind of shooting in the dark here.

Another thing that I know likes to play rough with both NetDuke32 and EDuke32 are some USB headsets, like ones from Razer, and a few other companies.
0

User is offline   Ninety-Six 

#79

View PostStriker, on 03 September 2023 - 11:14 PM, said:

but I'm just kind of shooting in the dark here.


No, I get it. At this point I'm just documenting what might be the strangest bug I have ever seen in my entire life for posterity. I swear to god I am cursed. Electronic devices and computer programs always start acting weird when I show up.

View PostStriker, on 03 September 2023 - 11:14 PM, said:

Another thing that I know likes to play rough with both NetDuke32 and EDuke32 are some USB headsets, like ones from Razer, and a few other companies.


No, I'm not. In fact, that's actually a difference between then and now. The first time I was playing around with ND32, I was using headphones. In the time since, the port broke so I've been relying on speakers instead.

I dunno, maybe that's a factor. This is so bizarre that I could believe it was caused by a smudge on the bathroom wall near an ancient temple on the other side of the planet.

View PostStriker, on 03 September 2023 - 11:14 PM, said:

You wouldn't happen to be running any software that has any overlays? Discord and NVidia GeForce Experience come to mind.


That's a negative as well. I do have eduke32 hooked up to Steam, but I rarely actually run it from there unless I'm doing a broadcast or something.



The only other point of interest I have is start-up time. I've noticed that by doing the switch between eduke and netduke, both take a few seconds longer to start up (specifically on the part of the startup window where you see the console log as it initializes everything). Whereas if I jump immediately back into netduke, the startup time is near instant (this is true for eduke as well but it doesn't cause any problems).

I'm no programmer, so this is my own shot in the dark, but I'm wondering if the computer keeps some of these applications in memory for a while, which leads to instant start-up should I go back in a relatively short period of time. I've seen this with other apps, too. But for some reason netduke has started freaking out when it happens. Although, usually a different program doesn't unload the first.

This post has been edited by Ninety-Six: 04 September 2023 - 01:00 PM

0

User is offline   Ninety-Six 

#80

I found something interesting. I compared netduke32.log between a "good" session and a bad one. Everything is identical, except for one thing. The refresh rate is inexplicably set to (or detected as, I'm not sure which) 29 Hz instead of the normal 59.
0

User is offline   Ninety-Six 

#81

I've figured it out. It's not a NetDuke thing. Or if it is it's a common problem. I spun up the Rednukem version of Duke 64 and it did the same thing. And once again booting eduke fixes it. I don't even need to load a level.

The problem is my monitor, apparently. Or at least, the problem lies in the way these programs interact with it. I'm not sure which. Point is, this monitor is capable of 1080 60 Hz with no problems, but for some reason ever since I got this stupid thing various apps and even Windows says it isn't capable of the things it's capable of. I don't understand. Nor do I understand why or even how eduke is the only one of these that's able to somehow tell the other Build engines that my monitor can run 60hz. It's not like I'm overclocking it or anything. None of it makes any damn sense, but at least as far as my netduke experience goes, mystery "solved."

This post has been edited by Ninety-Six: 10 September 2023 - 10:10 PM

0

User is offline   Striker 

  • Auramancer

#82

What kind of GPU and drivers? Also, does your monitor manufacturer provide a driver? Some monitors for some reason need them as the EDID data in the monitor itself that's supposed to tell the PC its capabilities isn't always correct.
0

User is offline   Ninety-Six 

#83

View PostStriker, on 11 September 2023 - 04:36 PM, said:

What kind of GPU and drivers?


Integrated (unfortunately) Intel HD. But I had that with the last monitor, too, which was what I was using the last time I played around with ND32 (housemate broke the old one, don't ask).

View PostStriker, on 11 September 2023 - 04:36 PM, said:

Also, does your monitor manufacturer provide a driver? Some monitors for some reason need them as the EDID data in the monitor itself that's supposed to tell the PC its capabilities isn't always correct.


They don't unfortunately, but what you just described certainly sounds exactly like what I'm dealing with.

I'm running on the generic drivers Windows provides.

This post has been edited by Ninety-Six: 11 September 2023 - 10:55 PM

0

User is offline   Striker 

  • Auramancer

#84

If you got the brand/make and model of the monitor, I might be able to assist.
1

User is offline   Ninety-Six 

#85

View PostStriker, on 11 September 2023 - 11:16 PM, said:

If you got the brand/make and model of the monitor, I might be able to assist.


I'll get back to you on that. I think I still have the packaging around here somewhere...
0

User is offline   WangNukem 

#86

@Striker
A quick question regarding the great Duke Nukem 64 mod (it's really a lot of fun at our LAN parties):
Is it also planned that the DN64 HUD will be included in a future version/release?
0

User is offline   WangNukem 

#87

Maybe I just need to show/expand the HUD somehow? At the moment all I can see is numbers.
So maybe my question is simply stupid, but unfortunately I don't know much about it. :)
0

User is offline   Mav3r1ck 

#88

Having a problem with the sound, I start fake multiplayer with the netduke32 launcher, but when the game starts, there is no sound during the match.

Are there any solutions to this issue?
0

Share this topic:


  • 3 Pages +
  • 1
  • 2
  • 3
  • You cannot start a new topic
  • You cannot reply to this topic


All copyrights and trademarks not owned by Voidpoint, LLC are the sole property of their respective owners. Play Ion Fury! ;) © Voidpoint, LLC

Enter your sign in name and password


Sign in options