It’s been a hot minute since the last post. That’s because there’s been a lot going on. (TL;DR before the planned changelog below).
Just to sum up what exactly has been going on, I shall say that school wrapped up and exams are finally out of the way – therefore development on Fishsticks/LCARS47 can come up to a much better pace. Last years updates 1.13 and 1.14 for Fishsticks came out in the summer and currently hold the record for the largest updates ever done.
Now neither here nor there, Fishsticks has been seen in the company of a new development branch since V.16 – P1 dropped, the dataStore-networking-test branch came into existence as a sub branch to the experimental branch. The goal of the super-experimental dataStore branch is to test super-experimental SQL database implementation. That brings us to a crossroads in the development of FS.
V1.16 was broken into two parts; part 1 brought about the Game Roles subroutine giving members the power to create their own assignable roles. The entirety of V1.16 was meant to focus on this subroutine but was broken up such as to get the foundation out for people to use (SKYE! WHERE’S THE GAME ROLES AT ALREADY!?). Part 2 was planned to bring about the patches and code that would fix everything that was left out in Part 1. I say was because part 2 now no longer exists and has been moved to other plans (more on that in a minute).
Now, for even more context, and this is going to get technical. Fishsticks is a bot that can start and stop any time, he also is an automaton – therefore if he needs to remember something, I have to program in a system that will allow him to “remember” whatever it is he needs to. He does this by using files called JSON files (Javascript Object Notation). It’s a nice little data chunk that Fs can read with relative ease. The dilemma is that every time Fs needs to save something, he opens it just like you open a text document, writes out/edits whatever he needs, and then saves it just like anything you edit on a computer. He does nearly the same thing when he reads from a file, open > read > close. The thing here is that each time Fs accesses a document and moves about in I/O (input/output), there’s a chance for corruption – something stupid happens like maybe the bot crashed, or there’s a system error, whatever.
The game roles subroutine runs solely off of data stored in a JSON file. Each time a user creates a new role – bam, straight into the JSON file. Every time a poll is created – bam, into a JSON file. Fs uses a LOT of file transactions to keep these nice systems we have running (I’m getting to the point, hold your horses). The dataStore branch is looking at using SQL to instead store all of this information in the cloud. That way we can nix the use of JSON files altogether. V16 – P2 would have carried on the use of JSON files and increased the amount of file transactions significantly. V17 was going to officially introduce SQL. So now you see where the crossroads are.
NOW, I’ve decided to merge V16 – P2 and V17 all into V17 and make it one giant update. I’m calling it a stop-gap update because previously, I’ve rolled out hotfixes and patches, and everything else in bits and pieces. This time, I’m going to put it all together into one massive update and roll it out and then patch the ensuing mess that comes from that. Scale-wise, this update should look somewhere in the ballpark of the size of 1.12, just before the monsters of 1.13 and 1.14.
TL;DR – Fishsticks does a ton of stuff with data storage that might corrupt some files, V17 will transition Fs over to SQL and fix that problem permanently.
COOL, now – what does this look like in terms of development? Honestly, I could probably type it all out here, but instead I’ll just have to summarize. I’ve taken to pushing the Fishsticks GitHub repository very seriously as the background workflows GitHub has are amazing; therefore, I encourage the curious to seek out the projects page (here’s a shortcut) for V17 so that you can see everything planned/working on/completed so that you can understand exactly what I’m doing in real-time. Now, onto the changelog synopsis.
- Implement SQL modules
- Database
- Modules:
- Create tables
- Submit inquries
- Handle results
- Convert all game role subroutine systems over to SQL handlers
- Create role has already been completed
- Vote, list, etc need to be implemented
- Implement !role QoL fixes
- Case neutralization
- Role name/game neutralization
- Voters on officialization are auto-added to the role
- Re-work help systems for ALL commands
- Instead of Fishsticks being a jerk and just telling you that you did something wrong, I’ll be working to try and make some enhanced responses that tell you exactly what went wrong. This is already present in some commands, but is very useful elsewhere.
- This will include a fix to Codex that will include a link to the Fishsticks command listing page on the LCARS Database
- Game Roles additions and patches
- Division reports
- LastPing reports (SQL)
- Handle any GitHub issues that have been opened.
- Quick reference section
- Other command patches
- Some commands may be moved over to a DM and kept persistent so that people can consistently reference them (ie; help).