Unit: IGB283 Game Engine Theory and Applications
Assignment 2: Problem Solving – Part B
Due: Friday, 30th October 2020, 11:59pm (End of Week14) Weight: 40%
Group or Individual: Individual only
1. Every student needs to complete the specified workshop questions and the main
coding project.
2. You are encouraged to study together with fellow students but you cannot copy
each other’s code directly.
Section 1: Change History
Section 2: Synopsis
This project will require you to complete specified workshop activities, answer some theoretical questions, and design and implement relevant mathematical functions involving linear algebra within the context of a game engine scripting and apply those functions to complex geometric objects to achieve articulated movement.
Notes:
– Code in C# in Unity.
– No file I/O required (however you can implement file I/O if you want to. No rewards or
penalty for file I/O.)
– For easy display, keep the x and y values for your model in the range [-1, 1].
– If you try to use any 3D objects, just use the default perspective projection of Unity.
– Definition: A simple geometric object consists of one entire piece, that is, a single
region of enclosed area or space. An articulated geometric object consists of multiple parts that are linked together via joints.
Section 3: Tasks
QUT Jr
For full marks in this submission you need to complete all six of the tasks below. In addition to the functionality for each task, you need to submit a Statement of Completeness that documents:
• The tasks you have completed
• How to use your software
• Screenshots that provide examples of your executing code
The theme for the following tasks is articulated movement, introduced to you in Week 7. You are required to develop a controllable, animating character named QUT Jr, inspired by Luxo Jr developed by Pixar (links below). Some of the actions of QUT Jr will mimic that of Luxo Jr, but will be developed in Unity and C# without the use of pre-built animations.
Date
Change Detail
Version
16/09/2020
Initial version
1.0
Unit: IGB283 Game Engine Theory and Applications
Note: You need to use your own version of the transformation matrix and transformation functions for this assignment.
Task 1 – Workshop Activities – for 10%
1. Complete all basic tasks of Workshops 6-11 (bonus/challenge tasks
optional). Organise the questions and answers in the order of weeks and save them in a separate folder called IGB283Workshop. Provide a copy of your Unity project files for each coding task. Also provide one or two key screen-outputs for each coding task demonstrating your execution of the code in the Statement of Completeness file. The non-coding files should be in Word (.docx) or Adobe (.pdf) format.
Task 2 – Avatar Setup and Simple Articulated Motion – for 50%
1. Complete Task 1
2. Review the Luxo Jr videos here. These videos will provide a reference benchmark to aim for, though the complexity and smoothness of your character does not need to be as precise.
a) Luxo Jr.: https://www.youtube.com/watch?v=D4NPQ8mfKU0
b) Luxo Jr. Spoof: https://www.youtube.com/watch?v=QR1h2cfpPHM
3. Using the Robot Arm articulated model from Workshop 7, set up a new project that contains a character of your own devising. This character does not necessarily need to be like Luxo Jr or even humanoid, as long as it has enough (minimum four (4)) components and is able to jump/walk around. Rename your avatar to QUT Jr, adding additional limbs in the manner shown to you in Workshop 7. You can apply translation, rotation, and scaling to these components. You are free to change the shapes and colours of these components to make it look more attractive.
4. Head Wobble/Nod – Write a suitable C# script method that continually bobs the head of QUT Jr. to mimic nodding of a person. You should aim to utilise the functions you have created in Workshop 7 in order to achieve this.
5. Walking – Write a suitable C# script method that continually moves QUT Jr Left to right to mimic the walking of a person. To do this, you need to think of the avatar as a tree. The root of the tree corresponds to the entire object and its children the subcomponents of the object. If you are struggling with this section, please refer to the use of methods you wrote in Workshop 7.
6. Combined Articulation – Finally, write a suitable C# script method that continually moves QUT Jr left to right while its head is nodding. This can be achieved by traversing the tree, updating information and then displaying by again traversing the tree to draw the component objects. You may find that you have achieved this already, depending on how you wrote the previous methods.
Task 3 – Jumping Translation – for 65%
1. Complete Task 1-2
Unit: IGB283 Game Engine Theory and Applications
2. Add a ground plane to your scene (a straight-line is fine).
3. Jumping – Write C# Script code that continually moves QUT Jr. up and down to mimic the jumping of a person. You only need to implement positional changes. You do not need to account for gravity.
4. Write C# Script code that makes QUT Jr jump forward (i.e., up, forward and down) continuously.
Task 4 – Avatar Controls – for 75%
1. Complete Tasks 1-3
2. Add C# Script code to steer your object around the screen using the keyboard.
• Key ’a’ for left, ’d’ for right
• Key ’w’ for jumping up, key ’s’ for jumping forward
3. When no key is pressed, your object should automatically move at a constant speed in the direction of its motion (no moving backward) and never escape the world view.
4. Add functionality so that when the ’z’ key is hit, keyboard control stops working and the avatar collapses to the ground.
5. After-landing, QUT Jr lies slumped momentarily before rising to stand again. After this process, standard avatar controls may resume.
Task 5 – Two Player Mode – for 85%
1. Complete Tasks 1-4
2. Clone all features of the original avatar to create a secondary playable character, complete with its own visuals and controls. The articulation of the character can remain the same, but the second avatar should be distinct enough from the first (e.g. slightly different look, size, colours etc.). You may choose to duplicate scripts or write existing scripts in a way so as to accommodate a secondary character (e.g. customisable controls).
3. Create a simple camera system that accommodates the existence of two on-screen characters simultaneously. As a hint, you will need to calculate a midway point between the two avatars, and control the zoom or field of view of the camera accordingly.
4. Successfully implement Two Player Mode and document its inclusion in your Statement of Completeness.
Task 6 – Advanced Articulated Motion – for 100%
1. Complete Tasks 1-5
Unit: IGB283 Game Engine Theory and Applications
2. So far your avatar has a linear structure like . Add at least another two components to the avatar, making it look like a character with two arms or two legs
e.g. . You may add more branch components e.g. arms and legs and
more.
3. Apply the walking functions described in Task2 to this new avatar and document their
inclusion in your Statement of Completeness.
4. Apply the jumping functions described in Task3 to this new avatar and document
their inclusion in your Statement of Completeness.
5. Apply the control functions described in Task4 to this new avatar and document their
inclusion in your Statement of Completeness.
6. Apply the viewing functions described in Task5 to this new avatar and document their
inclusion in your Statement of Completeness.
Note: If you complete Task6, then you need to show this advanced avatar as well as the linear avatar working in your demo video. You may use the linear avatar as the first playable character and the advanced avatar as the secondary playable character. You may also demo two linear avatars first then demo two advanced avatars.
What and How to Submit
Your submission for the practicals and the coding project is to be uploaded onto the Black Board site of this unit.
The files to include in the submission are:
2. A statement of completeness in Word or PDF format including program design, key screenshots, and user instructions of how to run your program etc. Provide one or two typical screen-shots for each task demonstrating your execution of the code.
3. A copy of your Unity project files (zip up the entire folder except the ‘Library’ folder. To save space and reduce upload/download time, please delete the “Library” folder from your main coding project and each of your weekly workshop activities before zipping and submitting. Unity can automatically recreate this ‘Library’ folder on run.)
4. A copy of any input files that are required by your program (Only if implemented. You do not need to have file I/O in this assignment)
5. A short video demonstrating the major functions of your application. Upload your video to YouTube and only include the link to your video in the report.
Unit: IGB283 Game Engine Theory and Applications
6. A completed check list, summarising the specific items you have completed.