April 20, 2017 - 4 minutes
Goodbye C++, I will kind of miss you
C++ has a lot of strengths, especially in game development. Sadly, in the free software world there is a shortage of free software libraries for 3d rendering, which really crippled me. GUI also had limited options, most of which were satisfactory at best.
Long live python!
I thought that python did not have the emphasis on performance that was needed for a 3d game, but I was wrong. There are frameworks like Panda3d that combine the performance of C++ with the “batteries included” approach of python. This with it’s bullet physics integration made it very appealing. So far I am planning on going with this stack of frameworks in python, this includes other tools that I have found useful
- panda3d: 3d rendering, I will also be using it’s bullet integrations as well as it’s assimp integration, in this way I can use my good old physics engine and the COLLADA file format, like I have always wanted to.
- gRPC: A Google project for networking, it utilizes protobuf which is their advanced cross platform serialization library. It supports many different programming languages, in the case that I feel like writing something that is not python. It is also very high performance and has a lot of corporate/community backing. It is decentralized which I think will help in the creation of DMUX universe.
- LUI: A badass GUI library for panda3d, it looks truly professional and polished and was a huge selling point for me to use this new stack of frameworks.
- SleekXMPP: Permissively licensed XMPP library for Python. I will use this library for all inter player communications such as voice and chat. It will also be helpful in implementing the lobby.
- BlenderPanda: A really advanced blender plugin that uses Blender to act as a scene editor, I can preview my panda scenes in blender and does auto exporting of assets. I can even run my game from Blender!
- Grumpy: Code transpiler for Go, it will convert the python code I have written into Go, which I will then compile into a native binary. In this way I lose no performance from using Python. My game will run at completely native speeds.
All of these libraries are either backed by some corporation or have active community development (or both). So I do not have to worry about falling into the Irrlicht trap again of using a dead library. This is a nice feeling to have, I am excited by these libraries because I know that they use modern practices and are really powerful.
- 3D audio and integration with the camera out of the box
- Simple bullet physics integration
These along with the extra functionality of the other frameworks lowers the amount of dependencies I have by a lot. This will make porting to windows much easier.
Better than Godot!
To me since Panda3d did not reinvent To me since Panda3d did not reinvent the wheel, it is an even better option that Godot because Panda did not shoot itself in the foot by reinventing a scene editor (The Godot scene editor will always be inferior to the Blender one). Having only 1 scene editor instead of two shortens the pipeline between my blender projects and the final game, as such I can import more of the 3d models I have made in a much easier fashion. This is a huge advantage, maybe I will finally be able to drive my car around my Soviet city. Panda3d did not reinvent it’s own physics (Bullet physics is a really good physics engine), this is another issue of Godot. This lets them focus on making Panda awesome; and not focus on solving problems that have already been solved. I have embraced this philosophy for a long time.
I know I have changed things a billion times. But this pile of frameworks is here to stay, I am really excited that I will be getting to work with all these modern tools, at the same time they are all libre, respecting user freedom. c:
As of the time of this writing I am still in the process of learning all these frameworks and setting it up, but my experience so far has been very positive. I will be making another update shortly once I get more progress forward.