Riverside Ruins
Riverside Ruins is a first-person adventure game I created as a student solo project in Unity. Players kayak and hike through ancient ruins in the jungles of Central America, solving puzzles in pursuit of a mysterious artifact. This project was heavily inspired by the Uncharted series.
|
|
|
WHAT I CONTRIBUTED
|
PROCESS
1. Concepting and outline: First, I decided the concept for the game and assembled moodboards for the environment. I outlined the story arc and each of the main areas I wanted to have in the level.
2. Kayak movement and buoyancy simulation: I created a custom first-person kayak controller from scratch with realistic water physics simulation. Using C# scripting and Unity's built-in physics system, I simulate buoyancy and water flow acting on the kayak. Players paddle left and right to control the kayak, and this causes realistic torque and acceleration as well as haptic feedback when played with a gamepad. I wanted it to feel immersive and realistic, but not frustrating as water vehicles in games can sometimes be. I initially planned to have slopes in the river - I had a really exciting idea to do a sequence where you paddle over a waterfall. However, I wasn't able to figure out how to simulate water physics for terrain with varying slopes - it's a complicated problem, and all resources I found online only worked for flat water surfaces (such as oceans or lakes). I spent a lot of time trying to find a solution, but ultimately had to cut the idea and move on. The exact moment I gave up on trying to make it work was when I encountered the bug in the gif to the right. 2. Systems implementation: I then implemented the gameplay systems for dialogue, object pickup and drop, and puzzle interactions. For the dialogue, I used a modified version of the system I created for Pond Scum. The functionality I created for object pickup and puzzle interactions is inspired by Portal's box-and-button puzzles and some of the puzzles seen in Uncharted games. I studied how puzzle interactions work in those games and scripted behavior in C# to emulate it. 3. 2D layout sketch: I designed and built the game's single seamless level with docking points to transition between kayaking and on-foot exploration. During development, I segmented the level into three "areas": the river approach and cave, the exterior city ruins, and the temple interior. For each of these sections, I first drew a map with notes on intended gameplay before I started building in-engine. 4. Terrain sculpt and greybox: I modeled the terrain and constructed the shapes of the environment using untextured primitive shapes. I then placed interactables, like dialogue triggers and puzzle elements, so that the level was fully playable. 5. Playtest and revise: I played through the level several times and conducted some external playtests to understand how players move through the space. Then, I revised the level layout and continued playtesting and iterating. 6. Art and lighting pass (set dressing): I painted textures and vegetation onto terrain, replaced greybox primitives with final assets, placed point and spot lights, and added other VFX to create a beautiful and immersive environment. 7. Audio pass: I collected music and sound effects from creative commons audio libraries and implemented spatial ambient audio to enhance the atmosphere and sense of immersion. |