TorchCraft / TorchCraftAI

A platform that lets you build agents to learn to play StarCraft: Brood War.
https://torchcraft.github.io/TorchCraftAI
MIT License
650 stars 123 forks source link

I had trouble running Cherrypi #24

Open q228288040 opened 5 years ago

q228288040 commented 5 years ago

I'm a computer novice. It's too difficult for me to run Cherrypi properly. Is there a detailed running tutorial for beginners?

When I run cherrypi, this happens :

C:\windows\system32>F:\StarCraft\bwapi-data\cherrypi.exe -rlbp_model bwapi-data\AI\rlbp_model.bin -modules CreateGatherAttack,Strategy,GenericAutoBuild,RLBuildingPlacer,Builder,Tactics,SquadCombat,Scouting,Gatherer,Harass,StaticDefenceFocusFireModule,RecurrentBos -hostname 127.0.0.1 -bos_model bwapi-data\AI\bos_model.bin -bos_min_advantage 0.08 -vmodule modules=1 -bos_start 6 -bos_start_vs_rush -bos_model_type lstm -bos_num_layers 1 -bos_hid_dim 2048 -bos_bo_input I05696/XXXXX [main.cpp:38] Connected to TorchCraft server at 127.0.0.1:11111 I05696/XXXXX [state.cpp:435] Enemy: Shelak Tribe playing Protoss I05696/XXXXX [state.cpp:439] Map: iCCup Fighting spirit1.3.scx I05696/XXXXX [state.cpp:440] Game is being played at LF6 I05696/XXXXX [banditconfigurations.cpp:160] Using default AIIDE bandit configuration F1007 18:20:56.238013 5696 main.cpp:92] Exception: Read folder does not exist: ./bwapi-data/read F05696/XXXXX [main.cpp:92] Exception: Read folder does not exist: ./bwapi-data/read Check failure stack trace: @ 00007FF7152F7125 private: static struct cereal::detail::bind_to_archives<class torch::optim::SGD,struct cereal::detail::anonymous namespace'::polymorphic_binding_tag> & __ptr64 __cdecl cereal::detail::StaticObject<struct cereal::detail::bind_to_archives<class torch::opt @ 00007FF7152F663C private: static struct cereal::detail::bind_to_archives<class torch::optim::SGD,struct cereal::detail::anonymous namespace'::polymorphic_binding_tag> & ptr64 cdecl cereal::detail::StaticObject<struct cereal::detail::bind_to_archives<class torch::opt @ 00007FF7153238FD private: static struct cereal::detail::bind_to_archives<class torch::optim::SGD,struct cereal::detail::anonymous namespace'::polymorphic_binding_tag> & __ptr64 __cdecl cereal::detail::StaticObject<struct cereal::detail::bind_to_archives<class torch::opt @ 00007FFC9B9F1030 (unknown) @ 00007FFC9B9F3298 _is_exception_typeof @ 00007FFCB1C241C3 RtlCaptureContext @ 00007FF7151936DE private: static struct cereal::detail::bind_to_archives<class torch::optim::SGD,struct cereal::detail::anonymous namespace'::polymorphic_binding_tag> & ptr64 cdecl cereal::detail::StaticObject<struct cereal::detail::bind_to_archives<class torch::opt @ 00007FF715317C85 private: static struct cereal::detail::bind_to_archives<class torch::optim::SGD,struct cereal::detail::`anonymous namespace'::polymorphic_binding_tag> & ptr64 cdecl cereal::detail::StaticObject<struct cereal::detail::bind_to_archives<class torch::opt @ 00007FFCB01F1FE4 BaseThreadInitThunk @ 00007FFCB1BEEF91 RtlUserThreadStart

dgant commented 5 years ago

Hi @q228288040

BWAPI StarCraft bots are typically run with from a working directory with the following directory structure:

./ # This is the working directory
./bwapi-data/
./bwapi-data/AI/[Bot files go here, like cherrypi.exe]
./bwapi-data/read/
./bwapi-data/write/

So, to resolve this error:

Thanks for raising the question. We should document or automate this setup step.

q228288040 commented 5 years ago

Thank you for answering my question.

After I revised the catalog, this still happened. Then the game gets stuck.

F:\StarCraft>F:\StarCraft\bwapi-data\AI\cherrypi.exe -rlbp_model bwapi-data\AI\rlbp_model.bin -modules CreateGatherAttack,Strategy,GenericAutoBuild,RLBuildingPlacer,Builder,Tactics,SquadCombat,Scouting,Gatherer,Harass,StaticDefenceFocusFireModule,RecurrentBos -hostname 127.0.0.1 -bos_model bwapi-data\AI\bos_model.bin -bos_min_advantage 0.08 -vmodule modules=1 -bos_start 6 -bos_start_vs_rush -bos_model_type lstm -bos_num_layers 1 -bos_hid_dim 2048 -bos_bo_input I02928/XXXXX [main.cpp:38] Connected to TorchCraft server at 127.0.0.1:11111 I02928/XXXXX [state.cpp:435] Enemy: SAIDA playing Terran I02928/XXXXX [state.cpp:439] Map: iCCup Fighting spirit1.3.scx I02928/XXXXX [state.cpp:440] Game is being played at LF6 F1010 18:06:17.718891 2928 main.cpp:92] Exception: Expecting fresh game in Player::init(), but current frame is 2 F02928/XXXXX [main.cpp:92] Exception: Expecting fresh game in Player::init(), but current frame is 2 Check failure stack trace: @ 00007FF7D4EA7125 private: static struct cereal::detail::bind_to_archives<class torch::optim::SGD,struct cereal::detail::anonymous namespace'::polymorphic_binding_tag> & __ptr64 __cdecl cereal::detail::StaticObject<struct cereal::detail::bind_to_archives<class torch::opt @ 00007FF7D4EA663C private: static struct cereal::detail::bind_to_archives<class torch::optim::SGD,struct cereal::detail::anonymous namespace'::polymorphic_binding_tag> & ptr64 cdecl cereal::detail::StaticObject<struct cereal::detail::bind_to_archives<class torch::opt @ 00007FF7D4ED38FD private: static struct cereal::detail::bind_to_archives<class torch::optim::SGD,struct cereal::detail::anonymous namespace'::polymorphic_binding_tag> & __ptr64 __cdecl cereal::detail::StaticObject<struct cereal::detail::bind_to_archives<class torch::opt @ 00007FFC9B9F1030 (unknown) @ 00007FFC9B9F3298 _is_exception_typeof @ 00007FFCB1C241C3 RtlCaptureContext @ 00007FF7D4D436DE private: static struct cereal::detail::bind_to_archives<class torch::optim::SGD,struct cereal::detail::anonymous namespace'::polymorphic_binding_tag> & ptr64 cdecl cereal::detail::StaticObject<struct cereal::detail::bind_to_archives<class torch::opt @ 00007FF7D4EC7C85 private: static struct cereal::detail::bind_to_archives<class torch::optim::SGD,struct cereal::detail::`anonymous namespace'::polymorphic_binding_tag> & ptr64 cdecl cereal::detail::StaticObject<struct cereal::detail::bind_to_archives<class torch::opt @ 00007FFCB01F1FE4 BaseThreadInitThunk @ 00007FFCB1BEEF91 RtlUserThreadStart

dgant commented 5 years ago

CherryPi.exe should be started before the game begins. If you're running StarCraft normally, you should have CherryPi.exe already running when you click the Start button and see the countdown in the game setup lobby. Was that the case when this error occurred?

q228288040 commented 5 years ago

yes

dgant commented 5 years ago

I've asked around a bit and nobody knows what would cause this to come up. The symptom is that a couple of game frames have passed before main.cpp:92 is called, but it's unclear why that would happen.