Questions tagged «text-based»

避免使用图形而是依靠文本来描述世界的游戏。通常涉及解析来自播放器的文本输入以确定操作。

9
硬编码内容为什么不好?
我知道大多数游戏都将对话文本存储在文件中,但是我也看到一些基于文本的游戏实际上将内容(地图,选择,可能的玩家命令,故事文本)编程到了游戏代码中。 我可以想到一些原因,但是什至是文字游戏也将所有内容都保留在程序外部的文件中的主要原因是什么? 实现细节之间的区别不大,包括以流行的XML格式保存内容,解析内容,然后根据从XML文件创建的变量渲染地图/显示文本,以及完全放弃XML文件。它们都以输出到屏幕的字符串结尾。区别不只是符号吗? 有些游戏甚至在代码中包含图形(ASCII艺术?)。我知道这是不对的,我可以猜测出它不好的一些原因,但也不知道为什么这是主要原因。 将大多数内容包含在程序外部非常受欢迎。甚至矮人要塞也不使用实际的ASCII字符,而是将ASCII字符的图像加载到内存中。 我主要问这个问题,因为创建,解析和使用XML文件有点像PITA。您知道...与仅使每个唯一的地牢(内容)成为自己的类的懒惰选择相比。

7
如何在文字冒险游戏中解析用户输入?
解析文字冒险中的用户命令的范围很广,从Adventure的简单“向北”到hhgttg中一些令人难以置信的聪明命令。 我似乎记得80年代在计算机杂志上阅读过不错的操作指南,但是现在,除了简短的Wikipedia参考文献之外,我在网上几乎找不到任何内容。 你会怎么做? 更新:我在Ludum Dare条目中采用了最简单的方法。

2
在另一个游戏中嵌入IF文本解析器?
我可以在其他游戏或应用程序中嵌入任何现有的交互式小说文本解析引擎吗? 我希望将某些东西用作库。我可以从自己的角度传递可用的宾语和动词。它将解析用户的句子,并给我返回描述用户要求的某种结构/ AST。然后,我自己的代码可以根据该请求执行操作。 我不需要SIRI等级的东西。当前的IF游戏支持的简单句子和动作很好。但是我不想自己写一个完整的文本/句子解析器。 这不是一个If游戏,我无法完全使用像notify 7这样的交互式小说语言来编写它。不幸的是,我似乎找不到任何使用这些引擎的文本解析功能的人,而没有编写整个游戏的例子。以该引擎的语言进行游戏。

5
生成语法正确的MUD式攻击描述
我目前正在开发一款基于文本的游戏,其中一轮战斗的结果是这样的 %attacker% inflicts a serious wound (12 points damage) on %defender% 现在,我只将%attacker%替换为攻击者的名称,将%defender%替换为防御者的名称。但是,该描述有效,但未正确阅读。由于游戏只是文字,所以我不想诉诸一般性的描述(例如“您对地精使用攻击造成了5点伤害”,可以说可以解决问题) 对于%attacker%所指的情况,如何生成正确的描述 “你”,玩家?“你造成……”是错误的 “蜜蜂”或其他复数形式?我需要某种方式知道我应该在名称前加上“ 如果%attacker%是通用名词,例如“ Goblin”,则它将读起来很奇怪,而不是%attacker%是一个名称。比较“地精造成...”与“ Aldraic剑使者造成...”。 基于文本的游戏通常如何解决此类问题?
13 mud  text-based 

1
在MUD样式的基于文本的世界中组织关卡/房间
我正在考虑编写一个小型的基于文本的冒险游戏,但是我不确定如何从技术角度设计世界。 我的第一个想法是使用XML进行设计,其设计如下所示。对大量XML表示歉意,但我认为完全解释我在做什么很重要。 <level> <start> <!-- start in kitchen with empty inventory --> <room>Kitchen</room> <inventory></inventory> </start> <rooms> <room> <name>Kitchen</name> <description>A small kitchen that looks like it hasn't been used in a while. It has a table in the middle, and there are some cupboards. There is a door to the north, …

3
如何在JavaScript中实现分支对话?
我正在用JavaScript开发一种非常基本的视觉新颖游戏。我是一个初学者,所以我这样做只是为了娱乐和学习,由于计划不周,当您进入对话分支时遇到了一些问题。 目前,我将游戏脚本保存在一个字符串变量中,并使用诸如“#〜”之类的标签将每个场景分解成较小的数组,以便游戏脚本如下所示: var script = "Hello World!#~How are you today?" var gameText = script.split("#~"); //gameText[0]= Hello World! 这对于线性事物非常有用,但是我应该如何处理对话框树中的分支?这种方法似乎非常复杂,因为我必须确切知道每条路径的长度,然后如果我需要更改任何内容,那将是一件令人头疼的事情。 如何以更简单的方式做到这一点?我希望使用香草JavaScript,因为我希望该游戏可以与Web Run Time一起使用。

2
在简单的冒险游戏中实现行为
我最近一直在通过编写一个简单的基于文本的冒险游戏来娱乐自己,而我一直停留在看似非常简单的设计问题上。 简要概述一下:游戏分为Room对象。每个对象都有该房间Room中的Entity对象的列表。每个对象Entity都有一个事件状态,它是一个简单的string-> boolean映射,以及一个动作列表,它是一个string-> function映射。 用户输入采用形式[action] [entity]。在Room使用实体名称返回合适的Entity对象,然后使用操作名称来找到正确的功能,并执行它。 为了生成房间描述,每个Room对象显示其自己的描述字符串,然后附加每个的描述字符串Entity。该Entity描述可基于其状态(“门被打开”,“门关闭”,“门被锁定”,等等)。 问题出在这里:使用这种方法,我需要快速实现的描述和动作函数的数量就一发不可收拾。我的起居室仅在5个实体之间就具有约20种功能。 我可以将所有动作组合为一个函数,并通过if-else /进行切换,但是每个实体仍然是两个函数。我还可Entity以为常见/通用对象(例如门和钥匙)创建特定的子类,但是到目前为止,这还不多。 编辑1:根据要求,这些动作函数的伪代码示例。 string outsideDungeonBushesSearch(currentRoom, thisEntity, player) if thisEntity["is_searched"] then return "There was nothing more in the bushes." else thisEntity["is_searched"] := true currentRoom.setEntity("dungeonDoorKey") return "You found a key in the bushes." end if string dungeonDoorKeyUse(currentRoom, thisEntity, player) if getEntity("outsideDungeonDoor")["is_locked"] then getEntity("outsideDungeonDoor")["is_locked"] := …

1
如何使用std :: vector实现存储咒语和物品?
我现在正在跟着GameInstitute的一本书,它要求我: 允许玩家购买和携带治疗药水和火球药水。您可以将Item数组(在定义item类之后)添加到Player类中以存储它们,或使用std :: vector来存储它们。 我想我想使用std::vector实现,因为这似乎使我比创建一个项目类更容易些,但我不确定该怎么做。我从很多人那里听说向量是存储动态值(例如物品,武器等)的好方法,但是我没有看到它的使用。
10 c++  text-based 

2
如何将Editline用于游戏机控制台?
我想向我正在创建的C ++游戏中添加游戏机控制台。尽管渲染了控制台并解析了我擅长的命令,但是文本输入和编辑方面(例如,处理向左/向右键,退格键等)似乎要花很多精力,我宁愿花在更有趣的事情上。 我设法找到了一个名为Editline的库,该库可处理具有历史记录和自动完成功能的控制台式文本输入的精髓,但是我不确定如何将其与游戏接口-特别是所有示例我发现使用标准输入和输出句柄,readline()它本身是一个阻塞调用。我需要能够提供自己的输入并将控制台呈现为自己的输出,并且还需要确保游戏循环继续运行。 我应该怎么做呢?
9 c++  text-based 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.