DEV Community

Play Button Pause Button
Tom Jebbo
Tom Jebbo

Posted on


Pycraft Progress Report!

Hello there everyone, its time for our weekly progress summary, and apologies this is a touch later than usual but this is for the week beginning the 19th of December!

As you can see, we have been busy. This was the final week before we released Pycraft v9.5.5, and for those unfamiliar, we have made the decision to delay the release of this to allow for a larger amount of space between the publication of the last long form article for Pycraft, where we looked more closely at why Pycraft v9.5.5 was so different to every other version of Pycraft and the reasoning why we needed to completely change our plans for that update and make some major changes.

Because of this, and because we managed to massively improve our workflow towards the end of work on this update, we managed to finish Pycraft v9.5.5 much, much earlier than expected – we had originally aimed to be finishing Pycraft v9.5.5 in early January, then that was adjusted to bring the deadline to the 23rd of December. However, when with the deadline moved forward we still had finished work on Pycraft v9.5.5 weeks previously and had already started work on the next version of Pycraft, v9.5.6.

Because of this, even though Pycraft v9.5.5 wasn’t technically released yet, we began work on the next version of Pycraft and things quickly got confusing between which version of Pycraft we were working on. This timeline of development we had hoped to avoid and will be avoiding in future, where we had two versions of Pycraft in development at the same time. So, because of this, all of the progress in this article is for Pycraft v9.5.6, except for the documentation which we were still working on for Pycraft v9.5.5.

So, given that the release of Pycraft v9.5.5 was imminent, we decided to start work in earnest on Pycraft v9.5.6, and immediately started work on the new saves feature coming to this update. This means that there is going to be a change to how you load up the game engine, in Pycraft v9.5.5 and later you would simply hit “play”, however now in versions of Pycraft from v9.5.6 and onwards, when you hit play, a new menu appears where you can now choose with game you want to play, and which save from that game you want to load. This sounds confusing so allow us to introduce you to two new terms in relation to Pycraft:

  • In Pycraft you can now have up to two “games”, and you can consider each “game” as a collection of “saves”. These “games” can be configured only when they are created and currently the only thing you can configure is if you want that “game” to be in normal or hard mode, where hard mode adjusts some game mechanics and behaviours to add additional difficulty to the “game”. This difficulty cannot be changed after the game is first loaded. “Games” can also be renamed to whatever you like, although games created in hard mode will automatically change their default name, and have a red font to make it clear the difficulty of the “game” as this is the only place where the difficulty of a game can be identified. “Games” can also be exported and loaded onto another system, although how we will deal with the ability to only have 2 “games” at a time is unclear.
  • Each game consists of “saves”, these cannot be renamed, and exported individually, and they inherit the difficulty of the game. Saves cannot be moved between games through Pycraft, although you can do this by modifying their location in a file explorer. In a normal game you can have 3 saves and 3 autosaves, and in hard mode you can have 2 saves and 2 autosaves. Now, through this week we have been adding in some of these mechanics, although some of these will be added later in the course of Pycraft v9.5.6’s development. This week we have added in the new mechanic for creating a blurred background in Pycraft, and have used this to simplify both the Inventory and new saves menu – and this will also be coming in a later feature in Pycraft v9.5.7 but spoilers!

With that out the way we started by adding in the concept of games, and animating onscreen elements, currently we have the ability to read games from file and format them properly, with the ability to rename them, however the ability to create new games has not yet been added, and therefore the ability to choose hard mode hasn’t either (every game will default to normal mode). The same principles apply to saves, although currently we are focusing on the front end and the ability to actually make and load saves hasn’t been added, currently we are using placeholders to make sure that everything is behaving as expected. Please also note that there is no ability to create saves, saves are created automatically (or overwritten) when you hit the “save” button that we have finally added to the “options” menu in the Inventory.

Now usually here we would share some highlights from this week in development, however I believe that on this occasion that is at the top! Thanks for reading everyone!

Top comments (1)

paper010 profile image

Looks promising. Good Job!

An Animated Guide to Node.js Event Loop

Node.js doesn’t stop from running other operations because of Libuv, a C++ library responsible for the event loop and asynchronously handling tasks such as network requests, DNS resolution, file system operations, data encryption, etc.

What happens under the hood when Node.js works on tasks such as database queries? We will explore it by following this piece of code step by step.