Pycraft Progress Report
Tags: programming, python, gamedev, opensource
Published: 2022-05-29 18:33:43

This is transferred roughly weekly from my Twitter profile (here: https://twitter.com/PycraftDev) to here on Dev! This is for the week 18/04/2022 - 24/04/2022.

* You can find the latest release of Pycraft (v0.9.4) here: https://github.com/PycraftDeveloper/Pycraft

* You can find the latest developer preview of Pycraft (v0.9.5-2) here: https://github.com/PycraftDeveloper/Pycraft/tree/Pycraft-v0.9.5-2

* You can also find the latest documentation for Pycraft https://python-Pycraft.readthedocs.io/en/latest/

## April the 18th – 2022
A massive amount of Pycraft progress today, I've done everything now with the exception of two things, full controller support and texturing the ground, but first ill run you through what we did today, starting with adding the footstep sound To all movements in the game like how it was in the old version, and also fixed numerous bugs and made switching between the game engine and rest of the project smoother, I've also added in the final two features for the Devmode captions, a measure of the current In game velocity and position of the camera in game and done more improvements throughout the project, the final two things to work on are the in game texturing of the map, something that will be challenging because it will require me to rewrite the shader we are using And also controller support, this is what I'm currently working on and accessing the inventory and map, as well as jumping has been added, but movement has been so far troublesome but will be finished, panning the camera has yet to be attempted, so fingers crossed there!
## April the 19th - 2022
I've done two things today, it rather I've completed one, rather large Pycraft features, texturing the map we have in game, whilst also having the shadow mapping, which was much more challenging than you think, and also continued to work on Camera movement in game using the controller, using the keyboard and mouse works fine but the controller has been problems from the start, initially I was using the wrong function that was built into ModernGL, instead of "key_input" which I was using to simulate Key presses, to "key_event" that is called in order to make events happen on screen, we use this to control accessing the inventory and map and jumping in game, then after many hours of programming (I switched to the next feature after I was struggling to get that to work) I realised my mistake, and now I've made that correction I can now move backwards and left, but cannot, no matter what I do, go forward or right, it triggers, we can hear the footstep sound playing out and everything else works except moving the camera, panning The camera will be more complex and I don't want to start that if I can't figure out why the simpler feature is working, but additionally today I've also changed the GLSL files we are using to do shadow mapping to support textures, this was a minor change and Makes all the difference!
## April the 20th - 2022
I can say today that Pycraft v0.9.5-2 will not be released this week, unless I can figure out why the controller support isn't working, it's been really frustrating, everything else works, shadow mapping, textures, keyboard and mouse support but not the controller joystick comparability, I've not started work on panning because that's more complex and if I can't get the joystick movement working then I doubt I can work on that. The good news is I've got a long list of possible solutions and if they don't work, I do have a backup plan, it's not great but will work, it's what we used in the old implementation. I'll also be archiving the old branches when I release Pycraft v0.9.5-2, I feel like I'm very close to fixing this feature and will hopefully be bringing Positive news tomorrow!
## April the 21st - 2022
Pycraft progress update time, and it's good news, I've finally fixed the issues with movement in game, I got to the point today where I had a second copy of the program open and was rewriting large sections of the project, the very core of the Project which was impractical and did not go well, so eventually I arrived at the conclusion I'd take inspiration from the old design and used some of that code instead, it's OK enough and I'll likely change this later (but not the moment and not the buttons used) But if I left this now it could be weeks or longer before I get this sorted, and it's no worse than the old design, in fact it employs the same approach. What is different though is camera panning, we now directly link the magnitude of the distance moved by the Controller meaning we can actually control how quickly the camera moves based on how far we move the joystick, this is also tied to the "camera angle speed" so can be adjusted. This is the final feature to add and now it's a matter of cleaning up before the next release! 
## April the 22nd - 2022
Today I've tweaked some features and fixed many bugs, I've also been thinking, I can't release Pycraft this week, it's not possible to test all the features to test and profile and tidy up the code in two days, considering its Friday evening here but maybe early next week we can be looking towards a release of Pycraft. This has been delayed significantly because of the controller implementation, this has been a nightmare to sort out, but it's all working as of writing this, to my knowledge. But the Shadow mapping implementation, which is all this update was meant to be, has been working fine, better than even! Although I needed to redesign a lot of features around this change, I'll share some photos of the changes in the coming days as I tidy up and improve the Project!
## April the 23rd - 2022
Pycraft v0.9.5-2 is really coming together now, the textured terrain is now combined with shadow mapping and with a completely new events system and all the other advantages of ModernGL, like the higher resolution skybox When I initially started with ModernGL I made a quick demonstration of what the project can do now, and now I'm focusing on the game engine I can really begin to stretch and push the limits of ModernGL, I've got big plans for the project And that's what I'm focusing on in this series of updates! I've shown a video earlier today showing the new features and already shared the update plan. I'll be releasing the project very soon, maybe tomorrow depending on how things go Although there is not much to do, I really want to make sure everything is good and proper as best I can. Once this update is released, Pycraft v0.9.4's branches will be archived and no longer publicly available although if anyone wants to request access then I'll oblige! 
## April the 24th – 2022
I have had to make a difficult decision to make today, release Pycraft v0.9.5-2 or delay the release whilst I tweak bugs and improvements that are still evident in Pycraft.
There is still an issue with the home screen that has been there for Several releases now (after I discovered the issue I looked back through older releases) where the bottom of the screen does not refresh, the name and version are out of place and messages display incorrectly, it’s a minor bug, although one that occurs right On the home screen and is fairly easy to reproduce, I’ve not yet had a chance to fix this, but I'll do what I can between now and the release which is likely to be tomorrow (although I've never set a date in case something turns up) but I'll be addressing this issue In a more permanent way in the next developer preview. It's looking like it'll be a complex issue to fix, not in terms of difficulty, but in terms of time and logistics. But today I've made a large change to the project that hopefully will never be seen By anyone, I have improved the reporting of errors, some sections would crash silently without warning, or in the case of the game engine will try to recover over and over again and the error messages were cryptic at best But now there is a much more robust and effective plan in place, if the user is in "developer mode" then the error messages will be more detailed, featuring the full traceback, but the average user will get a helpful message and a location where the Error occurred, useful for contacting us and finding the solution. This was needed as the program increases in complexity and is in addition to the program trying to find a solution where possible, and saving data after a crash, as well as recovering data from a corrupted save file, so enough of my rambling I'll be releasing the update tomorrow, featuring shadow mapping and a completely redesigned game engine and there will be many more improvements to come and more issues are ironed out!

Thanks for reading folks!