1.microRTS(java)
microRTS是java写的跨平台的小型即时战略模拟器。
Farama-Foundation/MicroRTS: A simple and highly efficient RTS-game-inspired environment for reinforcement learning (github.com)https://github.com/Farama-Foundation/MicroRTS
部署和使用很简单
1)配置java环境
java环境变量的配置_java环境变量配置-CSDN博客
microRTS要求java8,也就是java1.8及以上版本。
2)命令行编译
先在根目录上新建一个bin文件夹
然后执行命令行编译:
javac -cp "lib/*;src" -d bin src/rts/MicroRTS.java
(我就列出windows的方法,linux的命令可以在官网上找到)
带中文翻译的项目:
GitCode -MicroRTSGitCode是面向全球开发者的开源社区,包括原创博客,开源代码托管,代码协作,项目管理等。与开发者社区互动,提升您的研发效率和质量。https://gitcode.com/gh_mirrors/mi/MicroRTS
碎碎念……至于那个说明中的jar文件——那里面的jar文件,合并之类的,我不会java结果还以为打包是必要过程……最后也没成功,原来打jar包和执行java是并行的,都可以达到目的
3)命令行执行
java -cp "lib/*;bin" rts.MicroRTS
这样就能看到两个ai在跑对战,直到结束。
或者,一般跑图形界面带编辑器的是用这个命令:
java -cp "lib/*;bin" gui.frontend.FrontEnd
4)弄出jar包
你可以将所有已编译的源文件和依赖项合并到一个JAR文件中,然后单独执行。为了为microRTS创建一个JAR文件:
javac -cp "lib/*:src" -d bin $(find . -name "*.java") # compile source files
cd bin
find ../lib -name "*.jar" | xargs -n 1 jar xvf # extract the contents of the JAR dependencies
jar cvf microrts.jar $(find . -name '*.class' -type f) # create a single JAR file with sources and dependencies
但是,这里给出的是Linux的命令!Windows不认识!
官网上还不给写出Windows的命令!寄!只能自己查了!
折腾了很久,我采取分着写的方式完成“翻译”,但是不尽人意
由于了解到在Linux生成的jar包,在windows上也能运行!!!我决定用WSL+java生成jar包
(这是后来补的,所以后面会有我装WSL的过程)
Java Downloads | Oracle 中国https://www.oracle.com/cn/java/technologies/downloads/#java8-linux先在上面下java的linux包,放到wsl的自己用户内。
使用 tar 命令解压缩下载的文件:
tar xzf jdk-8u161-linux-x64.tar.gz
将解压缩的 Java 安装到 /usr/local/java 目录:
sudo mkdir /usr/local/java
sudo mv jdk1.8.0_161 /usr/local/java/
设置环境变量。打开 /etc/profile 文件并添加以下行:
export JAVA_HOME=/usr/local/java/jdk1.8.0_161
export PATH=$PATH:$JAVA_HOME/bin
使环境变量立即生效:
source /etc/profile
验证 Java 安装是否成功:
java -version
以上步骤可能会因为你的 Linux 发行版和你需要的 Java 版本而有所不同。
然后进入放在Linux的microRTS文件夹根目录,执行官方说明的那几句话。
顺利生成!
然后放到windows下随便哪里,执行
java -cp microrts.jar rts.MicroRTS
顺利执行成功!
2.MicroRTS-Py(python)
MicroRTS-Py是基于microRTS编写的python接口的项目,但是项目介绍上没找到说windows上是否可以编译,主要是依赖的Poetry(python版本管理器,不知道为啥不用conda……为啥不用requirements.txt)上没写是否在windows上能搞。
MicroRTS-Pyhttps://github.com/Farama-Foundation/MicroRTS-Py
配置包的坑是真多,尤其是版本不匹配,我留下一条可行的版本路给大家。
Prerequisites:
- Python 3.8+ (建议3.9,因为poetry要求3.7.1<= <3.10,正好剩下3.8和3.9)
- Poetry
- git(给poetry创建版本库用)
- Java 8.0+ (运行microRTS用)
- FFmpeg (for video recording utilities)
这个项目属于python利用poetry虚拟环境对java的 MicroRTS 原项目套壳。
1)安装Poetry
Poetry 是 Python 中的依赖项管理和打包工具。它允许您声明项目所依赖的库,并将为您管理(安装/更新)它们。Poetry 提供了一个锁定文件来确保可重复安装,并且可以构建您的项目以进行分发。
简介 |文档 |Poetryhttps://python-poetry.org/docs/官方文档有推荐用 pipx 来安装poetry,但是我发现 pipx 的安装还需要 Scoop ……我还是自己装吧。
由于我装好了python,于是我使用如下命令行
(Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | python -
装完了记得配置环境变量(跟那个java一样,按照这句标亮的提示来做)
2)使用poetry
MicroRTS-Py介绍是这么说的
$ git clone --recursive https://github.com/Farama-Foundation/MicroRTS-Py.git && \
cd MicroRTS-Py
poetry install
# The `poetry install` command above creates a virtual environment for us, in which all the dependencies are installed.
# We can use `poetry shell` to create a new shell in which this environment is activated. Once we are done working with
# MicroRTS, we can leave it again using `exit`.
poetry shell
# By default, the torch wheel is built with CUDA 10.2. If you are using newer NVIDIA GPUs (e.g., 3060 TI), you may need to specifically install CUDA 11.3 wheels by overriding the torch dependency with pip:
# poetry run pip install "torch==1.12.1" --upgrade --extra-index-url https://download.pytorch.org/whl/cu113
python hello_world.py
以下不特殊说明,都是在 MicroRTS-Py 目录下执行(解压后的根目录)
0-将microRTS(java编译好的原版)放到指定位置
将标题1中编译好的microRTS放到这个位置(原版microRTS-py的这里的文件夹里是空的)
看pyproject.toml的一部分可以看出端倪
exclude = ["gym_microrts/microrts/build/*","gym_microrts/microrts/resources","gym_microrts/microrts/src","gym_microrts/microrts/data","gym_microrts/microrts/lib/*.jar",
]
poetry install 实际上是读取根目录下的pyproject.toml文件来装配虚拟环境的!!!
1-执行 poetry install
坑: Unable to detect version control system
这个问 Copilot 解决了,需要在当前文件夹路径有git版本库
git init
然后就可以成功执行这句话了
2-执行 poetry shell
坑: ModuleNotFoundError: No module named 'tomli'
简单,pip安装之 pip install tomli 。
我依次安装了tomli、webencodings、 pexpect。最后终于运行成功
【这里存疑,我的另一台电脑每次就不会出现这个冲突,怀疑是我的conda导致每次状态又保持回去了】
后来除了又缺包pip安装上了后……
python hello_world.py
removing E:\1projects\_GitHub\RL\RTS\MicroRTS-Py\gym_microrts\microrts/microrts.jar...
building E:\1projects\_GitHub\RL\RTS\MicroRTS-Py\gym_microrts\microrts/microrts.jar...
E:\1projects\_GitHub\RL\RTS\MicroRTS-Py
此应用程序需要适用于 Linux 的 Windows 子系统可选组件。
通过运行安装它: wsl.exe --install --no-distribution
可能需要重新启动系统才能使更改生效。
Error code: Bash/WSL_E_WSL_OPTIONAL_COMPONENT_REQUIRED
Traceback (most recent call last):
这玩意又要WSL???我为了虚拟机删除了WSL(这东西曾经把我系统区搞废了一次!吓死我了!)这东西竟然又要!
3-折腾WSL
于是我把 控制面板中的 适用于Linux的Windows子系统(Windows Subsystem for Linux)打开了
然后运行命令行
wsl.exe --install Ubuntu-20.04
后来我装WSL又提示我虚拟化的事情……可能是我之前的手机模拟器关了Hyper-V的缘故
Please enable the Virtual Machine Platform Windows feature and ensure virtua
折腾了一下BIOS没啥效果,我试了试这个里的评论
WSL报告"请启用虚拟机平台 Windows 功能并确保在 BIOS 中启用虚拟化"问题一例 - 知乎 (zhihu.com)
bcdedit /set hypervisorlaunchtype auto
用了这个命令行重启果然能装好WSL了(这老哥评论真不错)
4-用poetry运行python样例
有一点问题,这样运行会出这个
又开始报java的错……差不多就是没 microrts.jar……也就是还得回第一步去弄出jar包……
这个虚拟环境里还是要求有那个jar包的
我看到github上也有人问这个问题,后来发现是build.sh导致的,他们都用的是WSL进行的运行所以避免了这个问题(他们这根本不是彻底的windows化……)。
运行 你好_world.py 时出现 Java 导入错误 ·问题 #136 ·Farama-Foundation/MicroRTS-Py --- Java Import Error when running hello_world.py · Issue #136 · Farama-Foundation/MicroRTS-Py (github.com)https://github.com/Farama-Foundation/MicroRTS-Py/issues/136
于是我全局搜索找到控制“build.sh”【因为它用的是linux风格的指令集】的地方,把vec_env.py的这里的True改成False就避免了每次的removing和buliding,从而让jar包还能存在……
由于hello_world.py没输出,我用ppo_gridnet.py来进行成功验证
终于TMD运行起来了!!!
(历经数天(之前还花了好几天折腾,暂且没计入),9.21-9.23留)
总结
安装好WSL, java1.8
编译好java的microRTS,做好jar包,并放到指定位置
选择python3.9版本
安装好poetry
在项目根目录依次执行如下命令行
conda activate RTS #总之就是激活你的python环境,不见得是这句话
poetry install #装配poetry的虚拟python版本环境
poetry shell
最后执行你需要的环境参数进行强化学习