> For the complete documentation index, see [llms.txt](https://kdoore.gitbook.io/cs2335/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://kdoore.gitbook.io/cs2335/master_v2/project-2-statemanager/project-2-learning-objectives.md).

# Project 2 - Learning Objectives

## Learning Objectives:

* Understand simple **State Machines** (StateManager)&#x20;
* Understand **Singleton pattern**, and how to implement the singleton pattern in code
* Understand how and why to implement an **interface in C# (IStateBase)**
* Create a project with multiple scenes where **scene transitions are managed by the State Machine: StateManager**
* Create Simple **Conversations / Dialogs**
* Specify **Logic for changing scenes**
* Store and access data using **C# Dictionary.**

{% embed url="<https://learning.oreilly.com/library/view/advanced-game-design/9780134668185/ch2.xhtml#ch2>" %}

Michael Sellers, Advanced Game Design

![Game-Loops: Image below from Michael Sellers, Advanced Game Design ](https://2944698967-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M0-KLgOacVpbicrqehO%2F-M1_bKyeAXcYiaBqJHhE%2F-M1_bVgTGaCAfekp-L1c%2FScreen%20Shot%202019-04-14%20at%203.31.42%20PM.png?alt=media\&token=8d376bff-2395-47cb-9580-03c2a74bdb1b)
