Introduction
I have been hired as a trainee programmer at a computer game development company and tasked
with creating a computer game. This document will explain the entire planning, design, and
development process of the project, describe what assets I use and how I implement gameplay
features.
P3. Design
Problem summary
• Design a game, taking user requirements into consideration.
• Review the design with two other people to receive feedback and modify the game based on
feedback received
• Justify the decisions made when designing the game and demonstrate how the design meets
the requirements on the user.
• Develop the game based on the design.
• Test the game to make sure it works properly and fulfils the user requirements.
• Optimise the tested game based on feedback from users that tested the game.
• Evaluate the entire design, development, and optimisation process, using evidence to prove
how effective it is at meeting user requirements.
Target audience
The game will be targeted at children aged 8 to 12 and will appeal to players of all genders. This
game will be targeted at English-speaking users because the user interface will be designed in
English.
Purpose and client requirements
The game must have many different features. This includes a controllable character that can move
around an environment. The objective of the game must be to collect items, which adds to a score.
The player must also avoid hazards present in the environment, which deplete a limited number of
lives.
The game will have a timer, with the player must raise the score as much as possible before the
timer runs out. There will also be varying difficulty levels in the game, with higher difficulties having
more dangerous hazards, a lower number of lives and less time available to collect items.
,Constraints
There are some constraints that could potentially affect the development of this product. One of
them is the choice of target platform. It can take longer to create a game for some operating
systems such as OS X or Linux. Therefore, I have chosen to develop a game for the Windows
operating system because most game developers use this operating system.
Another constraint that can affect the design and development of the game is the choice of game
engine. It will take a very long time to develop a game engine suitable to make a game which meets
the client requirements. I will overcome this constraint by using the Unity game engine, because it
comes with features such as a graphics renderer and a physics engine that will make it possible to
quickly create a game that fulfils the client requirements.
Bugs and errors can also constrain the development of the game. Throughout the software
development process, it is common to encounter unexpected behaviour or problems that interfere
with the standard operation of the software. I will avoid this constraint by using various debugging
techniques to identify bugs, such as the Debug.Log() method in Unity.
Another constraint that could slow down the project is poor time management. To avoid this
problem, I will divide each stage of the project across several weeks in order to make it easier to
plan, design and develop the game, and also write documentation.
Complexity of problem
To create the game, I will be using the Unity game engine, which is a pre-existing software
framework designed for developing video games. Unity is free and features an asset store which
allows developers to buy assets which can be used in their games.
To create some of the assets for the game, I will use Blender. This is a free 3D computer graphics
software for modelling and creating visual effects.
I will also be using the C# programming language for scripting gameplay mechanics. This is an object-
oriented language used for developing games in Unity. I will be using Visual Studio 2022 as the
integrated development environment for my project.
Legal and ethical considerations
Under the Video Recordings (Labelling) Regulations 2012, all computer games released in the UK
must adhere to a rating system. This is to make sure children cannot access games with
inappropriate themes and content. The Pan-European Games Information (PEGI) rating system is
used to rate games in the UK. As the game’s target audience will be children aged 8 to 12, it will be
designed and developed to conform to the PEGI 7 rating.
To comply with copyright legislation, I will make sure I have a valid licence for any third-party assets
used in the game. I will check the licence agreement of each asset in the Unity Asset Store to
determine if I can use it in my game. I will also be using assets that I have created, and therefore are
my own intellectual property.
,Gameplay features
The game is part of the open-world and adventure genre. It is set in a fantasy environment
resembling an ancient Egyptian town. Players will attempt to navigate across the entire
environment, search for gemstones. Upon collecting a gemstone, the player is awarded a point.
The timer will be set at 5 minutes at the easiest difficulty, 3 minutes for the normal difficulty, and 1
minutes for the hardest difficulty. After the time is up, the final score will show on the screen. The
game can also end if the player collects all gemstones.
The game will have a compass user interface (UI) element to navigate the player towards the closest
gemstone, to make sure they know the location of their next objective.
The environment will contain ghosts which observe the area and follow the player if they are
detected. The ghost can shoot at the player, and each shot will take a life. The game will end if the
player runs out of lives.
As this game will be designed to conform to the PEGI 7 rating, it will be possible to use assets which
can be frightening to younger children. Therefore, the design of the ghost hazard will have some
horror elements to thrill the player. There will also be some non-realistic and implied violence in the
game, which will occur if the player loses all lives.
Data dictionary
Object Vector3
Name position
Starting transform.position
Value
Purpose To get the coordinates of the object and assign it to a 3D vector.
Object MeshRenderer
Name meshRenderer
Starting GetComponent<MeshRenderer>()
Value
Purpose To control how meshes of an object are rendered, for example, to change the
colour of a material
Object Image[]
Name lives
Starting Assigned in Unity Inspector window
Value
Purpose To create an array of images for any lives the player has.
, Object Coroutine
Name countDown
Starting StartCoroutine(Countdown())
Value
Purpose To create a timer for the game inside a coroutine, which is a function that runs
across multiple frames.
Object GameObject[]
Name items
Starting GameObject.FindGameObjectsWithTag("Item")
Value
Purpose To create an array of all collectible items in the level.
Object int
Name points
Starting null
Value
Purpose To count the number of points the player currently has.
Object int
Name pointsToWin
Starting items.Length
Value
Purpose The number of points required for the player to win the game
Algorithms
Gemstone
The gemstone will rotate and float up and down. If the player touches the gemstone, they will
collect it and will obtain a point. The gemstone will stop floating up and down and will slowly fade
out until it is transparent. When the gemstone becomes transparent, the algorithm will remove it
from the game. This is beneficial because it frees up space in memory.
Compass
The compass needle will point from the main camera to the closest gemstone. The algorithm
continually iterates through an array of all gemstones. If a gem is closer to the player than the
previously iterated gem, it will assign it to the closest gem position. This will also save the previously
iterated gem’s position, allowing the algorithm to discard other gems which were even further away
than the previous one.
Using the position of the closest gem, the algorithm will calculate its local position relative to the
main camera. We can then use trigonometry to find the angle from the main camera to the closest
gem, and then linearly interpolate the rotation of the needle to match the same angle.