私は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 (クラス、レースなどの特定のキーの下)に保存すると、この 1 回限りの処理に数秒かかる場合があります。辞書内の .py の本体 (このような 5k 行) にテキストを格納する価値はありますが、そうしない理由はありますか?
- を使用した実行時のデコード
pyglet.text.decode_attributed
には時間がかかります。しかし、ゲームの参照が完了するとおそらく 100 の「ページ」になることを考慮すると、実行前のデコード (辞書全体または json のデコード) には、ゲーム前にかなりの時間がかかります。では、事前にデコードするか、オン フライでデコードしますか (つまり、効率的なコードを作成しないと、一部のテキストが重複して再コード化される可能性があります)。ピグレットではスレッドは信頼できません... - ドキュメントのコンテンツのレンダリングとその後の切り替えには、
pyglet.text.layout.ScrollableTextLayout
大きなテキストのチャンクでは 1 ~ 2 秒かかります。テキストが事前にデコードされていない場合は、さらに時間がかかります。 - または、pyglet のコンテキストでテキストをレンダリングするために使用できる他のライブラリがあるかもしれません(いくつかの調整があります)...ただし、現在の形式では、「参照」ビューまたはたとえば、ツールチップ用に少量のテキストを抽出します...
- 最終的な考慮事項: 低スペックのマシンを対象としているため、ここではパフォーマンスが重要です。このゲームはグラフィカルなローグライク / 2D RPG であり、libtcod/curses 以上のものを必要としますが、3D グラフィックスは必要ありません。そのため、今のところ pyglet を使用しています。しかし、具体的には、フォーマットされたテキストの側面が私を悩ませています。