top of page

Deep Echoes

A four-player cooperative roguelike game where four players control different robotic characters, connected to each other via cables, completing tasks such as defeating enemies and mining in a randomly generated deep-sea environment.

Keywords: Multiplayer, Roguelike, Pixel Art, Shooting, Unity

Development Period: 3 Months (February - May 2024)

Gameplay Preview

Project Introduction

The project was initially created as an entry for the 6th China University Student Game Award (CUSGA) 

Development lasted for three months, from February to May 2024.​

ee6f2c16e077bdc561e289d16403f86.png

​Awards

CUSGA 2024 Best Multiplayer Game Nominee

CYBER SOUSA AWARDS 2024 Best Student Works

MIGU PLAY Unity Engine Application Excellence Award

My Responsibilities

​Programmer, Producer, Technical Artist

5b8ec17801eb4ba9123f5ac0d68344c.png

Coreblazer Game Fest 2024, Shanghai, China

My Key Responsibilities

​Lead & Game Design

​Organized and coordinated a team of seven, ensuring project progress and task allocation. Led core gameplay design and drove iterations of the game experience. Communicated with other programmers, established development standards, and ensured efficient collaboration

​Design

​Organized and coordinated a team of seven, ensuring project progress and task allocation. Led core gameplay design and drove iterations of the game experience. Communicated with other programmers, established development standards, and ensured efficient collaboration between art, programming, and design.

Designed core unique gameplay mechanics, including character functions, weapons, skills, multiplayer on the same screen, and cable mechanics, establishing a battery-centric survival and resource management Roguelike gameplay loop.

Determined the art style: a pixel HD-2D deep-sea aesthetic—a completely unique, non-competitive style that attracts players and judges at first glance. I was ultimately responsible for implementing the rendering pipeline.

Proposed the level design format, breaking levels into multiple smallest units, defining the technical implementation, and developing a generator tool for artists. Established cooperation standards to ensure that randomly generated levels align with the intended design vision.

Took full responsibility for UI panel design and programming, creating a character selection panel with complex hierarchy and interactive feedback, as well as various in-game player status panels and their responses to different events.

Designed visu effects and environmental concepts, creating a deep-sea-style environment, writing technical requirement documents, and fully implementing a dynamic seaweed shader, underwater caustics, and simulated Tyndall effect for pseudo-volumetric lighting.

SelectUINeed.drawio.png
Explorers.jpg

The right image shows the early development stage, where I established the UI framework and provided detailed asset requirements for the artists. At this point, I had independently completed the design, UI panel programming, and animations.

​

The right image illustrates an early explanation for the team, detailing the relationship between players and the battery, conceptual values, and the conditions for connecting/disconnecting players from the power source.

​Multiplayer Control

Supports Up to 4-Player Local Co-op, Supports Both Controller and Keyboard Input, Use Unity Input System and PlayerInputManager for Multiplayer Input Management and Player Instantiation

Each character has its own unique primary and secondary weapon. Players can choose a third weapon slot, allowing for team-based class builds and strategic customization.

​Pixel-Style Rendering

I studied and summarized techniques from Dave the Diver and Octopath Traveler, combining 2D sprite characters with a 3D game environment to design the rendering style.

图片2.png
图片3.png

Fetching Model Data

Procedurally generate pixelated animations

Merged Rendering

Frame Extraction, Downsampling, Merging

The artists provide models and skeletal animations. I wrote a program that performs frame sampling based on the required animation frames, extracts model normals and vertex data, and renders them into a sprite sheet.

After downsampling the textures, obtain pixelated base color, normal, and emissive maps. Then, by writing a shader, use alpha test to clip the plane and merge the rendered results onto a flat surface.

ShooterLeft_Idle_Emission.png
ShooterIdle_Color.png
ShooterIdle_Normal.png

Extract 12 frames from continuous skeletal animations, downsample to obtain pixelated images, and render three sets of sprite sheets for base color, normals, and emission

Procedurally Generated Levels

Enemies, maps, mission, events are all procedurally generated. Players dive into a dungeon-like underwater level, searching for the boss at the bottom.

Depth-First Search (DFS)

the map is treated as an n × m grid. A start and an end point are randomly selected from the top and bottom grid cells. DFS is then used to generate a path network that connects these two points.

图片4.png

Wave Function Collapse (WFC)

Create different basic terrain block prefabs, such as crossroads, corners, and straight paths. These blocks, each with a different number of openings, are placed according to the DFS-generated path while following constraint rules. As a result, starting from the spawn point, all initially uncertain grid cells will collapse into a determined terrain block, forming a structured level.

Random Events

Each base map tile contains several positions for randomly generating various GameObjects—such as reward boxes, quest items, mining nodes, and enemy spawn points. Enemies are spawned in groups, and each time a group is generated, the type and number of enemies will vary within certain constraints.

图片5.png

How the final map looks like

Last Updated: March 14, 2025

bottom of page