敵やNPCの行動判断を、条件を順にたどる行動ツリーと選択肢を点数で比べるUtility AIで実装し、両者の組み合わせや判断の揺れの調整まで扱うスキル。
- 再利用できる行動ツリーを作りたいとき
- 点数で攻撃や標的を選びたいとき
- 巡回・戦闘のツリーとUtility AIの併用
GoとEbitengineで、開始からプレイ、結果、再挑戦まで遊べる2Dゲームを作るスキル。操作・描画・音声の実装や既存ゲームの修正、テストと配布用ビルドを扱います。
Create, improve, debug and package playable 2D games in Go with Ebitengine (github.com/hajimehoshi/ebiten/v2). Use for Ebitengine game requests: game design translated into a complete loop, input, rendering, text, audio, scenes, gameplay tests and desktop, browser or mobile builds. Also use when fixing these systems in an existing Ebitengine game. Do not apply to unrelated Go software or engine-internal patches merely because they depend on Ebitengine.
実行スコア 未検証
インストール方法を見るGoとEbitengineで、実際に遊べる2Dゲームの制作・改良・不具合修正を進めます。入力、描画、文字表示、音声、画面の切り替えを実装し、開始からプレイ、結果、再挑戦までの流れを整えます。ゲームのルールや状態遷移のテスト、表示と操作の確認、対象環境向けのビルド、起動手順の引き渡しも扱います。
ゲームのアイデアを小さな遊べる形にしたい場合や、既存作品の操作・音声・表示の問題を直したい場合に向いています。付属のひな形はplatformerですが、ジャンルを固定せず、依頼したゲームに合わせてルールや画面構成を変更する方針です。
付属のひな形はEbitengine v2.10.5とGo 1.25以上を対象とします。既存作品のバージョンは原則維持します。ブラウザー版はHTTP経由で実行確認し、モバイル向けなどでは追加のSDKが必要になる場合があります。使用素材のライセンスも引き渡し時に示します。
この紹介文は、公開されている SKILL.md をもとに AI(OpenAI Codex)が作成しました。正確な仕様は下の原文を確認してください。
インストールする前に、エージェントに与えられる指示の中身を確認できます。
Deliver a game that is understandable, responsive and complete at the requested scope. One request can include several internal build/play/refine passes. A scaffold, successful build or attractive screenshot alone is not a finished game. For a focused fix, preserve the project's design and limit the workflow to the affected behavior.
The bundled starter targets Ebitengine v2.10.5 / Go 1.25+. This is a pinned baseline, not a claim about the latest release. Keep an existing project's versions unless an upgrade is needed and authorized. Check the pinned version's public API before using newer or experimental APIs. References contain patterns to adapt; only the bundled scripts and starter are executable deliverables. Their checks do not validate every reference snippet.
go.mod, the RunGame
entrypoint and existing tests/assets. For new games, read
Design and quality. Establish the player's
goal, repeated decision, consequence, end/retry path, intended look, platform
and supported input. Infer reasonable defaults; ask only for missing choices
that materially change the product. Record a short brief and observable
acceptance criteria in the project.Resolve commands relative to this skill's directory, not the game's working
directory. Set skill_dir to the actual installed location, then for example:
python3 "$skill_dir/scripts/new_game.py" --out mygame \
--module example.com/mygame --title "My Game"
cd mygame
go mod tidy
go test ./world/...
The starter demonstrates scenes, action input, text, sound, a camera, pause and
scripted capture using a small platformer. It is an integration example,
not a genre or architecture requirement. Replace its rules, controls, level,
presentation and scene flow to fit the brief; a puzzle or card game should not
inherit gravity, jumping, camera scrolling or a platformer HUD. Existing projects
rarely need a scaffold. --ci adds a workflow and tools; inspect its triggers,
targets and release behavior before enabling it.
| Method | Responsibility | Important distinction |
|---|---|---|
Update() error | Sample actions, advance simulation, apply scene changes and trigger event audio | Default target is 60 fixed ticks/s. Catch-up updates, focus pauses and slow machines affect actual scheduling. |
Draw(screen *ebiten.Image) | Render the state produced by updates | Calls are not one-to-one with ticks. Do not advance gameplay, consume input edges or start sounds here. Renderer-owned caches are separate from simulation state. |
Layout(outsideW, outsideH int) (int, int) | Choose logical dimensions for rendering and input | Fixed and responsive designs are both valid. Account for small windows, aspect ratio and readability. |
dt. At 60
TPS, 30 ticks is 0.5 seconds of simulation time. ActualTPS is a diagnostic,
not a delta. SetTPS changes the whole update clock; it is not a universal
slow-motion control. Avoid SyncWithFPS for rules that require a fixed step.ebiten.Termination from Update for a clean stop. Other errors return
from RunGame; propagate failures rather than hiding them.Update. Separate held/pressed/released;
combine bindings before computing an action edge if that is the intended
behavior. Standard gamepad mappings need an availability check and stick dead
zones. Verify the advertised devices through menus and retry too.
Input.GeoM operations apply in call order. Pixel art needs deliberate
sampling/scaling; smooth art needs suitable filtering and antialiased geometry.
Preserve layer order while batching; sharing a sheet does not guarantee one
command. Custom final-screen transforms need matching pointer conversion.
Rendering.text/v2 and parse font sources once. Include fonts
covering the shipped scripts and their licences. Measure actual strings and
verify focus, long text and target-size readability. Text/UI.audio.Context per process. Match sample rate and PCM format:
DecodeF32 does not resample; DecodeWithSampleRate returns 16-bit PCM.
Overlapping effects need independent players or a voice pool; bound concurrency
for dense events. Resume browser audio after a gesture. Audio.Update, make reset/retry clear,
separate gameplay and cosmetic randomness, test saves if persistence is
promised. Architecture/testing.Run commands from the game directory; retain go.mod and go.sum. Use repository
build flags; -buildvcs=false below avoids depending on surrounding Git metadata.
go vet ./...
go test ./world/... # starter's GPU-independent rules
python3 "$skill_dir/scripts/check_ebitengine.py" .
go build -buildvcs=false -o game .
Run the checker after changing loop/input/audio code or reviewing old APIs. It is
a read-only, text-based advisory scan: inspect warnings in context. --json
returns the shared checker schema; --strict fails on warnings and --max-issues N
limits the report without changing totals. Deprecated APIs are warnings, not
proof of a broken build. A clean result proves neither API correctness nor
quality. Run other relevant package tests too; on Linux, tests that initialize
graphics need xvfb-run -a.
For the starter, capture with -demo -shot frame.png -shot-tick 240. On Linux,
use a virtual display and, if needed, null audio without changing HOME:
audio_config=$(mktemp)
printf 'pcm.!default { type null }\n' > "$audio_config"
ALSA_CONFIG_PATH="$audio_config" xvfb-run -a ./game \
-demo -shot frame.png -shot-tick 240
rm "$audio_config"
Open the PNG. Inspect more states as needed: first play, a busy/difficult moment, failure and outcome. Adapt scripted actions/capture points after changing the game; the template demo no longer proves anything about a different loop. For deeper input/replay tests, v2.10's opt-in VM may help (see Architecture/testing).
Build only promised targets, for example:
GOOS=windows GOARCH=amd64 go build -buildvcs=false -o game.exe .
GOOS=js GOARCH=wasm go build -buildvcs=false -o game.wasm .
Cross-compilation establishes buildability, not runtime support. Run browser builds over HTTP and inspect console/input/audio when they are a target. Native SDKs, store bindings and cgo dependencies can add requirements beyond Ebitengine's pure-Go desktop backend.
This skill owns Ebitengine/Go APIs. For portable design concerns, pair it with
the relevant installed discipline (for example game-ui-ux, game-feel,
create-game-assets, input-systems, performance-optimization or
save-systems), genre or shipping workflow. Bind the
engine slots to this skill's references, not another engine's example code.
Load only what the task needs; the complete folder also works on its own.
If available, Ebitengine's repository skills writing-kage-shaders and
run-ebitengine-app-headless provide version-specific advanced workflows. Other
game-design/store skills are optional supplements; this skill remains usable
without an external skill catalog.
まだレビューはありません。使ってみた感想をお寄せください。
ログインなしで書き込めます。使ってみた感想、質問、動かなかった環境などを気軽にどうぞ。
まだコメントはありません。最初のコメントを書いてみませんか。
敵やNPCの行動判断を、条件を順にたどる行動ツリーと選択肢を点数で比べるUtility AIで実装し、両者の組み合わせや判断の揺れの調整まで扱うスキル。
ゲームの音量バランスと状況に応じた音楽の変化を設計するスキル。音の種類ごとの一括調整、会話中のBGM抑制、効果音の変化、拍に合わせた演出を扱います。
RustのBevyゲームで、部品データと処理を分けるECS設計を支援。アプリ構成、データ検索、処理順序、移動速度やデータアクセス競合の修正を扱います。
ゲームの2D追従カメラや3D視点操作を実装・調整するスキル。滑らかな追従、進行方向の先読み、表示範囲の制限、壁へのめり込み対策を扱います。
カードゲームの山札・手札・捨て札の管理から、ドロー、シャッフル、ターン進行、コストと効果の処理順まで、基本ルールを整理して実装につなげるスキル。
ゲームの見た目に統一感を持たせ、スプライトや背景、UI素材の制作・調達からサイズ調整、実機での見え方の確認、出典・ライセンス管理まで進めるスキル。