godot-genre-party

安装量: 41
排名: #17767

安装

npx skills add https://github.com/thedivergentai/gd-agentic-skills --skill godot-genre-party
Genre: Party / Minigame Collection
Expert blueprint for party games balancing accessibility, variety, and social fun.
NEVER Do
NEVER long tutorials
— Players want instant fun. 3-second looping GIF + 1-sentence instruction is ideal.
NEVER excessive downtime
— Loading between 10s minigames kills momentum. Keep assets light, use threaded loading, or persistent board scene.
NEVER inconsistent controls
— Minigame A uses A to jump, B uses B. Standardize: A=Accept/Action, B=Back/Cancel across all minigames.
NEVER forget dynamic input mapping
— Remap InputMap at runtime (InputMap.action_add_event) for "p1_jump", "p2_jump" per controller.
NEVER ignore accessibility
— Color-blind modes, audio cues for visual events, adjustable difficulty. Party games need inclusive design.
Available Scripts
MANDATORY
Read the appropriate script before implementing the corresponding pattern.
party_input_router.gd
4-player device isolation for local multiplayer. Maps device_id to player_id, handles join requests, routes inputs to player-specific signals.
Core Loop
Lobby
Players join and select characters/colors.
Meta
Players move on a board or vote for the next game.
Play
Short, intense minigame (30s - 2m).
Score
Winners get points/coins.
Repeat
Cycle continues until a turn limit or score limit. Skill Chain Phase Skills Purpose 1. Input input-mapping Handling 2-4 local controllers dynamically 2. Scene godot-scene-management Loading/Unloading minigames cleanly 3. Data godot-resource-data-patterns Defining minigames via Resource files 4. UI godot-ui-containers Scoreboards, instructions screens 5. Logic godot-turn-system Managing the "Board Game" phase Architecture Overview 1. Minigame Definition Using Resources to define what a minigame is.

minigame_data.gd

class_name MinigameData extends Resource @ export var title : String @ export var scene_path : String @ export var instructions : String @ export var is_1v3 : bool = false @ export var thumbnail : Texture2D 2. The Party Manager Singleton that persists between minigames.

party_manager.gd

extends Node var players : Array [ PlayerData ] = [ ]

Tracks score, input_device_id, color

var current_round : int = 1 var max_rounds : int = 10 func start_minigame ( minigame : MinigameData ) -> void :

1. Show instructions scene

await show_instructions ( minigame )

2. Transition to actual game

get_tree ( ) . change_scene_to_file ( minigame . scene_path )

3. Pass player data to the new scene

(The minigame scene must look up PartyManager in _ready)

  1. Minigame Base Class Every minigame inherits from this to ensure compatibility.

minigame_base.gd

class_name Minigame extends Node signal game_ended ( results : Dictionary ) func _ready ( ) -> void : setup_players ( PartyManager . players ) start_countdown ( ) func end_game ( ) -> void :

Calculate winner

game_ended . emit ( results ) PartyManager . handle_minigame_end ( results ) Key Mechanics Implementation Local Multiplayer Input Handling dynamic device assignment.

player_controller.gd

@ export var player_id : int = 0

0, 1, 2, 3

func _physics_process ( delta : float ) -> void : var device = PartyManager . players [ player_id ] . device_id

Use the specific device ID for input

var direction = Input . get_vector ( "p%s_left" % player_id , . . . )

Better approach: Remap InputMap actions at runtime explicitly

Asymmetric Gameplay (1v3)
Balancing the "One" vs the "Many".
The One
Powerful, high HP, unique abilities (e.g., Bowser suit).
The Many
Weak individually, must cooperate to survive/win.
Godot-Specific Tips
SubViewport
Powerful for 4-player split-screen. Each player gets a camera, all rendering the same world (or different worlds!).
InputEventJoypadButton
Use
Input.get_connected_joypads()
to auto-detect controllers on the Lobby screen.
Remapping
Godot's
InputMap
system can be modified at runtime using
InputMap.action_add_event()
. Creating "p1_jump", "p2_jump" dynamically is a common pattern.
Common Pitfalls
Long Tutorials
Players just want to play.
Fix
3-second looping GIF + 1 sentence instruction overlay before the game starts.
Downtime
Loading times between 10-second minigames.
Fix
Keep minigame assets light. Use a "Board" scene that stays loaded in the background if possible, or use creating
Thread
loading.
Confusing Controls
Minigame A uses "A" to jump, Minigame B uses "B".
Fix
Standardize. "A" is always Accept/Action. "B" is always Back/Cancel. Reference Master Skill: godot-master
返回排行榜