Portfolio

Some of My Work (Updated Continuously)

Contents

【Unity Game】Tank Drone War

A 2D top-down tank defense shooter built in Unity, designed around the SOLID principles.

Full Source Code: On GitHub

Demo: On itch.io

Project Notes on SOLID: SOLID Principles in Project Practice

Project Info

Type Tech Stack Category
2D Top-Down Shooter C# + Unity 2022.3 Extended Project

Overview

This is a 2D shooter game developed in Unity. I built the basic version while learning the SOLID principles, then expanded it into a more complete system. The focus is on scalable architecture and decoupled systems for multiple characters and weapons.

Core Gameplay

  • Players can switch between three types of tanks: Light (L), Medium (M), and Heavy (H)
  • Each tank has unique movement, weapon type, and damage model
  • Enemy drones spawn continuously from the right side of the screen; players earn points by shooting them down
  • If a drone crashes into a tank, that tank is deactivated; the game ends when all tanks are down

Extensions

New Medium Tank (Vertical Movement)

  • Added via inheritance and interfaces without modifying existing tank logic
  • Medium tank has moderate speed and movement range, between light and heavy tanks

Weapon System Refactor & Expansion

Each tank has its own weapon type, implemented using the Strategy Pattern for flexibility:

Tank Type Weapon Features
Light Tank Laser Short cooldown, lowest damage, spread
Medium Tank Bullet Medium cooldown and damage
Heavy Tank Rocket Long cooldown, highest damage

Differentiated Damage System

  • Tanks take different amounts of damage
  • Heavy tanks are the most durable; light tanks are the most fragile

New Heavy Drone (Random Vertical Movement)

  • Uses a separate movement strategy for more complex enemy behavior

Difficulty Curve for Enemy Spawning

  • Heavy drones are rare at the start
  • Their spawn rate increases over time
  • Controlled by a time-based, configurable spawn strategy

Design Highlights (SOLID in Action)

  • Single Responsibility: Clear separation of concerns for tanks, weapons, enemies, and spawners
  • Open/Closed Principle: New tanks and weapons can be added without changing existing code
  • Liskov Substitution: All tanks are controlled through a common interface
  • Interface Segregation: Movement, attack, and damage behaviors are split into separate interfaces
  • Dependency Inversion: High-level modules depend on abstractions, not concrete implementations

Gameplay Video

Animal World

Implementation of FSM and Boids Algorithm.

Project Overview

Category Tech Stack Role
Algorithm Implementation C++ + raylib Solo Project

Project Description

This project was independently completed during my second year in the Game Design program, with the goal of simulating a dynamic ecosystem. Grass, sheep, wolves, and crows each follow distinct behavioral patterns:

  • Grass grows and spreads
  • Sheep search for and eat grass, avoid wolves, reproduce, or wander
  • Wolves hunt sheep, reproduce, or wander
  • Crows randomly fly in and out of the scene

Through the interaction of these behaviors, the grassland ecosystem gradually develops into a state of dynamic balance.

Highlights

  • Utilized a Finite State Machine (FSM) to manage animal behavior logic, enabling clear state transitions and responsive mechanisms
  • Applied the Boids algorithm to simulate flocking behavior of crows, enhancing realism and dynamic expression
  • Built a foundational ecological cycle system supporting grass growth and spread, animal reproduction, and resource consumption

Showcase

🔗 Source code on GitHub

Hum to Heal

Collaborative Rhythm Game with hand-clapping, exploring the healing power of music and interaction

Project Overview

Category Tech Stack Showcase Experience
Arcade Rhythm Game Unity + C# 2023 Gotland Game Conference

Project Description

Players stand at the four corners of the machine and clap hands with adjacent partners to hit note blocks, creating rhythmic coordination. The design encourages interaction and a sense of rhythm among players, making it enjoyable for friends to play together while also serving as an icebreaker for strangers. At the exhibition, the project received enthusiastic feedback and attracted a large number of visitors to try it out.

Role

I independently handled all programming and technical implementation, including note detection, rhythm synchronization, and player input logic. In addition, I designed and created a player accessory—gloves—that integrate physical feedback with game mechanics, enhancing immersion and player experience.

Game Showcase

Level Selection Screen
Level Selection Screen
Tutorial Screen
Tutorial Screen
1st Level Game Screen
1st Level Game Screen
2nd Level Game Screen
2nd Level Game Screen
3nd Level Game Screen
3nd Level Game Screen
Team and Event Day
Team and Event Day

Video Effects

CC BY-NC-ND
Last updated on Mar 11, 2026 19:01 +0800
发表了12篇文章 · 总计5万0千字
本博客已运行
Built with Hugo
Theme Stack designed by Jimmy