Imvi: Echoes of Harmony
Imvi: Echoes of Harmony is a third-person open-world advanture game. Utilizing the black and white singularity, explore the vastness of the universe and biome.
Responsibility:
-
Role: Programmer
-
Programmed gravity system and islands
-
Programmed and iterated camera system
-
Programmed juicy camera enhancements and environment asset enhancements
-
Assisted performing optimization
-
Assisted game mechanic brainstorm and iteration
Introduction:
-
Team info: 23 people total in programming, level designing, art, and production discipline
-
Develop time: 8 months
-
Engine: Unreal Engine 5.4

Gravity System:
I implemented the gravity system and the floating islands those "generate" gravity fields. Based on the design, the theme of our game is exploration of the universe, so the character needs to switch between gravity state and no-gravity state from time to time. Specifically when the player enters the gravity range of a planet (or island), the direction of player's gravity changes to the direction of the island's gravity, indicating. And as the character leaves the island, the gravity is reset and the gravity constant is set to zero since the player is now returned to the zero gravity area.
The transparent cone outside of the solid cone indicates the gravity area of a floating island, changes player's gravity upon contact.
Camera System:
The task is to design, iterate, and create a camera system that fits our game. Imvi: echoes of harmony favors the frequence change in gravity and the zero-gravity "floating" experience, so should the camera first support such game mechanism, second enhance the player experience.
The approash is to consider the camera orientation as a combination of a "base" and a "delta". By default, when the player is on the ground, the "base" is always the default coordinate system where X, Y, and Z being world forward(1,0,0), world right(0,1,0), world up(0,0,1). And whenever we move our mouse we add rotation into either yaw or pitch or roll, and all those go into "delta". What we eventually get is we rotate "base" by "delta" amount.
Whenever the player lands on a new planet and starts being affect by a new gravity, the "base" rotation is adjusted to match the new coordinate system so that no matter which direction the current player "Z" is pointing towards to, it will always look like the character is standing on a horizontal terrain.
Custom Camera Spring Arm
We are not very satisfied with the default camera spring arm system unreal engine provides us as when the camera view is blocked by an obstacle the camera "teleports" to avoid the obstable, which creates an inconsistant camera movement. So we decide to make the camera spring arm by ourself to improve the camera movement.
Every frame a single raycast is fired from the camera pivot location to the camera, if there's no obstacle between the character and the camera, the arm expands until it reaches the given maximum length. And if the ray hits something, then the camera arm shrinks overtime until the ray no longer jammed.
We feel good with this simple approach because the back face culling makes the character and the surrounding landscape visible even if the camera is moving inside the obstacle.
Skeletal Tree:
In the game, the player can throw two types of singularities, black singularity with attraction and white singularity with repulsion. As originally planned the singularities are the player's primary and only method to move in the universe when there is zero gravity. Later on, we thought that the objects in the scene should also correspond to the force of the singularities in order to make it look more realistic and immersive, so I implemented the skeletal tree.
When a singularity comes close enough, the tree calculates the direction and amount of rotation of each joint relative to the singularity and turns it's branches toward the singularity if it's black, and in the opposite direction if it's white. To achieve a visual effect of being attracted by the black singularity and repelled by the white singularity.

