twine创建软链接

讲故事是人性的天生部分。 这是一种无聊的消遣,它是一种艺术形式,它是一种交流工具,它是一种治疗和结合的形式。 我们每个人都喜欢讲故事-您正在阅读的故事-而我们拥有的最强大的技术通常就是使我们能够表达创意的事物。 开源项目Twine是用于执行此操作的工具。

Twine是一个交互式故事生成器。 它秉承Zork和Colossal Cave之类的经典精神,使用HTML,CSS和Javascript来创建独立的冒险游戏。 由于Twine在很大程度上是几种开放技术的结合,因此它具有足够的灵活性以执行许多多媒体技巧,使游戏像HyperCard一样呈现出比您通常从HTML中期望的样子。

安装麻线

您可以在线使用Twine或从其网站本地下载。 解压下载文件,然后单击“ Twine应用程序图标以启动它。

默认的启动界面非常直观。 阅读其介绍性材料,然后单击右侧的绿色+Story大按钮创建一个新故事。

你好,世界

基础很简单。 一个新的情节提要包含一个节点,或Twine术语中的“通道”,称为“ Untitled passage 。 将鼠标悬停在此段落上可以查看节点的选项,然后单击铅笔图标以编辑其内容。

给段落命名,以表明其在故事中的位置。 在先前版本的Twine中,起始段落必须命名为Start ,但是在Twine 2中,任何标题都可以使用。 使其变得明智仍然是一个好主意,因此请坚持使用StartHomeinit类的东西。

对于此故事的文本内容,键入:

 Hello [[world]] 

如果您熟悉Wikitext ,则可能已经猜到此段落中的“世界”一词实际上是与另一个段落的链接。

您的修改会自动保存,因此您只需在完成后关闭编辑对话框即可。 回到情节提要中,Twine检测到您已创建链接,并为您提供了一个新的段落,称为world

用麻线制作故事

打开新段落进行编辑,然后输入文本:

This was made with Twine.

要测试您的简短故事,请单击“ Twine”窗口右下角的“播放”按钮。

数量不多,但这只是一个开始!

您可以通过在方括号中添加另一个链接来添加更多的导航选择,这会生成一个新的段落,直到您讲出您想讲的任何故事为止。 它真的是那么简单。

要发布冒险,请单击情节提要窗口左下角的情节标题,然后选择“ 发布到文件” 。 这会将您的整个项目另存为一个HTML文件。 将该文件上传到您的网站,或将其发送给朋友,然后让他们在网络浏览器中打开,您就已经完成并进行了第一次文字冒险。

高级缠绕

您仅了解足以建立这个hello world故事的知识,就可以进行包含探索和选择的基于文本的出色冒险。 尽快开始,这还不错。 像所有好的开源技术一样,它也没有上限,您可以通过一些其他技巧将其扩展得多。

Twine项目之所以能够正常工作,部分原因是因为有一个称为HarloweJavaScript后端。 它添加了所有漂亮的过渡和一些UI样式,处理了基本的多媒体功能,并提供了一些特殊的宏来减少您为某些高级任务而必须编写的代码量。 但是,这是开源的,因此自然也有其他选择。

SugarCube是Twine的备用JavaScript库,可处理媒体,媒体播放功能,段落的高级链接,UI元素,保存文件等。 它可以将您的基本文字冒险转变成与Myst或Steel Sky下的冒险游戏相媲美的多媒体盛会。

安装SugarCube

要为您的项目安装SugarCube后端:

  • 下载SugarCube库 。 即使Twine附带了较早版本的SugarCube,您也应该下载最新版本。
  • 下载完成后,解压缩存档并将其放置在合理的位置。 如果您不习惯于组织文件或管理用于项目开发的创意资产 ,请将解压缩的SugarCube目录放入Twine目录中以进行安全保存。

  • SugarCube目录仅包含几个文件,实际代码在format.js 。 如果您使用的是Linux,请右键单击该文件,然后选择复制

  • 在“ Twine”中,通过单击“ Twine”窗口左下角的房屋图标返回到项目库。

  • 单击“ Twine”右侧栏中的“ 格式”按钮。 在“ 添加新格式”选项卡中,粘贴到format.js的文件路径,然后单击绿色的“ 添加”按钮。

    安装Sugarcube:单击添加按钮以Twine添加新格式

    如果您不在Linux上,请使用以下格式手动输入文件路径:

    file:///home/your-username/path/to/SugarCube-2/format.js

使用SugarCube

要将项目切换到SugarCube,请进入项目的情节提要模式。

在故事板视图中,在“ Twine”窗口的左下角单击故事板的标题,然后选择“ 更改故事格式”

在出现的“故事”格式窗口中,选择“ SugarCube 2.x”选项。

在“故事格式”窗口中选择SugarCube

图片

在将图像,音频或视频添加到Twine项目之前,请创建一个项目目录,以在其中保留资产的副本。 这是至关重要的,因为这些资产与Twine导出HTML文件保持分开,因此创建故事的最后一步将是获取导出HTML文件并将其与所需的所有媒体放在一起。 如果您习惯于编程,视频编辑或网页设计,这是一门熟悉的学科,但是如果您是这种内容创建的新手,则可能以前从未遇到过,因此在组织资产时要格外勤奋。

在某处创建项目目录。 在这个目录里,创建一个名为IMG为你的形象子目录, audio为您的音频, video为视频,等等。

在Twine中为您的项目文件创建子目录

对于此示例,我使用来自openclipart.org的图像。 您可以使用它或类似的东西。 无论您使用什么,都将图像放在img目录中。

继续hello_world项目,您可以使用SugarCube的图像语法将图像添加到段落之一:

<img src="img/earth.svg" alt="An image of the world." />
Hello [[world]].

如果您在添加图像后尝试播放项目,则会发现所有图像链接均已损坏。 这是因为Twine位于项目目录之外。 要测试多媒体Twine项目,请将其导出为文件并将其放置在项目目录中。 不要将其放在您创建的任何子目录中; 只需将其放置在您的项目目录中,然后在网络浏览器中将其打开。

预览添加到Twine项目的媒体文件

其他媒体文件的功能基本相同,利用HTML5媒体标签显示媒体,并使用SugarCube宏控制播放的开始和结束时间。

变量和编程

您可以根据玩家做出的选择来引导玩家进入一个或多个段落,从而做很多事情,但是您可以使用变量来减少所需的段落数。

如果您以前从未编程过,请花一点时间通读我对编程概念的介绍 。 本文使用Python,但是所有相同的概念都适用于Twine以及您可能会遇到的基本上任何其他编程语言。

例如,由于hello_world故事最初是在地球上设定的,因此该故事的下一步可能是提供前往其他世界的各种旅行。 每次读者返回地球时,游戏都可以显示他们访问过的世界的记录。 这基本上不可能线性进行,因为您将永远无法分辨出读者在探索中走了哪条路。 例如,一个读者可能首先访问火星,然后访问水星。 另一个人可能根本不会去火星,而是去拜访木星,土星,然后去水星。 对于每种可能的组合,您都必须经过一遍,而该解决方案根本无法扩展。

但是,使用变量,您可以跟踪阅读器的进度并相应地显示消息。

为了使这项工作有效,您必须在每次读者到达新星球时都设置一个变量。 在hello_world游戏的游戏世界中,行星实际上是开放源代码项目,因此,每当用户访问有关开放源代码项目的文章时,请将变量设置为“证明”读者已访问过。

SugarCube语法中的变量是通过<< set >>宏设置的。 SugarCube有很多宏,它们都很方便。 本示例项目使用了一些。

更改您创建的第二篇文章,为读者提供一些新的探索选择:

This was made in [[Twine]] on [[Linux]].
<<choice Start "Return to Earth.">>

您在此处使用<< choice >>宏,该宏将任何文本字符串直接链接回给定的段落。 在这种情况下,<< choice >>宏将字符串“ Return to Earth”链接到Start段落。

在新段落中,插入以下文本:

Twine is an interactive story framework. It runs on all operating systems, but I prefer to use it on [[Linux]].

<<set $twine to true>>
<<choice Start "Return to Earth.">>


在这段代码中,您使用<< << >>宏创建一个名为$twine的新变量。 此变量是布尔值,因为您只是将其设置为“ true”。 您很快就会明白为什么这很重要。

Linux段落中,输入以下文本:

Linux is an open source [[Unix]]-like operating system.

<<set $linux to true>>
<<choice Start "Return to Earth.">>


Unix段落中:

BSD is an open source version of AT&T's Unix operating system.

<<set $bsd to true>>
<<choice Start "Return to Earth.">>


现在,该故事有五篇文章可供读者探索,现在是时候使用SugarCube检测每次读者返回地球时都设置了哪个变量。

要检测变量的状态并相应地生成HTML,请使用<< if >>宏。

< img src = "img/earth.png" alt = "An image of the world." / >

Hello [[world]].
<<nobr> >
<< ul > >
<<if $twine is true> > << li > >Planet Twine << / li > > << / if> >
<<if $linux is true> > << li > >Planet Linux << / li > > << / if> >
<<if $bsd is true> > << li > >Planet BSD << / li > > << / if> >
<< / ul > >


为了进行测试,您可以按右下角的“播放”按钮。 您不会看到您的图像,但是为了测试而将其超越。

一个更复杂的故事板

浏览故事,并定期返回地球。 请注意,每次返回时,您访问过的每个地方的提示都会显示在“开始”段落的底部。

但是,没有什么可以解释为什么会出现访问的地点列表。 您能找出如何向读者解释所探索段落的理据吗?

您可以在提示列表的开头加上诸如“到目前为止您已经访问过:”之类的介绍性句子,但是当用户首次到达时,该列表将为空,因此您的介绍性句子将不会引入任何内容。

一种更好的管理方式是使用另一个变量来指示用户已离开地球。

改变world通道:

This was made in [[Twine]] on [[Linux]].

<<set $offworld to true> >
<<choice Start "Return to Earth." > >


然后使用另一个<< if >>宏来检测$offworld变量是否设置为true

Twine解析Wikitext的方式有时会导致空行超出您的预期,因此要压缩访问的地点列表,请使用<< nobr >>宏以防止换行。

< img src = "img/earth.png" alt = "An image of the world." / >

Hello [[world]].
<<nobr> >
<< ul > >
<<if $twine is true> > << li > >Planet Twine << / li > > << / if> >
<<if $linux is true> > << li > >Planet Linux << / li > > << / if> >
<<if $bsd is true> > << li > >Planet BSD << / li > > << / if> >
<< / ul > >
<< / nobr> >  


再次尝试播放故事。 请注意,直到读者离开地球,才欢迎他们回到地球。

探索一切

SugarCube是强大的引擎。 使用它通常是一个问题,那就是知道可用的东西,而不是没有能力做某事。 幸运的是,它的文档非常好,因此请经常参考其宏列表。

您可以通过更改CSS样式表对项目进行进一步的修改。 为此,请在故事板模式下单击项目的标题,然后选择编辑故事样式表 。 如果您熟悉JavaScript,也可以使用Edit Story JavaScript编写故事脚本。

Twine作为您的交互式小说引擎可以做的事没有限制。 它可以创建文字冒险,并且可以作为更复杂的游戏,点击式RPG,业务演示, 深夜脱口秀节目补充以及几乎所有您能想象的东西的原型。 探索Twine Wiki ,在Interactive Fiction数据库上查看其他人的作品,然后制作自己的作品。

翻译自: https://opensource.com/article/18/2/twine-gaming

twine创建软链接

twine创建软链接_如何使用Twine和SugarCube创建交互式冒险游戏相关推荐

  1. java线程的创建线程_多线程(Thread、线程创建、线程池)

    第1章 多线程 1.1 多线程介绍 学习多线程之前,我们先要了解几个关于多线程有关的概念. 进程:进程指正在运行的程序.确切的来说,当一个程序进入内存运行,即变成一个进程,进程是处于运行过程中的程序, ...

  2. python opencv创建图像_使用Python中OpenCV库创建一幅图片的RGB通道图片

    我们知道,在使用PhotoShop进行图片的抠取.创建和存储选区.存储图像的色彩资料等复杂操作时,经常会用到一个功能,那就是"RGB"通道,它能从三原色角度对一幅图片进行精准处理. ...

  3. java 线程中创建线程_如何在Java 8中创建线程安全的ConcurrentHashSet?

    java 线程中创建线程 在JDK 8之前,还没有办法在Java中创建大型的线程安全的ConcurrentHashSet. java.util.concurrent包甚至没有一个名为Concurren ...

  4. angular2创建应用_如何使用Angular和SQLite3创建Electron应用程序。

    angular2创建应用 by William Boxx 威廉·博克斯(William Boxx) 如何使用Angular和SQLite3创建Electron应用程序. (How to create ...

  5. java在类中创建一个对象_在另一个类中创建类对象

    我创建了两个类对象,每个对象都有一个构造函数,我试图让一个类对象成为另一个对象中的私有变量 . 这是我想要做的一个简单的例子,而不是实际的类名,而是一个例子 . 有更多的公共和私人变量,但为了简单起见 ...

  6. java 创建存储过程_如何在pl/sql中创建及调用JAVA存储过程 | 学步园

    1.创建一个java存储过程helloworld create or replace and compile java source named helloworld as public class ...

  7. kali创建文件_在kali中使用ecryptfs创建加密文件夹-bin文件夹

    在linux中有一个加密工具叫ecryptfs,我们可以在kali中安装它,创建一个用于加密的文件夹,用eCryptFS加密的伪文件系统挂载到你现有的文件系统上,把我们需要加密的文件放入这个文件夹就可 ...

  8. linux内核创建软链接过程,Linux内核2.4.18创建符号链接的系统调用sys_symlink分析

    (1)调用路径:sys_symlink->vfs_symlink->ext2_symlink (2)代码 asmlinkage long sys_symlink(const char * ...

  9. mongo在哪创建管理员_【教育信息】均衡创建再加压,齐心合力攻难关!

    梁庄镇召开均衡迎检培训会 2020年11月14日上午,梁庄镇中心校召开了均衡迎检培训会,各中小学校长和教学点负责人共计22人参会.中心校高森堂校长传达了县均衡创建工作现场会相关指示精神,详细解读了&l ...

最新文章

  1. Android序列化:Serializable Parcelable
  2. SpringMVC处理模型数据
  3. python自定义函数添加到路径
  4. double 格式化
  5. Wordpress插件检测机制原理
  6. emf建模要小心连线循环指向的问题
  7. Vue实现可折叠导航菜单~非常详细
  8. MySQL 第六次练习(视图)
  9. OpenCV学习:OpenCV文件一览
  10. 算法:把排好序的链表转换为二叉排序树Convert Sorted List to Binary Search Tree
  11. matlab读取txt文件
  12. 高斯勒让德数值积分公式
  13. 【Linux 中国】尝试 Nitrux 系统的六大理由
  14. C#WinForm实现雷速网站比赛MQTT逆向采集
  15. 【2021-07-23】JS逆向之雷速体育canvas渲染数据解密
  16. ffmpeg实现硬件转码(使用FFmpeg调用NVIDIA GPU实现H265转码H264)
  17. about_Execution_Policies
  18. itu ftp address
  19. 日记侠:如何在微信赚钱?你要学会细分思维!
  20. python爬虫-爬取当当网书籍信息存到Excel中

热门文章

  1. RGB转Gray算法实现
  2. 【Qt Creator】配置代码编辑器字体
  3. 11月14日火箭vs灰熊视频直播在线观看
  4. 海思hi3520dv400 kernel分析(3)——设备树支持
  5. 【复旦】【金融】且谈复旦大学金融系——送给想报考复旦或是复旦经济学院的同学们【zz】
  6. FFmpeg系列(二)—— 音视频裸流转换:mp3转pcm、h264转YUV
  7. 台北离“智慧城市”不远了
  8. CCF推荐会议 | 人机交互:截稿日期纵览 (含CSCW, UbiComp, collaboratecom 等会议微信交流群)
  9. 计算机基础知识报告范文,计算机基础课程设计报告范文.doc
  10. RabbitMQ常见问题解决方案——消息丢失、重复消费、消费乱序、消息积压