For the past year I’ve been working solo on a game project named “Rift Drifter”. After House of Math I had a lot of experience with the super light game engine called PlayCanvas, which is designed for making 3D applications for the web browser! I wanted to see how far I could push it.

The result was what I would call a “passion vanity project” where I have attempted to make a full fledged 3D platformer/puzzle RPG game from scratch. And by scratch, I mean REALLY FROM SCRACH. PlayCanvas as of date does not have terrain generator, nor even an animation path system, nor splat map, garbage collector, nor any of the other luxuries most other engines has. So it was my deepest pleasure to make all of this bottom-up (see a list below with the largest features I have made so far).

You can play a demo of the game here, but please note that it is not a finished product:

.. or you can enjoy this little showreel I did of the current state of the project:

The main features I’ve implemented so far is:

  • Simplified light effects. To make fancy effects like over-exposure, under-exposure and god-rays in a highly optimized and simple way.
  • Inverse Kinematics solvers. Two different real-time IK solvers with possibility of restraints.
  • Procedural animation. With smooth transition to normal animation. All player avatar animations when walking, running and jumping normally is completely procedurally generated (incl. floppy ears!). Double jump somersault is a normal animation overlaid.
  • Volumetric faking. Shader effect to create the illusion of volumetric clouds etc. with low computational requirements.
  • Water effects. Carefully picked effects with respect to optimization. Depth fading, displacement, wave generation and underwater fog being the main cherry.
  • Plant step-on and wind effects. Simple shader effects to make the environment feel more reactive.
  • Terrain generator with clutter distribution. Generating a terrain from a height map, and distributing clutter according to a mask.
  • Splat map implementation. The possibility to use a texture mask to decide the distribution of up to 5 different tillable texture sets.
  • Texture anti-repetition. Optional (optimized) shader logic to make tilled textures appear less repetitive by breaking the symmetry.
  • Travel path animation system. The possibility to make a unit follow smooth paths in 3D space based on checkpoints placed out in the editor and various settings, incl. position curves, play order, etc.
  • Asset loading/unloading and garbage collection controller. Yes, this has to be kept track of and done manually -_-
  • Dialogue. Simple dialogue system that plays a dialogue from a JSON file. Remembers dialogue progress and has the possibility of playing animations as reactions to the conversation.
  • Menu and language select. Simple menu and possibility of changing language real-time (most logic was already present in PlayCanvas).
  • Saving and loading of progress. Currently only to local storage.
  • Simple rewards / collectibles. Cosmetics still pending.

* Requires username and password (ask me if I haven’t sent it to you).