I will be using this thread to keep you guys updated of my progress on porting and rewriting the Ladder Slasher server code. This is a huge undertaking, and the server hasn't been fully rewritten since really at all since I started the code-base in 2003. Naturally, much has changed over the years, and it has just grown very difficult to make any updates. I won't bore you with details, but here's a quick recap:
- Needed to support secure websockets in LS and the IRC/Chat server. Since I wrote all the websocket (and server code) from scratch, rewriting the socket layer to support this would have been extremely time consuming.
- Another option came up to port the code base to another language and platform that ultimately would be more flexible moving forward (for instance, all my current custom server code written in C runs and is locked to freebsd and kqueue)
- I chose to try the port/rewrite option with chat, and it went pretty well. It took a lot of solid coding, but the end result seems pretty stable, and solid. It also supports secure websockets. Performance seems fantastic, and this was one of the major concerns.
- I decided to go ahead and bite the bullet and do a full rewrite/port of the LS server code as well. I started this a few weeks back.
So here we are. I'm pretty happy with the results so far, and feel pretty confident that this will be beneficial in the short and long term.
I have run into numerous snags already, but have overcome them, and the development is gradually going faster and faster as many of my "helper functions" have been ported over. As anyone who has ported code before knows, the tedium is over nine-thousand.
- Socket layer fully functional
- Database layer fully functional
- Authentication and most forum interaction is done (see below for more specifics)
- All character list is done -- this required a lot of initial work, building out all the base classes for characters, items, including the loading and sending of said data. However, this speeds up other areas that share that data
- All character screen functionality done, rerolling, deleting, creating, and renaming (which is part of forum tie in, for forum gold purchases, logging, etc)
- Selecting a character loads it, and all data for the character, placing you successfully in town
- Unselect/unload character (back to char list) done
- View Ladders is done
- Assign stat points to stats done
- Market Search is done
There is an indescribable amount of work left. For instance, nothing to do with combat, catacombs, monsters (data, generation, ai, etc), groups, etc has even been started yet. Saving characters isn't even done yet (though, this is partly by design, to not save back potentially broken data during the interim). Yes, it uses a development database, not the live server. While item basics is done (loading, sending), nearly everything else to do with them has yet to be implemented.
That said, I still thought you guys might like to know. My rough guess on timeframe towards a release is at least a month from now (and that's 12 hour+ days, 7 a week of coding). I will be doing various stages of beta testing, like I have in the past with different major version changes, so stay tuned for that. Please note that the initial update release(s) will likely not have any actual gameplay updates or changes, but this lays a foundation and groundwork that will hopefully make such things easier moving forward. The previous code rewrites I did in the past definitely help with this porting and rewriting process, so those were definitely not for naught.
Back to work!