Solus Bian

A collection of games, systems, and coursework

CS student at NYU with hands-on experience in game development, and interactive systems. I build games and tools using Unity, GameMaker, and C++ — from gameplay mechanics to engine-level work.

课程经历 → 个人项目 → 实习项目

游戏工程相关课程

游戏相关课程:

  • 游戏编程

  • 游戏开发

  • 视觉传达

  • 传统卡牌游戏基础

  • JavaScript 编程

  • 游戏设计导论

计算机科学 / 相关数学课程:

  • 数据结构

  • 算法

  • 计算机系统组织 (CSO)

  • 面向对象编程 (OOP)

  • 操作系统 (OS)

  • 人工智能

  • 离散数学

  • 线性代数

  • 概率与统计


游戏列表

Snake Collection • 开发中(个人项目)

你是一名专业的响尾蛇清除专家。当惊慌失措的居民打电话报告危险蛇类时,你会赶到现场,并与越来越致命的蛇展开回合制卡牌战斗。掷出能量骰子,构建你的卡组,证明你是业内最优秀的——否则就等着收到一星差评。

该项目作为一个全面的代码测试与系统设计练习,所有机制均已使用占位图形完成并正常运行。尚未实现精细的精灵或最终美术资源

实现内容
实现了多层状态机(战斗:START→DEAL→PLAYERTURN→SNAKETURN,能量:ROLLING→WAITING→LOCKED),并通过逐帧精确的 alarm 定时实现回合循环;为每个骰子设置 isAnimating 布尔值以支持选择性重掷,仅重掷选中的骰子,其余保持原状态。构建了双阶段能量消耗算法(优先消耗有色,其次消耗白色通配),避免浪费;同时配合自动手牌重排机制,使用 startX = room_width/2 - (handSize * offset)/2 在卡牌数量变化时重新计算位置。摄像机相对的深度排序采用 rotatedY = relX * dsin(-camAngle) + relY * dcos(-camAngle),将世界坐标投影到旋转后的屏幕 Y 轴,实现旋转时正确的绘制顺序。
构建了三列表卡组系统(deck/hand/discard),当牌库为空时通过 ds_list_copy()ds_list_shuffle() 自动洗牌。通过 User Event 0 实现动态任务重排,重新计算所有任务位置并使用平滑插值动画过渡。任务与标记之间建立双向实例引用(task↔marker),实现联动状态变化。通过在调用 event_user(0) 前设置变量,实现双参数事件传递以传递复杂数据。使用全局变量跨房间连接(global.currentMarker),将地图标记与战斗生成及战后失活关联。通过链式 if/else 实现加权随机分布,确保精确的 30%/30%/30%/10% 概率划分。使用基于帧的手动动画控制(image_speed=0alarm[0]=animationSpeed*2),将伤害判定精确同步到攻击动画的中间帧。数据统计
* 20+ 个实例2000+ 行代码5 个状态机10+ 个 ds_list
* 所有系统从引导 → 地图 → 战斗 → 评分 全流程互联且可运行


DECKORA (个人项目)

Deckora 是一款策略卡牌游戏,在每一回合都考验你的决策能力。每回合你都会面对三张卡牌,但只能选择其中一张——无论是进攻、防御,还是强化能力。卡牌的能力在整场战斗中保持不变,因此精确的选择与时机把控至关重要,才能在对局中压制对手。每一次决策都会让你更接近胜利或失败,使得这场高风险的策略博弈中,每一步都无比关键。


其他游戏与未来项目

更多游戏项目及未来作品可通过此链接查看。


实习经历 • GritWorld(粒界科技)

在 GritWorld 实习超过一年,积累了涵盖游戏开发与引擎系统多个方向的实践经验。
参与了多个项目,包括虚拟世界、赛车游戏以及跨领域的用户体验设计。在 OpenWorld XR 项目《Impression City》中,负责概念设计、资源制作以及 UX/UI 设计等核心工作。
与多个团队协作,支持开发流程推进,并为多个内部项目提供可运行的资源与设计成果。
由于保密协议限制,仅展示个人测试项目,公司相关作品无法公开。
如需验证或进一步了解详情,可联系我获取主管信息。

引擎测试 • 概念设计 + 3D 建模

使用 GritGene 参与环境测试与资源开发。为医院场景进行概念设计,并通过光照研究与反馈不断优化。完成资产建模、纹理与精灵制作,并在自研引擎中搭建最终场景。

OpenWorld XR 项目《Impression City》的概念设计与资源制作

参与 XR 项目《Impression City》的开发,负责一只定制浣熊角色的完整制作流程。从初期概念设计到 3D 建模、动画制作,再到最终在 XR 环境中的实现均由本人主导完成。该角色目前仍在 GritWorld 总部使用,并具备包括战斗行为在内的交互功能。

3D 动态壁纸(Blender)

通过结合 Blender 与 GritGene 的混合流程构建动态太空环境。在 Blender 中完成所有行星模型与资源制作,并导入至 GritGene 中搭建整体场景、设计光照系统,并实现实时动画效果。

赛车游戏

使用提供的资源为 GritWorld 开发了一款赛车游戏 Demo。实现了核心玩法系统,包括障碍躲避、无限道路生成以及计分机制。

OUTLINE: COURSES -> PERSONAL WORKS -> INTERN WORKS

Game Design Related Courses

Game Courses:

  • Programming for Games

  • Games Development

  • Visual Communication

  • Traditional Card Game Literacy

  • Javascript Coding

  • Game Design 101

Computer Science / Related Math Course:

  • Data Structures

  • Basic Algorithms

  • Computer Systems Org

  • Object Oriented Programming

  • Operating Systems

  • Artificial Intelligence

  • Discrete Mathematics

  • Linear Algebra

  • Probability & Statistics


Game List

Snake Collection • in progress (SOLO WORK)

You're a professional rattlesnake removal specialist. When panicked citizens call about dangerous serpents, you drive to their location and engage in turn-based card battles against increasingly deadly snakes. Roll energy dice, build your deck, and prove you're the best in the business—or get a 1-star review.

The project serves as a comprehensive code test and systems design exercise, with all mechanics built and functioning using placeholder graphics. No polished sprites or final art assets have been implemented yet

Implementations
Implemented multi-layered state machines (battle: START→DEAL→PLAYERTURN→SNAKETURN, energy: ROLLING→WAITING→LOCKED) with frame-perfect alarm timing for turn cycling and per-die isAnimating booleans enabling selective reroll where only chosen dice regenerate while others maintain state. Built two-pass energy consumption algorithm (colored first, white wildcards second) preventing waste, paired with automatic hand repositioning using startX = room_width/2 - (handSize * offset)/2 that recalculates when card count changes. Camera-relative depth sorting uses rotatedY = relX * dsin(-camAngle) + relY * dcos(-camAngle) to project world coordinates onto rotated screen-space Y axis for correct draw order during rotation.
Created three-list deck system (deck/hand/discard) with automatic reshuffling via ds_list_copy() and ds_list_shuffle() when deck empty. Dynamic task repositioning through User Event 0 recalculates all active task positions with smooth lerp animations. Bidirectional instance references (task↔marker) enable linked state changes. Dual-parameter event passing sets variables before calling event_user(0) to pass complex data. Global variable cross-room linking (global.currentMarker) connects map markers to battle spawns and post-battle deactivation. Weighted random distribution using chained if/else ensures exact 30%/30%/30%/10% probability split. Frame-based manual animation with image_speed=0 and alarm[0]=animationSpeed*2 synchronizes damage application to exact mid-attack frame.
Stats
- 20+ objects, 2000+ lines of code, 5 state machines, 10+ ds_lists
- All systems functional and interconnected from intro → map → battle → ratings


DECKORA (SOLO WORK)

Deckora is a strategic card game that challenges your decision-making skills in every round. Each turn, you'll be presented with three cards, but you can only choose one—whether to attack, defend, or upgrade your ability. The abilities of these cards remain constant throughout the battle, so careful selection and timing are key to outmaneuvering your opponent. With each decision, you come closer to victory or defeat, making every move crucial in this high-stakes game of strategy.


OThER GAMES AND FUTURE GAMES

Additional game projects are available through this link, along with future work.


INTERN WORK • GRITWORLD

Worked with Gritworld for over one year, gaining experience across multiple aspects of game development and engine systems.
Contributed to various projects, including virtual worlds, racing games, and cross-disciplinary UX production. Played a key role in concept design, asset creation, and UX/UI for the OpenWorld XR project Impression City.
Collaborated across multiple teams, supporting development cycles and delivering functional assets and design contributions for several internal projects.
Due to confidentiality, only personal test projects are displayed. Work produced for the company cannot be shown.
For verification or further inquiries, you may contact me to request my supervisor’s information.

Engine Testing • [concept art + 3D modling]

Contributed to environment testing and asset development using GritGene. Designed concept art for a hospital scene, refined through lighting studies and feedback. Modeled assets, created textures and sprites, and built the final scene in a custom engine.

Concept Design + Asset Creation for the OpenWorld XR project Impression City

Contributed to the XR project Impression City, including the end-to-end creation of a custom raccoon character.Led the process from initial concept and design through 3D modeling, animation, and final implementation within the XR environment. The character remains in use at the Gritworld headquarters, featuring interactive behaviors including combat actions.

3D Animated Wall Paper (Blender)

Built animated space environments through a hybrid pipeline using Blender and GritGene. Developed all planetary models and assets in Blender, then imported them into GritGene to construct the space environment, design lighting systems, and implement real-time animation.

Car Racing Game

Developed a racing game demo for Gritworld using provided assets. Implemented core gameplay systems including obstacle navigation, an infinite road system, and a scoring mechanic.