切換
舊版
前往
大廳
主題

【RM】生存報告兼已知Bug分享

靈魂 | 2020-04-22 20:47:20 | 巴幣 516 | 人氣 539

距離上次發文已經過了3個月之久,不得不說時間過得真快阿

製作遊戲至今,真的發現了很多神奇的Bug,不論是軟體上還是遊戲上
我就將我發現到的關於RMXP的Bug條列出來,雖說有的也是RPG Maker上共通的Bug,但主要以RMXP為主,若其他版本也有相同問題我也會提供解決方案(我找的到的話…)


  • 編碼問題
RMXP軟體的編碼並非Unicode而是ANSI,容易造成亂碼(除了腳本內容)
且遊戲字體在不同的語系中容易有亂碼或空格的情況,甚至會有抓不到檔案的情況
除了MV是純Unicode的之外,其餘的版本幾乎都有同樣的問題(2K~VA)

解決方案:
更改"非Unicode程式目前的語言"或系統語系
製作遊戲時所要放置於遊戲內的檔案,建議使用英文與數字取名
並且遊戲內的選字建議選用CJK字體



  • 沒有自動載入字型功能
*說個小知識,XP添加字型時,並不是輸入字型檔名稱,而是字型內表示的名稱哦

解決方案:
使用WINAPI32載入字型
連結(含XP、VA、VX或許可以?)



  • 會出現stack level too deep的問題
常發生於安裝新腳本後按下F12後繼續運行遊戲的情況下
由於腳本之間定義衝突又互相呼叫,造成疊加的問題(alias的使用)
最常出現在update的定義中,因為使用了alias重新定義了舊方法與新方法而出現

解決方案:
於重新定義的腳本內,找到使用alias的update定義,在後方加上unless $@
例:alias old_update update unless $@
其他的腳本錯誤問題解決方案(Ruby):連結



  • 在戰鬥中呼叫使用的公共事件,自動執行與並行處理效果無效
據說這問題一直到MV(預設)都沒有解決,只能靠外部的腳本與插件來解決
原先在地圖中使用公共事件且設定自動執行時,角色與其他事件(除了並行處理)的執行會暫時停止,優先處理當前自動執行的事件內容,直至事件結束角色才可移動
但在戰鬥中呼叫公共事件且為自動執行時,公共事件就只會執行一次,而戰鬥還是跑自己的,並沒有預期中的效果

解決方案:
由於網路上並沒有找到關於XP解決 戰鬥中使用自動處理公共事件 的解決方案
所以在下自己花了些許時間解決了,可自由使用不需回報
(由於有動用到解釋器的update定義部分,若其他腳本也有重複定義,還請自行添加)
XP:自動執行並行處理
VA:並行處理



  • 當地圖事件數量繁多,將會造成嚴重延遲
雖說事件一多會延遲是正常的,但其實是有辦法解決的

解決方案:
大多的解決方案,其實也就是超出畫面的事件不運行而已,當然也有其他提升效率的方法
XP:使用AntiEventLag或參考VA的Event腳本重寫提升效率、RMVXA(RGD)
VA:Anti-Lag、或使用RGD
MV:效率已經是到目前為止這代最好的了,若要再提升,可以考慮將各方面的渲染方式改變(有能力的話…)



  • 事件使用"等待至移動結束"將會卡死
這是XP的老毛病了,其他版本的狀況在下不太清楚(應該是沒有?

解決方案:
使用"等待"取代"等待至移動結束",這種方式有點麻煩,但很實際
在預設的解釋器中,他並沒有判斷角色當前的移動設定是否為重複動作
所以如果重複動作是被打開的,就會發生卡死
XP:連結



  • 事件使用腳本控制開關會有卡死發生
依舊是XP的老毛病,不過在下還沒遇過,但還是在這裡也提一下

解決方案:
在使用$game_switchs[X] = true/false的時候,下一行加上true或注釋(#)



  • 為了在其他的Scene使用"顯示當前Map地圖"當背景,而使用Spriteset_Map
建議不要這麼做,當地圖大、事件多時將會有效率問題
如果將這種使用方式用在打開選單時,會很頭大,假如當前的地圖大小為50x50且事件一大堆,那麼按下按鍵打開選單就會需要等待個幾秒鐘,一次還好,但多次等待可是很煩人的
VX~MV都已經預設好了,沒有這個問題

解決方案:
XP:連結



  • 在默認系統的戰鬥中,使用到會refresh的情況,會嚴重延遲
XP內顯示文字、Icon、Status幾乎都會動用到refresh
在XP說明手冊中有提到,沒事盡量不要持續刷新refresh,而這裡正是這麼做了

解決方案:
1.依情況及條件判斷去refresh即可
2.減少文字判斷、或將Contents的圖片顯示(如Icon)改為Sprite



  • 遊戲視窗太小,沒辦法自由縮放
XP本身是沒有提供更改解析度的設定的,但是更改為XPA後就可以解除限制了
VX與VA預設雖然有提供,但是最大為640*480

解決方案:
1.如果作業系統是w10,則可以在顯示設定的"縮放與版面配置",設定應用程式大小
100% = 640*480
125% = 800*600
150% = 960*720...以此類推,又或者是降低解析度至800*600也可以
如果編輯軟體的介面大小太小,也可以靠這樣來放大
2.外部腳本
XP:Drago - Custom Resolution IIXP Ace Tilemap(兩者皆會降低效能)
VX、VA:Fullscreen++



目前就以上這10個,未來可能還會繼續增加
最後附上截圖,結束這回合
由於第二章節的需要,所以製作了可開關的手電筒效果
回饋上有人說明希望能對火鶴有多一點了解,所以對過去的主線劇情做了一定程度上的修改


盡量會在暑假那時釋出第二章,可能的話(?
送禮物贊助創作者 !
0
留言

創作回應

期待二章
2020-04-22 21:15:42
靈魂
感謝你的期待[e24]
2020-04-22 21:22:31
樂小呈
加油!
2020-04-22 21:20:12
靈魂
大佬回應啦[e5]
2020-04-22 21:23:15
平沙
同是XP製作者獲益良多,加油~~
2020-04-22 21:23:58
靈魂
一起加油吧~
2020-04-22 21:28:09
洛可C
好久不見O∀O
想請教參考VA重寫事件提升效率的部分,
可以參考VA的哪些事件腳本呢?@@
前陣子剛好在碰提升事件效率這塊,但沒有方向..
2020-04-28 20:34:02
靈魂
其實只要是有使用到Game_Event.new的情況下,XP跟VA就有些微的效率差別,XP是用for迴圈遍例所有事件,而VA則是用each,在略舊的Ruby中這兩者有較大的效率差別,且for迴圈變數會存在於迴圈之外,而each則不會
(老實說for就是each的其中一種分支
2020-04-28 22:12:26
靈魂
之前也有看到有人研究說,用左移或右移運算子做運算,可以些微的提升一些效率(畢竟換成了二進位運算),但如果運行量小的話,這個差異可以小到忽略不計……
(而且對於其他不常使用的人而言,若看到了這樣的用法也很難一時理解
2020-04-28 22:15:59
靈魂
最好的方法應該是使用C或C++在外部寫dll檔後使用,藉此提高效率才是最穩妥的,但是這編寫難度又再往上一層樓了
2020-04-28 22:17:50
洛可C
原來如此,聽你這麼說
我還看過有人將事件寫成外部檔案
但能力不足就無法深入了解了..
2020-04-29 11:01:51
靈魂
那些可以隨時切換不同語言,並且手刻全部用法的,都是大佬[e29]
2020-04-29 11:44:29

更多創作