重要前提
安装AI Skills的关键前提是:必须科学上网,且开启TUN模式,这一点至关重要,直接决定安装能否顺利完成,在此郑重提醒三遍:科学上网,科学上网,科学上网。查看完整安装教程 →
godot-genre-moba by thedivergentai/gd-agentic-skills
npx skills add https://github.com/thedivergentai/gd-agentic-skills --skill godot-genre-moba专注于竞技平衡与策略深度的 MOBA 专家蓝图。
multiplayer.is_server() 在权威服务器上严格验证法力值、射程和命中检测。TRANSFER_MODE_RELIABLE;必须为位置/速度使用 UNRELIABLE 或 UNRELIABLE_ORDERED 以防止网络拥塞。MultiplayerSynchronizer 使用较低的滴答率(10-20Hz),并实现插值/客户端预测以获得流畅的视觉效果。广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
get_next_path_position()_process() 内部查询 NavigationAgent 路径;必须使用 _physics_process() 与导航服务器和避障系统交互。RenderingServer 或导致引擎崩溃。path_search_max_polygons 设置得过低;如果代理在到达目的地前达到限制,它们会停止或行走不正确。Area2D;必须使用无节点的物理查询(intersect_ray)来绕过节点开销。Resource 脚本进行数据分离和内存优化。duplicate(true);修改共享资源上的增益效果将全局影响所有英雄。StringName(&"stunned")进行指针速度比较。Vector2i 和 TileMapLayer 以防止精度抖动。WorkerThreadPool 以维持 60+ FPS。Callable 绑定来实现解耦架构。is_equal_approx() 进行范围、冷却时间和法力值验证。| 阶段 | 技能 | 目的 |
|---|---|---|
| 1. 控制 | rts-controls | 右键移动,A键攻击移动,停止 |
| 2. AI | godot-navigation-pathfinding | 小兵波次,防御塔仇恨逻辑 |
| 3. 战斗 | godot-ability-system, godot-rpg-stats | QWER 技能,冷却时间,成长性 |
| 4. 网络 | godot-multiplayer-networking | 权威性,延迟补偿,预测 |
| 5. 地图 | godot-3d-world-building | 路线,野区,河道,基地 |
定期生成小兵波次。
# 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:
# 生成 3 近战,3 远程,1 炮车(每第 3 波)
for i in range(3):
spawn_minion(MeleeMinion, lane_path)
await get_tree().create_timer(1.0).timeout
简单但遵循严格规则。
# 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
新手玩家最常误解的机制。
# tower.gd
func _on_aggro_check() -> void:
# 优先级 1:攻击友方英雄的敌方英雄
# 优先级 2:攻击友方英雄的敌方单位
# 优先级 3:最近的敌方小兵
# 优先级 4:最近的敌方英雄
var target = determine_best_target()
if target:
shoot_at(target)
"QWER" 瞄准的实现模式:
skill_shot_indicator.gd)。从摄像机向地形进行射线投射。
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_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
avoidance_enabled,使它们像水流一样彼此绕过,而不是堆叠在一起。SubViewport。在有友军的地方在纹理上"绘制"空洞。将此纹理投影到地形着色器上。每周安装量
58
仓库
GitHub 星标数
88
首次出现
2026年2月10日
安全审计
安装于
opencode55
gemini-cli54
codex54
github-copilot53
kimi-cli53
amp53
Expert blueprint for MOBAs emphasizing competitive balance and strategic depth.
multiplayer.is_server().TRANSFER_MODE_RELIABLE for continuous movement; strictly use UNRELIABLE or UNRELIABLE_ORDERED for position/velocity to prevent network congestion.MultiplayerSynchronizer and implement Interp/Client-Side Prediction for visual smoothness.get_next_path_position() calls across multiple frames.NavigationAgent paths inside _process(); strictly use _physics_process() to interact with the navigation server and avoidance systems.RenderingServer or crashing the engine.path_search_max_polygons too low in large maps; agents will stop or walk incorrectly if the limit is reached before the destination.Area2D for high-performance Fog of War LOS; strictly use nodeless physics queries (intersect_ray) to bypass node overhead.Resource scripts for data separation and memory efficiency.duplicate(true) on shared ability Resources; modifying a buff on a shared resource will affect all heroes globally.StringName (&"stunned") for pointer-speed comparisons.Vector2i and TileMapLayer to prevent precision jitter.WorkerThreadPool to maintain 60+ FPS.Callable bindings for decoupled architecture.is_equal_approx() for range, cooldown, and mana validations.| 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 |
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
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
The most misunderstood mechanic by new players.
# tower.gd
func _on_aggro_check() -> void:
# Priority 1: Enemy Hero attacking Ally Hero
# Priority 2: Enemy Unit attacking Ally Hero
# Priority 3: Closest Enemy Minion
# Priority 4: Closest Enemy Hero
var target = determine_best_target()
if target:
shoot_at(target)
Implementation pattern for "QWER" targeting:
skill_shot_indicator.gd) while mouse is held.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
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
avoidance_enabled for minions so they flow around each other like water, rather than stacking.SubViewport with a fog texture. Paint "holes" in the texture where allies are. Project this texture onto the terrain shader.Weekly Installs
58
Repository
GitHub Stars
88
First Seen
Feb 10, 2026
Security Audits
Gen Agent Trust HubPassSocketPassSnykPass
Installed on
opencode55
gemini-cli54
codex54
github-copilot53
kimi-cli53
amp53
GSAP React 动画库使用指南:useGSAP Hook 与最佳实践
3,900 周安装
Mermaid 图表专家 - 创建架构图、流程图、ERD等专业图表,提升技术文档质量
657 周安装
Vercel AI SDK 函数示例:文本生成、图像生成、语音转录等完整代码模板
655 周安装
OpenCLI Repair - AI驱动的适配器自我修复工具,诊断与修复网站适配器故障
657 周安装
Vercel before-and-after:网页前后对比截图工具,一键生成PR对比图
664 周安装
Sentry Next.js SDK 完整设置指南:错误监控、追踪、会话回放
673 周安装
内容摘要AI工具:智能提取YouTube、网页、PDF和推文内容,支持测验学习和深度探索
675 周安装
godot-3d-world-building |
| Lanes, Jungle, River, Bases |