top of page

Booze & Brains

 

About

Booze & Brains is a top-down vehicle game where the player must run over objects, zombies, and other obstacles to score points and complete the game. Developed in just four days during a game jam, this project was built by a team of four, with me handling the game programming.

Car Mechanics

For the car controls, I focused on creating a responsive and satisfying driving experience. The movement system involved:

  • Rigidbody-based physics to simulate realistic acceleration and turning.

  • Torque application for smooth and dynamic movement.

  • Friction adjustments to balance drifting and handling.

Tuning the car's handling was a key challenge, as I had to find the right balance between arcade-style fun and a sense of weight.

Object Destruction

To enhance the chaos and excitement, I implemented a destruction system for objects and enemies:

  • Zombies & Breakable Objects → Used colliders and health components, where objects would break upon impact based on velocity and mass.

  • Particle Effects & Sound Design → Added explosions, debris, and impact sounds to make destruction more satisfying.

  • Score System → Players were rewarded with points based on what they destroyed, encouraging more aggressive driving.

​

​

Car Movement Mechanics in Booze & Brains

 For car movement, I designed a script that controlled the vehicle's acceleration, steering, and drifting. The key variables included:

  • Acceleration Factor – Determines how fast the car gains speed.

  • Turn Factor – Controls the sharpness of turns.

  • Acceleration Input – Captures player input for movement.

  • Rotation Angle – Keeps track of the car’s current rotation.

Car Engine Function

 To create a realistic engine system, I implemented a function called CarEngine(). Inside this function, I introduced a local variable:

  Vector2 engineForceVector = transform.up * accelerationInput * accelerationFactor; rb2d.AddForce(engineForceVector);

  This applied force in the upward direction of the car, ensuring smooth acceleration.

​

Steering Function

 For steering, I created another function where:

 rotationAngle -= steeringInput * turnFactor; rb2d.MoveRotation(rotationAngle);

 This allowed the car to turn dynamically based on player input.

Drifting Mechanics

 To introduce realistic drifting and skidding, I added a drift factor variable and a function to modify velocity. Inside this function, I used:

 Vector2 forwardVelocity = transform.up * Vector2.Dot(rb2d.velocity, transform.up); Vector2 rightVelocity = transform.right * Vector2.Dot(rb2d.velocity, transform.right);   rb2d.velocity = forwardVelocity + rightVelocity * driftFactor;

  • A higher drift factor increased skidding.

  • The right velocity was reduced, making turns feel more fluid.

 To visualize skid marks, I added a Trail Renderer on the car’s wheels, enhancing the feedback when drifting.

  • For object destruction, I implemented a system where:

  • Objects had different point values – Some were worth more than others.

  • Certain objects required a minimum speed to break – This added a challenge to the destruction mechanics.

  • Speed-Based Destruction Mechanic

  • If the player’s car reached a specific speed, it would:

  • Change color to cyan and glow, visually indicating that the car was powerful enough to destroy high-resistance objects.

  • Gain the ability to break certain objects on impact.

  • Implementation Steps

  • Checking Speed on Collision

  • On OnTriggerEnter2D, the object would access the car’s controller script to check the current speed.

  • Visual Feedback for Speed Threshold

  • When the car reached the required speed, I modified its sprite color and added a glow effect.

  • Scoring System

  • Points were awarded based on the object’s value.

  • Score Manager handled adding and displaying the points.

Vertical Black Box.png
Vertical Black Box.png
Vertical Black Box.png

This game was a great learning experience in physics-based mechanics, destruction systems, and arcade-style vehicle handling. Looking back, I see areas where I could refine the mechanics, but it remains a fun and chaotic game jam project that I'm proud of.



Gameplay:

Vertical Black Box.png
bottom of page