Skip to content

Omega-Mu-Gamma-Studio/Sharp-Chan

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

8 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐ŸŽฎ Sharp-chan

An anime-guided C# and Unity tutor for people who want to build the game, not just talk about it. She doesn't teach syntax. She teaches you how to ship a vision. React Vite Zustand Framer Motion MIT License Live Demo

Built by Omega Mu Gamma Studio ยท the team behind SeeDS, KMapX, EG Suite, GateLab, Java-chan, and Sharp-chan.


What is Sharp-chan?

Sharp-chan is a browser-based C# and Unity learning app where a visionary, creative mascot character teaches game development like she's pitching you her next project โ€” because in a sense, she is. Every lesson is framed as a step toward something you'll actually want to show people: a level, a mechanic, a published game.

The curriculum runs straight through Unity game development โ€” MonoBehaviour lifecycle isn't abstract, it's the heartbeat of your game loop. Coroutines aren't a trick, they're how your boss fight breathes. By the end of all 75 lessons, you've designed, built, polished, and shipped a complete 2D game to Itch.io.

No dry syntax drills. No "trust the process" without a payoff. Just C#, taught by someone who's already imagining what you'll build with it.

๐Ÿ”— Try it live โ†’ sharp-chan.vercel.app


The Teaching Model

Every single lesson โ€” all 75 of them โ€” follows this exact structure:

Phase Name What Happens
1 See It Work Sharp-chan shows working code, the in-editor result, and explains what's happening line by line
2 See It Break Same code, deliberately broken โ€” she explains the error, what caused it, and what it would've done to your game
3 You Try Student writes code or fills in blanks; pattern-based validation gives immediate feedback

Validation is regex/pattern-based โ€” no code execution in the browser. For full scripts, students run them in their own Unity Editor.


Curriculum โ€” 75 Lessons Across 5 Units

All five units are complete, published, and available from day one.

Unit Topic Lessons
1 C# and Unity Foundations 15
2 OOP and Unity Scripting 15
3 2D Game Systems 15
4 Polish and Advanced C# 15
5 Final Game Project 15
๐Ÿ“– View all 75 lessons

Unit 1 โ€” C# and Unity Foundations 1.1 Why C# for Game Dev ยท 1.2 Installing Unity and Android Studio Tour ยท 1.3 The Unity Editor โ€” Panels and Workflow ยท 1.4 GameObjects and Components ยท 1.5 Your First C# Script ยท 1.6 Variables and Data Types in C# ยท 1.7 Operators and Expressions ยท 1.8 Conditionals ยท 1.9 Loops ยท 1.10 Functions and Methods ยท 1.11 MonoBehaviour Lifecycle ยท 1.12 Start and Update ยท 1.13 Transform and Movement ยท 1.14 Time.deltaTime and Frame Independence ยท 1.15 Mini Challenge โ€” Move an Object

Unit 2 โ€” OOP and Unity Scripting 2.1 Classes and Objects in C# ยท 2.2 Constructors ยท 2.3 Inheritance ยท 2.4 Interfaces in C# ยท 2.5 Access Modifiers ยท 2.6 ScriptableObjects ยท 2.7 The Component Pattern ยท 2.8 Singleton Pattern ยท 2.9 Event Systems ยท 2.10 Game Manager Design ยท 2.11 Input System ยท 2.12 Rigidbody and Forces ยท 2.13 Colliders ยท 2.14 OnCollisionEnter and OnTriggerEnter ยท 2.15 Mini Challenge โ€” Pick Up Items

Unit 3 โ€” 2D Game Systems 3.1 2D vs 3D in Unity ยท 3.2 Sprites and SpriteRenderer ยท 3.3 2D Physics ยท 3.4 Tilemaps ยท 3.5 Camera Setup and Follow Script ยท 3.6 Raycasting ยท 3.7 Animator Component ยท 3.8 Animation Clips and States ยท 3.9 Transitions and Parameters ยท 3.10 Scripting Animations ยท 3.11 Canvas and UI Basics ยท 3.12 Buttons and UI Events ยท 3.13 Health Bars and Progress UI ยท 3.14 Menus and Scene Transitions ยท 3.15 Mini Challenge โ€” Build a 2D Platformer Level

Unit 4 โ€” Polish and Advanced C# 4.1 AudioSource and AudioClip ยท 4.2 Playing SFX on Events ยท 4.3 Background Music and Looping ยท 4.4 Particle Systems ยท 4.5 Screen Shake and Game Feel ยท 4.6 Post Processing Effects ยท 4.7 Cinemachine Camera ยท 4.8 PlayerPrefs ยท 4.9 JSON Serialization ยท 4.10 Saving and Loading Game State ยท 4.11 Generics in C# ยท 4.12 Delegates and Events ยท 4.13 Coroutines ยท 4.14 LINQ Basics ยท 4.15 Mini Challenge โ€” Add Save System to Your Game

Unit 5 โ€” Final Game Project 5.1 Game Design Document ยท 5.2 Prototyping the Core Loop ยท 5.3 Building the Player Controller ยท 5.4 Enemy AI and NavMesh Basics ยท 5.5 Level Design Principles ยท 5.6 UI and HUD Implementation ยท 5.7 Audio and Polish Pass ยท 5.8 Playtesting and Iteration ยท 5.9 Performance Optimization Basics ยท 5.10 Shader Basics ยท 5.11 Building and Exporting ยท 5.12 Publishing to Itch.io ยท 5.13 Project โ€” Core Loop Complete ยท 5.14 Project โ€” Full Playthrough Ready ยท 5.15 Project โ€” Ship It


Features

๐ŸŽ“ Learning System

  • Three-phase lesson structure โ€” See It Work โ†’ See It Break โ†’ You Try, on every lesson, no exceptions
  • Game-dev context throughout โ€” every script is part of one growing 2D game project
  • Contextual hint escalation โ€” hint appears at 2 wrong attempts, solution unlocks at 5
  • Pattern-based validation โ€” instant feedback without a server or code execution engine
  • Full lesson navigation โ€” collapsible sidebar with per-lesson completion tracking

๐ŸŽฎ Progression & Rewards

  • XP system โ€” earn XP on lesson completion; bonus XP for first-attempt success and hint-free runs
  • 10 levels โ€” clear thresholds (100 XP per level) with a persistent progress bar
  • Level-gated cosmetics โ€” new rewards unlock as you level up, alternating themes and outfits
  • localStorage persistence โ€” no account needed, progress is saved in the browser

๐ŸŽจ The Shop

App Themes (equippable backgrounds):

Level Item Style
1 Sketchbook Studio ๐ŸŽจ Concept art pinned to a corkboard โ€” the default
3 Pixel Sunset ๐ŸŒ‡ Hand-placed pixel-art clouds drifting over a warm gradient
5 Editor Viewport Violet ๐ŸŸช Unity's own scene-view purple-grey, but dressed up
7 Game Jam Neon ๐ŸŒƒ Hot pink and electric blue, 48 hours on the clock
9 Release Day Gold โœจ Warm gold light, the splash screen finally has her name on it

Character Outfits (equippable; all with full 6-expression sprite art):

Level Outfit Vibe
1 Artist's Smock ๐ŸŽจ Paint-flecked, sleeves rolled. Her signature look, always equipped
2 Indie Dev Hoodie ๐Ÿ•น๏ธ Game Dev Mode โ€” ON. Coffee in one hand, tablet pen in the other
4 Concept Artist's Beret ๐Ÿ–Œ๏ธ She's already three concepts ahead of where you are
5 Game Jam Crunch Tee ๐Ÿ˜… 4am. The build still compiles. Somehow
6 Pixel Sorceress ๐Ÿช„โœจ Sprites bend to her will. The animator believes her
7 Director's Jacket ๐ŸŽฌ Cinemachine Mode โ€” ON. She's framing the next cutscene in her head
7 Idol โ€” Frame Perfect โœจ She already performs a Celebration. Naturally, it has a particle effect
8 Showcase Blazer ๐Ÿ† She's pitching this build to a publisher. It's going well
8 NPC Cosplay ๐Ÿค– She dressed as her own boss-fight enemy. For testing purposes
10 Shipped Game Crown ๐Ÿ‘‘ It's live on Itch.io. Wear the crown
10 Off the Clock ๐Ÿ–๏ธ The build is exported. She is, finally, playing someone else's game

Downloadable Wallpapers (phone/desktop art, save to your device):

Level Wallpaper Vibe
3 First Build Sunrise ๐ŸŒ… The editor finally hit Play without an error
3 Cherry Blossom Concept Art ๐ŸŒธ Watercolor sketch, her game's protagonist mid-sketch
5 The Sprite Atlas ๐Ÿฐ Every frame of animation laid out like a stained-glass window
5 Mountain Summit โ€” Core Loop Complete ๐Ÿ”๏ธ She made it to the top. The flag is a checkpoint flag from her own game
5 Pixel Library ๐Ÿ“š Retro shelves, an open game design document
7 Rainy Studio Window ๐ŸŒง๏ธ Even on a slow day, the prototype keeps running
7 Rooftop Garden Jam ๐ŸŒฟ City skyline, the sign reads // TODO: ship it
7 Neon Arcade Cabinet ๐Ÿ•น๏ธ Her own game, glowing on a cabinet between two classics
9 Shrine Steps โ€” Release Day ๐Ÿฎ Stone steps, dawn lanterns, the calmest the launch day gets
9 Vacation Build ๐ŸŒ… Even the longest crunch ends with a sunset and a finished game

โœจ Character & Expressions

Sharp-chan has 6 distinct expressions that fire contextually throughout lessons:

State Trigger
idle Phase 1 โ€” explaining working code
thinking Hint mode; waiting for input
surprised Correct answer
happy Phase transitions and encouragement
sad Wrong answer (first few times)
idle-sleep Idle between interactions

Each equipped outfit has its own full set of 6 expression sprites โ€” swapping outfits changes Sharp-chan's entire look, not just a filter.

Domain Expansion โ€” a fullscreen celebration effect fires on milestone level-ups, complete with confetti (and, fittingly, a particle system she'd be proud of).


Tech Stack

Layer Choice Why
Frontend React 19 + Vite 8 Fast HMR, ES modules, modern JSX transform
Styling Plain CSS + Framer Motion 12 No CSS framework overhead; animations via Motion
State Zustand 5 Minimal boilerplate, works with persist middleware out of the box
Data JSON files + localStorage Zero backend for Phase 1; data adapter ready for Phase 2
Routing React Router v7 File-level page components
Hosting Vercel Zero-config deployment

Getting Started

Prerequisites

  • Node.js 18+
  • npm or yarn

Running Locally

# Clone the repo
git clone https://github.com/Omega-Mu-Gamma-Studio/Sharp-Chan.git
cd Sharp-Chan

# Install dependencies
npm install

# Start the dev server
npm run dev

The app runs at http://localhost:5173 by default.

# Build for production
npm run build

# Preview the production build locally
npm run preview

Deploying to Vercel

This repo is Vercel-ready with no configuration needed. Connect the repo in the Vercel dashboard and it'll detect the Vite setup automatically. No environment variables required for Phase 1.


Project Structure

Sharp-Chan/
โ”œโ”€โ”€ public/
โ”‚   โ”œโ”€โ”€ sprites/                      # Character expressions (Artist's Smock โ€” base outfit)
โ”‚   โ”‚   โ”œโ”€โ”€ teaching.png
โ”‚   โ”‚   โ”œโ”€โ”€ excited.png
โ”‚   โ”‚   โ”œโ”€โ”€ frustrated.png
โ”‚   โ”‚   โ”œโ”€โ”€ thinking.png
โ”‚   โ”‚   โ”œโ”€โ”€ oops.png
โ”‚   โ”‚   โ”œโ”€โ”€ idle.png
โ”‚   โ”‚   โ””โ”€โ”€ uniforms/                 # Outfit-specific sprite sets (6 expressions each)
โ”‚   โ”‚       โ”œโ”€โ”€ indie-dev-hoodie/
โ”‚   โ”‚       โ”œโ”€โ”€ concept-beret/
โ”‚   โ”‚       โ”œโ”€โ”€ jam-crunch-tee/
โ”‚   โ”‚       โ”œโ”€โ”€ pixel-sorceress/
โ”‚   โ”‚       โ”œโ”€โ”€ directors-jacket/
โ”‚   โ”‚       โ”œโ”€โ”€ idol/
โ”‚   โ”‚       โ”œโ”€โ”€ showcase-blazer/
โ”‚   โ”‚       โ”œโ”€โ”€ npc-cosplay/
โ”‚   โ”‚       โ”œโ”€โ”€ shipped-crown/
โ”‚   โ”‚       โ””โ”€โ”€ off-the-clock/
โ”‚   โ””โ”€โ”€ wallpapers/                   # Downloadable device wallpapers (10 total)
โ”‚       โ”œโ”€โ”€ sharpchan-first-build.png
โ”‚       โ”œโ”€โ”€ sharpchan-sakura-concept-art.png
โ”‚       โ”œโ”€โ”€ sharpchan-sprite-atlas.png
โ”‚       โ”œโ”€โ”€ sharpchan-core-loop-summit.png
โ”‚       โ”œโ”€โ”€ sharpchan-pixel-library.png
โ”‚       โ”œโ”€โ”€ sharpchan-rainy-studio.png
โ”‚       โ”œโ”€โ”€ sharpchan-rooftop-jam.png
โ”‚       โ”œโ”€โ”€ sharpchan-neon-arcade.png
โ”‚       โ”œโ”€โ”€ sharpchan-shrine-release.png
โ”‚       โ””โ”€โ”€ sharpchan-vacation-build.png
โ”‚
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ components/
โ”‚   โ”‚   โ”œโ”€โ”€ character/SharpChan.jsx     # Sprite renderer; reads spriteOverrides from equipped outfit
โ”‚   โ”‚   โ”œโ”€โ”€ layout/AppLayout.jsx        # Root layout; applies theme + background
โ”‚   โ”‚   โ”œโ”€โ”€ lesson/                     # LessonCanvas, CodeBlock, PhaseIndicator
โ”‚   โ”‚   โ””โ”€โ”€ ui/                         # Sidebar, BottomBar, XPDisplay, ProgressBar
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ data/
โ”‚   โ”‚   โ”œโ”€โ”€ lessons/                  # 75 JSON lesson files (unit1โ€“5, lessons 1โ€“15)
โ”‚   โ”‚   โ”œโ”€โ”€ units/                    # 5 unit JSON files (id, title, lesson list)
โ”‚   โ”‚   โ””โ”€โ”€ shopItems.js              # All cosmetic definitions (outfits, themes, downloadables)
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ hooks/
โ”‚   โ”‚   โ”œโ”€โ”€ useLesson.js              # Lesson phase state machine
โ”‚   โ”‚   โ”œโ”€โ”€ useProgress.js            # Progress store bindings
โ”‚   โ”‚   โ””โ”€โ”€ useSound.js               # Sound effect hooks
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ pages/
โ”‚   โ”‚   โ”œโ”€โ”€ Home.jsx                  # Dashboard / unit selection
โ”‚   โ”‚   โ”œโ”€โ”€ UnitPage.jsx              # Lesson list for a unit
โ”‚   โ”‚   โ”œโ”€โ”€ LessonPage.jsx            # The actual lesson experience
โ”‚   โ”‚   โ””โ”€โ”€ Shop.jsx                  # Cosmetics shop
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ services/
โ”‚   โ”‚   โ”œโ”€โ”€ lessonService.js          # JSON loader + lesson data access
โ”‚   โ”‚   โ””โ”€โ”€ storageService.js         # localStorage adapter (Phase 2: swap for API)
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ store/
โ”‚   โ”‚   โ”œโ”€โ”€ progressStore.js          # Zustand store: XP, level, outfits, progress
โ”‚   โ”‚   โ””โ”€โ”€ lessonStore.js            # Zustand store: active lesson state
โ”‚   โ”‚
โ”‚   โ””โ”€โ”€ utils/
โ”‚       โ”œโ”€โ”€ xpCalculator.js           # XP thresholds, level math, earned XP calculation
โ”‚       โ”œโ”€โ”€ patternMatcher.js         # Regex-based answer validation engine
โ”‚       โ””โ”€โ”€ csharpHighlighter.js      # C# syntax highlighting for code blocks

Adding Content

Adding a New Lesson

Lesson JSON files live at src/data/lessons/unit{N}/{N}.{M}.json. Each file follows this structure:

{
  "id": "1.5",
  "title": "Your First C# Script",
  "xp": 10,
  "phases": [
    {
      "phase": 1,
      "title": "See It Work",
      "dialogue": "Sharp-chan's explanation text here",
      "code": "void Start() {\n    Debug.Log(\"Hello, Player!\");\n}",
      "output": "Hello, Player!"
    },
    {
      "phase": 2,
      "title": "See It Break",
      "dialogue": "Here's what happens when...",
      "code": "void Start() {\n    Debug.Log(\"Hello, Player!\")\n}",
      "error": "CS1002: ; expected"
    },
    {
      "phase": 3,
      "title": "You Try",
      "dialogue": "Your turn โ€” let's see what you'd build.",
      "prompt": "What MonoBehaviour method runs once when a GameObject is first activated?",
      "answer": "Start()",
      "hint": "It happens once, right at the beginning.",
      "solution": "Start()"
    }
  ]
}

Adding a New Outfit

  1. Create a folder under public/sprites/uniforms/<outfit-name>/
  2. Drop in 6 PNGs named: teaching.png, idle.png, oops.png, thinking.png, frustrated.png, excited.png
  3. Add an entry to src/data/shopItems.js with spriteOverrides mapping each expression state to the correct file path
  4. That's it โ€” SharpChan.jsx and Shop.jsx both read spriteOverrides automatically

Developer Cheat Mode

In the Shop page, triple-click the Shop title to toggle the dev cheat:

  • First triple-click โ†’ instantly sets XP to 9999 and level to 10 (unlocks everything)
  • Second triple-click โ†’ resets XP and level back to 0 / 1

Roadmap

Phase 1 (Current) โœ…

  • All 75 lessons authored and published
  • Full cosmetics system (11 outfits, 5 themes, 10 downloadable wallpapers)
  • XP/leveling, shop, expressions, domain expansion
  • localStorage persistence, no account required

Phase 2 (Planned)

  • PostgreSQL + Express API backend
  • User accounts and cross-device sync
  • Progress stored server-side (the store already has a _resetForMigration hook and storage adapter pattern ready for this)
  • Instructor view: class-wide completion dashboards
  • No frontend rewrite required โ€” only the storage layer changes

Credits & Assets

Character Art: Sharp-chan's sprites were generated using AI tools and hand-curated for expression consistency by the Omega Mu Gamma Studio team. All character designs are proprietary to Omega Mu Gamma Studio.

Note: As a free, open-source educational tool, we prioritized shipping a complete learning experience over commissioning custom art. If you're an artist interested in contributing official character designs, reach out โ€” we'd love to collaborate.


Part of Omega Mu Gamma Studio

Sharp-chan is part of a student-built suite of open-source engineering and CS education tools from Omega Mu Gamma Studio.

Tool What it does
SeeDS 3D data structure visualizer with drag-and-drop Playground mode
KMapX Karnaugh map simplifier with don't-care support
EG Suite 3D Engineering Graphics simulator for ME22201
GateLab 2D digital logic schematic playground (CS22303)
Java-chan Anime-guided Java tutor for CS22301
Sharp-chan Anime-guided C# tutor for aspiring game developers
Sharp-chan Anime-guided C# and Unity tutor for game developers โ€” this repo

License

The source code for this project is released under the MIT License.

The character art, sprites, and visual assets for Sharp-chan are proprietary. They are not covered by the MIT License and may not be reproduced, redistributed, or used outside this project without explicit permission from Omega Mu Gamma Studio.

ยฉ 2026 Omega Mu Gamma Studio

Releases

No releases published

Packages

 
 
 

Contributors