Car(D) Crash is a fast-paced, deck building, strategy game where you need to compete against opponents in high-speed races through either building up enough speed or rendering them unable to race. Set in a cyberpunk world, you'll race through multiple events, boosting your street cred until you either rise to fame or fall behind your rivals.
Car(D) Crash uses a unique system where your deck is your car, meaning you can only swap components if you want to change the cards you have available. Once on the streets, you have to make strategic choices and plan ahead as you try to outmaneuver your opponent.
Each turn you draw 7 cards and play them across 3 separate phases. Every phase playing 1-3 cards at a time, with more cards played meaning a higher initiative value. Once locked in, you and your opponent compare initiatives and whoever has the lower value goes first. From there, you hope your opponent is where you'd anticipated and play your cards in order before continuing to the next phase. With the cards from the previous phase now gone from your hand, you have to make do with what you have left for the remaining phases until you draw a new hand of cards at the start of the next turn.
After you reduce your opponent to 0 health, or maintain 20 nitro at both the start and end of a turn you win, gaining money and street cred as you make a name for yourself in the street racing scene.
Car(D) Crash was a project started from a team of fellow Abertay graduates with a desire to create and develop something together as part of a team. Going from conceptualization to releasing a demo within the span of about a year and was an incredible experience that provided me with a fantastic opportunity to work with some amazingly talented people on an awesome project we were all incredibly passionate about.
As well as being a part of the teams initial concept and game design a lot of my work focused on the grid system that allows the player and AI cars to move across the screen, attack and avoid obstacles.
To achieve this I made use of hash maps to hold both the current position within the grid and any game objects in that location. We would create the grid by scaling and clamping a set of screen space coordinates to create the bounds of the grid and translate between grid positions and screen space. We would then initialize both the player and opponent cars along one of a set of random locations
Using this system we could then control the movement of the cars from grid space by translating the movement between two grid spaces in screen space and then moving the car object and then checking for any overlapping between car objects which would allow us to create shunt and push mechanics between the cars.
This simple implementation would allow movement within the grid, effects, attacks and targeting across specific grid squares and would stand as the backbone for the tactical combat system.