Karsio Engine and Game

Group course project for the Games Programming course (Computer Science 585 at the University of Calgary) I took in winter 2018 and where I worked in a team of 4 (Ben, Rukiya, Brian, and myself) to build a game engine and of course the game itself.

Source code


Project Summary

Objective

Make a driving game within a semester in a team of 4 computer science majors.

Libraries Used

  • OpenGL - rendering API
  • OpenGL Extension Wrangler Library (glew) - calling OpenGL functions
  • GLFW - window and input capture
  • OpenGL Mathematics (GLM) - all linear algebra computations
  • FTGL Font Library - fonts
  • Open Asset Importer Library (assimp) - model loader
  • stb - image importing
  • PhysX SDK - physics engine
  • Fmod - audio engine

Our Idea

Battle royal driving game blended with growth mechanics based on slither.io.

Features

  • Upgrade system.
    • Chassis:
      • Unlocks higher level upgrades but makes you larger and slows you down.
    • Gun:
      • Ranged weapon deals more damage or fires faster.
    • Armor:
      • Take less damage when hit.
    • Ram:
      • Deal more damage when ramming your enemies.
  • Resource crystals.
    • Blue crystals needed for upgrades.
    • Red crystals restore health.
  • AI makes use of crystals and upgrades.
  • Sound effects and music.
  • Procedural level.
  • Lock on targeting.
  • Custom art assets.
  • Entity component system for entity organization.
  • Uses Nvidia PhysX for collisions and driving model.
  • Keyboard and Xbox controller supported.

My Contributions

Render Engine

  • 2D user interface rendering class.
    • FreeType text.
    • Image planes.
  • 3D renderer for currently active models.
    • PBR materials.
    • Shadow mapping using a central point light.
    • Crystals slightly change color based on the user’s view to create a sparkle effect.
    • Space skybox which can be best seen on the main menu.
  • GLFW window setup.

Art Import System

  • Parse .ini files to find art assets.
  • Models loaded using assimp.
  • Textures loaded using stb.
  • Shaders compiled and readied.

Credits

  • My excellent team members Ben, Rukiya, and Brian.
  • LearnOpenGL for helping me figure out how to use OpenGL.
  • Space skybox generated using Spacescape.
  • All the previously listed libraries used in this project.

Gameplay

Video

For some reason audio wasn’t recorded (and it may be copyrighted anyway) so for the full effect, get the game on GitHub and compile it yourself.

Artwork

Ingame Screenshots

Rukiya’s Concept Art