code: def player_join(p):
      game, actions = setup_player()
  
      # Join existing game
      game.add_game_args("-join 127.0.0.1")
      # Use additional arguments to set player name, color and window position
      game.add_game_args(
          f"+name Player{p} +colorset 0 +win_x {win_x + p % 4 * game.get_screen_width()} +win_y {win_y + p // 4 * game.get_screen_height()} "
      )
      # Add additional arguments
      game.add_game_args(args)
  
      game.init()
  
      action_count = 0
      player_sleep_time = const_sleep_time
      player_skip = skip
  
      for i in range(episodes):
          while not game.is_episode_finished():
              state = game.get_state()
              print(
                  f"Player{p}:",
                  state.number,
                  action_count,
                  game.get_episode_time(),
              )
              player_action(
                  game, player_sleep_time, actions, player_skip
              )
              action_count += 1
  
          print(
              f"Player{p} frags:",
              game.get_game_variable(vzd.GameVariable.FRAGCOUNT),
          )
          game.new_episode()
  
      game.close()
  
file_path: ViZDoom/examples/python/multiple_instances_advance.py
imports: import os
  from multiprocessing import Process, cpu_count
  from random import choice, random
  from time import sleep, time
  import vizdoom
label_desc: Use image node_id 4 for calling a global function with example usage: player_join(p) without return types