So, for four months, I have been creating my first person puzzle game in Dark Basic Pro, most of that time spent on art, but some on coding, and I had around 4,000 lines of game code along with about 500 lines of copy and pasted code for each level. The game ran quite slowly, and only on Windows computers. Each level had to be lightmapped and the lightmaps took up 20-60Mb per level. Thats way over a gigabyte for the whole game. Sure, it can be compressed (a lot), but it’s still an inconvenience for game loading. Oh, and not to mention the player jumping problems I was having. Although the core jumping and gravity mechanics were implemented, they were still very buggy. By pressing space three times whilst facing a wall and pressing W got me through it, and I couldn’t find a solution to this without disabling jumping whn next to a wall. Which limits mechanics possible in the levels. There were loads more bugs, so I thought, why not give Unity a try? It’s free and solves all my problems.

At this time I knew hardly any javascript or C# other than the very basics.

I tried the online tutorials, these must be very helpful to beginners of programming, but I do know what a variable is and what a loop does. I just need to know how to do it. So instead, I just tried typing what I thought would work and I googled it if it returned a compiler error. I learnt a lot quicker than I would have with the tutorials.

The migration to Unity took 2 weeks. This will probably save over a month of time designing levels, and I have the possiblility to release on Android, Linux and Mac as well as Windows, and I feel that this is a better option. For small, part time puzzle platformers, mobile is ususally better.

The great thing is that I could import all of my GUI graphics and textures and use the Unity editor to create my levels. They only consist of cuboids and cubes anyway. If I want to create another block in the level, I can just copy and paste a floor block where I want it and add 1 to the y value on the right, then rename it and drag and drop the required texture on to it. A lot easier than what I used to do, opening the game, finding the coordinate I wanted it to be at by walking there and pressing the key I set up to load the coordinate. I then had to write it down or memorise it, the game crashed if I did Alt-tab, and then enter it into the game by copy and pasting a huge chunk of code. Uhhh.

Oh, the graphics are slightly better now as well. Unity supports far better anti-aliasing and the framerates are 10x faster.

I’m not saying that Unity is for everyone, but it suited me.

Other engines are available. Unreal is also great for this type of game but it costs some money, Unity is free if you earn less than $50000 per year from the game.