2016-01-07 48 views
1

我使用pyglet製作遊戲。在某些時候,這款遊戲會有一些遊戲內的幫助/參考一些「核心」RPG規則,以及其他描述(遊戲使用Pathfinder SRD)。所以有很長的格式文本(具有不同的大小,顏色等)。 (產生有一些蟒蛇純文本樣式/格式字段) In-game SRD在Python中呈現格式化文本(目前使用pyglet)

目前我使用pyglet的格式化文檔模型: (進一步的格式將進行)我的目標提供了風格的一個例子:

""" 
{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(such as this one, with 5k lines)的主體中是否值得,有什麼理由不這樣做?
  • 解碼在運行時使用pyglet.text.decode_attributed需要一些時間。但考慮到完成後遊戲參考可能會有一百個「頁面」,在運行前解碼(解碼整個字典或json)會花費大量的遊戲前時間。因此,預解碼或即時解碼(這意味着如果我沒有生成高效的代碼,一些文本可能會被重複記錄)? pyglet上的線程不可靠...
  • 呈現及更高版本切換pyglet.text.layout.ScrollableTextLayout文檔的內容在大塊文本上花費1-2秒,如果文本先前未被解碼則花費更多;
  • 或者,也許有其他庫可用於在pyglet的上下文上呈現文本(有一些調整)...然而,考慮到,在目前的格式,我能夠顯示整個東西在一個「參考」視圖或從中提取少量文本的工具提示,例如...
  • 一些最後的考慮因素:當我瞄準低規格機器時性能很重要。該遊戲將是一個圖形roguelike/2d RPG,需要比libtcod/curses更多,但沒有3D圖形,這就是爲什麼我現在使用pyglet。但格式化的文本方面,特別是,讓我感到困擾。

回答

1

存儲

如果我是你,我會保持文本原始格式,在一次讀入您的適當dictionary結構,然後傾倒在pickle二進制文件。閱讀和使用它的速度非常快,佔用更少的空間。

解碼

這是需要以某種方式完成的事情。
最初只是有一個正在加載...屏幕上的初始設置是好的,但稍後您可以優化它,只加載一些初始的東西,並在用戶在菜單中擺弄時加載其餘的東西或者其他的東西。

通常情況下,你不能序列化GL庫的東西(有些部分你可以,但有時很棘手)。
所以你最好的辦法是將你需要爲啓動加載的東西分開,然後將其餘的代碼打包進行順序解碼。

Pyglet

現在,每個人都有自己的宗教信仰。我的是Python和Pyglet。有了這個說法,你確定你確實需要Pyglet嗎?我的意思是,如果你只使用Text,Pygame或者甚至像TkInter或Kiwy這樣的UI工具包都是更好的選擇?

Pyglet真的是多樣化,可以輕鬆地處理複雜的東西,但它也是一個非常沉重和手動乏味的工作。通常這是有益的,如果你要做瘋狂的事情,以前沒有做過。例如,您自己的gfx引擎或自定義按鈕,否則無法完成。

2D

你提到這是一個要求,我不知道爲什麼,因爲你是一個具有遠見。
但看看我昨天回答的另一個問題,關於如何提高性能。

它會進入一些細節上如何呈現的東西有效,以及如何建立一個精靈類,你需要做的效果很好。

我已經做了2D /側滾輪/ RPG遊戲前和使用Pyglet,但僅僅是因爲我用得放心比使用其他預定義的庫,再進行繁瑣的手工工作感覺更..
如果你知道你爲什麼不會爲未來的艱辛工作感到後悔,而去追求!但是這是我們可以給你的所有幫助,因爲你實際上並沒有要求任何代碼幫助。

祝你好運!