我正在使用 pyglet 制作游戏。在某些时候,该游戏将有一些“核心”RPG 规则的游戏内帮助/参考,以及描述等(游戏使用 Pathfinder SRD)。所以有长格式的文本(有不同的大小、颜色等)。我打算提供的样式示例(将进行进一步格式化): 游戏内 SRD
目前我正在使用 pyglet 的格式化文档模型(纯文本,带有一些 python 生成的样式/格式字段):
"""
{font_name 'Fontin'}{.align "center"}{bold True}{font_size 28}{italic True}{indent 0}{color (128,144,160, 223)}
The Title
{.align "left"}{bold False}{font_size 12}
Huge amount of text with further reformatting goes here...
And ends with a copyright notice (section 15 of OGL).
"""
- 如果我将文本存储在 json 中(在类、种族等的特定键下),这种一次性处理可能需要几秒钟;将文本存储在 .py 的正文中(例如这个,有 5k 行),在字典中,是值得的,有什么理由不这样做吗?
- 在运行时使用解码
pyglet.text.decode_attributed
需要一些时间。但是考虑到完成后游戏参考可能会有一百个“页面”,运行前解码(解码整个字典或 json)将花费大量的游戏前时间。那么预解码,还是即时解码(这意味着如果我不制作有效的代码,某些文本可能会被冗余重新编码)?pyglet 上的线程不可靠... pyglet.text.layout.ScrollableTextLayout
在大块文本上渲染和稍后切换文档内容需要 1-2 秒,如果文本之前没有解码则更多;- 或者也许有任何其他库可用于在 pyglet 的上下文中呈现文本(进行一些调整)......但是考虑一下,在当前格式中,我能够在“参考”视图上显示整个内容或从中提取少量文本作为工具提示,例如...
- 一些最后的考虑:性能很重要,因为我的目标是低规格的机器。该游戏将是图形 roguelike / 2d rpg,需要的不仅仅是 libtcod/curses,但不需要 3d 图形,这就是我现在使用 pyglet 的原因。但具体而言,格式化文本方面让我感到不安。