About ME

Hi! I'm Christian, and I am an aspiring gameplay engineer/game designer. I am a graduate from the University of Wisconsin-Madison with a degree in Computer Science, as well as certificates in Game Design and Business. I have been programming and making games since a very young age and am very passionate about creating new, fun experiences for players to enjoy. While my main focus is programming, I have also been able to develop my skills in other disciplines such as music, design, and art.


Highlighted Projects

(Click on each image to learn more)

Cybersky Horizons
(2024 - Wip)

3D Online Multiplayer 3rd Person Shooter

Arcane Ascent: The World's Odyssey (2023)

2D Side-scrolling Rogue-like

Astral Diastrophism
(2022)

3D Turn-Based JRPG

What Once Was
(2023)

3D Scavenger Hunt Experience

Slimey Shootout
(2020)

2D Platformer-Shooter


Skills


Resume


Contact Me


© 2024 Christian Visaya


Highlighted Projects

(Click on each image to learn more)

Arcane Ascent: The World's Odyssey (2023)

Astral Diastrophism (2022)

What Once Was (2023)

Slimey Shootout (2020)


Cybersky Horizons

Cybersky Horizons is an online multiplayer 3rd-person competitive shooter. Select from a range of characters with different playstyles to take out your opponents in a fast-paced, movement-oriented experience. Replenish ammunition by wall-running, and quickly move around with ground slides and jump cancelling.

The main thing that I wanted to accomplish when starting this project was to develop my skills in online networking to build a comprehensive online multiplayer experience.
- Utilizes Unity's Netcode for GameObjects, Relay, and Lobby services.
- Gained familiarity with Server/Client RPCs and Network Variables
- Continuing to work on handling disconnects/poor connection

Character Select Screen

Online Lobby

Tutorial Level

Besides networking, I was in charge of:
- Level design/greyboxing
- UI Design
- All core mechanics and implementation in scripting
- Character design using VRoid Studio in tandem with free assets on Booth
- Animation control utilizing free animations on Mixamo
- Most sound effects in FL Studio

Character Stats

Online Gameplay

Networking Object Initialization

I have many future plans for this project, including:
- The addition of a single player campaign (currently in the works, but likely setting aside for now to keep game within scope)
- Replacing greyboxed levels with real assets
- Replacing music with my own assets
- Additional multiplayer game modes
- Adding two more playable characters
- Adding a more robust online experience

Additional Credits:
- Some clothing for characters by Pseudonymnity on Booth
- Music and some sound effects were royalty free online


What Once Was

What Once Was was made by myself for a "Tools in Game Design - Unity" class. You play as Emi, a girl now grown, reminiscing deeply on her days as a child. Players traverse Emi's mindscape and memories in an atmospheric, slightly unnerving story-oriented game.

In-game beach scene

In-game ending scene

In-game carnival scene

While I was already familiar with many of the tools I utilized from projects such as Astral Diastrophism, I was still able to learn and develop a lot from this project:
- Creating my own animations in Unity's animation pipeline
- New 3D modeling techniques within Unity using ProBuilder
- I also made the music track for the title screen using FL Studio

Implementation of movement for Swan Boat vehicle in carnival scene.

Editor view of final scene

Additional Credits:
- All 3D assets were free on the Unity Asset Store
- Music and sound effects were royalty free online
- Some scripts were provided in class.


Arcane ascent: The world's odyssey

Arcane Ascent was made by myself and one other person for a week-long game jam hosted by Respawn Games and UW-Madison's "RecWell". You play as a personification of the tarot card "The World", who sets out on a quest to bring an end to the rampages of the other Major Arcana.Players accomplish this by defeating waves of enemies utilizing platformer-fighter style mechanics. At the end of each wave, players select from a random draw of fortune cards to aid them in their progression. After a set amount of waves, players challenge a boss. Players must complete this cycle three times, approaching a new boss each time. In total, we were able to implement 4 unique weapons, 18 fortune cards, and three bosses.

Devil boss fight

Minor Arcana (Weapon) Selection

Tarot Card Selection

For Arcane Ascent, I was in charge of:
- All core mechanic implementation using C#
- Music and sound effects using FL Studio
- Sprite swapping using Unity's animation pipeline
While I had worked in each program before, a lot of the techniques used were new to me for this project.

Boss music in FL Studio

Animation Controller for "The World"

Implementation of Devil's "Teleport->Bullet Spray" attack

During development, my partner and I had attempted to uphold a very rough imitation professional development workflow. In particular, we sought to maintain a comprehensive asset list, as well as maintaining a personal "agile-like" backlog with "daily sprints".

Snippet of our final asset list

Snippet of the feature backlog

While this project is technically "complete", my partner and I intend on revisiting and polishing this project. Specifically, we aim to add more polished and sophisticated UI, more impactful and relevant player feedback, more polished animations, rebalancing and rethinking of weapons and fortune cards, and ultimately, more fortune cards, weapons, and bosses.

Additional Credits:
- Kaylee Herrmann: All art assets
- Sword "swoosh" sound is a royalty free sound effect from online

- Large portion of Player Controller behavior comes from "Tarodev" on YouTube


Slimey Shootout

Slimey Shootout is a personal project I pursued in order to teach myself how to use Game Maker Studio 2 during Christmas break in high school. The program was on sale, and it seemed like the perfect engine to begin my game development journey, as this was the first game I had made in a "legitimate" engine. You play as a slime who sets out to defeat the evil slimes who are terrorizing the land. The game is a platformer-shooter in which players must use their Goo Gun to defeat enemies and break blocks.

Boss BGM placeholder is "Worm Rave" by Metaroom

I was in charge of the game's full implementation in Game Maker Studio 2. This included implementing the weapons, boss behavior, and level select, and all other core mechanics. During development, I would post upload devlog/update videos as a way to track my progress, as well as recording my programming sessions.

*Additional Credits:
- Samuel Kudra: Title Screen BGM
- Sound effects were all royalty free sound effects from online
- Brady Burkle: Environment Tileset
- Level select background is "Angel Island" from the Sonic series


Astral Diastrophism

Astral Diastrophism is a personal project I pursued in order to teach myself how to use the Unity Game Engine during the summer of 2022. It initially started as a Hololive fan game, but I decided to move to original characters to be able to create my own 3D character models using VRoid Studio, as I did not know how to use Maya or Blender at the time. You play as Hotaru, a girl on a quest to find her lifetime friend Mai, who went missing during a cataclysm event known as "The Diastrophism". Players traverse the world of Okuno Chisanahi utilizing JRPG-style navigation and a unique turn-based combat system.

Battle BGM placeholder is "Worm Rave" by Metaroom

I was in charge of the game's full implementation in Unity. This included creating character models in VRoid Studio and importing them into Unity using the UniVRM plugin, applying animations from Mixamo to the models using Unity's animation pipeline, making the music track on the title screen using FL Studio, working with Unity's tools such as Terrain Tools and Cinemachine, and implementation of all core mechanics.

Timelapse BGM is "Float Islands" from the Kirby Super Star Ultra OST
Overworld BGM placeholder is "Undertow" from the Omori OST

This project was a very big learning opportunity for me that played a large role in the formation of my abilities I demonstrate today. Outside of honing skills in implementation, I also had my first experiences with other good development practices, such as keeping and maintaining a feature backlog, continuous updating of a GDD, as well as creating mock-ups to test mechanics before implementation.

Unfortunately, I had to stop development on this project when school began in the fall. If I were to revisit this project, I would certainly clean the code and polish the current game with the new skills I have gained since making this game, and ultimately, I would love to add more content and build out the world of Okuno Chisanahi.

Additional Credits:
- Samuel Kudra: Overworld BGM and final Battle BGM
- Menu navigation sounds are royalty free sound effects from online
- Terrain/Skybox assets were free on the Unity Asset Store


Astral Diastrophism: Mechanics

Type Classifications
In Astral Diastrophism, there are three classifications of types that follow a "rock-paper-scissors" structure:
Entropic, which gains bonus damage when attacking Cosmic
Cosmic, which gains bonus damage when attacking Mortal
Mortal, which gains bonus damage when attacking Cosmic
Damage reductions apply when attacking the other way.
Contrary Types
Each classification has two types, called Daetra: one Daetra per classification is positively aligned, and the other is negatively aligned:
Order (Entropic Positive)
Chaos (Entropic Negative)
Existence (Cosmic Positive)
Void (Cosmic Negative)
Life (Mortal Positive)
Death (Mortal Negative)
Damage bonuses are awarded when attacking a type that is opposite in alignment.
Damage reductions are applied when attacking a type that is equivalent in alignment.
Pips
At the start of a character's turn, they regenerate one Pip, up to that character's maximum Pip value. Players can expend one Pip to take an action: (Use a SKILL, use an ITEM, GUARD, or attempt to FLEE from the battle). Players may use as many Pips as they would like on their turn until their Pip count reaches zero. Players can also END their turn without consuming all of their available Pips in order to save Pips for their next turn.
Daetral Swapping
Each character has a Base Daetra, which is the type that they always start an encounter as. When a character uses a skill, their type becomes the Daetra with the same alignment as the skill in the same classification as their Base Daetra.
For example, if a character of type Death (Mortal Negative) uses a SKILL of type Order (Entropic Positive), that character's type switches to Life (Mortal Positive).Mana
Some skills in combat require Mana to use. When taking damage, half of the damage that would have been taken without damage reductions is regenerated as Mana, up to a character's maximum mana value.
Guarding
On a character's turn, they may choose to GUARD. This halves the damage that they receive from the next incoming attack.
Note: Guarding characters will still regenerate the full amount of mana from the next attack as if they were not guarding.