Welcome Guest ( Log In | Register )

欢迎访问本站。游客仅能浏览首页新闻、版块主题、维基条目与资源信息,需登录后方可获得内容发布、话题讨论、维基编辑与资源下载等权限。若无账号请先完成注册流程。
 
Reply to this topicStart new topic
> Godot 游戏引擎简介
Bozar
2020-04-21, 14:47
Post #1


GEEKs will Eventually Evolve into Kryptonians. | All my jokes are cries for help.
Group Icon
 1365
   75

Group: Avatar
Posts: 1132
Joined: 2008-05-18
Member No.: 21346




QUOTE

凉宫春日暖,荒木旧燕还。野火烧不尽,又见紫罗兰。

## 入门教程

Godot 是一款免费开源的游戏引擎([官方网站](https://godotengine.org/))。最近我用该引擎做了一个 Roguelike 游戏原型([Github 仓库](https://github.com/Bozar/GodotRoguelikeDemo)),还写了一份教程([维基页面](https://github.com/Bozar/GodotRoguelikeTutorial/wiki))。你的下一个问题是:Godot 好用吗?话分两头说。和商业引擎比,Godot 的能力是有极限的;但是根据个人经验,用来制作 2D 回合制游戏应该够用了,绘制图形界面和处理按键输入都很方便,引擎自带脚本编辑器,也可以用 Visual Studio Code 写脚本。本文不打算说服读者使用 Godot,而是分享一些使用感受,仅供参考。

» Click to show Spoiler - click again to hide... «

图 1:接连便是难懂的话,什么“半径二十”,什么“对波左输”之类,引得众人都哄笑起来。

## 下载引擎,阅读文档和安装 VSC 插件

游戏引擎和导出模板(Export Templates)既可以从 [官方页面](https://godotengine.org/download) 分别下载,也能够通过 [Steam](https://store.steampowered.com/app/404790/Godot_Engine/) 获取两者的整合包,以及许多游戏示例。我先前花两周时间,通读了两遍 [新手上路(Getting Started)](https://docs.godotengine.org/en/stable/)。我建议先熟读这部分官方文档,再使用引擎。Godot 提供了两种脚本语言:C# 和 GDScript。我建议使用原生的 GDScript,把 VSC 作为文本编辑器(我的 [VSC 设定](https://github.com/Bozar/VisualStudioCodeSetting)),安装 `geequlim.godot-tools` 插件。原生脚本语言一方面和引擎配合更默契,另一方面呢——“士郎,英国有句老话:骑士挥剑就像吃面包。你还记得吃过几片吗?”——学语言也是一个道理。

» Click to show Spoiler - click again to hide... «

图 2:用 VSC 写 GDScript。

## 节点和脚本

在 Godot 引擎里,游戏的基本元素是节点(Node)。一个根节点和它所有的子节点形成树状图,被保存为单个场景(Scene)。这个场景既能够作为单个节点加入树状图,又可以通过脚本导入游戏。比方说,下图左上角的 `MainScene` 是根节点,`MainGUI` 是场景,`InitWorld` 是普通的子节点。每个节点最多可附加一份脚本,用于扩展节点功能。

» Click to show Spoiler - click again to hide... «

图 3:Godot 引擎界面。

GDScript 是动态类型语言,[语法](https://docs.godotengine.org/en/stable/getting_started/scripting/gdscript/index.html) 类似 Python,又能添加 [静态类型约束](https://docs.godotengine.org/en/stable/getting_started/scripting/gdscript/static_typing.html)。为了在节点间传送数据,调用其它节点的方法,有三种常见手段。

» Click to show Spoiler - click again to hide... «

图 4:使用相对路径或绝对路径获取节点。

» Click to show Spoiler - click again to hide... «

图 5:调用节点组(Group)内所有节点的特定方法。

» Click to show Spoiler - click again to hide... «

图 6:发布和接收信号(Signal)。

## 图形界面和输入

Godot 提供了几套工具,从不同层次制作图形界面和处理玩家输入。较底层的工具精确控制了每个界面节点的位置和大小,让某个节点响应特定的输入事件;但是对于常见的需求,偏顶层的工具用起来更方便。比方说,我们把所有图形界面节点放在一个场景里。标签节点(Label)显示文本,容器节点(Container)控制下属子节点的排列方式,通过尺寸标记(Size Flag)间接设置文本框大小。

» Click to show Spoiler - click again to hide... «

图 7:图形界面的节点。

打开输入地图(Input Map),把多个按键输入(键盘、鼠标或游戏手柄)和单个行动(Action)绑定起来。然后让脚本响应引擎内置的事件。

» Click to show Spoiler - click again to hide... «

图 8:封装玩家输入。

» Click to show Spoiler - click again to hide... «

图 9:响应玩家输入。

差不多该结束啦。读过官方文档和我写的教程,应该足以做出一款简单的游戏。接下去只有靠各位自己了——“我所走的海路在我以前从未有人走过;弥涅耳瓦为我的船吹风,阿波罗为我掌舵,九位缪斯为我指出大小熊星。”(但丁)

» Click to show Spoiler - click again to hide... «

图 10:乔鲁诺,你不准看,但是我允许你听个声音。

最后给大家念一首我喜欢的诗。

QUOTE

《令和元年春第三新东京市访友不遇》

千反良田万里江,小鸟游林未相忘。
真宫寺外早樱盛,今日凌波明日香。

TOP
Trihex
2020-04-21, 21:36
Post #2


Yet another gamer
Group Icon
 180
   18

Group: Avatar
Posts: 112
Joined: 2014-11-27
Member No.: 61855


赞美包子老爷
但是诗也太欠了吧
TOP
Bozar
2020-04-21, 21:50
Post #3


GEEKs will Eventually Evolve into Kryptonians. | All my jokes are cries for help.
Group Icon
 1365
   75

Group: Avatar
Posts: 1132
Joined: 2008-05-18
Member No.: 21346


QUOTE(Trihex @ 2020-04-21, 21:36) *

赞美包子老爷
但是诗也太欠了吧

金圣叹批:窝永远喜欢京阿尼!还有明日香! (IMG:style_emoticons/default/sleep.gif)
TOP
Fast ReplyReply to this topicStart new topic
 


Time is now: 2021-06-23, 14:44