Week 135: Blast FlockS (Patreon)
Content
This week I started working full time on Multiplayer Blast Flock for Castle!
As I wrote last time, I'm taking my old Blast Flock game and making it multiplayer (online). I'm doing this for a platform named Castle, which is a software that lets you load and play games directly on it. It also wants itself to be a friendly hub of creations and creators in the future, but right now the platform is still in a very early state.
So this week and the one before I took Blast Flock's code and started looking very hard at it and figuring out the logic of the essential stuff. Then I started cleaning up the code a little, removing fossilized commented code and replacing dusty 1-space indentation with fresh 2-space indentations. (I'm that much less of a madman than I used to be) I figured out the few things that the new version of Love2D didn't like and I fixed them. I unlocked the game's FPS, because yes it was bound to 30 fps. Then finally I made sure it was all working in Castle, and I finally got the Castle version of the original Blast Flock!
And then I started looking at Castle's user-friendly network library. To find out that it is very much Object-Oriented, unlike Blast Flock's code. (or at least not in the same ways) Still I tried to wrap my mind around it and figure out how best to use the library. But then, after talking with Nikhilesh Sigatapu, the dev who made the library, he comes up with a new one that is barely Object-Oriented at all! And so I figure out how to do things with that library and I start implementing my schemes and it works!
With the old network library, you had to register an instance of a metatable (the Lua object/class equivalent) and the network library would update that instance automatically and create new entities if they're needed, handy stuff like that. Neat but completely reliant on metatables which I consider to be the less accessible part of Lua, and that I personally don't understand all that much since I've never really had to use them myself, ever.
The new library presents you with shared databases. On the client side you have the client database and the server database. On the server side, you have the server database and all the clients' databases.
Each client can write on their database and only read from the server database. In turn, the server can only read from clients' databases and write on the server database. And that's how they exchange data! And it's super straightforward to use!
Nikhilesh and I did a lot of back and forth over the week and so the library is incomplete but working and can be used!
In the end, after integrating the new networking library, I only got time to sync up the player's cursors and planes before the week was over. Still it feels like good progress and I definitely prepared the terrain to be able to go faster for the rest of the features.
Those features are what I intend to work on this new week! First off, we need effective shooting, that can destroy and neutralize the other players' planes. Then the player should be able to retrieve the neutralized planes, just like in the original game. After that, I want to unlock the camera and create a minimap to keep track of the other players' positions. I'm also going to change the palette of colors used for the game, so that there's a bigger selection of colors for the different players, and also to give the project the fresh feeling of a new coat of paint!
I'm still full time on this project for three more weeks, so you can expect to read more about all this in the coming weeks!
Meanwhile, I've used some of my spare time to cook up this new alternative graphics mode for my Tiny Tetris Classic!
Sadly that's all I was able to do this week, but on the bright side, it does look pretty good!
I still want to finish a standalone version of this quite quickly but time hasn't really been on my side this week. We'll see how it goes with the new week! Worst case scenario: I'll be releasing one more project in December. (along with Multiplayer Blast Flock and another secret project)
Nevertheless, let me thank all my Patreon supporters for their continued support! While I'm slow delivering content do you kind people, please do feel free to ask me questions or ask for help with whatever, I'll be glad to answer! Here are the names of all the 3$+ supporters:
☆Joseph White, ☆Spaceling, ☆Ryan Malm, rotatetranslate, Anne Le Clech, Wojciech Rak, HJS, slono, Austin East, Zachary Cook, Jefff, Meru, Bitzawolf, Paul Nguyen, Dan Lewis, Christian Östman, Dan Rees-Jones, Reza Esmaili, Andreas Bretteville, Joel Jorgensen, Marty Kovach, Giles Graham, Flo Devaux, Cole Smith, Thomas Wright, HERVAN, berkfrei, Tim and Alexandra Swast, Jearl, Chris McCluskey, Sam Loeschen, Pat LaBine, Collin Caldwell, Andrew Reitano, Qristy Overton, Finn Ellis, Giovan, amy, Jakub Wasilewski, Brent Werness, yunowadidis-musik, Max Cahill, hushcoil, Jacel the Thing, Gruber, Pierre B., Sean S. LeBlanc, Andrew Reist, vaporstack
This new week I'm still working on Blast Flock, and there's a lot to be done! I'm also hoping to get some important progress done on the Tetris!
Have a nice week!
Take care!
TRASEVOL_DOG