开源游戏引擎Godot正在悄然崛起

知识点总结

摘要

Godot 是一款完全免费、开源、跨平台的 2D/3D 游戏引擎,采用 MIT 协议,没有任何授权费、分成或订阅门槛。自 2023 年 Unity 的"运行时收费"风波之后,越来越多独立开发者把目光投向了它,如今它已经从"小众替代品"变成了独立游戏圈里一个真正拿得出手的主力选项。

是什么

Godot 最早是阿根廷开发者 Juan Linietsky 和 Ariel Manzur 在布宜诺斯艾利斯打造的内部引擎,2014 年正式开源,由非营利的 Godot 基金会维护至今。它的核心是一套"节点 + 场景"的架构:任何游戏对象都是节点,节点组合成场景,场景又可以互相嵌套复用,这种组合式设计让项目结构天然清晰,也是 Godot 区别于传统"实体-组件"式引擎的标志性特点。

引擎内置了独立的 2D 渲染管线(像素级精确坐标,做像素风游戏格外顺手)和一套基于 Vulkan 的 3D 渲染管线,脚本语言是专为游戏逻辑设计的 GDScript(语法接近 Python,上手快),同时也支持 C#、C++,并可以通过 GDExtension 接入其他语言。导出目标覆盖 Linux、macOS、Windows、Android、iOS 和网页,主机平台则需要通过第三方发行合作方间接支持。

核心优势

零成本、零分成。 MIT 协议意味着不管你的游戏卖出多少份、赚多少钱,都不需要给 Godot 交一分钱,这在 2023 年 Unity 一度宣布按安装量收取"运行时费用"、引发开发者大规模出走之后,显得格外有吸引力。

真正的开源治理。 Godot 不属于任何一家公司,代码库和路线图完全公开,任何人都可以提交代码、参与讨论,不存在"某个企业突然改商业规则"的风险。

轻量、迭代快。 编辑器本身体积很小,启动和热重载速度快,尤其适合 2D 游戏和中小体量的 3D 项目的快速原型迭代。

社区正在快速壮大。 Steam 上用 Godot 制作的新游戏数量呈指数级增长:2019 年全年只有 56 款,2023 年涨到 375 款,2025 年已达 1229 款,六年间增长了约 22 倍。官方 2026 年的统计也提到,每个版本的编辑器下载量稳定在 200 万次左右,社区规模在过去两年翻了一番。

热门作品

Godot 早已不是"玩具引擎",不少叫好又叫座的独立游戏都诞生于此:

  • 《杀戮尖塔 2》(Slay the Spire 2):卡牌肉鸽鼻祖的正统续作,开发团队在 Unity 上做了两年多之后,因为收费政策争议毅然整体迁移到 Godot 重做,是这场引擎迁移潮里最有分量的一个案例。
  • 《土豆兄弟》(Brotato):单人肉鸽射击游戏,操控一颗武装到牙齿的土豆在一波波外星生物围攻中生存,全平台销量已突破千万份。
  • Buckshot Roulette:第一人称桌面模拟恐怖游戏,玩家和诡异的庄家轮流面对装填了实弹与空包弹的道具对赌生死,全靠推理下一发是不是实弹,紧张感拉满。
  • Dome Keeper:挖矿与塔防结合的生存游戏,间歇下潜挖掘资源升级装备,再赶在怪物潮来临前回到地面守住能量穹顶。
  • Halls of Torment:美术致敬初代《暗黑破坏神》的"弹幕生存"游戏,一局 30 分钟,在成群敌人的围剿中不断变强。
  • Cassette Beasts:把怪物收集玩法和"用磁带录制怪物并变身"机制结合的开放世界 RPG,口碑与销量双丰收。
  • Cruelty Squad:用故意粗糙的 PS1 画风包装企业反乌托邦讽刺题材的沉浸式射击游戏,是独立游戏圈公认的邪典神作。
  • Road to Vostok:芬兰团队打造的硬核单人生存游戏,借鉴《逃离塔科夫》与 S.T.A.L.K.E.R. 系列的搜刮玩法,2026 年 4 月进入抢先体验。

面向人群

  • 独立开发者与小团队:预算有限、又不想被平台抽成或授权费卡脖子的团队,是 Godot 最核心的用户群。
  • 2D 游戏开发者:像素风、卡牌、Roguelike 等品类在 Godot 上体验尤其顺畅。
  • 教学与初学者:GDScript 语法简单、文档友好,很适合作为学习游戏开发的第一站。
  • 对引擎可控性有要求的团队:需要深度定制渲染管线或工具链、又不想被商业引擎的黑盒限制的开发者。

如何使用

  1. 下载与建立项目:从官网下载编辑器(不到 100MB,免安装,解压即用)。新建项目时可以选择渲染方式——Forward+(画质最好,面向中高端显卡)、Mobile(移动端优化)或 Compatibility(兼容老显卡和网页导出),后续也能在项目设置里切换,不用推倒重来。

  2. 搭建场景树:Godot 里"一切皆场景"。新建一个 2D 场景,添加 CharacterBody2D 作为角色根节点,再挂上 Sprite2D(贴图)和 CollisionShape2D(碰撞体)两个子节点——这就是一个可移动、可碰撞的角色雏形。

  3. 编写移动与跳跃逻辑:给根节点挂一个 GDScript 脚本,处理输入和物理运动:

extends CharacterBody2D

const SPEED = 300.0
const JUMP_VELOCITY = -400.0

func _physics_process(delta: float) -> void:
    # 不在地面上时施加重力,get_gravity() 直接读取项目设置里的重力值
    if not is_on_floor():
        velocity += get_gravity() * delta

    if Input.is_action_just_pressed("ui_accept") and is_on_floor():
        velocity.y = JUMP_VELOCITY

    var direction := Input.get_axis("ui_left", "ui_right")
    velocity.x = direction * SPEED
    move_and_slide()
  1. 配置输入映射:在「项目设置 → Input Map」里,可以把 ui_left/ui_right/ui_accept 这类内置动作重新绑定到手柄或自定义按键;代码里只调用动作名,不需要写死具体键位,换键位、加手柄支持都不用改代码。

  2. 用信号串联交互:节点之间靠"信号"(Signal)通信而不是相互直接调用,比如让一个 Area2D 检测到角色进入范围时发出信号,在另一个脚本里连接处理:

func _on_area_2d_body_entered(body):
    if body.name == "Player":
        get_node("../UI/ScoreLabel").text = "触发!"
  1. 一键运行与调试:按 F5 运行整个项目,或 F6 只运行当前场景;4.8 版本起游戏预览默认嵌入编辑器窗口内,不用来回切换应用。断点、变量监视器、远程场景树检查器都是编辑器自带功能,不需要额外插件。

  2. 导出到目标平台:打开「项目 → 导出」,先在编辑器内一键下载对应平台的导出模板,再新增导出预设(Windows/macOS/Linux/Android/iOS/Web 任选),填好图标、包名等信息后点击「导出项目」,即可生成对应平台的可执行文件或安装包,全程不涉及任何授权申请或额外付费环节。

目前最新稳定版是 4.7.2,同时还在维护 3.6.3 长期支持分支;4.8 版本已经进入开发测试阶段,会带来 3D 拖尾特效节点、多重反弹环境光遮蔽等新能力。如果你正在评估一款没有商业包袱、又足够灵活的游戏引擎,Godot 值得认真看一看:godotengine.org

posted @ 2026-09-03 09:38  RobinDevNotes  阅读(18)  评论(0)    收藏  举报