Setting up the coding project and tools

Coding mostly consists of editing text files. OK - knowing the magic words to put in those text files is ‘writing code’, but essentially it’s editing a lot of text files. Developers use tools called IDEs [1] to manage that editing and associated tasks like running tests and compiling the text into a runnable program.

I’m using a free IDE called Netbeans (version 12). As seems so typical with these techi things, upgrading from an earlier Netbeans 8 installation seemed to force and upgrade to my operating system to Linux Mint 20.1. Aside from the IDE we want somewhere to store all our code and for that there are ‘repositories’. It’s not a necessity, but it provides an off-site copy and a way of tracking changes and updates. I’m using a tool called git and a (free!) supplier called Atlassian bitbucket. You can see all the source code and download your own copy via that repository [2]. Of course you’ll need to be comfortable with git cloning…

open in new window 
the Netbeans IDE

The third tool (and one I’d not got too much experience with todate) is Maven, configured through a ‘POM’ file. No software really exists on it’s own. It will make use of readily available libraries of code and managing those libraries is the job of Maven. Maven also defines exactly how the software is to be built and with what tools. In theory with the POM and the source code anyone should be able to exactly reproduce the software as built on my machine.

It’s no small faff to get all this setup and working smoothly, but once done it’s done and takes care of a lot of the ‘housekeeping’ type tasks for developers. And all free, I do love free and open source software!!

Since the intended game will be doing graphics, 3D objects and multitasking we will be making use of a framework that does much of the boilerplate legwork involved in such complexities. I’ve looked at a few of these game/graphics/world building tools such as Ogre and LWJGL before, but they seem complex with steep learning curves. I want something I can use reasonably quickly without having to commit significant time - some of the major frameworks like Unity have entire University courses on them!

So I’ve settled with JMonkeyEngine, which seems to provide enough framework but isn’t too prescriptive. The other new technology is using an entity-component-system architecture specifically Zay-ES. Once of the common problems in coding games is that you end up with a lot of ‘things’ interacting with a lot of other ‘things’ in arbitrary ways. Managing those interconnections without an unholy mess of code is hard, and the hope is using an ECS will provide a simple scaffolding to do that.

So with tools setup we can start coding? Not quite, because we need to think ahead and consider testing.

[1] Integrated development environment.

[2] Or will once I set a license on the code….