Hiho everyone, crawling closer to working on new content and systems but not quite there yet.
I had some difficulty getting this build out of the door for a few reasons. Re-implementing the punishment system caught me a bit off guard because of all the cases it had to cover… punishments are account level, but when a punishment is given or revoked players might be online, offline, in the character selection screen, or on another character on the same account, and all of these cases didn’t fit well with my whole “load the data once, edit it all in memory for the duration of a session, persist it when reasonable” plan given there may not even be a session so no model will be in memory… or there might be. Or there might be a session for another hero on the account, not the hero being punished, etc etc.
4 total rewrites later and I am finally happy with where it sits and the complexity of the implementation. I felt pretty strongly about getting this right, as it’s one of the only account-level data changes that strongly affects session state and can change at any time, including when people are offline. The resultant solution lets me handle mutable account-level data nicely which will be important going forwards for things like your account-wide bank and achievements. The first few implementations added far too much complexity, and I am feeling a little proud of myself for not settling on the first implementation that fully worked, and having the fortitude to keep rethinking my approach until everything sat architecturally in a good place for future changes and extensions.
What has changed?
- Inviting a player to a full party via the player details screen correctly reports your party is full
- Friends list is now account wide
- Movement speed is no longer level based, base movement speed set to level 100 player speed in current live game
- Fix for being correctly taken straight through to the realm if you have a combat locked hero already in-realm
- Fix for the client being unable to render player bodies and crashing if they had no back appearance
- Fix for bodies fading out resulting in players becoming interdimensional ghosts
- Hero vitals (health, mana, nourishment) are now persisted
- Criminal record & associated punishment systems rewritten and re-implemented
- You can be banned (if you are online, offline, or on another character)
- You can be muted (if you are online, offline, or on another character)
- You can be slapped
- You can be warned (if you are online, offline, or on another character)
- You can be kicked
- You can be namelocked (if you are online, offline, or on another character)
- Further changes to various language translations as per continued community effort <3
What to test?
- Inviting players to a full party correctly informs you that your party is full
- Friends List:
- This should now be account-wide
- Your health, mana and nourishment should now save when you log off
- You should be a reasonable walking speed, even at level 1
- If there’s a GM online (for example, Meowcake), if you could let them abuse you and confirm the various punishments are working that’d be awesome
- Again if there is a GM online, If you could let yourself get murdered to test the client rendering crashes and body fade-out bugs are fixed that would be sweet
- As always, please use your native language if it is available and keep an eye out for any bad translations / broken UI layouts
There are a few extra bells and whistles I need to add before the next sprint review, namely:
- Re-implement the moderator log so all criminal record actions can easily be listed, reviewed, and reversed from a central UI
- Re-implement the dynamic “bad name” list that remembers namelocked names and prevents them from being used ever again
- Test and properly announce the new community helper role
I am giving myself Monday and Tuesday to get these done, then I am transitioning to the skill and stat from-scratch-rework-rewrite-thing that has been teased on the discord. Very much looking forwards to it being Wednesday morning and being able to finally start working on the good stuff 😀