颜色

请注意,文档中的颜色显示与屏幕上的效果可能有所不同。

颜色可以成为游戏中非常有用的工具。它可以提高可读性,并使游戏在视觉上更具吸引力。

然而请记住,除了网页客户端,你通常无法控制用于连接游戏的客户端。例如,有一个特殊的标签表示“黄色”,但用户屏幕上显示的确切黄色色调取决于他们特定 MUD 客户端的设置。他们甚至可以交换颜色或完全关闭颜色显示。一些客户端甚至不支持颜色——盲人或视力受损的人也可以使用特殊的阅读设备来玩文字游戏。

因此,一个好的经验法则是使用颜色来增强游戏效果,但不要依赖它来显示关键信息。默认的 screenreader 命令会自动为用户关闭所有颜色(以及清理许多行装饰等)。确保在启用此功能时,你的游戏仍然可以玩并且易于理解。

Evennia 支持两种颜色标准:

  • ANSI - 16 种前景色 + 8 种背景色。广泛支持。

  • Xterm256 - 128 种 RGB 颜色,32 种灰度。不总是被旧客户端支持。回退到 ANSI。

  • Truecolor - 使用十六进制表示的 24 位 RGB 颜色。许多客户端不支持。回退到 XTerm256

要查看你的客户端支持哪些颜色,请使用默认的 color 命令。这将列出所有可用的 ANSI 和 Xterm256 颜色,以及一些 True color 代码及其使用的代码。中心的 ansi/xterm256 解析器位于 evennia/utils/ansi.py,true color 解析器位于 evennia/utils/true/hex_colors.py

ANSI 颜色和符号

Evennia 支持文本的 ANSI 标准。这是迄今为止最受支持的 MUD 颜色标准,几乎所有的 MUD 客户端都支持。

要为文本着色,你需要在文本中放置特殊标签。Evennia 会解析这些标签并将其转换为所用客户端的正确标记。如果用户的客户端/控制台/显示支持 ANSI 颜色,他们将看到指定颜色的文本,否则标签将被去除(无颜色文本)。

对于网页客户端,Evennia 会将代码转换为 CSS 标签。

标签

效果

|n

结束所有颜色格式,包括背景颜色。

|r

亮红色前景色

|g

亮绿色前景色

|y

亮黄色前景色

|b

亮蓝色前景色

|m

亮品红色前景色

|c

亮青色前景色

|w

亮白色前景色

|x

亮黑色(深灰色)前景色

|R

普通红色前景色

|G

普通绿色前景色

|Y

普通黄色前景色

|B

普通蓝色前景色

|M

普通品红色前景色

|C

普通青色前景色

|W

普通白色(浅灰色)前景色

|X

普通黑色前景色

|[#

背景颜色,例如 |[c 表示亮青色背景,|[C 表示普通青色背景。

|!#

继承先前标签亮度的前景色。始终大写,如 |!R

|h

使随后的前景 ANSI 颜色变亮(如果客户端支持,则适用于 Xterm256/true color 使字体加粗)。与 |!# 一起使用。技术上,|h|G == |g。

|H

否定 |h 的效果

|u

下划线字体(Evennia 网页客户端不支持)

|U

否定 |u 的效果

|i

斜体字体(Evennia 网页客户端不支持)

|I

否定 |i 的效果

|s

删除线字体(Evennia 网页客户端不支持)

|S

否定 |s 的效果

|/

换行符。添加游戏内字符串时使用,而不是 Python 的 \n。

|-

制表符。客户端可能会有所不同,通常用空格更好。

|_

空格。仅在避免游戏内输入末尾自动裁剪时需要。

|*

反转当前文本/背景颜色,如标记器。请参阅下文说明。

以下是标签的使用示例:

|rThis text is bright red.|n This is normal text.
|RThis is a dark red text.|n This is normal text.
|[rThis text has red background.|n This is normal text.
|b|[yThis is bright blue text on yellow background.|n This is normal text.

注意:ANSI 标准实际上不支持像 |[r 这样的亮背景——标准只支持“普通”强度的背景。为了解决这个问题,Evennia 在幕后将这些实现为 Xterm256 颜色。如果客户端不支持 Xterm256,将使用 ANSI 颜色,使用大写和小写背景标签之间将没有可见区别。

如果你想将 ANSI 标记作为输出文本显示(没有任何效果),需要通过在其 | 前加一个 | 来转义它:

say The ||r ANSI marker changes text color to bright red.

这将输出原始的 |r 而不改变颜色。如果你在进行使用 | 且后跟字母的 ANSI 艺术时,这也可能是必要的。

使用命令

color ansi

可以获得所有支持的 ANSI 颜色及其标签的列表。

Xterm256 颜色

Xterm256 标准是一种支持 256 种颜色的文本和/或背景的颜色方案。它可以与 ANSI 颜色(如上)自由结合,但某些 ANSI 标签不影响 Xterm256 标签。

虽然这比传统的 ANSI 颜色提供了更多的可能性,但要注意,过多的文本颜色会让人眼花缭乱。此外,并非所有客户端都支持 Xterm256——这些客户端将看到最接近的 ANSI 颜色。你可以随意将 Xterm256 标签与 ANSI 标签混合使用。

标签

效果

|###

前景 RGB(红/绿/蓝),每个从 0 到 5。

|[###

背景 RGB

|=#

a-z 前景灰度,其中 a 是黑色,z 是白色。

|[=#

a-z 背景灰度

一些示例:

标签

效果

|500

亮红色

|050

亮绿色

|005

亮蓝色

|520

红色 + 一点绿色 = 橙色

|555

纯白色前景

|230

橄榄绿色前景

|[300

暗红色背景的文本

|005|[054

亮青色背景上的暗蓝色文本

|=a

灰度前景,相当于黑色

|=m

灰度前景,介于白色和黑色之间

|=z

灰度前景,相当于白色

|[=m

灰度背景

Xterm256 不使用像 ANSI 那样的亮/正常强度;强度仅通过增加/减少所有 RGB 值来变化。

如果你有支持 Xterm256 的客户端,可以使用

color xterm256

来获取所有 256 种颜色及其代码的表格。如果表格看起来被分成几个颜色块,这意味着不支持 Xterm256,而是使用了 ANSI 作为替代。你可以使用 options 命令查看 xterm256 是否对你激活。这取决于你的客户端是否告诉 Evennia 它支持什么——如果没有,并且你知道你的客户端支持什么,你可能需要手动激活某些功能。

24 位颜色(真彩色)

一些客户端支持 24 位颜色。这也称为 真彩色。 并非所有客户端都支持真彩色,它们将看到最接近的等效颜色。要记住的是,如果你在真彩色中使用微妙的渐变,并且在不支持真彩色的客户端中查看,效果可能与预期的相差甚远。 这里使用的十六进制颜色代码与网页设计中使用的相同。

标签

效果

|#$$$$$$

前景 RGB(红/绿/蓝),6 位十六进制格式,其中 $ = 0-F

|[#$$$$$$

背景 RGB

|#$$$

前景 RGB(红/绿/蓝),3 位十六进制格式。

|[#$$$

背景 RGB

一些 6 位示例:

标签

效果

|#ff0000

亮红色前景

|#00ff00

亮绿色前景

|#0000ff

亮蓝色前景

|#[ff0000

亮红色背景

一些 3 位示例:

标签

效果

|#f00

亮红色前景

|#0f0

亮绿色前景

|#00f

亮蓝色前景

|[#f00

亮红色背景