分享几款做淘客网站的服务器,好男人好资源在线观看免费官网,巴彦淖尔网站制作,dw免费网站模板记录工作实践 这是全新的系列#xff0c;一直有个游戏制作梦 感谢AI时代#xff0c;让这一切变得可行 长欢迎共同见证#xff0c;期更新#xff0c;欢迎保持关注#xff0c;待到游戏上架那一天#xff0c;一起玩
面向AI编程的godot独立游戏制作流程实录001
本期是第… 记录工作实践 这是全新的系列一直有个游戏制作梦 感谢AI时代让这一切变得可行 长欢迎共同见证期更新欢迎保持关注待到游戏上架那一天一起玩
面向AI编程的godot独立游戏制作流程实录001
本期是第一篇 统领总纲
首先搞清楚大象长什么样子也就是游戏是怎么跑起来的。
游戏开发的本质
一、指挥中心与部门
游戏是一个指挥中心主循环带着一群部门功能模块协同工作。
指挥中心主循环负责每秒发出指令协调所有部门。核心部门核心模块比如“玩家部门”“资源部门”“UI部门”各自有自己的任务。子部门拓展功能比如“建造小组”挂在“资源部门”下。
这个比喻的好处是
强调协调性指挥中心不自己干活而是通过指令让各部门动起来。突出通讯部门之间通过“报告”和“请求”交流。 二、主循环如何与其他部分通讯
你提到“主循环通过API调用各个核心模块”这个理解方向是对的让我们拆解一下实际的运作方式。
主循环的角色 主循环是游戏引擎比如Godot内置的“心脏”它每帧约1/60秒运行一次负责
检查输入玩家按键。更新状态计算位置、资源。渲染画面。
在Godot中主循环由引擎管理你通过特定的函数“插入”你的代码比如
_ready()游戏启动时运行一次。_process(delta)每帧运行更新逻辑。_input(event)处理输入事件。
通讯的方式 主循环并不直接“写信”给每个模块而是通过节点树Node Tree和函数调用来通讯。Godot的节点系统就像一个组织架构图
主节点指挥中心是根节点。子节点部门挂在主节点下。
通讯机制
直接调用主节点可以调用子节点的函数。信号Signal子节点可以向上“报告”事件。共享数据通过变量在节点间传递信息。
API和SDK的类比 API应用程序接口你可以把Godot的内置函数比如move_and_slide()看作API。它们是主循环提供给你的“工具”让你能指挥模块做事。 SDK软件开发包Godot整个引擎就是一个SDK包含工具、函数、编辑器帮助你开发游戏。
在你的游戏中主循环通过这些“接口”调用核心模块而不是手动写通讯代码。 三、实际代码中的通讯
让我们用一个简单例子看看主循环如何与模块互动。 示例场景采集游戏
主节点Main.tscn负责协调。核心模块1Player.tscn控制玩家移动。核心模块2ResourceManager.tscn管理资源。UI模块UI.tscn显示资源。
主脚本指挥中心
extends Node2Dvar resources {wood: 0} # 共享数据onready var player $Player # 子节点玩家部门
onready var resource_manager $ResourceManager # 子节点资源部门
onready var ui $UI # 子节点UI部门func _ready():print(指挥中心启动)func _process(delta):player.update(delta) # 告诉玩家部门更新ui.update(resources) # 告诉UI部门显示最新数据func _input(event):if event.is_action_pressed(ui_select):resource_manager.collect(wood, 1) # 通知资源部门加木材玩家模块Player.gd
extends KinematicBody2Dvar speed 100
func update(delta):var velocity Vector2.ZEROif Input.is_action_pressed(ui_right):velocity.x 1move_and_slide(velocity * speed) # 使用Godot的API移动资源模块ResourceManager.gd
extends Nodefunc collect(resource_type, amount):get_parent().resources[resource_type] amount # 更新主节点的共享数据print(采集了, amount, resource_type)UI模块UI.gd
extends Controlfunc update(resources):$Label.text 木材: str(resources[wood]) # 读取共享数据并显示四、实际运作过程
主循环启动
Godot每帧调用Main.gd的_process(delta)。
通讯发生
player.update(delta)让玩家移动。玩家点击鼠标_input调用resource_manager.collect()加木材。ui.update(resources)刷新屏幕上的木材数量。
结果
玩家感觉移动、采集、显示是“同时”发生的因为主循环每秒跑60次。
文件关系
有多个文件Main.gd、Player.gd、ResourceManager.gd、UI.gd。主循环通过节点引用$Player或函数调用collect()联系它们。不需要手动写“API”Godot的节点系统已经提供了通讯框架。