사용 방법
- 설치 명령을 복사하고 자신의 에이전트 환경에 설치하기 전에 소스 패키지를 확인하세요.
- 필요한 도구, 인증 정보, 지원 환경은 원본 문서에서 확인하세요.
- 입력과 원하는 산출물을 설명하고 출처와 결과를 대조하세요.
npx skills add https://github.com/ewrogers/sgdk-skills --skill sgdk-shmup시작 전 확인
- 설치에는 모델 구독, API 한도, 파일 접근 권한이 포함되지 않습니다.
- 별점 수와 설치 수는 활동 지표이며 독립적인 품질·보안 검증이 아닙니다.
원본 저장소의 제목, 예시, 코드, 표, 링크, 이미지를 유지해 표시합니다.
SGDK Shmup
Choose the scroll direction and playable rectangle first. Then prove one enemy, one readable attack and one satisfying weapon before adding a whole stage. The game's mood, artwork, music, difficulty and scoring rules belong to the developer; the labs' choices are examples, not genre requirements.
Choose the reference
- Playfield and flow: vertical versus horizontal
layouts, HUD placement, scrolling, waves, score and recovery.
- Bullets and encounters: patterns, pools, collision,
power-ups, bombs and boss phases.
- SGDK rendering and budgets: verified APIs,
shared sprite frames, scanlines, DMA, palettes and runtime validation.
- Shooter Lab: a playable vertical example with
a side HUD, two stages, weapon upgrades, shields, Twins, delayed bombs and patterned bosses.
- Carpet of the Crescent: a playable horizontal
example with three loadouts/stages, parallax, a gem-driven upgrade track, returning crescents, a sustained piercing beam and chaining magic.
The labs use ordinary C game logic and SGDK directly. SGDK provides rendering, input, sound and frame processing; wave scripting, bullet patterns, hitboxes, scoring and boss state are original game code. Use ewrogers/sgdk:latest, pull before building, and check unfamiliar APIs in the selected SDK. The reference was checked against SGDK 2.11.
Design for readable pressure
Keep player, enemy, projectile and pickup collision separate. A ship's damaging core can be smaller than its artwork. Make a focus/slow mode display that core if it helps the chosen game. Keep HUD pixels outside movement, spawn and culling bounds. Horizontal play is not just vertical coordinates swapped: reconsider reaction distance, terrain and enemy entrances.
Snapshot aimed shots when fired unless homing is explicitly intended. Build spreads, rings and spirals from bounded tables or verified SDK math. Pick a pool exhaustion policy, such as skipping a complete volley, and track refusals while tuning. Do not allocate per projectile or silently turn missing visuals into invisible damaging bullets.
Separate stage progress from actor lifetime. Use stable spawn order, bounded per-tick work and explicit rules when enemy slots are busy. Boss entry, damage windows, phase changes and defeat should be visible. Give recovery room after a player hit and clear only the objects the game's rules intend to clear.
Budget the busy moment
A bullet is not free because its art is small. Budget simulation, collision, RAM, sprite count, sprite pixels per scanline, VRAM and DMA separately. Culling and retirement are different operations. Reuse resident animation frames where appropriate and avoid needless uploads for repeated bullets.
Measure an optimized ROM with the busiest attack, player fire, effects and music together. Check focused and normal movement, pause, power changes and nominal PAL/NTSC timing. Input edges must not repeat on PAL's occasional second simulation step. A fixed clock does not recover real time lost to missed frames.
Test the rules, then play
Execute tests for pattern symmetry/direction, full pools, collision at maximum speed, one hit per projectile, invulnerability, score bounds, wave ordering, phase transitions, restart and pause. Compare broad-phase collision candidates against an independent reference before optimizing. Include long deterministic runs and target-code checks where host arithmetic cannot establish behavior.
Build tests establish API/resource compatibility; they do not prove VDP timing, art readability or sound quality. Use the lab checklist in an emulator and on hardware when available. Optional core skills such as sgdk-graphics, sgdk-input, sgdk-math, sgdk-audio and sgdk-performance can help when installed. This skill's resources work independently.




