flick-ai / Genius-Invokation

七圣召唤强化学习环境
35 stars 4 forks source link

空白物件問題建議 #18

Closed jeffrey-hsiao closed 2 months ago

jeffrey-hsiao commented 3 months ago

在武器,聖遺物,天賦的一些物件取得上,通常要調用其函數或是內容時都必須檢查該物件是否存在,否則當物件不存在時就會出現錯誤訊息。

比方說我在嘗試列印某角色武器內容 print(self.players[i].character_list[j].character_zone.weapon_card.weapon_card.id) 因為沒有檢查武器是否存在,在運行的當下就跳出了錯誤訊息。

這個問題在後續進行RL時,其實也會出現問題,因為當我們是用id來告訴模型武器類別時,當武器為空,對於我們的編碼中原本放入武器的位置我們還是要編入一個編碼,但必須有一個代表著著沒有武器的編碼。

因此我建議在Character中實作方法 def get_xxxx_ID()

讓其在擁有武器,聖遺物,角色狀態時返回其ID,相反的如果該角色不存在該物件,則返回代表著沒有物件的特定值,例如-1

同理player當然也可以陣營狀態的部分也可以加上此改動。

WentDong commented 2 months ago

更新后,于 Genius-Invokation/genius_invocation/game/zone.py 中, 各个zone均可调用 show ,若通过show中展示的对应内容为None或空列表,则为不存在。

WentDong commented 2 months ago

各个区域的 show 略有不同,建议查阅代码,并根据需要对特殊情况进行判断。