... oh wait, you never did. Fuck off.
So, I should probably post an update as it's been a couple of months(!) since the last one. Development has indeed been slowed down a bit, as I've been busy with other (non-KO) projects, Aesteris has been busy with uni & not entirely sure where Annunaki is (probably family stuff).
Initially, I was (perhaps a little too) focused on updating the client source (for a bit of a change). Initially it was for testing map stuff, but I decided to keep going & updating to support at least 1.298 functionality.
Client is still very iffy (a lot of work has been spent updating UI implementations, and item implementations), but it:
- loads TBLs (was horribly broken, unstable code),
- loads string data from TBL, as opposed to using embedded string tables,
- loads updated UI files (should support even ROFD, but haven't implemented the string padding yet [an addition to the ROFD UI files], as I haven't come across a UI that actually uses it),
- loads in-game (loads *any* official map version natively without any modification to the map; past or present, as a by-product of the map editor work),
- can see NPCs / mobs / players,
- can interact with shop/repair/cape (but can't buy a cape, haven't fully implemented the cape UI)/clan symbol/inn/etc NPCs (not quest NPCs though, still haven't gotten to doing the quest menus/messages),
- loads/renders capes and attempts to mimic the official cape physics (it's not exact, but it's close enough. IMO it looks slightly better than official). Also overrides with the king's cape if player is a king. Note: small capes, not the long ones. (had to implement this mostly from scratch)
- loads/renders clan symbols (had to implement this from scratch),
- loads/renders other symbols (chicken, party leader, rank symbols; had to implement this from scratch),
- renders the clan leader line (had to implement this from scratch),
- mobs can be attacked,
- lootbox is rendered and can be clicked on (had to implement this from scratch),
- mobs can be looted (sort of: this still needs reimplementing, as it's extremely horrible and a bit outdated),
- networking code was completely replaced with Boost.Asio (because it's an amazing library. Tempted to do the same with the server...), so the client now uses asynchronous (non-blocking, and implemented as such too: it's most noticeable when connecting to the server initially, as previously it'll freeze the client when attempting to make a connection. Now, it'll just sit there saying 'connecting please wait', with the background still rendering and connect very shortly afterwards.), portable network code (trying to get rid a lot of this OS-specific code, as it'd be fun to have a client that actually natively runs on operating systems without needing Wine),
- obviously implemented things like packet decompression/encryption, etc.
- also replaced *ALL* of the packet handling code. ALL OF IT. It was even worse than the server was originally, which is saying something. WTF @ typing out CAPISocket::MP_AddSOMETHING(herpaderp, ...); every time you want to add data to a packet or CAPISocket::Parse_SOMETHING() when reading. It's no wonder it takes them forever to get anything done; that's a LOT of needless typing when talking about implementing lots of features.
- file i/o and such was replaced to use portable, standard code.
- nation selection / character selection / character creation screens were updated (though character selection is still using the old screen with them sitting down, for now. To update it, need to spend a bit of time reimplementing it as it runs a little differently now, with a proper zone setup rather than just a pre-built "scene"). So character creation uses the TBL for stats, and items to have equipped by default (for show), as it does officially, character selection has all of the player's equipped items loaded/rendering on them, and nation selection's just... updated.
- fixed things like the sky bug, experimented with anti-aliasing, etc.
- implemented the various chat types as of 1.298,
- added PM box functionality (this didn't exist at all, it was just via the main chat window). Aside from PM box placement, that is, but that's not a huge deal.
- fixed up item tooltips,
- fixed up tooltips in general because they're extremely buggy,
- fixed up & implemented the various official hotkeys,
- fixed up the skilltree UI (ugh) & its interactions with the skillbar,
- loads all the skill TBLs,
... Lots of stuff.
Not entirely sure what I want to do with the client. It's a fun side-project, but a lot of work.
The server, on the other hand, hasn't had all that much attention, but, we've:
- fixed a few bugs we've come across over time,
- implemented "indun event" system (for the various events that use this system, such as BDW & monster suppression squads), which is painfully awkward (read: retarded).
- started implementing BDW: scheduling, registration (& sign-up counter/UI), and instance assignation is done, players are teleported into their respective instances, and that's pretty much it for now... I haven't actually run through an official BDW event, so I need to dig up the rest of the logs Aesteris dumped (and sent me), so I can verify if I'm missing anything like notices, or such (again, I don't know). Will also need to find those logs so I can verify the official types used for the monument(s) (and for that matter, see which implementation they *are* using now). Unfortunately, the official code's changed again, so my logger needs updating, which is a pain.
- implemented premium functionality (to cross it off the 1.298 milestone), including a cut-off for non-premium players, as per official.
and other miscellaneous small stuff that isn't worth mentioning here.
Honestly, I haven't been able to afford it the same amount of attention over the last couple of months that I've been giving it for a while (it can be quite exhausting!), and with Aesteris busy with uni, it's been quiet. Will try to set aside more time for it. ;_;