Blog Tutorial

Part 11 — Add polish and export the game

In this final part, we will tighten the feel of the game and export a native build.

The game is already playable. Polish should make the loop easier to read, not distract from the ball, paddle, and bricks.

Tune the Ball Trail

Select the Ball GameObject and add or tune its TrailRenderer.

Start with:

  • emitting: enabled
  • time: short enough that the trail fades quickly
  • min vertex distance: low enough to sample smooth movement
  • width: slightly wider than the ball edge
  • color: bright with a fading alpha

The trail should follow the moving ball and fade behind it. If the trail looks like disconnected wedges, lower the minimum vertex distance and shorten the trail time.

Improve the Hit Feel

Good Breakout feedback points are:

  • paddle hit
  • wall hit
  • brick hit
  • lose life
  • win
  • game over

You can add audio later under Assets/Audio. Even simple sounds help the player understand what just happened.

Use the Pixel Font Consistently

Assign PressStart2P-Regular.ttf to:

  • score
  • lives
  • pause title
  • menu button text
  • game-over title
  • win title

Consistent typography makes the UI feel intentional instead of assembled from defaults.

Add Small UI Motion

If you want score changes to feel less abrupt, tween the displayed score toward the new value instead of replacing it instantly.

A simple approach is:

  • keep the real score as an integer
  • tween a displayed score value
  • update the text from the displayed value while the tween runs

Do the same for menu fades or button scale, but keep it subtle. The ball and paddle should remain the focus.

Final Hierarchy Check

By the end of the series, your scene should look roughly like this:

Level1
  Main Camera
  Level Manager
  Boundaries
    North Wall
    West Wall
    East Wall
    Floor
  Ball
  Paddle
  Bricks
    Row 1
    Row 2
    Row 3
    Row 4
  HUD
  Pause Menu
  Game Over Menu
  Win Menu

This hierarchy is a check, not a starting point. You built it gradually so each object had a reason to exist before it appeared in the scene.

Check Project Settings

Open project settings and confirm:

  • project name: Block Out
  • entry scene: Level1
  • window title: Block Out
  • icon path: Assets/Branding/app-icon.ico
  • output path: a build folder such as build/dist
  • target: Native

Export the Game

Export the native build from the editor:

  1. Open the export window.
  2. Choose the native target.
  3. Pick the output folder.
  4. Click export.
  5. Run the exported game from the output folder.

Check:

  • the app icon appears correctly
  • score and lives render with the expected font
  • pause, restart, quit, win, and game over all work

Final Checkpoint

You now have a complete Block Out project with:

  • physics-driven ball movement
  • wall bounces
  • kinematic paddle movement
  • signal-based ball launch
  • floor-trigger out-of-bounds detection
  • lives and score tracking
  • 32 authored bricks
  • row-based scoring
  • pause, win, and game-over UI
  • trail polish
  • native export settings

That is the core loop. From here, good next experiments are extra levels, brick durability, particles, audio, power-ups, or a title screen with difficulty selection.