It’s been awhile since I’ve done any blogging, mostly because I’ve been doing lots of work with Unity, Blender, Photoshop, and, er, Mount & Blade. This time around, I decided to revisit one of my earlier projects, the game Thrust Lifter, but make some decisive changes. First, I wanted the levels to be procedurally generated, with random terrain. Second, I wanted to use Unity physics to implement the thrust component of the Thrust game–picking up and depositing crates in loading zones. On a more basic level, I wanted to explore Unity’s 2D engine and increase my knowledge of Blender and Photoshop for making models and graphics.
On a positive note, I’ve certainly learned a lot about all these. It’s amazing to me what you can pick up if you focus on specific ideas–such as making cool sci-metal panels with Photoshop. As I did these and other tutorials, I picked up all kinds of side knowledge that I’ve applied to many other things. Before I did this project, I had no clue what bump maps or normal maps were, nor did I really get why layers are such a big deal in Photoshop. Instead of trying to learn all these things from books, I’d recommend working through YouTube tutorials instead.
On the negative side, I’ve not pleased with Unity 2D. Basically, they’ve grafted on a separate 2D engine which doesn’t play very nicely with the 3D components. I went in with the assumption that 2D and 3D would work seamlessly together, so if, for instance, you wanted a 2D ship carrying a 3D crate, it’d be no biggie. Unfortunately, none of the 2D physics or colliders work with the 3D ones. There are cumbersome workarounds (parenting things to empty game objects), I’ve lost countless hours just to hit dead-ends where these issues are concerned. What I’ve learned (and noticed several others saying on Unity forums) is that you’re better off just sticking with all 3D components for 2D games. You can always limit z-movement and camera angles, so unless you’re really interested in working with sprites and sprite animation I think it’s more trouble than its worth. Beyond that, the lion’s share of the assets you can download from the Unity store assume 3D, so you might as well just go with the flow.
I feel like I’m about 60% done with the game at this point. I have the procedural terrain working, automated turrets of various types (including flame throwers and missile launchers), a creepy spider that drops down from the ceiling, the crate and chain mechanics, and graphics that I daresay don’t look too bad.
What I’m thinking for gameplay is that you’ll start at the bottom of a series of rooms connected vertically by narrow shafts. You’ll need to get all the crates (and perhaps some trapped miners, too) into a hovering mothership. Then the tunnel will open and you’ll be able to fly into the next room, which, of course, will be tougher than the one you left. Once you clear the whole dungeon, you’ll visit a shop, where you can upgrade your ship with better weapons, thrusters, shields, etc., before visiting the next dungeon.
The main thing left to do beyond interface stuff is path-finding enemies. I want little bug-like ships that try to maintain a certain distance from you and attempt to dodge your bullets. Unfortunately, here’s where I’ve run into another 2D/3D problem. All of the path finding solutions I’ve looked into so far assume 3D, and I haven’t been able to get any of them working for me. I still have a promising one left to try. I could fudge this pretty easily–I could have the alien ships just ignore the terrain, for instance, but I think it’d be much cooler if they were more realistic. I think it’d be fun to try to get them to crash into the walls, for instance.
I’ll hopefully get enough done on it in the next few weeks to put up a playable demo or beta version.