-
Notifications
You must be signed in to change notification settings - Fork 0
Project
Gabriel Ivanica edited this page Oct 27, 2017
·
5 revisions
Implement a basic 3D game (prototype) in Unity!
- The project must be hosted on a versioning platform (private or public)
- you can use SVN, Git, GitLab or Mercurial
- can use any free available platform like: Github, Bitbucket
- private projects can only be hosted on Github or Bitbucket
- Define a theme for the game
- Define the main gameplay mechanics
- controls
- actions, interactions and events
- gameplay rules
- UI and presentation
-
MainMenu scene with the following menu entries
-
New game
- will actually reset the game state
- requires some sort of dialog UI or any additional confirmation dialog
-
Load game
- does what it says... it loads the last save game state
-
Audio volume
- can be a button on the screen or in the menu, or in a sub-menu
- opens a sub-menu, an overlay, or a different menu system that has a panel where you can control sound volume
- can control each sound channel individually using a slider controller
- near each slider, or label a text-box with the current slider value (audio intensity) should be present
- while moving the slider the text-box should be updated
- use a range value such as 0 to 100 to represent audio intensity
-
New game
- At least 2 different gameplay scenes
- A static unity gameobject instance (DontDestroyOnLoad)
- Lives across scene loading
- Will initialize and call the appropriate managers that load the whole game state
- Implement the basic theme defined
- If you need to collect coins then you should be able to do that
- At least 3 different kinds of trigger areas
- One trigger that will update something on the UI (as well as the session-storage)
- One trigger that will show an open-world UI box with some information
- At least 1 trigger area that updates an animated prop
Example: Open animation door. When you are entering the trigger area it opens. It closes again when you leave it
- At least 1 trigger event that will initialize a ParticleSystem
- At least 1 repeatable action that will triggers an SFX sound
- At least 1 repeatable event that triggers a static and 1 that trigger a dynamic temporal UI update
- static update - the information is on the screen, but is old and needs to be updated
- dynamic update - the object that needs to be shown on the screen does not exist, needs to be created and after a while dissapears
Example: Each time the character collects a coin the UI is updated like this. - the static coin count in increase - somewhere on the UI (left/right area) a message (UI object) like: **"+ 1 coin"** will appear. - after 3 seconds the dynamic message will be destroyed.
-
A way to save the current state of the game
- Level state (Example: coins that were collected and should not appear again when loading the game)
- Session state (game storage information)
Example: How many coins were collected, etc, etc - Event can be trigger by a button or a checkpoint trigger zone (invisible) or by an in-game action.. etc
-
At least 1 gameplay GameObject prefab that is instantiated from scripting multiple times in the game
- It's almost impossible to create a proper game without using this :)
Example: Bullets from a gun, various props that appear after an event is performed (and are not pre-instantiated by the scene)
-
Have proper collisions (depens on the game implemented)
-
Main Menu scene
- background music
- background image
- the menu described in Scenes
-
Gameplay overlay
- shows basic gameplay information
Example: number of coins - updated while performing various actions in the game
Example: Collect coin -> update screen - static and dynamic UI See Gameplay section
- shows basic gameplay information
-
In game menu
- toggleable by pressing ESC
- creates a transparent overlay over the usual gameplay
- integrates the exact (or a similar one) audio-volume setting sliders
-
-Save Game button
-Exit to Main Menu button
- When selected a confirmation dialog should apear
- Audio must be separated into 3 audio channels (Music, Voice, SFX)
- All sounds should use one of those 3 channels and should be affected
- Changing the volume from the settings should affect the playback volume for each channel accordingly
- At least 1 background sound loaded once the game loads
- plays in loop when finished
- can be different each time a scene is loaded (not-required)
- At least 2 different gameplay scenes (not a copy-paste of the initial one)
- Loading between scenes should be done in a non-blocking way (asynchronous loading)
- a way of observing the loading status (can be something in the game-world or on the screen)
- loading-bar, game prop that shows the loading status, ,
- a way of observing the loading status (can be something in the game-world or on the screen)
- Game data should be saved in a file on the PC (not
PlayerPrefs)- you can use whatever file format you want
- XML(recommended for beginners), JSON, SQLite, Flatbuffers, etc
- Follow the design principles presented during the live sessions
- Use delegated and events for communication between various subsystem
With some programming knowledge all the features required by the project can be implemented by a high school student
That being said, there's almost no reason not to be able to implement everything that was requested.
All requirement can be implemented in a many ways, starting from an extremely basic scenario up to a very complex system. It up to each individual to decide how awesome the end result will be.
Projects will be presented to the teaching assistant at a certain date (towards the end of the semester)
- how many features are implemented
- how well each features is implemented
- partial implementation or shortcuts will be penalized
- code quality (readability, consistent code styling)
- I will look over the code as well. Please make sure a different normal person can read it
- Assuming that the programmer does not have some kind of DID the code is expected to look like it was written by the same person, not by 2, 10, or created using the classic task solving magic technique "copy-paste"
- [Note] If you write an AI that implements the project (or parts of it) it's fine
- If you can't do that, please provide a valid reason why
- Provide a not with all the libraries that were used and for what purpose
- Libraries that have been modified should be documented
- what was changed and why
- It's not permitted to use a library that solve one or some of the tasks presented
- if the library allows you to do something better
- If you don't know...
- you gain XP to the copy-paste skill
- your real-world character receives a grading penalty
- Better try to implement something basic and simple than coping other's work without understanding what happens
- Don't be scared by the wall of text. Most things are very easy to implement.