Astro Ambush

Astro Ambush is a top down 3D game made in Unity. Gameplay involves flying a space ship around with your mouse or movement keys while randomly spawning alien ships attempt to shoot you. You get points for the amount of time that you stay alive, as well as for shooting and destroying alien ships.

My favorite part of the game

I am very proud of my diegetic settings menu. Whenever you pause or go to the settings menu, the camera will zoom in on the ship and several options will pop up around the ship. If you adjust your display name (which is used for the leaderboard) the name will be updated and displayed on your ship. My favorite part is the volume menu. Once in the volume menu, you can adjust the sliders and the thrusters from the ship will coincide with your volume level.

What would I change about the game

I would want to create more varied gameplay. Right now it is fairly easy to outsmart the ship AI and just fly straight up shooting every few seconds to avoid ever getting hit or even seeing an alien. I would want to fix that and also add some other obstacles such as asteroids that would provide a little more challenge.

How can you play the game

Right now it is playable on my itch.io page. It is built with WebGL and fully playable in the browser. The source code is also available here.

Any interesting bugs or troubles in development?

Nothing too crazy, my biggest struggles came down to my lack of skill in 3D modeling and art. But I did have a few bugs with the menu system. The system was particularly hard because I needed it to work well in both the menu and the pause screen, and I had used coroutines to move the camera from one position to another on the ship when jumping between menus. Originally I was having a few issues where you could press a button or interrupt the coroutine and the game would start again with the camera zoomed in on the ship. The fix just involved me turning off input before the coroutine. There also were a few issues that resulted from me messing with the perspective in a way that I shouldn’t have. Normally 2D games are made along the X and Y axis, and since my game is 3D, but top down it acts more like a 2D game, and because it was top down, I thought it would be a good idea to make the game with the camera pointing straight down making the game effectively only use the X and Z axis. This was only an issue because I would often forget and do vector math as if I was just using Vector2s and get unexpected results.