Fishsticks V1.18 Plans

CC18Logo

Greetings all,

In my last update, I discussed the ramifications that the Discord.js API update to 12.x had on Fishsticks’ development. In light of that, I said that V1.17.7 will be merged into V18. This is the follow-up post to that article where I will try to discuss what V18 will entail.

Between that post and this one, I polled the CCG community on Fishsticks via a survey. The results were very informative and some of you more observant folk may have noticed some changes already over in the GitHub repository. Here’s a brief summary as the results of the summary are very pertinent to the development of V18.

  • All parameters given in any command will be delimited by hyphens.
  • FSO will now be accessible via command.
  • !info will be removed and !codex will receive a healthy dose of fixing up in order to provide a very quick “layman friendly” help guide.
  • V18 will be delving into a deep attempt at performance. A lot of “realtime” actions that take place are suffering because of the inability to process them quickly enough.

 

Overall, the survey was incredibly informative. The change in parameter delimitation will be an update for the records in itself. Now, onwards to an outline of what I’m expecting to get done in V18 and hopefully why. But first – some context. Fishsticks development started roughly 3 years ago (relative to this post) and was a duplicate framework to an already in place system on PlDyn’s Discord server called LCARS47. That framework (known as LCARS Foundation 1) was very rigid and ran solely out of a single file and handled stuff very poorly. It was basically the core script with several hundred lines of code that expanded by another 100+ lines depending on the complexity of a command being added.

Since then, Fishsticks development soared and eclipsed LCARS47’s development by light-years. A new framework was written that permitted Fishsticks to run on a modular system. Since then, new modules have cropped up in the code that spans far more than just active commands; these include passive commands, sub-process modules, and more. LCARS47 fell behind so far that when the Discord.js API update happened, I rewrote her from scratch and LCARS47’s small amount of code, now runs far better than some systems in Fishsticks…which is why I’m talking about this.

Fishsticks V18 will be a full refactor of the entire codebase. There are many systems within Fishsticks that are outdated and were poorly written thanks to the ignorance of the developer. A person can learn a lot in 3 years. This plan was already in the works months before even V1.15 was released. Discussions were had on it, and the ramifications were thought about, but nothing ever came of it. Now I have a proper opportunity to implement the changes necessary and hit the code hard to bring it up to a more modern, efficient, and performance-friendly system; including FSO.

Fishsticks Online (FSO)

  • The database will move from relational MySQL to document-based RethinkDB; this supports JSON and is focused on a realtime system allowing DB transactions to be made very quickly and watched in split-second times.
  • The plans for an interactive dashboard are going to be placed on the backburner or potentially even scrapped. FSO statistics will now be available via command.
  • All records will be stored via Discord ID rather than record ID. User handles will be the client’s username instead of a nickname (prevents the potential for strange characters).

Command Reworks
Aside from the changes implemented in V1.17.7 to bring Fs up to speed on what Discord now requires, there are many things that need to be looked at across all commands.

  • All commands
    • Commands that accept parameters will no longer look for spaces as a delimiter; this is being replaced by a standardized hyphen -
    • Sub-functions in each command’s core script (if any) will be replaced with a standard set of modular utility functions accessed by modules.exports
    • New sub-functions such as DB transaction statements will be shunted to new standardized utility functions.
    • All commands will now feature an internal unique help descriptor that will be used by !codex
    • References to the user/command issuer will be made via the current nickname. References to FSO for that information will not be made.
    • Commands making changes to important Discord systems or making permanent requests somewhere that either cannot be changed or are difficult to change will now require a form of confirmation before submitting (ie, !suggest, !edit, etc.)
  • !role
    • Interactions with this command will be met with full force. The jank in here is too much to handle. The revamped FSO will handle logistical transactions prior to any changes in the Discord server or to any users and confirmation from FSO will be required before Fs can continue to make a change to any user.
    • Almost every aspect of this command is going to be reworked because it’s a freaking mess.
  • Music player system
    • Abandon all hope, ye who are faithful. This system is getting scrapped. Perhaps to return in a future update.

Code Design & System Mechanics

  • Fishsticks’ internal help system has always been fairly abysmal; V18 will be met with a standard set of video tutorials, a review of the Fs command listing on the LCARS Database and a reworked !codex command that will link to the relevant wiki section and provide a brief and concise description of the command.
  • Engineering mode and subroutine systems will be scrapped. Filters like the Twitch screen, newcomer link screen, and similar will remain toggleable, however.
  • Internal statistics logging will be revamped.

That outline is very rough. I was vague on most of it because I’m not entirely sure what all it will entail for specific commands other than those listed or otherwise covered by a general change. It is my hope that the refactoring that V18 will bring, will be more than just a readability update and will bring performance-enhancing change to Fishsticks’ daily operations.