Unity

The game was built in Unity using C# and implements mesh collision, camera, and character movement. The world environment features custom 3D models created by our team that reflect player feelings.

ML

Fatigue prediction was accomplished using numpy and pandas for data manipulation. Scipy & python statistics were used for feature construction (scipy for fast Fourier transforms, skewness, and kurtosis, numpy for generating covariance matrix & its eigenvalues, statistics for generating mean/standard deviation). Features were selected using sklearn's mutual information library, and a CNN was constructed using tensorflow and achieves MSE of 0.18 in predicting player fatigue on a scale of 1 to 10.

Emotion prediction Data was first normalized using sklearn.preprocessing, and then an SVC was trained using sklearn's svm library. An accuracy of 87% was achieved in classifying emotions using EEG data as one of positive, negative, or neutral.

Procedural Terrain Generation

The game’s terrain mesh is entirely procedurally generated. The terrain shape is formed by applying a non-linear transformation to multiple layers of 2D Perlin noise at decreasing frequencies, while the colour of individual terrain cells is determined by their slope. Trees and other environmental elements are placed in a weighted distribution that favours flatter regions of terrain.

The terrain mesh is constantly changing. A more focused or happier player will get terrain that is more difficult to navigate. Shading and character speed change based on fatigue level (a fatigued player will have a slower character; the screen will get darker as well).

Share this project:

Updates