Hi there, I also go by 75. I'd like to take this chance to give a brief status update on the C/S netcode; sorry for not replying earlier, I must have missed this thread. I'm usually on Discord if you want to reach me.
- It's still being worked on in a private repo, what's on there is significantly better than what's on the mainline SVN, but it still has some major issues that need to be worked out
- The game array data gets synced over the network (sprites, sectors, walls, actors, etc) but gamevars aren't synced yet, I have a plan for them but I haven't implemented it yet
- There are some choppy movements and animations in the netcode that need to be smoothed out. I started out with every field of every struct getting synced but I noticed that it's best to just let the client handle some fields over time. NY00123 helped find a bunch of other cases which was really helpful.
- The current code has issues with players joining mid-game and running maps with more players than spawns. It also has issues with usermaps. These problems have been particularly challenging to fix, I tried a bunch of different fixes for this but they have been hard to integrate into the existing code.
- Map transitions are buggy, I've also had a hard time fixing these bugs on my own.
- Terminx and I have talked about merging in what I have right now into mainline, but I want to do a couple things like making sure there are no warnings when building under GCC, and some other cleanup work.
- Some of the older parts of the netcode (e.g., the player updates) is vulnerable to hackers. I have a plan for this but other issues with handling players make this tricky.
This is just a reminder, but when the netcode is merged into the SVN, things might still change. I wouldn't recommend starting to make mods on the way it behaves now.
And less pressing issues,
- There is a lot of optimization work to be done as far as how much memory the netcode uses and how fast it runs, I would like to play with how often the game creates and sends snapshots to see if I can reduce bandwidth usage, too.
- There is a lot of testing to do as far as how well it works with very high latency conditions (we're not ready to start testing that yet, though)
- ... and some other bugs and missing features, I'll go into more detail on that later.
At this point what would really help is:
- If somebody could help me work with the map loading / startup code because I have had a lot of trouble figuring out how to implement some of the map change / initialization code for the netcode.
- If somebody who is really knowledgeable with Duke3D (somebody who's worked with the Duke3D source for a long time, or perhaps a really good modder) could go through and find more struct fields that should / shouldn't be synced for certain SEs, picnums, etc.
Quote
I am willing to contribute. I am a C#, Python, Numpy, Julia, SQL programmer. I dont know C++ but I could learn.
As somebody who knows C, C++, Python, and C#, I appreciate your enthusiasm but note that Python/C# and C/C++ are very, very different languages and have totally different memory management strategies. Feel free to PM me if you'd like to get involved, though.