Lunar was the codename for a mobile game I was building with a friend. The idea absolutely
was to sell this and I cannot answer why we haven't finished it, other than commitments..
The game had animated characters (with sounds), fighting, towers, a story, a few levels to
progress through, map objectives (with difficulty levels), in-game currency (for upgrades),
Augmented Reality (pretty much in week one of it being available), different character
elements (fire, ice, death, life etc).
There's plenty more screenshots I wish I could show here, but they contain Intellectual
Property belonging to my friend and I don't want to give too much away here.
It's a real shame it's just sitting on indefinite hold currently..
GameKit
We started the project without much of a plan - I personally wanted to do a reverse tower
defence game, and began intially using GameKit, but the thought of writing an iOS-only game
seemed a waste. GameKit felt well thought out, but definitely didn't feel like it was written
or designed by expert game programmers (though it did follow the right concepts, such as the
Entity-Component pattern.)
The earliest screenshot. Units of different elements would spawn
from the spheres, and towers would be built on the ledges.
Same, but from the "game camera" (If the building at the back looks at
all familiar, it's inspired by Gygas' lair from Earthbound.)
Unity
It didn't take long to port the (small) progress to Unity. Honestly? Compared to writing
a graphics engine, Unity was a breath of fresh air. It was like using a pre-made map editor
where you could program your own entities. The hardest challenge was balancing detail with
performance (which is a challenge of graphics engines anyway).
Being able to import assets, or buy them from the Unity store was a welcome change to trying
to write libraries to read binary file formats. Progress went extremely well, and Unity
allowed me to focus on the actual game, not the engine.
The map from GameKit, re-built in Unity.
Testing AI pathfinding with a winding path up to the "ice lair".
Defining paths which units would move along, with a few cliche low-poly
scenery models remeniscent of just about any attempt of a mobile 3D game this decade..
Extending the path. The circle before the lair had a boss fight to test
character animation, sounds, health, etc.
Pathfinding worked well so far so went a step further. Success.
The game world so far.
The "boss" area was changed to have actual towers. These were "death"
towers, which caused "zombie" characters to spawn from any unit it killed. Units would
stop to fight them, which would give the towers much more scope to damage them.
Blue was getting irritating on the eyes, so changed the scenery to the
"earth" map. Spent some time on the actual UI, allowing the player to spend in-game
points on upgrades (such as spawn rate, max on field per spawner.)
Adding variety. The player would be able to unlock new paths into the
key areas, in this case from the right.
Improved the UI somewhat. At this point, it started feeling like it was
getting somewhere.
We got an artist involved..
Towers could now be occupied by characters, and destroying one would
capture it as a forward base for your own units.
The artist got REALLY involved. The entire level geometry is now an
imported 3D model. It didn't take much to get the AI pathfinding along the scene.
The UI starts getting an actual theme, and a main menu.
Adding lighting, effects.
More UI implementation. By this time, we would pick up the game and play
it every now and then. It was entertaining, though so far very limited, and very easy.
We had in-game dialog, in this case a tutorial level.
More dialog. Note that the UI was inspired by the iPhone X which had just
come out - "extending" the notch, and trying to use the same border radius as the actual
device. It would of course work on other devices, just, well, that was our inspiration at
the time.
Augmented Reality
This was around the time Apple announced ARKit and showed off a few cool demos. Itches must
be scratched, so I had a go at implementing it into the game.
Honestly there wasn't much to it. ARKit does the heavy lifting, and you just tell it where
you want your scene to render, at what scale, rotation, etc.
Raising the scale really high was a great experience with a large room, as you could then
walk with your characters across the map. They would play exactly the same as they would
without AR, but it was quite something being surrounded by trees, buildings, and hundreds of
characters trying to progress.
Placing the game world on the office floor.
Placing it again, but with controls for rotation and scale. The blue
outline represents where ARKit has detected a surface (on a messy floor in this case).