top of page
ForestPaintMain.png

About Forest Paint

Platform: Mobile

Project Duration: 4 Months

Project Type: University/ Group

Engine: Unity

Team Size: 6

My Tasks

Forest Paint was the first project during which I took a lead role for the development overall. My tasks included the creation of C# code for gameplay purposes and the overall system regarding interactions of different game features; building and maintaining the game within the Unity Engine Editor by creating a folder structure, importing assets, creating prefabs, placing game objects, and keeping up order and naming conventions; supporting artists and designers; maintaining source control with GitHub; making builds and testing the game on android phones; optimization of builds; creation of flow charts and diagrams for the applications structure.

Additionally, I participated in the design process of the game by helping with narrative and level design decisions as well as creating examples and flow charts for the UI.

The Game

Forest Paint is a relaxing mobile puzzle experience, through which players can take a break from their daily routines and connect with nature. We specifically chose painting as a recreational form of art, as well as the forest, which is a natural mental stabilizer, to reach our goal of providing a peaceful experience that calms the mind. Gameplay wise, we were heavily inspired by House Paint, a mobile game on the android store. During the concepting phase, I focused on the games ability to let players experience novelty, competence, and aesthetics, by providing the them with multiple unique "magical" forests, including levels increasing in complexity, and a cartoonish art style. Although, we were only able to finish one of the planned forests, players enjoyed it a lot and we won two of a total of five awards, namely the "Eye-Candy Award" & "Hype-Machine Award", available during the student festival (A showcase of all student projects at the end of the semester).

Feature Example

This code snippet shows the GamePlayManager class for Forest Paint. It handles state switches via an event, other classes have subscribed to and change their behaviour based on. For the state to switch, the UpdateGameState function can be called the new state is passed through as an argument. The states itself are enum based.

using UnityEngine;

#region Script Explanation
// This is the Game Play Manager. It will keep track of the current game play state.
// It will regulate behaviour on objects subscribed to the "gamePlayStateChanged".
// It will also contain information different iterations of the game (Toggle on/off different functionality)

// The amount of states can be adapted any time
#endregion

public class GamePlayManager : MonoBehaviour
{
  [Header("Manager References")]
  [SerializeField] private SceneAndLevelTracker sceneTracker;

  [Header("General SetUp")]
  public GamePlayStates gamePlayState;
  public delegate void StateSwitch();
  public event StateSwitch gamePlayStateChanged;
  public Camera cam;

  private void Awake()
  {
       sceneTracker = FindObjectOfType<SceneAndLevelTracker>();
       cam = FindObjectOfType<Camera>();
  }

  private void Start()
  {
       gamePlayState = GamePlayStates.idle;
  }

  public void UpdateGameState(GamePlayStates newState)
  {
       gamePlayState = newState;
       switch (gamePlayState)
       {
           case GamePlayStates.idle:
               break;

           case GamePlayStates.loadingWorld:
               break;

           case GamePlayStates.initializeWorld:
               break;

           case GamePlayStates.gamePlayPlaying:
               break;
       }

       if (gamePlayStateChanged != null)
       {
           gamePlayStateChanged();
       }
  }

  public enum GamePlayStates
  {
       idle,               //GamePlayManager is idle

       loadingWorld,       //Loads the new set of levels and activates required Level
                           //FIRST LEVEL on first time entering the level set, or LAST LEVEL form save file

       initializeWorld,    //Initializes the world and level with all necessary references (Classes and/ or objects)        

       levelFinished,      //Game has met completion requirements and is (maybe) awaiting player decision

       levelSelection,     //Player can choose which level to play next

       gamePlayPlaying,    //Allows behaviour on objects during the actual game play session

       gamePlayPaused,     //Allows or stops behaviouir during a paused game

       saveGame            //Necessary information gets put into the save file
  }
}

Edgar Alexander Knauer

©2022 von Edgar Alexander Knauer. Erstellt mit Wix.com

bottom of page