Spirit Hunter

made with C++ and OpenGL ES

Technical details

  • Client

    Epitech

  • Prog. Languages

    C++ / Obj C / Java

  • Libraries

    OpenGL ES / Physic bullet / Cardboard SDK

  • Plateforms

    iOS / Android

  • Date

    Sep 2016 - Feb 2018

Project description

Spirit Hunter is a VR game made from a custom game engine for mobile devices. We used Google Cardboard as VR headset reference.
This game has been developed in almost 2 years by 5 persons (including me). It’s part of my final project at Epitech.

1. About the game

The player visits buildings or areas that have a scary background story and unsolved crime cases. The player become a Spirit hunter and can communicate with spirit through different spirit hunter tools. The game end when the player discovers the true story about the crime case.

In game, the player moves by triggering and holding the only button of the Google cardboard. It will move toward the player is looking at.

It’s also possible to interact with some objects by looking at them and trigger the button. (Grab an object, Search in a drawer, …).

Finally, the player can display an inventory by looking at his foot.

2. About the game engine

The project architecture is split into 3 parts. iOS development (written in Objective C), Android development (written in Java) and the game engine development (written in C++).

We used OpenGL ES to display graphics.
We used Physic Bullet to deal with the physic.
We used Cardboard SDK to set up the VR and play 3D sounds.

The game engine is able to do the following :

  • o 3D Object features :
    • - Load / Display a 3D model (OBJ format) with a texture (PNG fomat)
    • - Display a basique shape (Cube, plan)
  • o Light features :
    • - The game scene can contain more than one light
    • - Different kind of light are available (Point, Spot, Directional)
    • - Dynamique light
  • o Sound features :
    • - Load / Play a stereo or 3D sound (WAV format)
    • - Play multiple sounds at once (Channels management)
  • o Game scene features :
    • - The scene is load from a JSON file
  • o Physic features :
    • - Basique collisions (cube et sphere)
    • - Gravity
  • o Player controller features :
    • - Movement
    • - Search inside a furniture
    • - Grab an object
    • - 3D inventory
  • o Events related features :
    • - Triggered by a collider

3. About what I did in the project

On the game engine, I made the features related to lights, 3D objects, sounds.

I wrote the shaders that we used to display 3D objects. I followed the phong model implementation. Because we need to use OpenGL ES 3.0, we only used Vertex and Fragment shaders.

I’m also the one who made all the iOS development. The iOS development implies making the application menu, Compiling the game engine and loading files.