作者mistwvearn (Denyrmo)
看板RPGMaker
標題[問題]VX的平行並列處理之流暢度問題...
時間Mon Feb 8 17:25:40 2010
正好看到有人提到vx的地圖事件過多會影響遊戲效能就順便上來問一下...
個人目前正在用vx做一款「不思議迷宮」類型的遊戲。
因為語法不很熟,
所以基本上是用事件編輯器+RGSS混著作
目前進度大概只完成隨機迷宮、敵人AI的行動判斷和基本控制
不過在給朋友測試的時候卻遇到了lag(不流暢)的問題...
遊戲中只使用了兩個平行並列處理:
1.隨時更新並比較主角的座標,用來判定主角「是否移動過」,
用來連動小地圖的描繪,還有輪到敵人行動的判定。
2.用來檢測自訂按鍵是否被按下,例如asd等呼叫自製選單的按鈕。
地圖事件方面,設置了20個地面道具、和20個敵人角色共40+n個地圖事件
(n是其他零星的少數地圖事件,不超過10個)
但是跑起來卻是意外的頓...不知道有沒有什麼能夠優化的方法或建議?
附上目前的進度檔案以資診斷(直接試跑檔,不含RTP)
http://www.megaupload.com/?d=9CA904RK
按鍵:
A呼叫選單(目前只完成「道具」項目)(道具介面目前也只能用z交換或搬移道具位置)
S斜向移動、D原地轉向、Q切換小地圖顯示、
W顯示全迷宮地圖(處理大概會花上2-3秒,基本上只是懶得拿掉的測試用按鍵..)、
E刷空訊息欄
以上,有請各位前輩幫忙鑑定看看能怎麼優化,感激不盡
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.168.111.44
推 rod24574575:有時候並行處理跑不動時,我會放個等待0.1秒 02/08 17:59
→ rod24574575:在會一直重複執行的部份,通常能稍微紓緩一下 02/08 18:00
→ rod24574575:執行時的LAG程度
這招有效,在兩個平行並列都放了個6禎的等待,情況有確實改善。
不過朋友的意見好像還是不夠順 囧
如果再把等待禎數提高到10禎的話,按鍵反應會變很遲鈍(容易按了沒有反應)
總之還是先謝過哩XD
1F:→ dephille:地面上的事件好像影響速度蠻多的。 02/08 19:08
2F:→ dephille:KGC software那邊有一個地圖輕量化腳本,不知有沒有用... 02/08 19:10
呣,如果是的話「マップ軽量化 - KGC_MapLightening」這個腳本的話有放進去了
不過不知道是不是我一開始做的時候就先放的關係,不知道差在哪XD
※ 編輯: mistwvearn 來自: 118.168.111.44 (02/08 23:35)
※ 編輯: mistwvearn 來自: 118.168.111.44 (02/08 23:37)
※ 編輯: mistwvearn 來自: 118.168.111.44 (02/08 23:38)
※ 編輯: mistwvearn 來自: 118.168.111.44 (02/09 00:57)
※ 編輯: mistwvearn 來自: 118.168.111.44 (02/09 02:31)
3F:推 exaliceyuan2:不知道有沒有直接偵測↑↓←→是否被按到的事件呢XD? 02/09 19:01
4F:→ exaliceyuan2:這樣的話只有在↑↓←→被按的時候才會處理 02/09 19:01
5F:→ exaliceyuan2:也許會快很多...吧XD? 02/09 19:01
6F:→ exaliceyuan2:不過我不知道有沒有這種事件拉XD 02/09 19:02
7F:→ exaliceyuan2:最近都一直在寫劇本沒碰RM...orz 02/09 19:02
8F:→ exaliceyuan2:還有放等待時間是為了讓小地圖的處理不要太頻繁吧? 02/09 19:03
9F:→ exaliceyuan2:所以好像不用兩個事件都放XD? 02/09 19:04
剛剛想了一下才讀懂您的意思
這方法可以整整省掉一個平行處理,大感謝XD
目前以e大的方法,精省到只有一個平行並列處理
「偵測是否按下包含↑↓←→在內的其他自訂按鍵」
※ 編輯: mistwvearn 來自: 118.168.111.44 (02/10 00:17)
※ 編輯: mistwvearn 來自: 118.168.111.44 (02/10 00:35)
10F:推 exaliceyuan2:也許你可以先縮小問題範圍?先關掉其中一個事件 02/10 00:36
11F:→ exaliceyuan2:然後看有沒有改善很多,再針對拖垮效能的那個事件 02/10 00:37
12F:→ exaliceyuan2:作更深入的研究呢XD? 02/10 00:37
13F:推 exaliceyuan2:我相信如果只有小地圖功能不會累格啦XD 02/10 00:44
14F:→ exaliceyuan2:因為我以前就看過RM03'的作品有小地圖且不累格的XD 02/10 00:44
剛剛把小地圖暫時移掉測試,看起來小地圖沒啥影響 囧
每個事件都暫時移除過實驗後,
推測影響最大的似乎是每一步都要「分別計算、並讓每隻怪作動作」的這部份...
我再來想想看能怎麼處理這部份...
十分感謝回文的諸位先進指導(__ __)
(如果還有想到別的精簡方法,也仍請不吝指教^^")
順帶一問,假定AB兩事件
A事件共100行指令
B事件本身只有10行指令,但是會接連呼叫事件C.D.E.F...最後執行的指令總數同是100行
那麼B事件跑起來是否會比A事件更為耗時/吃資源呢?
※ 編輯: mistwvearn 來自: 118.168.111.44 (02/10 01:28)
15F:推 exaliceyuan2:會多一點點,就像recursive通常比loop還要慢一點點 02/10 11:04
16F:→ exaliceyuan2:不過如果不是很致命的多且分成CDEF寫比較好懂的話, 02/10 11:05
17F:→ exaliceyuan2:分開來寫還是比較好XD 比較好debug和擴充功能 02/10 11:06