2.5 KiB
Zeus Invaders
We'll give some general pointers on how to make this Space Invaders based game.
Game description
The player controls a ship which can shoot bullets at a group of aliens. The aliens move to one side (right or left) of the screen, and move one space down when reaching the edge. The ships then speed up once they've moved down.
Game structure
The general game structure we used is pretty simple, comprising of a player-controlled ship, a group of enemies, a node which randomly spawns a UFO which grants extra points, a GUI and a camera node to have some easier control over what the player sees.
We advise the reader to implement the nodes in the order presented in this README.
1. Ship
The ship should contain code which responds to the player pressing the arrow keys or the spacebar.
TASK: Implement player movement in the script of the ship. Make use of the delta
parameter available in the _process
function to vary the position.x
of the ship node. Add a Sprite node with an image (placeholder will suffice for now).
2. Bullet
Common for both the enemies and the ship is the fact they can shoot bullets.
TASK: Create a Bullet scene containing a sprite and a Collision box. Collision can be obtained by adding an Area2D node and adding a CollisionShape2D node as its child. Have the Bullet scene move upwards continuously and let it despawn using queue_free()
when it reaches the edge of the screen.
TASK: Check for collision with player or enemies. Quick tip: make use of groups
TASK: Add code to the ship which spawns this bullet scene at the current global_position
of the ship. Make use of preload()
to load the scene into memory.
3. Enemy
TASK: Create an Enemy scene which can be almost completely analogous to the ship. It contains a Sprite and a way to detect collisions.
4. Enemies
The enemy spaceships can be combined with one general "enemies" node. This controls the movement of the group of enemies, moving a discrete amount of time to one side, moving down when reaching the end of the screen.
TASK: Create a node "Enemies". Populate with a couple of individual Enemy scenes (can right now just contain a single sprite). Create a Timer node and connect its timeout signal to the script of the group of enemies. This should then trigger a single movement of the group. Also add a Bullet spawner which randomly spawn downward facing bullets.