godot-genre-moba

安装量: 43
排名: #17018

安装

npx skills add https://github.com/thedivergentai/gd-agentic-skills --skill godot-genre-moba
Genre: MOBA (Multiplayer Online Battle Arena)
Expert blueprint for MOBAs emphasizing competitive balance and strategic depth.
NEVER Do
NEVER client-side damage calculation
— Client says "I cast Q at direction V", server calculates damage. Otherwise hacking trivializes game.
NEVER ignore snowballing
— Winning team gets too strong. Implement comeback mechanics (kill bounties, catchup XP).
NEVER pathfind all minions every frame
— 100+ minions cause lag. Time-slice pathfinding over multiple frames.
NEVER sync position every frame
— Use client-side prediction. Sync position corrections at 10-20Hz, not 60Hz.
NEVER forget minion avoidance
— Enable NavigationAgent3D.avoidance_enabled so minions flow around each other, not stack.
Available Scripts
MANDATORY
Read the appropriate script before implementing the corresponding pattern.
skill_shot_indicator.gd
Mouse-following skillshot telegraph. Draws rectangular indicator, rotates toward cursor in _physics_process for ability range preview.
tower_priority_aggro.gd
Tower target priority stack: heroes-attacking-allies > minions > heroes. Deterministic targeting with closest-distance tiebreaker.
Core Loop
Lane
Player farms minions for gold/XP in a designated lane.
Trade
Player exchanges damage with opponent hero.
Gank
Player roams to other lanes to surprise enemies.
Push
Team destroys towers to open the map.
End
Destroy the enemy Core/Nexus. Skill Chain Phase Skills Purpose 1. Control rts-controls Right-click to move, A-move, Stop 2. AI godot-navigation-pathfinding Minion waves, Tower aggro logic 3. Combat godot-ability-system , godot-rpg-stats QWER abilities, cooldowns, scaling 4. Network godot-multiplayer-networking Authority, lag compensation, prediction 5. Map godot-3d-world-building Lanes, Jungle, River, Bases Architecture Overview 1. Lane Manager Spawns waves of minions periodically.

lane_manager.gd

extends Node @ export var lane_path : Path3D @ export var spawn_interval : float = 30.0 var timer : float = 0.0 func _process ( delta : float ) -> void : timer -= delta if timer <= 0 : spawn_wave ( ) timer = spawn_interval func spawn_wave ( ) -> void :

Spawn 3 Melee, 3 Ranged, 1 Cannon (every 3rd wave)

for i in range ( 3 ) : spawn_minion ( MeleeMinion , lane_path ) await get_tree ( ) . create_timer ( 1.0 ) . timeout 2. Minion AI Simple but follows strict rules.

minion_ai.gd

extends CharacterBody3D enum State { MARCH , COMBAT } var current_target : Node3D func _physics_process ( delta : float ) -> void : match state : State . MARCH : move_along_path ( ) scan_for_enemies ( ) State . COMBAT : if is_instance_valid ( current_target ) : attack ( current_target ) else : state = State . MARCH 3. Tower Aggro Logic The most misunderstood mechanic by new players.

tower.gd

func _on_aggro_check ( ) -> void :

Priority 1: Enemy Hero attacking Ally Hero

var hero_target = check_for_hero_aggro ( ) if hero_target : current_target = hero_target return

Priority 2: Closest Minion

Priority 3: Closest Hero

Key Mechanics Implementation Click-to-Move (RTS Style) Raycasting from camera to terrain. func _unhandled_input ( event : InputEvent ) -> void : if event . is_action_pressed ( "move" ) : var result = raycast_from_mouse ( ) if result : nav_agent . target_position = result . position Ability System (Data Driven) Defining "Fireball" or "Hook" without unique scripts for everything.

ability_data.gd

class_name
Ability
extends
Resource
@
export
var
cooldown
:
float
@
export
var
mana_cost
:
float
@
export
var
damage
:
float
@
export
var
effect_scene
:
PackedScene
Godot-Specific Tips
NavigationAgent3D
Use
avoidance_enabled
for minions so they flow around each other like water, rather than stacking.
MultiplayerSynchronizer
Sync Health, Mana, and Cooldowns. Do NOT sync position every frame if using Client-Side Prediction (advanced).
Fog of War
Use a
SubViewport
with a fog texture. Paint "holes" in the texture where allies are. Project this texture onto the terrain shader.
Common Pitfalls
Snowballing
Winning team gets too strong too fast.
Fix
Implement "Comeback XP/Gold" mechanisms (bounties).
Pathfinding Lag
100 minions pathing every frame.
Fix
Distribute pathfinding updates over multiple frames (Time Slicing).
Hacking
Client says "I dealt 1000 damage".
Fix
Client says "I cast Spell Q at Direction V". Server calculates damage. Reference Master Skill: godot-master
返回排行榜