Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

RuntimeError: map_path file doesn't exist #105

Open
LecJackS opened this issue Aug 4, 2018 · 5 comments
Open

RuntimeError: map_path file doesn't exist #105

LecJackS opened this issue Aug 4, 2018 · 5 comments

Comments

@LecJackS
Copy link

LecJackS commented Aug 4, 2018

Trying to run the simplest bot for testing after installation, results in this:

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

class WorkerRushBot(sc2.BotAI):
    async def on_step(self, iteration):
        if iteration == 0:
            for worker in self.workers:
                await self.do(worker.attack(self.enemy_start_locations[0]))

run_game(maps.get("Abyssal Reef LE"), [
    Bot(Race.Zerg, WorkerRushBot()),
    Computer(Race.Protoss, Difficulty.Medium)
], realtime=True)

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.Zerg, <main.WorkerRushBot object at 0x7f92164b7208>), Computer(Race.Protoss, Difficulty.Medium)
CRITICAL:sc2.main:Could not create game: CreateGameError.InvalidMapPath: map_path file doesn't exist.
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
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
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
INFO:sc2.sc2process:Cleaning up...
INFO:sc2.sc2process:Cleanup complete


RuntimeError Traceback (most recent call last)
in ()
12 Bot(Race.Zerg, WorkerRushBot()),
13 Computer(Race.Protoss, Difficulty.Medium)
---> 14 ], realtime=True)

~/.local/lib/python3.6/site-packages/sc2/main.py in run_game(map_settings, players, **kwargs)
185 result = asyncio.get_event_loop().run_until_complete(
186 _host_game(map_settings, players, **kwargs)
--> 187 )
188 return result

~/anaconda3/lib/python3.6/asyncio/base_events.py in run_until_complete(self, future)
465 raise RuntimeError('Event loop stopped before Future completed.')
466
--> 467 return future.result()
468
469 def stop(self):

~/.local/lib/python3.6/site-packages/sc2/main.py in _host_game(map_settings, players, realtime, portconfig, save_replay_as, step_time_limit, game_time_limit)
110 await server.ping()
111 client = await _setup_host_game(server, map_settings, players, realtime)
--> 112
113 try:
114 result = await _play_game(players[0], client, realtime, portconfig, step_time_limit, game_time_limit)

~/.local/lib/python3.6/site-packages/sc2/main.py in _setup_host_game(server, map_settings, players, realtime)
97 err += f": {r.create_game.error_details}"
98 logger.critical(err)
---> 99 raise RuntimeError(err)
100
101 return Client(server._ws)

RuntimeError: Could not create game: CreateGameError.InvalidMapPath: map_path file doesn't exist.

System: Ubuntu 18.04

Downloaded SC2 3.17 linux package from its source:
https://github.com/Blizzard/s2client-proto#downloads

Extracted it into /home as is suggested.

Downloaded all 2017-2018 Map Packs and extracted them in Maps inside StarCraft2 folder, in each respective folder.

Any idea whats the issue?

@tweakimp
Copy link
Contributor

tweakimp commented Aug 6, 2018

Check if the map name is really Abyssal Reef LE, mine isAbyssalReefLE. The folder must be Maps in the StarCraft folder. The complete path to the map should be C:\Program Files (x86)\StarCraft II\Maps\AbyssalReefLE.SC2Map

@LecJackS
Copy link
Author

LecJackS commented Aug 6, 2018

@tweakimp Both ways of calling the map, with and without spaces, are valid.

AbyssalReefLE produces the same result. Any other name in the Maps folder, too.

An invalid name returns another kind of error:

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-6-821ae0ae14a5> in <module>()
      9                 await self.do(worker.attack(self.enemy_start_locations[0]))
     10
---> 11 run_game(maps.get("AbyssalReefLX"), [
     12     Bot(Race.Zerg, WorkerRushBot()),
     13     Computer(Race.Protoss, Difficulty.Medium)

~/.local/lib/python3.6/site-packages/sc2/maps.py in get(name)
     22             return m
     23
---> 24     raise KeyError(f"Map '{name}' was not found. Please put the map file in \"/StarCraft II/Maps/\".")
     25
     26 class Map(object):

KeyError: 'Map \'AbyssalReefLX\' was not found. Please put the map file in "/StarCraft II/Maps/".'

@varunbalupuri
Copy link

I'm running into this issue too on Ubuntu 16.04. I wonder if anyone has actually succesfully been able to run this on linux?

@LecJackS
Copy link
Author

LecJackS commented Aug 7, 2018

I realized that I downloaded the linux package version 3.17, while there is a 4.1.2 version.

https://github.com/Blizzard/s2client-proto#downloads

I downloaded that, copied the maps inside Maps, and a new similar exception was raised, but now with a new detail:

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.Zerg, <__main__.WorkerRushBot object at 0x7fb11f6ea518>), Computer(Race.Protoss, Difficulty.Medium)
CRITICAL:sc2.main:Could not create game: CreateGameError.InvalidMapPath: map_path '/home/jack/StarCraftII/maps/Ladder2017Season1/AbyssalReefLE.SC2Map' file doesn't exist.
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

---------------------------------------------------------------------------
RuntimeError                              Traceback (most recent call last)
<ipython-input-7-1e52d3a263e6> in <module>()
     12     Bot(Race.Zerg, WorkerRushBot()),
     13     Computer(Race.Protoss, Difficulty.Medium)
---> 14 ], realtime=True)

~/.local/lib/python3.6/site-packages/sc2/main.py in run_game(map_settings, players, **kwargs)
    184     else:
    185         result = asyncio.get_event_loop().run_until_complete(
--> 186             _host_game(map_settings, players, **kwargs)
    187         )
    188     return result

~/anaconda3/lib/python3.6/asyncio/base_events.py in run_until_complete(self, future)
    465             raise RuntimeError('Event loop stopped before Future completed.')
    466 
--> 467         return future.result()
    468 
    469     def stop(self):

~/.local/lib/python3.6/site-packages/sc2/main.py in _host_game(map_settings, players, realtime, portconfig, save_replay_as, step_time_limit, game_time_limit)
    109     async with SC2Process() as server:
    110         await server.ping()
--> 111         client = await _setup_host_game(server, map_settings, players, realtime)
    112 
    113         try:

~/.local/lib/python3.6/site-packages/sc2/main.py in _setup_host_game(server, map_settings, players, realtime)
     97             err += f": {r.create_game.error_details}"
     98         logger.critical(err)
---> 99         raise RuntimeError(err)
    100 
    101     return Client(server._ws)

RuntimeError: Could not create game: CreateGameError.InvalidMapPath: map_path '/home/jack/StarCraftII/maps/Ladder2017Season1/AbyssalReefLE.SC2Map' file doesn't exist.

'/home/jack/StarCraftII/maps/Ladder2017Season1/AbyssalReefLE.SC2Map' file doesn't exist., where maps folder is with lowercase M.

So I duplicate the Maps folder to a new maps folder in the same directory, and the bot started to work :)

Final directory structure

me:~/StarCraftII$ ls
AppData  Battle.net  Interfaces  Libs  Maps  maps  Replays  SC2Data  Versions
me:~/StarCraftII$ ls Maps/
Ladder2017Season1  Ladder2017Season3  Ladder2018Season1
Ladder2017Season2  Ladder2017Season4  Ladder2018Season2
me:~/StarCraftII$ ls maps/
Ladder2017Season1  Ladder2017Season3  Ladder2018Season1
Ladder2017Season2  Ladder2017Season4  Ladder2018Season2
me:~/StarCraftII$ ls Maps/Ladder2017Season1/
AbyssalReefLE.SC2Map     CactusValleyLE.SC2Map  NewkirkPrecinctTE.SC2Map   ProximaStationLE.SC2Map
BelShirVestigeLE.SC2Map  HonorgroundsLE.SC2Map  PaladinoTerminalLE.SC2Map

@varunbalupuri check if that works for you.

@BurnySc2
Copy link
Collaborator

BurnySc2 commented Aug 8, 2018

I had the same issue with my docker image. I had to use lower case maps for some reason to fix my problem.
https://hub.docker.com/r/burnysc2/python-sc2-docker/~/dockerfile/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants