As promised, I’ve released a demo with seven playable levels. Play it here.
I’ll soon be releasing a demo with playable levels. That demo needs a title screen that introduces the game, so I thought it was a good opportunity to create a logo. It looks like this:
I couldn’t find a font that worked well, but Bungee Hairline came close. I liked it, but felt the weight was too light. The only thicker style, just called Bungee, was much too heavy, so I typed the title out in Hairline and expanded it in GIMP. The corners are more rounded than in Bungee, but I think it works. I considered making a vector or editing the font, but I’m much more familiar with GIMP.
I’ve been making some playable levels so I can publish another demo. All of the levels before now have had programs spawning with only one sector, the head, and only gaining sectors when they move. This has made it easy to add sectors to the back of an array so they can be removed when a program is attacked.
Some of the levels I’m making have programs spawning with many sectors. I initially solved this by adding sectors to my two dimensional level data array, then adding those sectors to each program’s sector array when I iterate through the level data to build the level. This worked, but was flawed. It would usually add sectors in the wrong order, meaning if a program was attacked before it had replaced all its sectors by moving, it could be left with floating sectors not connected to the rest of the program:
The purple sector to the right of the yellow program is part of the purple program on the right. It can be attacked and functions just the same as the other sectors, but isn’t attached to the program. This might create a mess of floating sectors that detracts from the game.
My solution is to use my Dijkstra function to work out how far each sector is from the program’s head, then arrange them so the furthest get removed first. It looks like this (bear in mind the program’s head was in the top-right corner when it spawned):
I added a while loop so that it iterates through turns rather than just having one turn then stopping. It doesn’t detect when either the player or enemy has won, but other than that it mostly works. Video:
After this my plan is to polish a few things, then make and release a few playable levels.
I’ve added a few things to the UI. I made the program list slightly smaller so I can fit in the End turn and Save game buttons. The program title at the top felt redundant when I already have the program title under the action buttons, so I removed it. I used the extra space to add a “Moves left” attribute. I changed “Current size” to just “Size” and put it above “Max size”, so I could shorten the spacing between the colons and numbers, giving enough space for a proportionately sized program icon. The “Range:” written under the program title was redundant without an attack selected, so I changed it to say “Friend” or “Enemy”, which is much more useful information. Picture: