EN

Translate:

Alvaro Chavez Mixco, Game Developer

Alvaro Chavez Mixco, Game DeveloperAlvaro Chavez Mixco, Game DeveloperAlvaro Chavez Mixco, Game Developer

Alvaro Chavez Mixco, Game Developer

Alvaro Chavez Mixco, Game DeveloperAlvaro Chavez Mixco, Game DeveloperAlvaro Chavez Mixco, Game Developer
  • Home
  • Published Projects
  • Other Projects
    • Coursework
    • Personal
  • Blog
  • CV
  • Contact
  • More
    • Home
    • Published Projects
    • Other Projects
      • Coursework
      • Personal
    • Blog
    • CV
    • Contact

EN

  • Home
  • Published Projects
  • Other Projects
    • Coursework
    • Personal
  • Blog
  • CV
  • Contact

Unprofitable Startup

Institution: University of Westminster

Course:    

CCGD011W Computer Games Development Final Project

Date:  Fall 2023 – Winter 2024 

Platform: PC

Game Engine:   Unreal Engine 5.0 / C++ with Blueprints 

Neural Network: Python (PyTorch)

  

Unprofitable Startup is a business simulation game that aims to integrate the usage of neural networks with the gameplay mechanics of managing a company. The game uses a neural network to simulate the company's financial performance. This integrates machine learning with gameplay mechanics.


The neural network is created and trained via PyTorch. This is done based on a company's financial statements and is used to predict the company's net income as the neural network single output.


The neural network is then exported into the business simulation game, which is made with Unreal Engine and used to simulate the company’s performance. How the players manage the company budget will affect the results of the simulations.

Source Code

Some of the core features of this project were:

  • PyTorch Neural Network is used to predict a company's net income. This uses publicly available financial statement data as inputs to create then and train a neural network model capable of forecasting a company’s net income. This process also included different metrics used to analyse and determine the best architecture for the neural network.
  • Integration of a neural network model with a game engine. Using ONNX file format, an intermediate file format representing a neural network, and the Unreal Engine Neural Network Inference plugin (NNI), the neural network can be run in the game engine. Besides the model representation, this also required handling exporting information to properly normalise data to the 0 to 1 range used by the neural network. In the Unprofitable Startup use case, the neural network simulates the company’s performance at the end of each month.
  • Business simulation game mechanics. As the core gameplay mechanics, the player can allocate the budget of the company he is managing, as well as see in detail the different metrics of the company. The player’s actions, in this case, affect the inputs and, therefore, the output produced whenever the neural network simulation is run.
  • Usability features to simplify the gameplay. Strategy games can be complicated and challenging to understand for players. Multiple usability features were implemented to alleviate this issue. Like rounding financial values to millions or hundreds of thousands, making sliders to allocate the budget snap to determined step amounts, a help section explaining how to play the game, and a UI highlighting the company's current state.

In Unprofitable Startup, the player has to manage a company by adjusting its budget to make it profitable. The company simulation at the end of each month is done using a machine learning neural network.

    Unprofitable Startup - Explained Demo

    Unprofitable Startup - Project Report

    Download PDF

    Copyright © 2025 Alvaro Chavez Mixco - All Rights Reserved. All content and trademarks property of their respective owners. 


    Powered by

    Cookes Policy

    This website uses cookies to enhance the content being shown. Feel free to decline the use of cookies if desired, you will still be able to navigate the website.  If you click "Accept", you consent to our use of cookies. 

    DeclineAccept