Galactic Soccer Complete (No UI)
How to Play
Galactic Soccer is played with 2 Xbox controllers (Microsoft, 2005) by plugging them into the USB ports of your computer. One controller will be used by each player, each with matching controls for their corresponding starship.
Controls:
Right Trigger: Accelerate forwards in the direction the starship is facing.
Left Trigger: Brake rapidly towards stopping, no matter what the direction of motion is.
Left analog stick (horizontal): Turns the starship in the corresponding direction (yaw).
Left analog stick (vertical): Tilts the starship in the inverse direction (pitch).
Right analog stick (horizontal): Rolls the starship in the associated direction.
Back button (by both players at once): Resets the game.
Goal:
Galactic soccer is a game to be played alongside a friend. The goal is to obtain a higher score than your opponent before time is up. Points are scored by pushing the planet towards the black hole which your opponent will be defending, while keeping the planet away from your own black hole.
As the planet approaches the black hole, creatures will start to be sucked off the planet and absorbed into the black hole. Each creature absorbed in this way will award 1 point to the attacking player. The creatures can be stopped if the defending ship hits them with their own ship, or if the planet is to hit them again.
If the planet comes into contact with the black hole, it will award the attacker 20 points and reset the ball to the centre of the field with a velocity in a direction which gives neither player an advantage.
Post Mortem
This game is not yet finished due to the UI not yet being implemented. This was according to plan, and this is only a temporary post mortem, reflecting on what I have already completed. I will update this post mortem on the final completion of Galactic Soccer.
Galactic Soccer is not yet complete, however even at this stage, it looks and feels like the best game I have made yet. The controls are nice, responsive, and simple. I have seen classmates pick up a controller and figure out the controls for themselves, flying their ships around without any trouble or instruction. Perhaps since it is a familiar control scheme for many players of video games. I consider this to be an achievement. I aim to make all my controls easy to figure out in any future games I make and I look forward to seeing how Galactic Soccer will turn out when it is fully completed.
I completed all of the tasks which I planned to do and met many of the desirables as well. On top of that, I included some extra things that were suggested to me which I hadn’t even considered doing. This includes the particle effects around the camera to convey motion, and putting a bit of a delay on the camera so the ship will turn a bit before the camera does, making it more dynamic and making the camera’s motion a lot smoother. I am perfectly content with how much I have completed so far.
I learned a lot of useful things about Unity and C# while creating Galactic Soccer. One of the most practical things which I learned was how to use Events. An event in game programming is when something happens, and it tells everything else that needs to know what happened that it happened. Sometimes it will pass some additional information on as well. The purpose of this is so that upon calling the event, many things can respond to it, in their own distinct ways from their own scripts, meaning that the rest of the script that triggered the event would not be cluttered with excess code. This also means that if anything that responds to the event is removed, the game will not break because the object won’t actually be looking for something to tell to do anything. An event is something that everything else in the game listens for and responds to. It is important when removing something subscribed to an event from the game, during the game to unsubscribe it from the event, so that the game knows that it won’t listen anymore (because it won’t exist).
Another very important thing which I learned was how to separate the game-critical parts of an object from the visual aspect. The purpose of this is so that the game will essentially play the same no matter how the things within it look. It allows for things such as models to be rotated and scaled to match the aspects important to the game, instead of doing it the other way around and messing things up. For example, the ships in my game were moved and scaled to fit inside an area that they could take up. Although it looks like a ship, the game treats it as though it is a scaled cube. The collision is simplified. This is the same with the creatures, because they are seen as cylinders by the game, although to players they look like creatures. It is important to separate everything because otherwise the visual aspect risks affecting how the game plays.
I learned many useful things during the creation of this project, and I look forward to completing it, learning more, and completing future projects. Overall, I am very happy with how everything turned out so far.
Bibliography
Ahmad. (2014). Using tikzpicture or pgfplots to draw a uniform grid [Image]. Retrieved from http://tex.stackexchange.com/questions/183629/using-tikzpicture-or-pgfplots-to-draw-a-uniform-grid
Art Force (Art Force). (2015). Low Poly Starship SS01 (Version 1.0) [Unity 4.6.1 or higher]. Available from https://www.assetstore.unity3d.com/en/#!/content/29459
Game Sound Solutions (Game Sound Solutions). (2014). 8 Bits Elements (Version 1.3.1) [Unity 4.5.2 or higher]. Available from https://www.assetstore.unity3d.com/en/#!/content/16848
Hedgehog Team (Hedgehog Team). (2012). Skybox Volume 2 (Nebula) (Version 1.0) [Unity 3.5.2 or higher]. Available from https://www.assetstore.unity3d.com/en/#!/content/3392
Mikelarg (Mikelarg). (2013). Cracked stone filled with lava (Version 1.2) [Unity 4.1.2 or higher]. Available from https://www.assetstore.unity3d.com/en/#!/content/8294
Sergi Nicolás (Sergi Nicolás). (2014). Feline Gargoyle (Version 1.0c) [Unity 5.3.1 or higher]. Available from https://www.assetstore.unity3d.com/en/#!/content/27106