Welcome to the course Game Development 12!
Instructor email address: telinburg@sd43.bc.ca
Course outline and Introduction
In Game Development 12, we will be creating a collection 3D platform games in Unity, learning about the importance of storytelling in game development, creating supplementary game assets in Blender 2.9 and learning how to write game scripts in C # . Although this isn't a programming course per se, being able to write or modify code in an operational sense is essential to become a successful game developer. Coding skills play a key part of character controllers, character behaviours and scene interactions. In most cases, you will be given a basic version of the relevant C # scripts but you will most likely have to modify many of them to deal with issues in your custom environments or other specific applications. An example of this might be, having your character leap and jump instead of running. Unless there is supporting code your games will not have all the features that you'd like. Good luck and happy game making!
The general flow of the course will be as follows:
C # game programming / history of computer graphics and game development / story development / Unity Game # 1 - Roller ramp game (introducing ball mass physics, colliders / concept of escalating challenge, simple C # gaming scripts / Introduction to Blender 4.0 - expressly used in this course for 3D game assets construction and personal augmentations / Unity Game # 2 - 'Treasure Island or...' - our first terrain based 'island' adventure game - exploring terrain making - search and discover within a defined space- story construction - introduction to Unity store assets and embedding Blender models / Unity Game # 3 - game development choice project with clear construction steps / Unity Game # 4 - Final course project - an entirely new game developed by yourself or in collaboration with another classmate.
Create a one Drive share link - create an 'on line' spreadsheet for sharing course assignments
Create and Share links in ONE drive - A 'how to' guide
Example - T Linburg - (using Google Sheets - but you could use your Microsoft version of Excel)
T Linburg - grade and assessment link spreadsheet (adjust the share permissions to allow Mr. Linburg to edit)
Instructions:
Download an excel version
Rename the file "Last Name / First Name" - Course - Block
Drop this spreadsheet into the hand in box and then add in One Drive Share links as you complete course assignments.
It is YOUR responsibility to keep this spreadsheet updated as you complete assignments
Hand in Folder - Game Development 12
If you can't make up links for the spreadsheet, then create a folder with your full name on it and drag and drop all your files into this ONE folder only!
Roller Ball Ramp Game Web GL build Game Link
(*) Note: ALL completed Unity games should be submitted as complete web GL build - submit game link only!
Contact Mr. Linburg directly: telinburg@sd43.bc.ca
Unity User Manual / To install Visual Studio correctly for Unity - follow this link
Featured Game Developers
Markus "Notch" Persson - Creator of Minecraft / Nolan Bushnell (Inventor of Pong and started game company Atari) - Shigeru Miyamoto (Donkey Kong) / Alexey Pajitnov (Tetris - with 4 squares)
To Link up Unity with Visual Studio Code please do the following
Rollerball Ramp Game - Working URL link (Web GL build)
Important Resource Links for the course
Codeacademy for C # tutorials (sign up required - use a "spare" email address / Blender 2.93 (for game asset modeling) / Unity Hub - Unity game download - Unity Game Asset Store (free ones only please) / Unity Education learn site / Unity Help - Instruction guide
Simmer.io / Itch.io (a place to host your Unity Web GL builds)
History of video games / History of video games (20 min) / play retro games - wow weren't those cool! What can learn from the past?
Other Utility links
How to play a version of your Unity game without using a Unity Editor / How to animate a rigged puppet character - say from the unity store - this saves you time in preparing the movement sequencing - (NON SD 43 email account required - not sure why - eg GMAIL)
Module # 3 - Original Open World 'Adventure Game
Former student's Terrain based adventure game! (Watch out for the creature that lives in the cave!)
Terrain Adventure Game Spreadsheet - Your Hosted / Terminal Info
Sequence of Game Creation:
Create the Game Space
Create Original Island Terrain (with various elevation) OR Game Environment with other terrain 'restraints' (such as game takes place inside a castle with impossible to scale walls - or underground maze enviroment) However, I do recommend you to consider a game taking place on an 'island'.
Create the Game Play
Create the characters, game play, game sequence activities (ie a transporter or a village to discover or a clue to access or enemies to fend off) What is your game's objective(s)? Is it clear to the player WHAT they are actually playing the for? Any way to clarify the mission?
Enhance the environment and Project 'Add-ons'
Create TWO Original Game Assets in Blender. You will browse the Unity Store for the rest of the game assets. You are encouraged to populate your game with both self made game assets and FREE one's that you have downloaded. We want our games to feel complete and we only have so much time to make everything ourselves!
Here is a repository of Game Script add ons (paste the you tube link directly into the browser)
Here is a Blender procedural Material Tutorials - ever wondered how to make cracked ice or specific wood grain texture - then check this out!
This project is intended to be mostly based on your own ideas and imagination. The specific pathway to completing this will be more 'personalized' and might require some 'research' to get all the game space working as you wish. The game activities and 'missions' are up to you. How does one know that they have 'won' or have completed the mission? Are there objects to collect, 'life force' (4 hearts for example) that get drained over the course of the game play? We will attempt to add in helpful script links and tutorials in the section below for your assistance. If you have a great tutorial to share, PLEASE EMAIL IT TO:
telinburg@sd43.bc.ca and I will get it added to this blog site! Lets help each other build great games!
Part I - Creating the Environment for your characters to Explore
Terrain based adventure / survival game (Introduction)
Steps to get started with Terrain Making
Terrain tool download link: Link one
The Terrain Tools package is an add-on for Unity that can help you create terrain ecosystems. It provides more advanced features than the built-in terrain features in Unity, such as: Erosion tools, Sculpting tools, Brush Mask Filters, and Terrain Toolbox.
Terrain Tools explained / Installing Terrain Tools
To add the Terrain Tools package to your Unity project, you can:
Click Window > Package Manager
Search for Terrain Tools
Click Install in the bottom right corner
If you're using a version of Unity older than 2021.1, you may need to click Advanced and select Show preview packages to see the Terrain Tools package.
Once the package is installed, you can download the Terrain Tools Asset Sample Pack from the Unity Asset Store. This pack includes textures and brushes to help you get started.
We will start making our survival game by firstly focusing on the terrain that the game will take place on. In later steps we will look at creating the characters, the enemies, the objects in the environment etc.
Use one of the links provided or create your own terrain more 'organically' using the the tool suite in your own way. The goal here, is to create an island with interesting terrain, both high points and low points, a surrounding ocean or body of water, unexpected landscapes to explore, all the while keeping in mind file size constraints. Once the landscape terrain has been shaped, you should next incorporate texture (rocks, trees, plants sand on the beaches etc.) Reference 'real' natural ecosystems to create as realistic scenes as possible. For example, the vegetation at elevation would likely be different than the vegetation at the water's edge.
Deriving Inspiration from 'real life'
Take a look at the incredible diversity of landscapes that exist on planet Earth. You might want to draw some inspiration for your terrain based adventure game from some of these incredible places that ACTUALLY exist in our world!
Inspiration I / Terrain inspiration II / or find your own...
Other helpful Resources for Terrain making
How to make beautiful Terrain in Unity 2020 release / Unity Manual on Terrain making (website) / Raising and lowering terrain (website) /
Terrain Making Basics in Unit (video) / Terrain basics continued (video) / 2020 release (Terrain building)
QuadSpinner - Terrain making Utility Program
This free 'community edition' - requires an install - allows you to create height maps and terrain quickly and with more precision than doing it manually in Unity.
Ideally, your game will take place on an island. This will allow for you to build in some natural constraints into the game. After all, a great game has an clear objective and endless terrain doesn't lend itself to that.
Other helpful videos / tutorials
Adding in a water feature (lake etc.) / Unity's new water system (2022) / Creating a 'water shader' from scratch (difficult) / make a sandy low slung tropical reef / How to a add a 'Cinemachine' for Game play (camera that optimizes player movement - no code required)
Part II - Creating the Actual Unity Game Play
In the next part, you will now turn to creating the actual game players, game objectives and craft an original game experience. What can you do to create a 'mission' or a game purpose? What does the 'technology' in your game say about time and place? How does one know that they game has ended or mission has been accomplished? Some great games 'unfold' and do not start with a clear purpose but those are often more difficult to make them compelling and interesting for the users.
Part III - Making TWO or more Unity Game Assets in Blender 6.1 (and beyond)
Making Blender game assets (videos / help guides)
Use the sculpt tools to add elevation and detail to 3 D objects (video) / How to make any image a brush Alpha (more advanced) / Texture Paint Tools
To export Blender models to Unity....check out these links!
Project Criteria
Terrain - landscape that is varied in both elevation and style. For example, one might have a canyon system or a high volcanic peak to explore
Use of the Terrain tools to add texture and vegetation that is appropriate to its elevation. For example, one would most likely find snow on the peaks of mountains, grasslands in the shadow of a mountain and sand on the beach
Include game characters (including any enemies) / game objects etc. downloaded from the Unity Store (see links for access)
Your game characters should have scripts written in so that they can 'interact' with their environment (for example, be able to pick up and use objects / be able to draw a sword and fight an enemy / be able to open doors / jump / run / and other reasonable abilities)
Ideally, your camera should be set up so that it is from a first person perspective. It adds excitement and drama when the game unfolds through the eyes of the character (another good discussion of first person versus third person)
Weather - if possible create some weather (how to make fog / How to make rain / How to make it snow and have it accumulate) or angle the light for different times of days. Some other examples include adding fog or rain or snow. All of this adds to the drama and excitement of the environment.
Be sure the game objectives are fairly clear (unless that is part of the game's design)
Finally, if possible revise our game design document to be sure that the story you created fits the 'actual design'
Resources
A (non Island adventure game example) / An Adventure Game sample (non-island) you can use parts of this - game scripts etc.)
Unity Video - picking up objects / Character picking up objects (script example) / Git hub example of picking up objects / adding in trees in Unity / adding trees (video)
A repository of Game Making Scripts
How to pick up objects in Unity (includes player controller / make objects 'grabbable' ) / Change "skybox" / Player controller Script /
Simon...check this out!
Step by Step to Make Terrain in Unity
Most terrain packs come from the Unity Asset Store.
Open Unity.
Go to Window → Asset Store (or click the Asset Store icon).
Search for your terrain pack.
Click Download → Import.
A pop-up will show a list of assets → press Import again.
Unity will now add the terrain pack to your Project window, usually in a folder with the asset’s name.
If your terrain pack includes prebuilt terrains, you can drag them into the Scene.
To create your own:
Go to GameObject → 3D Object → Terrain.
A large white terrain will appear in your Scene.
This is what you’ll sculpt, paint, and texture.
Terrain packs usually contain:
Textures (grass, dirt, rock)
Normal maps
Brushes
Heightmaps
Select your Terrain in the Hierarchy.
In the Inspector, open Terrain Tools → Paint Terrain.
Choose Paint Texture.
Click Edit Terrain Layers → Add Layer.
Pick a texture from the imported terrain pack.
You can add multiple layers (grass, rock, snow, etc.) and blend them.
Select your terrain, then open these tools:
Click the mountain icon (Raise/Lower).
Choose a brush shape.
Adjust brush size and opacity.
Paint hills, cliffs, slopes, etc.
Use the Smooth tool to soften jagged areas.
Paint grass on flatter ground, rock on cliffs, dirt on pathways.
Choose the Tree Paint tool.
Add tree prefabs from your terrain pack.
Paint trees onto the terrain.
Use Paint Details.
Add grass or small plants from the pack.
Unity has an official, more advanced sculpting toolkit:
Go to Window → Package Manager.
Install Terrain Tools.
This adds:
Slope-based texture painting
Stamp-based mountain creation
Erosion simulation
Great for creating realistic terrain quickly.
Module # 2 - Creating our First Unity Game - Roller Ball Ramp Game
Introduction to Unity - How do we get started?
Introduction (please download zip file and practice with the playground scene)
Unity intro - essential - intall info (already installed)
Unity essential - intro project (Please do Missions 1 to 3)
Download the practice 'zip' file essential project to get started!
Please work through the above intro BEFORE you start PART I. The software should already be installed at your workstation but it is important to learn more about the gaming workflow and console environment BEFORE you begin game ONE.
Part I - Roller Ball Game Intro.
This instruction set completes ONE ramp and associated objects (You will be making min. three)
Game Tutorial - instruction set
Concepts covered: Unity interface, creating a plane, game play, game controllers, ball mass and physics, colliders escalating level of challenge
Project Criteria: follow the video guides to make an initial game with ball / colliders / scoring / and player controller
When you're done the video intro's please add:
A second and a third level to the game with adjoining ramps and game play
A 'respawn point' (see this instruction set: respawn / escalating levels of difficulty / create new levels with a different 'look and feel' - Specifically, how is level two and three different from level one? (change the game play - make level two and three more difficult / other obstacles based on a 'theme')
Optional ideas:
Why are my textures pink? Unity can't read the required information
Objects rendered in pink usually indicate that the material needs to be converted. Go to Window>Rendering>Render Pipeline Converter. This tool will allow you to convert all of the materials to URP shaders. If you tried this already, then post more details about what you have tried and what is going on
Part II Add Second / Third Ramp and Project extensions
How to make a ramp in Unity / How to make an easy jump feature / How to make a ball Jump off any surface / How to change object colour in Unity (tutorial also covers object CHANGING colour when it comes in contact with the ball itself)
Game samples to try
Unity Ball game example (download the entire folder / unzip file and then select Unity)
Game sample # 3 (thanks Sarina!)
Game Sample # 4 (Thanks Ethan Lee - former game development student)
Help Section
Try this code to fix ball drag issuue
Read Input in Update(), Apply Force in FixedUpdate()
Vector3 moveInput;
void Update()
{
// Read input every frame
float moveX = Input.GetAxis("Horizontal");
float moveZ = Input.GetAxis("Vertical");
moveInput = new Vector3(moveX, 0f, moveZ);
}
void FixedUpdate()
{
// Apply movement with Rigidbody
Rigidbody rb = GetComponent<Rigidbody>();
rb.AddForce(moveInput * 10f); // adjust force as needed
}
Part III - Creating a Web GL account and uploading your first game for others to play.
Once you have completed your roller ball ramp game you are asked to do the following:
Sign up for an Web GL account for a hosting service. You will upload a "web friendly" rendition of your game and submit a working "link" to your hosted project. Do not hand in a Unity game folder - just a link to a working GL build! We will, in a future class, be playing these games as part of a 'peer assessment' activity.
A step by step process for building a 'web friendly' game
Open Unity Hub
Click on your Unity version → Add Modules
Check WebGL Build Support
Install
In Unity:
Go to File → Build Settings
Select WebGL on the left
Click Switch Platform
This may take a few minutes depending on project size.
Go to Edit → Project Settings → Player and make these recommended settings:
Run in Background → Optional
Default Canvas Width/Height: leave at default unless you want a specific size
WebGL Template → use Default or Minimal
Compression Format → Gzip or Brotli
itch.io supports both
Decompression Fallback → Enabled
Required so browsers actually run the build
Color Space → Gamma (Linear sometimes causes performance issues)
API Compatibility Level → .NET Standard 2.0
These are the settings that typically avoid black screen issues on itch.io.
Go to File → Build Settings
Click Build
Choose a folder like:
Builds/WebGL
Unity will create files like:
index.html
Build/
TemplateData/
itch.io requires a .zip file of the WebGL build folder.
Make sure your build folder contains:
index.html
/Build
/TemplateData (if your template includes it)
Select these contents → Zip them
Name it something like MyGame-WebGL.zip
⚠️ Do NOT zip just the Build folder. You must zip the folder containing the index.html file.
Otherwise itch.io will say “no index.html found”.
Go to your itch.io dashboard
Click Create New Project
Set:
Kind of project → HTML
Upload your .zip file
Check this important box:
✔️ “This file will be played in the browser”
Choose:
Fullscreen or Recommended size
Save & Publish.
Your Unity game should now run directly inside itch.io’s browser window.
Resources
Unity Hub - Unity game download - Unity Game Asset Store (free ones only please) / Unity Education learn site / C # reference guide (Microsoft) / An excellent C# reference resource 9 W 3 schools)
Module # 1 - Introduction to Game Development
Part I - Describle your experience with gaming?
What types of games do you like to play? Have you ever written a game yourself or written one in a different programming language? ie Python / Scratch? (pair / share) have a conversation about gaming with the students seated next to you!
Part II - Writing a game script - Easy or hard? Creating a Game Design Document - GDD's - Due: October 2nd 2025
(Note: We do not expect this to be 'completed' but rather it might contain a collection of gaming /character or story ideas that can be later shaped into an actual island game) -
Read this enlightening article that outlines some of the pitfalls of attempting to write a story script that can work with both a player and the underlying technology. Here is a sample of a professional GDD document.
So why don’t we see these ‘written prototypes’ for games? The answer is, actually, you do. They’re called game design documents (GDDs), and they’re a human-readable document which describes every aspect of a game in such a way that a reader can imagine the game without the expense of making it.
Instructions
In this activity, you will be tasked with creating your very own GDD. As you would guess, GDD's don't look anything like convention movie scripts or any other scripts quite frankly because the nature of the gaming medium creates the following problems: Game development is often a team endevour / the gamer has control over how the game unfolds / a story might make sense to a human but not necessarily to a computer that sees the world only as a series of logical commands with inputs and outputs.
Please include the following: A collection of characters with names and costume descriptions (you could make drawings in Animate CC if you wish) / an outline of the physical terrain where the game takes place / a summary of the story - why are were here in this place and why do we care about what happens - eg Are we rescuing someone / conquering a new land / saving planet Earth from aliens / or maybe the game is an unfolding - piecing together complex disconnected realities etc....
Video Game Script - how to write for the medium? / Game Script essentials / Another authors opinion
An interesting, opposing view, suggesting game scripts don't really help
A counter argument that suggests that game scripts 'get in the way of a good game' (Atlantic Monthly)
Part III - Blast from the Past! (sorry no pun intended) - Play as many as you have time for! Yes this is a school assignment :) Due: September 25th, 2025
Retro 80's era video games / Retro games (all genres) / Tetris (classic) / another collection of good bad and ugly games /
In this look at the past, we will have a bit of fun 'investigating' (by playing) a wide collection of retro video games to seek out an answer to one vexing question:
Which qualities or aspects are essential for a great gaming experience? Is it the graphics, the story line, the immersive experience? What, in your view, is the essence of great game play?
(One page reflection exactly with illustrations - no longer - no shorter)
…some gaming concepts to consider in your reflection...
Game sprite relatability / graphics (is complex better?) / escalating difficulty (in other words everyone can do something in the gaming space) / story script / believability / immersive / open ended/ expansive / creativity (what does this actually even mean) / ease of user controls / etc...
Part I - Code Academy - Learning how to Code in C # - The 'brains' of any platform game - One Week of Class time only -
Due: October 2nd / 2025
Learn the 'backbone' of coding C # fundamentals
Firstly, we will take a look at the backbone of game development, which is C # similar to Java. (Code Academy link - sign up if you don't already have an account). For those who have never done any coding, Code Academy is a nice gentle structured way to learn basic coding skills and concepts. Luckily, most of the scripts we'll use for stock player commands have already written for us (eg. picking up an object or fighting an enemy). Where these skills come in handy is when the scripts DON'T run for some reason. We need to understand the basic programming skills of variable and method construction.