ICHealthHack2019

Team Number: 7 Category: Health Education game

Our Idea:

Our game is based on the battle between pathogens and white blood cells that happen in the human body on a daily basis.

White blood cells (neutrophils) attack pathogen cells to stop them from harming the body, whilst pathogens attempt to survive through attacking bodily cells and gaining the resources to reproduce.

Upon joining, users will be allocated to a random team, either white blood cells or pathogens.

The task for the pathogens is to attack and kill all the cells available to harvest, whilst the white blood cells have the responsibility of stopping them.

Technologies Used:

Front End: Unity

Server side: NodeJS

Music: Lyrical Protest, algorithmically generated using JukeDeck

We implemented our logic and computation on a NodeJS server flexible for handling asynchronous transactions between clients to the server, whilst also providing a lot of helpful functionalities for our computation. Our server produced new positionings for the game elements each time the client communicates with the server (which happens on a constant cycle during the socket connection). This API will act as the facilitator for sending the necessary data for the client to see the new game state in their client window.

Challenges

  1. Learning Unity within a day - this was a challenge for all of us, given that we all had limited knowledge of Unity beforehand, and the C# and .NET framework as well. To overcome this, we constantly looked at tutorials and primarily coded our Unity solution with our experience in programming, but did use Blender and GIMP for creating our visuals. We imported this into Unity and had Unity as the glue between our program and our assets.

We initially did have problems regarding the languages we were to use at the start, but after some consideration, Unity was best for our client-side program, whilst using NodeJS for our computation due to our experience in it and its ease of use for Web APIs.

  1. Direct Socket Connections - this one was a killer to solve, but we finally did it. We didn't want to reveal a very public Web API, so we relied on the use of sockets from using one of our devices as the server, whilst users that accessed the app had to ping our server constantly as a client. Testing was done majorly through Postman (which was incredibly helpful!)

This took some time understanding the necessary protocols to use, with us going with using primarily POST HTTP requests over IP address connections, and also implementing due to the rigidness of the format of how requests are done in C#. We also had to spend a majority of our time on serialisation due to the difference in typing of the languages we used. This also played a major role on how we implemented our data structures to reduce the need for excessive serialisation.

What Could Be Improved / Done Next

  1. Adding textures
  2. Adding in-game text
  3. Having experience with Unity and Sockets in general.
  4. Time Management (we underestimated the greater difficulty in using a 'harder' language such as C#.
  5. Add antitoxins and toxins
  6. Add types of viruses
  7. Having tooltips
Share this project:

Updates