Project Launcher

Hantendo Switch

Hantendo Switch is an interactive project launcher for applications running on my homelab.

Each project is containerized with Docker, deployed on Kubernetes, and automatically updated through GitHub Actions CI/CD pipelines whenever changes are pushed to the main branch.

Rather than simply showing the source code, I wanted to make the projects easy to explore and experience directly. Select an icon below to launch and interact with a project.

More information about each project, including controls and usage instructions, is available below the launcher.

Hantendo SwitchProject Launcher
960px × 550px / scale 1.00

Installed Software

Projects

Details, controls, and technical information for the applications.

01

Demo

Demo is a simple screensaver-style static application. It was created mainly to test Hantendo Switch and different parts of my homelab infrastructure.

I use it as a small and predictable application for verifying infrastructure changes before deploying larger projects.

A focused public version of this project is available on GitHub.

Deployment

Verify Kubernetes deployments and container updates.

Routing

Test ingress routing and application paths.

Static Hosting

Validate the hosting of frontend-only applications.

CI/CD

Test automated builds and deployments through GitHub Actions.

02

DNS Visualizer

DNS Visualizer is a project built with a React and Vite frontend and a Go backend.

Enter a domain name, and the application validates the domain before visualizing how iterative DNS resolution travels from the 13 root name servers toward its IPv4 address.

How to Play

01

Click and drag the map to explore the DNS network.

02

Follow your current objective using the quest panel on the right.

03

Click a discovered DNS server to ask it the current domain question.

04

Clicking a locked server creates a new quest to discover its IP address.

05

Completing a quest rewards a key containing a domain and IP address pair.

06

Drag the key onto its locked server to unlock it and continue the lookup.

I wanted DNS resolution to feel less like reading a textbook and more like solving a puzzle. I hope this project helps make iterative DNS resolution easier to understand.

A focused public version of this project is available on GitHub.

03

Eclipse

Web Version

The original native C++ game was ported to WebAssembly using Emscripten so that it could run directly inside Hantendo Switch.

Since this is a browser port, it is more laggy and buggy than the original desktop version.

Eclipse is a top-down survival shooter created by a team of seven students for UBC CPSC 427: Video Game Programming using C++, OpenGL, and an ECS.

Survive for as long as possible in the darkness using only your flashlight while searching for campfires throughout the map.

Team Credits

Nanjou Olsen

Procedural World Generation and Team Coordination

Designed and implemented the complex procedural world generation system and coordinated the team throughout development.

Nishant Molleti

Progression, Difficulty, Visuals, and Quality of Life

Developed level progression, difficulty scaling, visual elements, basic lighting, and numerous quality-of-life features across the game.

The other four team members will remain unnamed until I receive their permission.

My Contributions

Enemy Animations

Implemented enemy animations using state machines and sprite sheets.

Boss Enemy

Developed the primary boss enemy and its related behaviours.

Boss Skeletal Animation

Implemented bone-based skeletal animation for the boss tentacles.

Minion Boid Swarms

Implemented swarm behaviour for boss-spawned minions using the boids algorithm.

Particle System

Built an instanced particle system for effects used by enemies, attacks, and combat events.

Additional Animations

Implemented smaller gameplay animations, including item collection and interaction effects.

A focused public version of this project is available on GitHub.

Main Controls

W / A / S / D

Move the player up, left, down, and right

Mouse

Aim the flashlight and gun

Left Click

Shoot the gun

R

Reload the gun

E

Interact with a campfire

Left Shift

Dash

Escape

Return to the main menu

Debug Controls

These controls are available as cheats for experiencing the game more quickly

C

Show the player's circular and mesh-based bounding boxes

G

Regenerate the world

B

Trigger the boss battle

=

Restart the game

[

Open the inventory

]

Add 1,000 Xylarite

Attribution

I would like to properly attribute every asset used in this project. Unfortunately, I do not know the original sources for assets outside the parts I worked on. Below are the sources I am aware of.

Slime enemy sprite sheet — PixelMikazukiPredator Plant Mobs Pixel Art Pack — CraftPixPixel Monster Pack 1 — BatareyaTrees of the Demon Gods — BabanagiPress Start 2P — CodeMan38