Pycraft Progress report #2
Tags: programming, python, gamedev, opensource
Published: 2021-11-29 18:50:39

This content is taken from my Twitter profile @pycraftdev, and details the progress made on Pycraft in the week from the 22nd of November to the 28th of November 2021.

Pycraft v0.9.2.5; the most current version of Pycraft can be found here: https://github.com/PycraftDeveloper/Pycraft/tree/Pycraft-v0.9.2.5

Hello everyone, is it just me or have a lot of apps been updated recently, the "Windows 11 style" really seems to have arrived at a lot of apps, Spotify (on mobile), YouTube and BBC iPlayer to name a few, and they all look really clean, and there are a few small graphical changes coming to Pycraft too, as a part of the new installer, the ability to create shortcuts should be arriving, as well as the option to set the icon for the display to have rounded corners, and a few more GUI changes, although I could really benefit from a clone to help out with the workload here, it will be done, although the game engine will be taking priority for now!

So, three steps forwards one step back, Pycraft has a working skybox, there have been a few optimisations there, but I've changed the structure of the game engine entirely, before we were running the program by repeatedly calling the render subroutine over and over, again, and that's not something I'm too proud of, because it made getting events and leaving the program really difficult, so I've spent a few hours restructuring the program, tidying up a few things (I tend to write lots of code when I'm testing and worry about tidying up the project when it's working!), so everything there is looking a bit cleaner, and hopefully that'll be easier to work on! Also, I've been doing some research on the installer and that's coming along nicely! Next on the adjenda; loading (.obj) files and from there we will arrive at my nemesis, texturing them, (VBOs will be added too!) and km excited because then I'll be close to releasing the new engine! And the step back I mentioned at the start? Well, I have a skybox but I've removed the mouse functionality as I reprogrammed the engine and am working on re-adding that!

There wasn't too much progress today, I am working on getting rotations and mouse movements in from ModernGL, but the documentation for that part isn't finished yet which makes things a tad interesting I'm trialing a lot of code to see if I can figure it out based on the syntax I know and by reverse engineering it from the module (not ideal), but aside from that there has been some better code tidying up and organisation, hopefully I'll be able to finish mouse movements and game rotations soon to get into spicier topics like translations, object loading and textures!

Hey! Everyone, I've fixed mouse movements in Pycraft, I didn't have much time to program today, I could count the seconds I was programming for (536) it was that short! But I managed to fix the mouse movements. I have used another module to get the mouse position, then we can get the direction the mouse is moving in, and from there move the camera accordingly! However, I have finished the private matter that was taking up a lot of my time, and the next few days should see a lot more programming take place, I have been making lots of plans! 

So, I have been working on Pycraft for about 5 hours today, and wow there has been a lot of progress, I've finished the skybox, improved the implementation of the new game engine in Pycraft, fixed many (many many) bugs with the new change, allowed data to be shared between the main body of Pycraft and the new game engine, implemented a basic messages engine into the home screen, so updates, news, help and loading/when the game crashes are displayed, which will be polished much more before its released and have touched slightly on loading 3D scenes in the game, and have a prototype HUD theorised, and am working on loading 3D models and texturing them, but I've only been at that for about an hour, so have only got basic shapes loaded and some strange random rainbow texture (it's a long story, but basically it's some internal issue that I need to fix, but one that isn't either explicitly mentioned in code, so I'm not sure where to start there), in addition to that I have also worked on and have a very basic form of key detection which can be quickly expanded. There are still issues with mouse movements, but they are really minor, I should mention there is some minor issues and bugs still to fix, but actually we are very near to a new release of Pycraft (and a proper one version 0.9.3, although work on the installer will push the date back), and after that update there will be a pause in programming as I need to write documentation for the project! Progress is going really well and I'm sorry about the delays as the last few days!

Hello everyone! Lots and lots of time on Pycraft today, time was spent adding key events for the inventory (the "e" key) and map (the "r" key), which will be revamped soon hopefully, as well as working on object loading in ModernGL. I had an object of my own creation loaded briefly, but I didn't have consistency, it would change location on each rerun, so I've gone back a bit on that design and am looking to try another solution tomorrow, I am also working on adding textures to the object at the same time, and as such will not know if one works without the other. I have also taken some time to plan the documentation for Pycraft (I'm afraid there is going to be a lot) and will start writing that publicly with the release of v0.9.3 where I will take a break from programming to write the start at last to the documentation (this is a one-person operation at the time, if I had a clone, it would be working on the game engine)! Sorry about the short details on progress today, but once I get object loading finished, then the project will be very close to being released! Oh, and for some reason Pygame no longer likes the (.ogg) audio file format, so I've switched to the (.wav) format, meaning file sizes are really big, I'm working to find a solution there too.

Hello everyone, loads more progress to announce today, we now have wavefront file loading enabled, and have also got textures assigned to the object (which was one of the main reason to change engines), and it's really efficient and fast, I'll be running benchmarks between the two engines, but in addition to this we also have translations in game (so we can use WASD keys to move around, with a similar style to before), also I have slightly bad news, the map we have got for Pycraft doesn't work in the current configuration And I spent many hours trying to work out a fix, to no avail, but it's not too bad because the map will be changed anyway once I'm happy with the engine. Keyboard events like jumping and loading the inventory and map (which needs and update, it's planned!) Will take longer to implement, and will be worked on this week as we improve sharing data between the main body of Pycraft and the game engine, and returning that data too, and already a good start has been made on implementing the inventory to the game outside of that there has been a lot of code cleaning up, and there is only one bug that is really worrying me at the moment; returning to the main menu of Pycraft currently takes a long time to load (upwards of 15 seconds), although I'm hoping a routine profile Of the project will shed some light on what is going on there. I have also taken a few photos of the home screen and game engine at present (and I'd like to point out, this is an early snapshot and the bugs and graphical issues you see in the second photo will be hopefully resolved soon, as we are currently loading the objects on the same position as the camera and clipping into it). (Photos attached below). Also, I'll be updating the folks over here: https://dev.to/pycraftdev too with the progress this week. Hopefully tomorrow, as I might take a break from programming to research and work on the new documentation tomorrow!

![Pycraft's Home Screen, a few small tweaks here](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/36uhqbf9r84yv0dmnbds.jpg)
![The game engine for Pycraft at current](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3p7eac0r0tjvvyiqfrsa.jpg)