Foundational concepts for greyboxing a prototype in Unity

Greyboxing refers to very early game design and implementation, where often there is very little finished visual effects for a game prototype.

Since game engines usually will create new primitive objects, such as cubes or capsules, in a grey color, well, you can see where the name comes from!

Before we get started on the actual greyboxing prototype, let’s cover some concepts so it’s clear what we are doing.


“In Unity, you use materials and shaders together to define the appearance of your scene.

Since we are only greyboxing, the materials used will be extremely basic!
We will literally just recolor the object from grey to blue or red (Wow! I know…) for identification purposes.

But for future reference, materials will often contain multiple image file references that you can read up on here:


“Unity’s Prefab system allows you to create, configure, and store a GameObject complete with all its components, property values, and child GameObjects as a reusable Asset.

The Prefab Asset acts as a template from which you can create new Prefab instances in the Scene.”

Prefabs are simply game objects with a templating purpose.

If you have 10 or 100 of an identical game object in your scene, prefabs allow you to make changes to all of them simultaneously rather than one by one.


“Scenes are where you work with content in Unity.
They are assets that contain all or part of a game or application.

For example, you might build a simple game in a single scene, while for a more complex game, you might use one scene per level, each with its own environments, characters, obstacles, decorations, and UI.”

Scenes are a good way to divide our game up in to manageable chunks and to avoid forcing the user’s machine (pc, smartphone, tablet, etc) from having to hold the entire game in memory at one time.

For example, a game may have a scene for the main menu and then for each “level” of a game.
This will vary by type of game, it may also be a new scene for each location or “world” within your game.

This could also include cinematic scenes that trigger in between gameplay.


“The behavior of GameObjects is controlled by the Components that are attached to them…

Unity allows you to create your own Components using scripts.

These allow you to trigger game events, modify Component properties over time and respond to user input in any way you like.”

“A script makes its connection with the internal workings of Unity by implementing a class which derives from the built-in class called MonoBehaviour.”

Scripts are C# based files where you instruct the computer how to behave in a given circumstance, usually related to a particular game object.

You can attach multiple scripts to a game object as needed.

Unity scripts all derive from the Class type “MonoBehaviour” which by default will load with the following two methods:

// Use this for initialization

void Start () {


// Update is called once per frame

void Update () {


Any code you write in the “Start” method will trigger and run when the script becomes active.

For example, if your script is attached to the player character object, this code will not run until the character game object is instantiated (fancy word for created) into the scene.

Once the game object is instantiated, code in the “Start” method runs immediately.

The “Update” method runs much more frequently!

Do not put unnecessary code in here, as it will run literally every rendered frame of your game.

If your game is running at 60 frames per second, the “Update” method will execute 60 time per second!

You will often use the “Update” method for things like player movement and updating game state in general.

Unity integrates with Visual Studio’s “intellisense” feature which makes writing code much easier w/ autocompletion, definitions, and error checking.

That’s all for this article.
We’ll dive into greyboxing a top down space shooter in the next article.




Love podcasts or audiobooks? Learn on the go with our new app.

Recommended from Medium

How can we push test data through our platform without breaking anything?

Understanding State Management in Flutter (With best resources as per Flutter Team)

Simple Chat App using Django Channel

Concurrency in Dart — Part II

100 ScrumButs: value down the drain!

Why Shouldn’t We Program by Coincidence?

FlutterForce — #Week 142

Frequently Asked Questions on Open Alpha

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
GameDev Dustin

GameDev Dustin

More from Medium

Clear Shot Virtual Camera in Unity 2020

P2: Creating a Gritty Office Den

How to switch between Cinemachine cameras in Unity

Installing Probuilder In Unity