Starcraft запускается с pyhton-sc2, но ничего не происходит после экрана загрузки - PullRequest
1 голос
/ 15 июня 2019

В качестве учебного упражнения я пытался создать CNN для игры в Starcraft.Приведенный ниже код является примером того, что я пытаюсь запустить.Однако, когда игра начинается, я вижу окно игры, загружающее карту (которая не отображает картинку), но когда она заканчивает загрузку, экран закрывается и после этого ничего не происходит.

Кто-нибудь испытывал что-либо подобное?

Я использую spyder с python 3.7.3 и sc2 0.11.1 Я следовал инструкциям на https://github.com/Dentosal/python-sc2 до буквы.

Моя система: / n Window 10Pro 64-битное ядро ​​Intel i7-8700K CPI 6 (12 логических процессоров) @ 3,7 ГГц ОЗУ 32 ГБ ОЗУ NVIDA GeFORCE GTX 1080 GPU C 326 ГБ без 464 ГБ D диск 931 ГБ

Я могу запустить игру самостоятельно, поэтому я неЯ не думаю, что это связано с аппаратным обеспечением.

import sc2

from sc2 import run_game, maps, Race, Difficulty
from sc2.player import Bot, Computer

class MyBot(sc2.BotAI):
    async def on_step(self, iteration):
        await self.distribute_workers()

run_game(maps.get('AbyssalReefLE'), [Bot(Race.Protoss, 
                                     MyBot()),
                                     Computer(Race.Terran, Difficulty.Easy)], 
        realtime = True)

Я ожидаю, что игра откроется, и пробники начнут собирать ресурсы.

Однако, когда код выполняется, я получаю следующую ошибку времени выполнения:

File "C:\Users\wizha\Anaconda3\envs\starcraft\lib\asyncio\base_events.py", line 526, in run_forever
    raise RuntimeError('This event loop is already running')

RuntimeError: This event loop is already running

Это даже после перезагрузки.Если я попытаюсь запустить код снова, я получу следующее:

ERROR:asyncio:Task exception was never retrieved
future: <Task finished coro=<_host_game() done, defined at C:\Users\wizha\Anaconda3\envs\starcraft\lib\site-packages\sc2\main.py:221> exception=ValueError('3794 is not a valid AbilityId')>
ValueError: 3794 is not a valid AbilityId

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\wizha\Anaconda3\envs\starcraft\lib\site-packages\sc2\main.py", line 233, in _host_game
    result = await _play_game(players[0], client, realtime, portconfig, step_time_limit, game_time_limit, rgb_render_config)
  File "C:\Users\wizha\Anaconda3\envs\starcraft\lib\site-packages\sc2\main.py", line 204, in _play_game
    result = await _play_game_ai(client, player_id, player.ai, realtime, step_time_limit, game_time_limit)
  File "C:\Users\wizha\Anaconda3\envs\starcraft\lib\site-packages\sc2\main.py", line 91, in _play_game_ai
    game_data = await client.get_game_data()
  File "C:\Users\wizha\Anaconda3\envs\starcraft\lib\site-packages\sc2\client.py", line 143, in get_game_data
    return GameData(result.data)
  File "C:\Users\wizha\Anaconda3\envs\starcraft\lib\site-packages\sc2\game_data.py", line 29, in __init__
    self.abilities = {a.ability_id: AbilityData(self, a) for a in data.abilities if a.ability_id in ids}
  File "C:\Users\wizha\Anaconda3\envs\starcraft\lib\site-packages\sc2\game_data.py", line 29, in <dictcomp>
    self.abilities = {a.ability_id: AbilityData(self, a) for a in data.abilities if a.ability_id in ids}
  File "C:\Users\wizha\Anaconda3\envs\starcraft\lib\site-packages\sc2\game_data.py", line 94, in __init__
    assert self.id != 0
  File "C:\Users\wizha\Anaconda3\envs\starcraft\lib\site-packages\sc2\game_data.py", line 102, in id
    return AbilityId(self._proto.remaps_to_ability_id)
  File "C:\Users\wizha\Anaconda3\envs\starcraft\lib\enum.py", line 310, in __call__
    return cls.__new__(cls, value)
  File "C:\Users\wizha\Anaconda3\envs\starcraft\lib\enum.py", line 564, in __new__
    raise exc
  File "C:\Users\wizha\Anaconda3\envs\starcraft\lib\enum.py", line 548, in __new__
    result = cls._missing_(value)
  File "C:\Users\wizha\Anaconda3\envs\starcraft\lib\enum.py", line 577, in _missing_
    raise ValueError("%r is not a valid %s" % (value, cls.__name__))
ValueError: 3794 is not a valid AbilityId
ERROR:asyncio:Unclosed connection
client_connection: Connection<ConnectionKey(host='127.0.0.1', port=24418, is_ssl=False, ssl=None, proxy=None, proxy_auth=None, proxy_headers_hash=None)>
INFO:sc2.protocol:Client status changed to Status.launched (was None)
INFO:sc2.controller:Creating new game
INFO:sc2.controller:Map:     AbyssalReefLE
INFO:sc2.controller:Players: Bot(Race.Protoss, <__main__.DukeBot object at 0x0000021E27D7A860>), Computer(Race.Terran, Difficulty.Easy)
INFO:sc2.protocol:Client status changed to Status.init_game (was Status.launched)
INFO:sc2.protocol:Client status changed to Status.in_game (was None)
INFO:root:Player id: 1 (None)
INFO:sc2.sc2process:kill_switch: Process cleanup
INFO:sc2.sc2process:Cleaning up...
INFO:sc2.sc2process:Cleanup complete
INFO:sc2.sc2process:Cleaning up...
INFO:sc2.sc2process:Cleanup complete
INFO:sc2.sc2process:Cleaning up...
INFO:sc2.sc2process:Cleanup complete
INFO:sc2.sc2process:Cleaning up...
INFO:sc2.sc2process:Cleanup complete

Заранее спасибо

1 Ответ

1 голос
/ 27 июня 2019

У меня была такая же ошибка, текущая версия игры не совместима с модулем. Есть тема об этом: https://github.com/Dentosal/python-sc2/issues/283 Есть также инструкция, как убрать ошибку, она сработала для меня, так что надеюсь, она вам тоже поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...