May 2, 2017 - 5 minutes
I have been having a lot of fun with python, it is a really easy language to maneuver around in, and so I have been able to make massive leaps of progress in a pretty short amount of time. The new stack of tools I am using are really useful and help out a lot with productivity and the future of my project is pretty bright. I am approaching feature parity with my old C++ version, I project having such within a month.
HTTP requests with the Minetest Master server
An IRC friend of mine recommended to me a few months ago to use the minetest master server for my game, and since I was messing with Godot I have been trying to make it work. I set up DMUX with the Requests module for HTTP requests and I managed to replicate the POST requests that a minetest server does, and with minimal modifications I got it to work. I am currently investigating a way to use GPG signatures, to verify that the server trying to register itself is indeed a legitimate game server. This saved me about a week of having to write a master server with similar features. So thank you to the minetest team for releasing this master server (even though you did not want me to use it). If you want to learn how to use this master server feel free to hop on #DMUX on IRC and ask me about it, or email me. Here is a screenshot of the web page served by the minetest master server, showing a DMUX server connected to it. However other parts of the game need to also be configured to the master server as well.
Of course the biggest habit of mine is to make the main menu first, which most people hate doing. I suppose that I like doing the main menu because it makes it feel more like a game. Also when you work on games sometimes you do weeks of work but no visual changes surface, but with GUI even though it is not that exciting you get visual responses quickly. LUI is also great at making your menus look great visually. Here is a screenshot of what I have in the garage so far (which is mostly functional, good enough for testing).
It took a while to get the car to behave in a sane fashion. But now I have the car working in a reasonable configuration and the wheel positions are being correctly read. In fact all the stats of the car are being read, and applying scene metadata in Panda3D is very easy, this was a big thing I never got working correctly in my old C++ version. I am really happy with this because I am getting native performance from the physics engine that I did with my C++ version but with the easiness of Python. Godot’s phyiscs engine was terrible and the vehicle did not quite work. Here is a screenshot of the car driving itself off of a box.
- Astron: Originally I was going to use gRPC for networking, but since I have found a networking API called Astron which is specifically for MMO’s like DMUX. It looks like it has a lot of promise and can help me network my game into having feature parity. But I have not implemented anything yet so this is always subject to change.
- RenderPipeline: Made by the same guy that made LUI, it seems like it magically makes your game look fucking awesome. It has a lot of plugins and features, plus the community seems to have a glowing approval of it, and for good reason! The only real downside is that it requires OpenGL 4.1 which Mac OSX does not currently support, so I will have to drop Mac support if I use RenderPipeline. I would also have to port all the art I made to use PBR materials, which can be a pain in the ass. Here is a screenshot of it
- Monero miner: I read once somewhere that a game company embedded a bitcoin miner into their game and had people mine bitcoin for them. I would like to do the same thing but with monero, and probably add an option in the main menu to turn it off, and put in a tool tip saying that all the mined monero goes towards the development of DMUX.
- Libre.FM: I figured that instead of curating a sound track that is free culture/distributable that I could use the web API for Libre.FM to download songs filtered by a genre. With this I can have an in game “radio station” that would be filtered by genre, so someone can listen to any genre of music while playing the game (or none, if they prefer that.). Since the songs on the radio are random people will not get tired of the same 10 songs. I also plan on recording myself and friends pretending to be radio hosts, and it will play our recording while it downloads the music so it will sound kind of like a real radio station. Since the API is the same I can also choose to host my own GNU FM instance and have it tune into custom radio stations if I ever plan to do that. Given the artist name and song will be shown on the in game overlay, it will also gives these artists more exposure, it is really a win win for everyone.
- Grumpy: No changes in plans here, I got hello world in python to be compiled into Go and got it working, but I am learning on the recommended way to get DMUX hooked up into Grumpy so that everything being ran is native.