顺晟科技
2021-06-16 10:37:30
300
墨迹是inkle发明的标记性语言,专门用于写互动叙事游戏,是制作文字游戏和游戏叙事的利器。有比较知名的用水墨语言叙事的游戏,比如《80 天(80 Days)》。
以下是一些基于墨迹开发的游戏:
墨水文件是一个普通的文本,看似是各种特殊标记的小说,但小说有很多分支,要用一定的逻辑来控制。看似比较简单,但真正研究起来还是很复杂的。今天,为了向大家介绍的目的,我们简单了解一下。这篇文章可能会向您展示它的基本用法,下一篇文章将把它放在Unity中运行。
除了墨水,inkle还开发了免费的Inky IDE和Unity插件供开发者使用。
漆黑的
Inky是编辑墨迹语言的编辑器。虽然墨迹可以被各种文字编辑器编辑,但是我推荐Inky。它集成了很多功能,我们可以在Inky中自由编写游戏叙事代码,可以随时测试调试。同时,Inky还可以做各种输出,比如JSON、HTML格式等,这样制作出来的内容就可以很方便的用在其他地方。我们今天所做的是在印基完成的。
Inky的界面
漆黑的
去下载吧
一些基本内容
内容(内容)
最基本的内容是最直接的文字,比如:
你好,世界!
您好!
选择(选择)
选择的用法也很简单,只需在选项前加*即可:
你喜欢苹果还是橘子?
*苹果
当然是苹果
*橘子
那一定是一个橘子
运行它,你会看到一个对话,然后下面有两个选项。选择其中一个,程序就完成了。
为了便于理解,我们会在问题前用数字标注,选择用。以下是选择过程:
你喜欢苹果还是橘子?
1:苹果
2:个橘子
一个
苹果
当然是苹果
在每一个选择下,你都可以继续拥有选择,并扩展选择。缩进和多个*符号代表层次结构,如下所示:
你喜欢苹果还是橘子?
*【苹果!]当然是苹果
你想要大的还是小的?
* *大
很好。红色还是绿色?
* * *红色
* * *绿色
* *小
*橘子!
那一定是一个橘子
请注意,我们使用了一对方括号[],这意味着在显示对话框时,只显示括号前和括号内的内容,而在选择后显示对话框时,括号内的内容被忽略。实际操作是这样的:
你喜欢苹果还是橘子?
1:苹果!
2:个橘子!
一个
当然是苹果
你想要大的还是小的?
1:大号
2:小
一个
很好。红色还是绿色?
1:红色
2:绿色
2
绿色的
这种嵌套方式比较直观,但是当内容较多或者分支比较复杂的时候,还是不够的。所以还有一个重要的功能叫做:结。
节点(结)
节点是一整段文字,可以被其他内容引用或跳转。
我们之前做的是一个没有节点的例子,由主进程依次执行。如果使用节点,它们将在正常执行期间被跳过。
节点的使用也非常简单:
===水果===
你喜欢苹果还是橘子?
*[苹果]当然是苹果
-完成
*橘子
那一定是一个橘子
-完成
您可以使用两个===来创建一个节点。请注意,新添加的-DONE代表这个分支的结束,也可以使用-END,代表整个对话的结束。
跳跃
使用-命令,后跟节点名,跳转到指定的节点执行。
运行,你会发现没有显示,因为需要调用节点,也就是使用下面的jumps语句:
水果
现在整个事情看起来是这样的:
水果
===水果===
你喜欢苹果还是橘子?
*[苹果]当然是苹果
-完成
*橘子
那一定是一个橘子
-完成
上面这个能跑,和之前的尝试是一致的。
当需要处理会话分支时,使用节点是一个很好的做法,它的使用也很简单。例如,在上面的例子中,我们可能想要返回并重新选择,所以此时使用节点是合适的。
知道了这些特点,基本上就可以做一些简单的对话了。当然墨水的语法很多,也很复杂。如果你想完全使用它强大的功能,你还需要了解很多。我们来做一个比较复杂的练习,会涉及到比较基础的内容。
让我们试一试
好了,现在用我们所学的做一个更复杂的练习。假设我们的队伍现在站在一个地牢的入口,可能需要做出是进入地牢还是回镇上补给的选择。以下是基本代码:
-城镇
===城镇===
你正站在城镇的门口
*去地牢[],我们走!
地牢
===地牢===
你在地牢门口
*进地牢
-进入地牢
*返回城镇
-返回城镇确认
===return_to_town_confirm===
你确定要回镇上吗?
*是的。
表示“受到某种对待的人”:dividend | reverend
*没有
地牢
===enter _地下城===
你进入地牢,开始探索
表示“受到某种对待的人”:dividend | reverend
这段代码基本上实现了这个过程:
但请注意,以上段落不是最终代码。首先,在我们确认“回城”之后,就结束了,还有一些其他的问题可以跑去看:
你正站在城镇的门口
1:去地牢
一个
去地牢,我们走!
你在地牢门口
1:进入地牢
2:回城
2
回到镇上
你确定要回镇上吗?
1:是
2:不
2
不
你在地牢门口
1:进入地牢
当我们准备第二次进入地牢时,我们会发现“返回城镇”的选项消失了。
这是因为,对于记叙文,已经选择过一次的选项不应该再出现,所以系统默认隐藏已访问的选项。但这不是我们想要的。我们希望这两个选项一直存在。那么我们该怎么办呢?墨水提供了一个可以一直使用的选项。它有*的功能,但会一直显示。
修改后的代码如下:
-城镇
===城镇===
你正站在城镇的门口
去地牢[],我们走!
地牢
===地牢===
你在地牢门口
*进地牢
-进入地牢
回到镇上
-返回城镇确认
===return_to_town_confirm===
你确定要回镇上吗?
是
-城镇
不
地牢
===enter _地下城===
你进入地牢,开始探索
表示“受到某种对待的人”:dividend | reverend
这是一个可以循环运行的过程。你可以试着运行它。
完成:再添加一些材料
现在我们可以在城镇和地下城之间“自由行走”。在我们完成这篇文章之前,让我们试着添加一些材料,了解更多关于变量的知识。
我们要做的是:
添加玩家/团队名称
限制犹豫的次数。如果你多次返回城镇,你将被迫去地牢!
全局变量(全局变量)
在墨迹中,我们可以很容易的使用VAR关键字定义全局变量,使用的方法是{}。
让我们试着定义两个变量:
VAR player_name='PLAYER '
风险值试用=0
其中player_name是玩家的名字,我们给一个默认值,try _ outs是尝试的次数。我们可以在每次确认是否回城的时候加1(用~表示操作),这样如果回城超过两次,玩家就被迫进入地牢。
修改后的完整代码如下:
VAR player_name='PLAYER '
风险值试用=0
-城镇
===城镇===
{player_name}站在镇门口
去地牢[],我们走!
地牢
===地牢===
{player_name}到达地牢入口
*进地牢
-进入地牢
回到镇上
-返回城镇确认
===return_to_town_confirm===
你确定要回镇上吗?
~试用(_ t)
{试用3}是
-城镇
{试用3}否
地牢
*{ try_outs=3}不错的尝试[,哼],反正你也得给我下去!
-进入地牢
===enter _地下城===
{player_name}进入地牢并开始探索
表示“受到某种对待的人”:dividend | reverend
退了两次以上,没有选择再退:
.//前面稍微
回到镇上
你确定要回镇上吗?
1:是
2:不
一个
是
玩家站在城镇的门口
1:去地牢
一个
去地牢,我们走!
玩家到达地牢大门
1:进入地牢
2:回城
2
回到镇上
你确定要回镇上吗?
1:不错的尝试,是吧
一个
不错的尝试。无论如何你都要下去!
玩家进入地牢并开始探索
这样,我们的演示就完成了。实现的方法有很多,但我们只尝试用全局变量来处理。
02
2022-09
23
2022-05
16
2021-06
16
2021-06
16
2021-06