drawnui/drawnui.net/drawnui-game
Claude Code and agent skill by drawnui/drawnui.net
- community
- ext:[{"type":"hook","description":"Pre/post lifecycle hooks"},{"type":"plugin","description":"Custom plugin integration"}]
Checking that the SKILL.md file is still in the repository.
Use when creating or modifying games built on DrawnUi.Gaming.DrawnGame for MAUI, Blazor WASM, pure WebAssembly (DrawnUi.Web), OpenTK and WPF targets. Covers game loop, sprites, physics, canvas rendering, input, and cross-platform game patterns.
Install
npx vskill@latest install drawnui/drawnui.net/drawnui-gameSemi-extensibleMentions customization, but needs skill-specific knowledge. Read the extensible skills standard
SKILL.md
DrawnUI Game Development Skill
Use this skill when creating or modifying games built on DrawnUi.Gaming.DrawnGame for MAUI and/or Blazor WASM targets (the same base class ships for pure WebAssembly, OpenTK and WPF).
| Head | Game package | Pong sample (shared src/Shared/Samples/Pong.Shared) | |
|---|---|---|---|
| MAUI | DrawnUi.Maui.Game | src/Maui/Samples/MauiPong | |
| Blazor WASM | DrawnUi.Blazor.Game | src/Blazor/Samples/BlazorSandbox (Pages/PongPage.razor) | |
| Pure WebAssembly | DrawnUi.Web.Game | src/Wasm/Samples/PongWeb (see drawnui-web-app skill) | |
| OpenTK | DrawnUi.OpenTk.Game | src/OpenTk/Samples/OpenTkPong | |
| WPF | DrawnUi.Wpf.Game | src/Wpf/Samples/WpfPong |
Every addon compiles the same src/SharedGame sources (DrawnGame.cs, Game.Input.cs, IGame.cs).
IMPORTANT: This skill must always be updated when new findings are discovered during game development - patterns, pitfalls, API quirks, project structure details, platform differences. Update this file before closing any game-related task that produced reusable knowledge.
IMPORTANT: For game examples and samples, never keep the whole game in one file. Split immediately by concern using partials, starting withGameName.cs,GameName.UI.cs, andGameName.Gestures.cs, then add more slices likeGameName.Settings.cs,GameName.Theme.cs,GameName.Audio.cs, orGameName.Pieces.csas needed. If the project uses.projitems, add every new partial file explicitly.
IMPORTANT: For puzzle trays or refill batches, do not generate the next pieces purely at random when the live board state matters. Build the next batch from the current occupancy so at least some pieces fit the available gaps, and prefer batches whose intended placements can clear a row or column when the board allows it. Only fall back to random fillers for leftover tray slots when the board is too constrained to support a full planned batch.
IMPORTANT: When a puzzle tray is intentionally planned around the first two pieces clearing lines, do not evaluate the third fallback piece only against the current board. If the third piece cannot fit now, choose it against the post-collapse board state produced by those first two planned moves so the tray remains solvable through the intended clear sequence.
IMPORTANT: Discuss DrawnUI game rendering and FX architecture like a senior game developer, not a cheerleader. Push back when the proposed approach is brittle, overfit, or engine-hostile. Prefer clean rendering contracts, explicit effect scopes, and theme material sets over giant all-in-one shaders or ad hoc control-tree hacks.
IMPORTANT: During live gameplay, never create new controls on demand. Prewarm fixed-size pools for every gameplay visual that can appear at runtime: board cells, tray-piece tiles, preview tiles, FX tiles, and transient host layers. While the game is running, acquire from the pool, reconfigure, show, hide, and return to the pool. If the pool runs dry, treat that as a bug in pool sizing or release flow, not as a reason to allocate a new control.
IMPORTANT: For board or field shader effects in grid-based puzzle games, separate source region from output scope. Use a dedicated field-sized FX layer when glow, particles, or dissolve can extend beyond the triggering tiles; keep local scope only for genuinely local effects. Prefer grid/cell masks or state textures over arrays of arbitrary rects.
Solution / project templates
A) MAUI only
`MyGame.Mobile.csproj`
B) Blazor WASM only
`MyGame.Web.csproj`
C) MAUI + Blazor shared solution (Arkanoid pattern)
`MyGame.Shared.shproj` (boilerplate, one GUID)
`MyGame.Shared.projitems` (lists every shared .cs file)
MAUI head imports shared:
Blazor head imports shared:
`GlobalAliases.cs` (in Shared root)
Platform guards in shared code
Asset management: shared vs platform
| Asset type | MAUI | Blazor | |
|---|---|---|---|
| Images/Sprites | Resources/Raw/Images/ as MauiAsset | wwwroot/Images/ (static file) | |
| Audio files | Resources/Raw/Sounds/ as MauiAsset | wwwroot/Sounds/ (JS fetch) | |
| Fonts | Resources/Fonts/ as MauiFont | wwwroot/fonts/ in index.html | |
| Loading | FileSystem.OpenAppPackageFileAsync(path) | SkiaImageManager.PreloadImages(paths) |
Maintain both wwwroot/ and Resources/Raw/ as parallel copies (no symlink; just duplicate).
Base class
DrawnUi.Gaming.DrawnGame (source src/SharedGame/DrawnGame.cs) extends SkiaLayout. Key members:
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 90 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingdocs/skills/drawnui-game/SKILL.md
Popularity
- 7-day trend score
- 0
Not refreshed yet.
Extension points
hookPre/post lifecycle hookspluginCustom plugin integration
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/drawnui/drawnui.net/drawnui-game)