Unity ML-Agents --num-envs 获取环境 ID

问题描述 投票:0回答:1

我想训练一个需要用户登录的游戏。目前,我对登录进行硬编码以使用培训帐户。每个玩家只能登录一次,因此使用 --num-envs=x 参数进行训练仍然会导致实际训练的环境只有一个。有没有办法访问当前环境的ID,以便我可以为每个单独的环境使用不同的登录名?我希望能够说

playerName = $"player{envId};

有办法做到吗?

我研究了 Academy 和 Communicator 的实现,没有发现任何有用的东西。

unity-game-engine machine-learning
1个回答
0
投票

我找到了一种方法:当开始训练时,例如

--num-envs=4
,每个环境都将在其自己的
mlagents-port
上启动,从端口 5005 开始。该端口将作为命令行参数传递给 Unity 进程。使用
ps aux
打印流程将显示以下内容: 机器学习流程

在 Unity 代码中,可以通过

System.Environment.GetCommandLineArgs()
获取端口并用于确定玩家名称。

© www.soinside.com 2019 - 2024. All rights reserved.