快速开始

通过代码与游戏环境进行交互

在安装完成之后,可以用以下代码快速实现与游戏环境进行交互:

  1. import random
  2. from gobigger.server import Server
  3. from gobigger.render import EnvRender
  4. server = Server()
  5. render = EnvRender(server.map_width, server.map_height)
  6. server.set_render(render)
  7. server.start()
  8. player_names = server.get_player_names_with_team()
  9. # get [[team1_player1, team1_player2], [team2_player1, team2_player2], ...]
  10. for i in range(10000):
  11. actions = {player_name: [random.uniform(-1, 1), random.uniform(-1, 1), -1] \
  12. for team in player_names for player_name in team}
  13. if not server.step(actions):
  14. global_state, screen_data_players = server.obs()
  15. print('[{}] leaderboard={}'.format(i, global_state['leaderboard']))
  16. else:
  17. print('finish game!')
  18. break
  19. server.close()

在上述代码中,首先构建了 Server 类作为游戏引擎,并构建 EnvRender 类作为渲染引擎,由二者协调游戏的进行。然后,通过 server.step() 完成游戏每一步的进行,通过 server.obs() 获取游戏环境的当前状态。执行之后,将会得到类似下面的输出,给出了每一帧排行榜信息。

  1. [0] leaderboard={'0': 27, '1': 27, '2': 27, '3': 27}
  2. [1] leaderboard={'0': 27, '1': 27, '2': 27, '3': 27}
  3. [2] leaderboard={'0': 27, '1': 30.99935, '2': 30.99935, '3': 30.998700032499997}
  4. [3] leaderboard={'0': 27, '1': 34.99610032498374, '2': 34.99675032498374, '3': 30.9961004874675}
  5. [4] leaderboard={'0': 27, '1': 38.99025149484726, '2': 34.99155136485701, '3': 38.992201494805016}
  6. [5] leaderboard={'0': 30.998700032499997, '1': 42.982054039382575, '2': 34.98635344444432, '3': 38.98620350437408}
  7. [6] leaderboard={'0': 34.9961004874675, '1': 42.973458273284024, '2': 34.98115656353774, '3': 38.98020671345127}
  8. [7] leaderboard={'0': 34.99270152230301, '1': 46.964264256209255, '2': 38.974660754429394, '3': 38.974211121796685}
  9. [8] leaderboard={'0': 34.98930323688059, '1': 46.954872107798515, '2': 38.96686640687893, '3': 38.96821672917049}
  10. [9] leaderboard={'0': 38.98525563106426, '1': 46.94548183767656, '2': 38.95907361808107, '3': 38.96222353533294}
  11. ...

我们也遵循 gym.Env 的接口完成了一个简单的 Env 类,具体可以查看 gobigger/envs/gobigger_env.py

自定义游戏环境

默认情况下,Server 类使用了默认的配置来启动游戏环境。用户也可以选择通过修改配置 cfg 来自定义游戏环境。以下举了几个简单的例子。

修改游戏中的队伍数量和玩家数量

如果用户想要在游戏中存在 6 个队伍,每个队伍中含有 2 名玩家,那么可以修改 team_numplayer_num_per_team 并将其作为 Server 的参数。

  1. from gobigger.server import Server
  2. server = Server(dict(
  3. team_num=6,
  4. player_num_per_team=2
  5. ))

修改游戏时长

如果用户想要将游戏时长设置为 20 分钟(1200秒),可以修改 match_time

  1. from gobigger.server import Server
  2. server = Server(dict(
  3. match_time=1200
  4. ))

修改游戏地图大小

如果用户想要拥有一个更大的地图,可以修改 map_widthmap_height

  1. from gobigger.server import Server
  2. server = Server(dict(
  3. map_width=1000,
  4. map_height=1000,
  5. ))