Skip to content

kano-lab/aiwolf-nlp-json-converter

Repository files navigation

aiwolf-nlp-json-converter

人狼知能コンテスト自然言語処理部門は2024冬季 国内大会からゲームサーバの変更を行いました。
これに伴い、情報伝達を行う際に旧サーバプログラムとは異なるJsonが使用されるようになりました。
このプログラムは新規サーバプログラムから伝達される情報を旧サーバプログラムから伝達される情報に変換するプログラムです。

対象者

人狼知能コンテスト2024冬季以前に人狼知能コンテスト(自然言語処理部門)の大会に参加された方で、過去のプログラムを流用したい方。

Warning

このプログラムは2024冬季大会の開催告知から開催までの期間が短いため作成しました。
今後のアップデートや2025年春大会以降の13人人狼に必要な情報に対応しない可能性があります。

インストール方法

以下のコマンドでインストールできます。

pip install aiwolf-nlp-json-converter

Warning

aiwolf-nlp-json-converter==0.3.0, aiwolf-nlp-common==0.3.5であることを確認してください。

使い方

ゲームサーバから受け取った文字列の情報をそのままAIWolfNLPJsonConverterに渡すことで、旧ゲームサーバから伝達される情報に変換します。

from aiwolf_nlp_json_converter import AIWolfNLPJsonConverter

recv:str = """{"request":"INITIALIZE","info":{"day":0,"agent":"Agent[05]","statusMap":{"Agent[01]":"ALIVE","Agent[02]":"ALIVE","Agent[03]":"ALIVE","Agent[04]":"ALIVE","Agent[05]":"ALIVE"},"roleMap":{"Agent[05]":"VILLAGER"}},"setting":{"playerNum":5,"maxTalk":5,"maxTalkTurn":20,"maxWhisper":5,"maxWhisperTurn":20,"maxSkip":0,"isEnableNoAttack":false,"isVoteVisible":false,"isTalkOnFirstDay":true,"responseTimeout":120000,"actionTimeout":60000,"maxRevote":1,"maxAttackRevote":1,"roleNumMap":{"BODYGUARD":0,"MEDIUM":0,"POSSESSED":1,"SEER":1,"VILLAGER":2,"WEREWOLF":1}}}"""
json_data = AIWolfNLPJsonConverter.get_json_dict(received_str=recv)

print(type(json_data))
print(json_data)

結果

<class 'dict'>
{'request': 'INITIALIZE', 'gameInfo': {'agent': 'Agent[05]', 'attackVoteList': [], 'attackedAgent': None, 'day': 0, 'divineResult': None, 'executedAgent': None, 'lastDeadAgentList': [], 'roleMap': {'Agent[05]': 'VILLAGER'}, 'statusMap': {'Agent[02]': 'ALIVE', 'Agent[04]': 'ALIVE', 'Agent[01]': 'ALIVE', 'Agent[03]': 'ALIVE', 'Agent[05]': 'ALIVE'}, 'voteList': []}, 'gameSetting': {'enableNoAttack': False, 'enableNoExecution': False, 'maxAttackRevote': 1, 'maxRevote': 1, 'maxSkip': 0, 'maxTalk': 5, 'maxTalkTurn': 20, 'maxWhisper': 5, 'maxWhisperTurn': 20, 'playerNum': 5, 'roleNumMap': {'SEER': 1, 'VILLAGER': 2, 'MEDIUM': 0, 'BODYGUARD': 0, 'POSSESSED': 1, 'WEREWOLF': 1}, 'talkOnFirstDay': True, 'responseTimeout': 120, 'actionTimeout': 60, 'voteVisible': False}, 'talkHistory': [], 'whisperHistory': []}

対応していないキー

旧ゲームサーバから与えられる情報の内、本プログラムではいくつか含まれていない情報が存在します。
下記に詳細を記載しますので、ご確認の上ご使用ください。

ゲームの現状態を示す情報 (gameInfo)

  • cursedFox: 妖狐は5人、13人人狼で使用しない予定の役職なので対応していません。
  • englishTalkList: 過去にここに割り当てられていた内容がTalkListと同一であったため、不要と判断し対応していません。
  • existingRoleList: gameSettingroleNumMapから把握できる内容であるため不要と判断し対応していません。
  • guardedAgent: 騎士は5人人狼で使用しない予定の役職なので対応していません。
  • latestAttackVoteList: 5人人狼において使用されない項目の上、attackVoteListから確認できる内容であるため不要と判断し対応していません。
  • latestExecutedAgent: executedAgentの値から確認できる内容であるため不要と判断し対応していません。
  • latestVoteList: voteListから確認できる内容であるため不要と判断し対応していません。
  • mediumResult: 5人人狼において使用されない項目であるため不要と判断し対応していません。
  • remainTalkMap: 旧サーバにおいてINITIALIZE,DAILY_INITIALIZEでのみ付与されていた情報である上、maxTalkから取得可能な内容であるため不要と判断し対応していません。
  • remainWhisperMap: 5人人狼においてwhisperは行われないため不要と判断し対応していません。
  • talkList: 旧サーバにおいてINITIALIZE,DAILY_INITIALIZEでのみ付与されていた情報である上、talkHistoryから取得可能な内容であるため不要と判断し対応していません。
  • whisperList: 5人人狼において使用されない項目であるため不要と判断し対応していません。

ゲームの設定を示す情報 (gameSetting)

  • enableRoleRequest: 新サーバにおいて削除された機能であるため対応していません。
  • validateUtterance: 新サーバにおいて削除された機能であるため対応していません。
  • votableInFirstDay: 大会において初日は挨拶の日であり、その人に投票は行わないため対応していません。
  • whisperBeforeRevote: 5人人狼において使用されない項目であるため不要と判断し対応していません。

注意点が存在するキー

旧ゲームサーバから与えられる情報の内、本プログラムでは情報が少し変形された格納されている情報が存在します。
下記に詳細を記載しますので、ご確認の上ご使用ください。

ゲームの設定を示す情報 (gameSetting)

  • responseTimeout: ゲームサーバからはmsで渡されますが、本プログラムを使用した場合、sに変換されて返却されます。
  • actionTimeout: ゲームサーバからはmsで渡されますが、本プログラムを使用した場合、sに変換されて返却されます。

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages