组件架构
项目使用组合模式实现攻击系统:
HitboxComponent (攻击方)
↓
碰撞检测
↓
HurtboxComponent (受击方)
↓
伤害处理
↓
HealthComponent
2026/3/16大约 4 分钟
项目使用组合模式实现攻击系统:
HitboxComponent (攻击方)
↓
碰撞检测
↓
HurtboxComponent (受击方)
↓
伤害处理
↓
HealthComponent
项目使用 Callable 实现了一个轻量级的状态机,用于管理敌人 AI 的行为状态。这种方式比传统的状态模式更灵活。
class_name CallableStateMachine
var state_dictionary = {}
var current_state: String
项目使用 CallableStateMachine 实现敌人状态管理,配合服务器权威模式。
SPAWN (出生) → NORMAL (普通) → CHARGE_ATTACK (冲锋) → ATTACK (攻击)
# multiplayer_menu.gd
func _on_host_pressed() -> void:
var server_peer := ENetMultiplayerPeer.new()
var error := server_peer.create_server(MultiplayerConfig.port)
if error != Error.OK:
show_error(false)
return
multiplayer.multiplayer_peer = server_peer
get_tree().change_scene_to_packed(main_scene)
本系列教程基于 2D Multiplayer Course 项目,深入讲解 Godot 4 多人游戏开发的核心概念和实现方式。
强烈建议先观看配套视频教程,再结合本文档进行实践:
该项目是一个基于 Godot 4.x 的 2D 多人射击游戏,采用 P2P with Server Authority(具有服务器权威的 P2P)架构。使用 ENetMultiplayerPeer 实现 TCP/UDP 连接。
项目采用 服务器权威 (Server Authority) 模式:
这是实现玩家输入同步的核心组件,继承自 MultiplayerSynchronizer。
class_name PlayerInputSynchronizerComponent
extends MultiplayerSynchronizer
var movement_vector: Vector2 = Vector2.ZERO
var aim_vector: Vector2 = Vector2.RIGHT
var is_attack_pressed: bool
Main (Node)
├── MultiplayerSpawner
├── CenterPosition (Marker2D)
├── EnemyManager
│ ├── SpawnIntervalTimer
│ └── RoundTimer
├── BackgroundEffects (Node2D)
├── BackgroundMask (Sprite2D)
├── GameUI
├── PauseMenu
└── LobbyManager