View on GitHub

Ri-Karts!

The best Yo-kai racing game (probably the only one)

HOME

ABOUT US

Profile picture

Name: Guillem Travila.

Role: Programmer.

Contact:

LinkedIn

GitHub

Mail: traguill1@gmail.com

My Job:

Because we started from the basic Engine I created for another class, I’ve spent almost all the development working on the engine and improving its functionality. At some points, I’ve worked in the graphics part creating the shaders that were needed for the game.

What I’ve done:

During the project, I’ve worked in the following features:

Resource Manager

I had to add more functionality to the existing resource manager to be able to work in group. At the end, the resource manager was able to:

The major difficulty was maintaining a version control of all the assets in different computers.

Prefabs

This was another feature required to work fluently in a large group. The prefab system is able to add and remove new GameObjects in the prefab hierarchy as well as changing any value of any component of any GameObject of the prefab hierarchy and apply the changes at runtime.

The following video shows how to use prefabs in Ezwix Engine:

Prefabs demo

Shaders

At the beginning, the team decided to go with a cell shading style.

cell_shading

In the end, it was decided to go with a more realistic style, so I changed the shaders to Phong. I did several variations of the shader: the classic one, with a normal map, with the mesh animated and with the mesh animated and a normal map.

phong phong_normal animation

The vertex deformation of a GameObject with animation was done through shaders to take advantage of the GPU and reduce the CPU computational cost. Also, I was asked to do a shader for the water like the one in The Legend of Zelda: The Wind Waker. Here is the result:

water

Particle System

I was responsible of making the particle system from scratch as well as implementing all the particles in the game. At the beginning, I implemented the system all updated through the GPU, the particles position was updated in the GPU so the CPU just had to manage the creation. This method was discarded because sorting each particle position depending on the camera distance in the GPU was too complex. After that, I changed the system to update the positions through the CPU and I added all the functionality that the artist need it.

Some of the most interesting features of the system are:

particles

burst particle_anim

particle_game

The following video shows all the features of the particle system:

particles demo

Shadows

This feature was implemented at the end and due to time limitations the shadows are in low resolution and perform very poorly (but do their job!). The shadows are mapped in a 4096x4096 texture and updated at real time for the whole map (very optimal…). However, I had time to improved it a little bit implementing the Percentage Close Filtering method.

shadow_bigshadow_small