【够用就好006】如何从零开发游戏上架steam面向AI编程的godot独立游戏制作实录001流程

  • 记录工作实践

  • 这是全新的系列,一直有个游戏制作梦

  • 感谢AI时代,让这一切变得可行

  • 长欢迎共同见证,期更新,欢迎保持关注,待到游戏上架那一天,一起玩

面向AI编程的godot独立游戏制作流程实录001

本期是第一篇 统领总纲

首先搞清楚大象长什么样子,也就是游戏是怎么跑起来的。

游戏开发的本质

一、指挥中心与部门

游戏是一个指挥中心(主循环),带着一群部门(功能模块)协同工作。

  • 指挥中心(主循环):负责每秒发出指令,协调所有部门。
  • 核心部门(核心模块):比如“玩家部门”“资源部门”“UI部门”,各自有自己的任务。
  • 子部门(拓展功能):比如“建造小组”挂在“资源部门”下。

这个比喻的好处是:

  • 强调协调性:指挥中心不自己干活,而是通过指令让各部门动起来。
  • 突出通讯:部门之间通过“报告”和“请求”交流。

二、主循环如何与其他部分通讯?

你提到“主循环通过API调用各个核心模块”,这个理解方向是对的!让我们拆解一下实际的运作方式。

  1. 主循环的角色
    主循环是游戏引擎(比如Godot)内置的“心脏”,它每帧(约1/60秒)运行一次,负责:
  • 检查输入(玩家按键)。
  • 更新状态(计算位置、资源)。
  • 渲染画面。

在Godot中,主循环由引擎管理,你通过特定的函数“插入”你的代码,比如:

  • _ready():游戏启动时运行一次。
  • _process(delta):每帧运行,更新逻辑。
  • _input(event):处理输入事件。
  1. 通讯的方式
    主循环并不直接“写信”给每个模块,而是通过节点树(Node Tree)和函数调用来通讯。Godot的节点系统就像一个组织架构图:
  • 主节点(指挥中心)是根节点。
  • 子节点(部门)挂在主节点下。

通讯机制:

  • 直接调用:主节点可以调用子节点的函数。
  • 信号(Signal):子节点可以向上“报告”事件。
  • 共享数据:通过变量在节点间传递信息。
  1. API和SDK的类比
  • API(应用程序接口):你可以把Godot的内置函数(比如move_and_slide())看作API。它们是主循环提供给你的“工具”,让你能指挥模块做事。

  • SDK(软件开发包):Godot整个引擎就是一个SDK,包含工具、函数、编辑器,帮助你开发游戏。

在你的游戏中,主循环通过这些“接口”调用核心模块,而不是手动写通讯代码。


三、实际代码中的通讯

让我们用一个简单例子,看看主循环如何与模块互动。
示例场景:采集游戏

  • 主节点:Main.tscn,负责协调。
  • 核心模块1:Player.tscn,控制玩家移动。
  • 核心模块2:ResourceManager.tscn,管理资源。
  • UI模块:UI.tscn,显示资源。
  1. 主脚本(指挥中心)
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) # 通知资源部门加木材
  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移动
  1. 资源模块(ResourceManager.gd)
extends Nodefunc collect(resource_type, amount):get_parent().resources[resource_type] += amount # 更新主节点的共享数据print("采集了", amount, resource_type)
  1. UI模块(UI.gd)
extends Controlfunc update(resources):$Label.text = "木材: " + str(resources["wood"]) # 读取共享数据并显示

四、实际运作过程
  1. 主循环启动:
  • Godot每帧调用Main.gd的_process(delta)。
  1. 通讯发生:
  • player.update(delta)让玩家移动。
  • 玩家点击鼠标,_input调用resource_manager.collect()加木材。
  • ui.update(resources)刷新屏幕上的木材数量。
  1. 结果:
  • 玩家感觉移动、采集、显示是“同时”发生的,因为主循环每秒跑60次。

文件关系

  • 有多个文件(Main.gd、Player.gd、ResourceManager.gd、UI.gd)。
  • 主循环通过节点引用($Player)或函数调用(collect())联系它们。
  • 不需要手动写“API”,Godot的节点系统已经提供了通讯框架。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/29187.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java 重点知识 — JVM存储模块与类加载器

1 jvm主要模块 方法区 存储了由类加载器从.class文件中解析的类的元数据(类型信息、域信息、方法信息)及运行时常量池(引用符号及字面量)。 所有线程共享;内存不要求连续,可扩展,可能发生垃圾回…

Docker基础篇——什么是Docker与Docker的仓库、镜像、容器三大概念

大家好我是木木,在当今快速发展的云计算与云原生时代,容器化技术蓬勃兴起,Docker 作为实现容器化的主流工具之一,为开发者和运维人员带来了极大的便捷 。下面我们一起了解下什么是Docker与与Docker的仓库、镜像、容器三大概念。 …

网页制作11-html,css,javascript初认识のCCS样式列表(下)

六、外边距,内边距,边框属性 盒子模型: 1、外边距:margin img{ margin:40px 30px 10px 20px; }/*外边距复合属性:上右下左*/ 2、内边距 body{ padding:10px 20px 40px 30px; }/*内边距复合属性:上右下左*/ 3、边框 1)边框样式 取…

爬虫Incapsula reese84加密案例:Etihad航空

声明: 该文章为学习使用,严禁用于商业用途和非法用途,违者后果自负,由此产生的一切后果均与作者无关 一、找出需要加密的参数 1.js运行 atob(‘aHR0cHM6Ly93d3cuZXRpaGFkLmNvbS96aC1jbi8=’) 拿到网址,F12打开调试工具,随便搜索航班,切换到network搜索一个时间点可以找…

Unity 适用Canvas 为任一渲染模式的UI 拖拽

RectTransformUtility-ScreenPointToWorldPointInRectangle - Unity 脚本 API 将一个屏幕空间点转换为世界空间中位于给定RectTransform 平面上的一个位置。 实现 获取平面位置。 parentRT transform.parent as RectTransform; 继承IPointerDownHandler 和IDragHandler …

【HDLbits--FSM续(二)】

HDLbits--FSM-2 本篇文章接续介绍Verilog中FSM典型案例; 题目:Lemmings3 module top_module(input clk,input areset, // Freshly brainwashed Lemmings walk left.input bump_left,input bump_right,input ground,input dig,output walk_left,outpu…

安装与配置 STK-MATLAB 接口

STK版本为11.6 Matlab版本为R2018a STK 提供 Connect 和 Object Model (COM) 两种接口与 MATLAB 交互,推荐使用 COM接口进行二次开发。 确保安装了 STK,并且 MATLAB 可以访问 STK Object Model。 在 MATLAB 中运行: % 添加 STK COM 库&#…

docker-compose Install reranker(fastgpt支持) GPU模式

前言BGE-重新排名器 与 embedding 模型不同,reranker 或 cross-encoder 使用 question 和 document 作为输入,直接输出相似性而不是 embedding。 为了平衡准确性和时间成本,cross-encoder 被广泛用于对其他简单模型检索到的前 k 个文档进行重…

计算机网络(1) 网络通信基础,协议介绍,通信框架

网络结构模式 C/S-----客户端和服务器 B/S -----浏览器服务器 MAC地址 每一个网卡都拥有独一无二的48位串行号,也即MAC地址,也叫做物理地址、硬件地址或者是局域网地址 MAC地址表示为12个16进制数 如00-16-EA-AE-3C-40 (每一个数可以用四个…

OpenCV计算摄影学(16)调整图像光照效果函数illuminationChange()

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 对选定区域内的梯度场应用适当的非线性变换,然后通过泊松求解器重新积分,可以局部修改图像的表观照明。 cv::illuminati…

Arcgis中添加脚本工具箱

文章目录 准备资料1、打开arcmap2、找到目录窗口3、复制粘贴工具箱的路径4、添加或者确认python脚本路径准备资料 (1)工具箱 (2)python脚本 1、打开arcmap 2、找到目录窗口 3、复制粘贴工具箱的路径 4、添加或者确认python脚本路径 脚本上右键属性(注意:脚本内容和路径…

贪心算法一

> 作者:დ旧言~ > 座右铭:松树千年终是朽,槿花一日自为荣。 > 目标:了解什么是贪心算法,并且掌握贪心算法。 > 毒鸡汤:有些事情,总是不明白,所以我不会坚持。早安! >…

专业工具,杜绝一切垃圾残留!

在安装大多数软件时均会在系统注册表中创建相应的条目。如果卸载后仍然存在注册表残留,可能会导致再次安装时出现失败,同时也会对系统性能和存储空间产生负面影响。常见的卸载残留包括注册表项、程序文件夹、用户数据文件夹、临时文件以及相关插件等。 …

【音视频】ffplay常用命令

一、 ffplay常用命令 -x width:强制显示宽度-y height:强制显示高度 强制以 640*360的宽高显示 ffplay 2.mp4 -x 640 -y 360 效果如下 -fs 全屏显示 ffplay -fs 2.mp4效果如下: -an 禁用音频(不播放声音)-vn 禁…

【STM32】STM32系列产品以及新手入门的STM32F103

📢 STM32F103xC/D/E 系列是一款高性能、低功耗的 32 位 MCU,适用于工业、汽车、消费电子等领域;基于 ARM Cortex-M3,主频最高 72MHz,支持 512KB Flash、64KB SRAM,适合复杂嵌入式应用,提供丰富的…

防火墙虚拟系统实验

拓扑图 需求一 安全策略要求: 1、只存在一个公网IP地址,公司内网所有部门都需要借用同一个接口访问外网 2、财务部禁止访问Internet,研发部门只有部分员工可以访问Internet,行政部门全部可以访问互联网 3、为三个部门的虚拟系统分…

K8s 1.27.1 实战系列(四)验证集群及应用部署测试

一、验证集群可用性 1、检查节点 kubectl get nodes ------------------------------------------------------ NAME STATUS ROLES AGE VERSION k8s-master Ready control-plane 3h48m v1.27.1 k8s-node1 Ready <none> …

IDC权威认证!永洪科技入选 IDC「GBI图谱」,点亮生成式 BI 价值灯塔

大数据市场正在稳步前进&#xff0c;生成式AI已成为厂商服务的重点方向&#xff0c;其发展离不开数据底座建设和数据工程管理&#xff0c;反过来AI也会帮助开发运维人员、业务人员和管理层更好地使用、查询数据。IDC调研数据显示&#xff0c;在生成式AI的驱动下&#xff0c;未来…

全面回顾复习——C++语法篇1(基于牛客网C++题库)

注&#xff1a;牛客网允许使用万能头文件#include<bits/stdc.h> 1、求类型长度——sizeof&#xff08;&#xff09;函数 2、将浮点数四舍五入——round&#xff08;&#xff09;函数——前面如果加上static_cast会更安全一些 在C语言中可以使用printf&#xff08;“.0l…

2025.3.9机器学习笔记:文献阅读

2025.3.9周报 一、文献阅读题目信息摘要Abstract创新点网络架构实验结论不足以及展望 一、文献阅读 题目信息 题目&#xff1a; Time-series generative adversarial networks for flood forecasting期刊&#xff1a; Journal of Hydrology作者&#xff1a; Peiyao Weng, Yu …