Fundamental Game Development (FGU301)
Vietnamese title: Phát triển game cơ bản
Credits: 3
Prerequisites: PRO192

Description:
This comprehensive Basic Unity Training Program is designed to equip participants with essential skills in Unity game development, empowering them to create engaging and interactive 2D and 3D games. Building upon strong foundation in C# programming, the course delves into advanced topics such as 3D game development, physics, animations, and user interface design. Through a combination of theoretical lectures, hands-on labs, and collaborative projects, participants will gain practical experience and confidence in using Unity to bring their game ideas to life.

Key Learning Outcomes:
- Master C# Programming: Gain a deep understanding of C# syntax, data structures, algorithms, and object-oriented programming principles.
- Navigate the Unity Environment: Become proficient in using Unity's interface and tools for game development.
- Develop 3D Games: Learn the fundamentals of 3D game development, including rendering, lighting, animations, and physics.
- Create Engaging Game Worlds: Master the art of designing game objects, animations, and physics components to create immersive and interactive game environments.
- Build User-Friendly Interfaces: Design intuitive and visually appealing user interfaces that enhance the player experience.
- Develop Games from Start to Finish: Complete hands-on projects, applying your knowledge to create your own small games and interactive applications.
- Collaborate Effectively: Work collaboratively with teammates to develop game projects, fostering effective communication and teamwork skills.

Learning outcomes:
Understand C# Programming Fundamentals: Syntax and Data Types, Control Flow, Functions and Methods, Classes and Objects, Debugging
Understand C# data structures (lists, stacks, queues, trees) and algorithms (sorting, searching); Event Handling
Understand the Unity interface and basic tools for game development
Understand 3D Game Development; Rendering and Lighting; Animations and Physics
Create and manipulate game objects, animations, and physics components
Design user interfaces and handle user input effectively
Develop small games and interactive applications using Unity
Collaborate effectively in a team environment for game development projects.

Student tasks:
- Students must attend at least 80% of contact slots in order to be accepted to the final examination.
- Student is responsible to do all exercises, assignments and labs given by instructor in class or at home and submit on time
- Use laptop in class only for learning purpose
- Promptly access to http://flm.fpt.edu.vn for up-to-date course information

Tools:
- Internet
- Visual Studio 2019 or later (C# programming language)
- Unity Hub and Unity 5 (version 2021.3 LTS or later)
- Minimum hardware requirement: Windows 10, 64-bit versions, CPU: X64, RAM: 8GB
- Students use Unity with their personal email for educational purposes only

Materials:
description: Unity Official Document
author: Unity Technologies
publisher: Unity Technologies
note: https://docs.unity3d.com/Manual/index.html
description: Microsoft Learn: C#
author: Microsoft
publisher: Microsoft
note: https://learn.microsoft.com/en-us/dotnet/csharp/tour-of-csharp/ overview
description: C# Programming for Unity Game Development Specialization
author: University of Colorado System
publisher: Coursera
note: https://www.coursera.org/specializations/programming-unity-game-development
description: Unity Learn Platform
author: Unity Technologies
publisher: Unity Technologies
note: https://learn.unity.com
description: Unity Official Channel
author: Unity Technologies
publisher: Youtube
note: https://www.youtube.com/@unity

Assessments:
category: Assignment (Lab)
type: on-going
weight: 40.0
duration: 90'
question_type: Assignment 1: CLO4, CLO6, CLO7, CLO8
Assignment 2: CLO1, CLO2, CLO3, CLO7, CLO8
no_question: Theory present or project
grading_guide: - Assignment 1 cover content: Chapter 1, 2, 3, 4
- Assignment 2 cover content: Chapter 3, 4, 5, 6, 7
note: - Guided by instructor
- Application or Theory
- Work in group
- Presentation
category: Progress test (Quiz)
type: on-going
weight: 30.0
duration: 10'-30'
question_type: Quiz 1: CLO1, CLO2, CLO3, CLO5,
Quiz 2: CLO3, CLO4, CLO6
Quiz 3: CLO1, CLO3
no_question: Multiple choices
Marked by Computer or a suitable format
knowledge_and_skill: 30
grading_guide: Quiz 1 cover content: Chapter 1, 2
Quiz 2 cover content: Chapter 3, 4
Quiz 3 cover content: Chapter 5, 6, 7
note: by exam board,
using computer
category: Final exam
type: Final exam
weight: 30.0
duration: 60'
question_type: CLO1 - CLO6
no_question: Multiple choices
Marked by Computer
knowledge_and_skill: 50
grading_guide: concepts, algorithms;
all studied chapters
note: by exam board,
using computer

Schedule:
session: Chapter 1: Introduction to Unity
1.1 Unity interface
1.2 Scene, game object, component
1.3 Create a simple 2D or 3D project
learning_outcomes: IT
materials: FGU301_Slide
session: Chapter 1: Introduction to Unity (cont.)
1.1 Unity interface
1.2 Scene, game object, component
1.3 Create a simple 2D or 3D project
learning_outcomes: IT
materials: FGU301_2
session: Chapter 1: Introduction to Unity (cont.)
1.1 Unity interface
1.2 Scene, game object, component
1.3 Create a simple 2D or 3D project
learning_outcomes: IT
materials: FGU301_3
session: Chapter 2: C# Fundamentals
2.1 C# script component
2.2 Variables, data types, operators
2.3 Control flow (if-else, loops)
learning_outcomes: IT
materials: FGU301_4
session: Chapter 2: C# Fundamentals (cont.)
2.1 C# script component
2.2 Variables, data types, operators
2.3 Control flow (if-else, loops)
learning_outcomes: IT
materials: FGU301_5
session: Chapter 2: C# Fundamentals (cont.)
2.1 C# script component
2.2 Variables, data types, operators
2.3 Control flow (if-else, loops)
learning_outcomes: IT
materials: FGU301_6
session: Chapter 2: C# Fundamentals (cont.)
2.4 Classes, objects, methods, properties
2.5 Inheritancea, polymorphism, encapsulation
2.6 Arrays, lists, dictionaries
learning_outcomes: IT
materials: FGU301_7
session: Chapter 2: C# Fundamentals (cont.)
2.4 Classes, objects, methods, properties
2.5 Inheritancea, polymorphism, encapsulation
2.6 Arrays, lists, dictionaries
learning_outcomes: IT
materials: FGU301_8
session: Chapter 2: C# Fundamentals (cont.)
2.4 Classes, objects, methods, properties
2.5 Inheritancea, polymorphism, encapsulation
2.6 Arrays, lists, dictionaries
learning_outcomes: IT
materials: FGU301_9
session: Hands-on 1: Project 1 - Simple 2D project
Create a basic platforming game, focusing on character movement, collision detection, and scoring.
Quiz 1
learning_outcomes: U
session: Hands-on 1 (cont.): Project 1 - Simple 2D project
Create a basic platforming game, focusing on character movement, collision detection, and scoring.
Quiz 1
learning_outcomes: U
session: Hands-on 1 (cont.): Project 1 - Simple 2D project
Create a basic platforming game, focusing on character movement, collision detection, and scoring.
Quiz 1
learning_outcomes: U
session: Chapter 3: Introduction to 2D and 3D Graphics in Unity
3.1 2D/3D Graphics: Sprites, meshes, materials
3.2 Mecanim and Animation Controller.
learning_outcomes: IT
materials: FGU301_13
session: Chapter 3: Introduction to 2D and 3D Graphics in Unity (cont.)
3.1 2D/3D Graphics: Sprites, meshes, materials
3.2 Mecanim and Animation Controller.
learning_outcomes: IT
materials: FGU301_14
session: Chapter 3: Introduction to 2D and 3D Graphics in Unity (cont.)
3.1 2D/3D Graphics: Sprites, meshes, materials
3.2 Mecanim and Animation Controller.
learning_outcomes: IT
materials: FGU301_15
session: Chapter 3: Introduction to 2D and 3D Graphics in Unity (cont.)
3.3 Unity GUI
3.4 Introduce UI event handling and user input
learning_outcomes: IT
materials: FGU301_16
session: Chapter 3: Introduction to 2D and 3D Graphics in Unity (cont.)
3.3 Unity GUI
3.4 Introduce UI event handling and user input
learning_outcomes: IT
materials: FGU301_17
session: Chapter 3: Introduction to 2D and 3D Graphics in Unity (cont.)
3.3 Unity GUI
3.4 Introduce UI event handling and user input
learning_outcomes: IT
materials: FGU301_18
session: Chapter 4: Unity's Physics Engine
4.1 Rigidbodies, colliders
4.2 Forces, torque
learning_outcomes: IT
materials: FGU301_19
session: Chapter 4: Unity's Physics Engine (cont.)
4.1 Rigidbodies, colliders
4.2 Forces, torque
learning_outcomes: IT
materials: FGU301_20
session: Chapter 4: Unity's Physics Engine (cont.)
4.1 Rigidbodies, colliders
4.2 Forces, torque
learning_outcomes: IT
materials: FGU301_21
session: Hands-on 2: Project 1 - 2D Platformer Expansion
Expand the platformer game with levels, enemies, and power-ups.
Quiz 2
learning_outcomes: U
session: Hands-on 2 (cont.): Project 1 - 2D Platformer Expansion
Expand the platformer game with levels, enemies, and power-ups.
Quiz 2
learning_outcomes: U
session: Hands-on 2 (cont.): Project 1 - 2D Platformer Expansion (cont.)
Expand the platformer game with levels, enemies, and power-ups.
Quiz 2
learning_outcomes: U
session: Assignment 1 assessment: Project 1 - 2D Platformer Expansion
Project Presentations and Feedback
learning_outcomes: TU
session: Assignment 1 assessment (cont.): Project 1 - 2D Platformer Expansion
Project Presentations and Feedback
learning_outcomes: TU
session: Assignment 1 assessment (cont.): Project 1 - 2D Platformer Expansion
Project Presentations and Feedback
learning_outcomes: TU
session: Chapter 5: Input Handling
5.1 Keyboard, mouse input
5.2 Unity Input System
5.3 Unity Input Manager
learning_outcomes: TU
materials: FGU301_28
session: Chapter 5: Input Handling (cont.)
5.1 Keyboard, mouse input
5.2 Unity Input System
5.3 Unity Input Manager
learning_outcomes: TU
materials: FGU301_29
session: Chapter 5: Input Handling (cont.)
5.1 Keyboard, mouse input
5.2 Unity Input System
5.3 Unity Input Manager
learning_outcomes: TU
materials: FGU301_30
session: Chapter 6: Interactive Programming
6.1 Event Handling: Event-driven programming
6.2 Coroutines: Time-based execution of code
6.3 Serialization: Saving and loading game data
learning_outcomes: IT
materials: FGU301_31
session: Chapter 6: Interactive Programming (cont.)
6.1 Event Handling: Event-driven programming
6.2 Coroutines: Time-based execution of code
6.3 Serialization: Saving and loading game data
learning_outcomes: IT
materials: FGU301_32
session: Chapter 6: Interactive Programming (cont.)
6.1 Event Handling: Event-driven programming
6.2 Coroutines: Time-based execution of code
6.3 Serialization: Saving and loading game data
learning_outcomes: IT
materials: FGU301_33
session: Chapter 7: Advanced C#
7.1 Delegates, events, coroutines
7.2 Unity's component-based architecture (ECS)
learning_outcomes: IT
materials: FGU301_34
session: Chapter 7: Advanced C# (cont.)
7.1 Delegates, events, coroutines
7.2 Unity's component-based architecture (ECS)
learning_outcomes: IT
materials: FGU301_35
session: Chapter 7: Advanced C# (cont.)
7.1 Delegates, events, coroutines
7.2 Unity's component-based architecture (ECS)
learning_outcomes: IT
materials: FGU301_36
session: Hands-on 3: Project 2 - Create Simple 3D Puzzle Game:
Design a puzzle game using data structures and algorithms.
Quiz 3
learning_outcomes: U
session: Hands-on 3 (cont.): Project 2 - Create Simple 3D Puzzle Game:
Design a puzzle game using data structures and algorithms.
Quiz 3
learning_outcomes: U
session: Hands-on 3 (cont.): Project 2 - Create Simple 3D Puzzle Game:
Design a puzzle game using data structures and algorithms.
Quiz 3
learning_outcomes: U
session: Assignment 2 assessment: Project 2 - 3D game
Project Presentations and Feedback
learning_outcomes: TU
session: Assignment 2 assessment (cont.): Project 2 - 3D game
Project Presentations and Feedback
learning_outcomes: TU
session: Assignment 2 assessment (cont.): Project 2 - 3D game
Project Presentations and Feedback
learning_outcomes: TU
session: Chapter 8: Unity Audio
8.1 Importing sound effects
8.2 Playing sound effects
learning_outcomes: TU
materials: FGU301_43
session: Chapter 8: Unity Audio (cont.)
8.1 Importing sound effects
8.2 Playing sound effects
learning_outcomes: TU
materials: FGU301_44
session: Chapter 8: Unity Audio (cont.)
8.1 Importing sound effects
8.2 Playing sound effects
learning_outcomes: TU
materials: FGU301_45
session: Chapter 9: Game Logic and Scoring Systems
9.1 Game Logic and Scoring Systems
9.2 Using AI in Unity games
9.3 Basic networking concepts in Unity
learning_outcomes: IT
materials: FGU301_46
session: Chapter 9: Game Logic and Scoring Systems (cont.)
9.1 Game Logic and Scoring Systems
9.2 Using AI in Unity games
9.3 Basic networking concepts in Unity
learning_outcomes: IT
materials: FGU301_47
session: Chapter 9: Game Logic and Scoring Systems (cont.)
9.1 Game Logic and Scoring Systems
9.2 Using AI in Unity games
9.3 Basic networking concepts in Unity
learning_outcomes: IT
materials: FGU301_48
session: Chapter 9: Game Logic and Scoring Systems (cont.)
9.1 Game Logic and Scoring Systems
9.2 Basic AI concept in Unity game
9.3 Basic networking concepts in Unity
learning_outcomes: IT
materials: FGU301_49
session: Chapter 9: Game Logic and Scoring Systems (cont.)
9.1 Game Logic and Scoring Systems
9.2 Basic AI concept in Unity game
9.3 Basic networking concepts in Unity
learning_outcomes: IT
materials: FGU301_50
session: Chapter 9: Game Logic and Scoring Systems (cont.)
9.1 Game Logic and Scoring Systems
9.2 Basic AI concept in Unity game
9.3 Basic networking concepts in Unity
learning_outcomes: IT
materials: FGU301_51
session: Hands-on 4: Project 2 - Implement 3D game
learning_outcomes: U
session: Hands-on 4 (cont.): Project 2 - Implement 3D game
learning_outcomes: U
session: Hands-on 4 (cont.): Project 2 - Implement 3D game
learning_outcomes: U
session: Final Project Presentations and Feedback
learning_outcomes: U
session: Final Project Presentations and Feedback (cont.)
learning_outcomes: U
session: Final Project Presentations and Feedback (cont.)
learning_outcomes: U
session: Final Project Presentations and Feedback (cont.)
learning_outcomes: U
session: Final Project Presentations and Feedback (cont.)
learning_outcomes: U
session: Final Project Presentations and Feedback (cont.)
learning_outcomes: U