check me out!
BRENDEN CHOI
DESIGNER
const prefixes = [ "Game", "Character", "Narrative", "Systems" ]; const typingSpeed = 150; const erasingSpeed = 75; const delayBetweenWords = 2000; const typewriter = document.getElementById('typewriter'); let wordIndex = 0; let charIndex = 0; let isDeleting = false; function type() { const currentPrefix = prefixes[wordIndex]; if (!isDeleting) { typewriter.textContent = currentPrefix.substring(0, charIndex + 1); charIndex++; if (charIndex === currentPrefix.length) { isDeleting = true; setTimeout(type, delayBetweenWords); } else { setTimeout(type, typingSpeed); } } else { typewriter.textContent = currentPrefix.substring(0, charIndex - 1); charIndex--; if (charIndex === 0) { isDeleting = false; wordIndex = (wordIndex + 1) % prefixes.length; setTimeout(type, typingSpeed); } else { setTimeout(type, erasingSpeed); } } } setTimeout(() => { type(); }, 5000);
Assistant
const assistantText = document.getElementById('assistantText'); const phrases = { home: 'scroll down to see games ✨', games: 'pick a game and have fun 💖', about: 'learn more about this cute project 🌸', contact: 'come say hi anytime 💌' }; function detectSection() { const url = window.location.href.toLowerCase(); if (url.includes('games')) return phrases.games; if (url.includes('about')) return phrases.about; if (url.includes('contact')) return phrases.contact; return phrases.home; } function typeText(text, speed = 45) { assistantText.textContent = ''; let i = 0; const typing = setInterval(() => { assistantText.textContent += text.charAt(i); i++; if (i >= text.length) { clearInterval(typing); } }, speed); } window.addEventListener('load', () => { const currentPhrase = detectSection(); typeText(currentPhrase); });
/* ========================= CURSOR FOLLOW ========================= */ const cursor = document.querySelector('.cursor'); window.addEventListener('mousemove', (e)=>{ cursor.style.left = e.clientX + 'px'; cursor.style.top = e.clientY + 'px'; }); /* ========================= HOVER EFFECT ========================= */ document.querySelectorAll('a, button').forEach(el => { el.addEventListener('mouseenter', () => { cursor.classList.add('active'); }); el.addEventListener('mouseleave', () => { cursor.classList.remove('active'); }); });

Published Games

export default function CozyGameDevAbout() { const favoriteGames = [ { title: 'Life is Strange', vibe: 'soft indie chaos + emotional damage', emoji: '🦋', }, { title: 'Night in the Woods', vibe: 'cozy existentialism', emoji: '🌙', }, { title: 'Spiritfarer', vibe: 'comfort wrapped in tears', emoji: '⛵', }, { title: 'Oxenfree', vibe: 'supernatural radio static energy', emoji: '📻', }, { title: 'Celeste', vibe: 'climbing mountains emotionally and physically', emoji: '🏔️', }, { title: 'Disco Elysium', vibe: 'chaotic dialogue tree gremlin', emoji: '🎨', }, ]; const skills = [ { name: 'Narrative Design', level: 92, icon: '📖', color: 'from-pink-400 to-rose-400', }, { name: 'Level Design', level: 84, icon: '🗺️', color: 'from-orange-300 to-amber-400', }, { name: 'Unity', level: 88, icon: '🎮', color: 'from-sky-400 to-cyan-400', }, { name: 'UI / UX', level: 79, icon: '✨', color: 'from-violet-400 to-purple-400', }, { name: 'Environmental Storytelling', level: 90, icon: '🌲', color: 'from-emerald-400 to-green-500', }, { name: 'Creative Chaos', level: 100, icon: '☕', color: 'from-yellow-300 to-orange-400', }, ]; const tools = [ 'Unity', 'Unreal Engine', 'Blender', 'Figma', 'Photoshop', 'Aseprite', 'FMOD', 'GitHub', 'Notion', 'Visual Studio', ]; return (
🍂
📷
🦋
🎧
🎒

save file loaded...

about me

Hey! I’m a game designer obsessed with creating cozy worlds, emotional stories, atmospheric environments, and interactive moments that feel like memories you forgot you had. My design style lives somewhere between indie road trip energy, rainy-day nostalgia, and finding secret notes hidden under floorboards.

⭐ LVL 27 GAME DEV 27 / 100 XP

currently grinding side quests, dialogue trees, and too many coffee buffs ☕

🎮

favorite games

{favoriteGames.map((game) => (

{game.title}

{game.emoji}

{game.vibe}

))}
🌲

developer skill tree

{skills.map((skill) => (
{skill.icon} {skill.name} {skill.level}%
))}
+5 emotional storytelling damage during rainy weather.
🧰

tools i use

{tools.map((tool) => (
{tool}
))}

current soundtrack

Obstacles

by Syd Matters

); }
Cozy Game Dev Timeline

MY GAME DEV JOURNEY

like a cozy little RPG questline ✨

🎮
2019

First Prototype

Started experimenting with tiny game mechanics, UI systems, and weird experimental ideas. Built my first playable project and instantly fell in love with game design.

🕹️
2021

Indie Era

Designed cozy worlds, dialogue systems, progression loops, and polished player feedback. Learned how to create emotional moments through gameplay.

🌙
2023

Creative Direction

Focused heavily on atmosphere, environmental storytelling, and player immersion. Started blending aesthetic design with mechanics to craft memorable experiences.

NOW

Building Cozy Worlds

Currently creating unique interactive experiences inspired by cozy games, pixel art adventures, dreamlike UI, and emotionally-driven gameplay.

save point reached • thanks for visiting my world 🌱

/* ========================= SCROLL REVEAL ========================= */ const entries = document.querySelectorAll('.entry'); const revealOnScroll = () => { entries.forEach(entry => { const top = entry.getBoundingClientRect().top; const windowHeight = window.innerHeight; if(top < windowHeight - 100){ entry.classList.add('show'); } }); }; window.addEventListener('scroll', revealOnScroll); revealOnScroll(); /* ========================= PARALLAX STARS ========================= */ window.addEventListener('scroll', () => { const scrollY = window.scrollY; document.querySelectorAll('.star').forEach((star, index) => { const speed = (index + 1) * 0.05; star.style.transform = `translateY(${scrollY * speed}px)`; }); });
Brenden Choi Character Sheet
✦ MY CHARACTER SHEET ✦
BRENDENCHOI
Game Designer

Hi hi ✨ I’m a game designer obsessed with emotional worlds, dreamlike storytelling, cinematic presentation, and cozy atmospheres that feel weirdly nostalgic at 2am. I love crafting characters with personality baked into every tiny detail — from level layouts and soundscapes all the way down to UI vibes and environmental storytelling.

Profile Picturemain character energy
Workspacecurrently creating...

Current Build: Cozy Creative Multiclass

Specializes in immersive worlds, emotionally resonant character design, atmospheric storytelling, and somehow turning portfolio sections into cinematic experiences for absolutely no reason.

☕ caffeine buff
🌙 night owl mode
🎧 soundtrack goblin

INVENTORY

Tools I Use
🎮 Unity
🧩 Unreal Engine
🎨 Blender
🖌 Photoshop
🎼 FL Studio
📜 Twine
🎬 Premiere Pro
✨ After Effects
🕹 Aseprite
🎸 Composition

STAT SPREAD

Skills
Game Design96
Character Design94
Narrative Design95
Worldbuilding98
Sound & Mood92

DISPOSITION

Favorite Games
Life is Strange comfort game energy
NieR: Automata existential crisis simulator
Omori emotional damage but stylish
Persona 5 style stat maxed out
Everhood chaotic rhythm wizardry
Stardew Valley cozy healing hours

QUEST LOG

Current Objective:
Create emotionally immersive worlds where atmosphere, gameplay, music, and storytelling feel inseparable.


Side Quests:
• designing cinematic portfolio experiences
• creating memorable characters
• building cozy dreamlike worlds
• making players stare at scenery for 20 minutes

const starsContainer = document.querySelector('.stars'); for(let i = 0; i < 170; i++){ const star = document.createElement('div'); star.classList.add('star'); star.style.left = Math.random() * 100 + '%'; star.style.top = Math.random() * 100 + '%'; star.style.animationDuration = (4 + Math.random() * 8) + 's'; star.style.animationDelay = Math.random() * 5 + 's'; const size = Math.random() * 4 + 1; star.style.width = size + 'px'; star.style.height = size + 'px'; starsContainer.appendChild(star); }
Brenden Y. Choi - Navigation
function toggleMobileMenu(el) { el.classList.toggle("open"); document.getElementById("mobileMenu").classList.toggle("show"); }
document.addEventListener("DOMContentLoaded", function () { document.querySelectorAll('a[href]').forEach(function (link) { if (link.getAttribute('href').startsWith('http')) { link.setAttribute('target', '_blank'); link.setAttribute('rel', 'noopener noreferrer'); } }); });

Mino, The Volatile Conduit

Meet Mino, my latest League champion concept! A short-range mage who thrives in the chaos of battle, dashing into danger and channeling volatile magic. She doesn’t mind taking a hit, she only gets faster when she’s in the fray!Born into a family of daring artificers in Noxus, Mino embraced the chaos of unstable magic rather than fearing it. Experimenting on herself, she fused volatile energy into her body, becoming a living conduit of raw power.Now, Mino charges headfirst into battle, laughing as each hit makes her faster and more dangerous. Her magic flares uncontrollably in the heat of combat, leaving destruction in her wake. Thriving in the chaos of the crossfire, Mino is a reckless force, embracing the wild power surging within her.


Abilities

Passive – Volatile Core
-------------------------
"The closer to chaos, the stronger the storm."
Each time Mino takes damage from enemy champions, she gains a stack of Overdrive (up to 5). At 5 stacks, she enters Overdrive Mode for 4 seconds, gaining:Bonus movement speedBonus ability hasteAll abilities apply a small AoE explosion on hit
Overdrive has a cooldown per activation.
Visual: Her core crackles and pulses wildly when Overdrive is active.

Q – Arclash
----------------------
"Unstable energy, meet unstable delivery."
Mino dashes a short distance and releases a shockwave at her destination, dealing magic damage in a small cone. If she hits a champion, the cooldown is partially refunded.Damage scales with AP and missing HP of the enemyCan be cast during Overdrive for an enhanced radiusPlaystyle: Her bread-and-butter engage tool; think a mini Ekko dash but with Kled-like chaos.

W – Fracture Field
----------------------
"Reality is soft if you punch hard enough."
Mino punches the ground, creating an unstable energy field that erupts after 1 second, dealing magic damage and briefly slowing enemies caught in the center.If Mino is in Overdrive, the eruption pulls enemies slightly toward the centerThe eruption leaves behind volatile residue for a few seconds: standing in it boosts her movement speedUse: Great for zoning or comboing after Q; very skirmish-heavy utility.

E – Wild Current-----------------------------------------
"Power is momentum. Keep moving."
Passive: Mino gains stacking bonus movement speed for each nearby enemy champion (max 3).Active: Mino releases a chain of lightning between her and the nearest 3 enemies (prioritizes champions). The chain tethers them briefly, dealing damage over time and amplifying damage they take from her.Breaking the tether early deals a burst of damageEnemies who remain tethered are briefly disoriented (minor movement/attack disruption)Identity: Creates chaos in clustered fights—perfect for brawling and forcing action.

R – Cataclysm Spiral
-----------------------------------
"You call it reckless. I call it fun."
Mino channels briefly, then detonates her volatile core in a wide radius around her, dealing massive magic damage and knocking back all enemies to the edge. She then blinks to a selected enemy inside the radius, and recasts to detonate a second pulse after a delay, dealing reduced damage and slowing enemies significantly.If used while in Overdrive, the second explosion has bonus range and true damage scaling on missing HP.Big moment: Think of this as a high-risk, high-reward Kennen meets Ekko ult with a punk twist.