private void CreateAndSpawnPlayers(GameModePvEConfig gameMode, LevelStageConfig levelStageConfig,
                                           GameLevelGridModel levelGridModel)
        {
            var playerConfigs = gameMode.PlayerConfigs;
            var spawnCorners  = levelStageConfig.PlayersSpawnCorners;

            Assert.IsTrue(playerConfigs.Length <= spawnCorners.Length, "players count greater than the level spawn corners");

            var zip = spawnCorners.Zip(playerConfigs, (spawnCorner, playerConfig) => (spawnCorner, playerConfig));

            foreach (var(spawnCorner, playerConfig) in zip)
            {
                var playerInput = _inputService.RegisterPlayerInput(playerConfig);

                var player = _gameFactory.CreatePlayer(playerConfig, playerInput);
                Assert.IsNotNull(player);

                var position = levelGridModel.GetCornerWorldPosition(spawnCorner);

                var go = _gameFactory.SpawnEntity(playerConfig.HeroConfig, position);
                Assert.IsNotNull(go);

                var hero = (IHero)go.GetComponent <HeroController>();
                player.AttachHero(hero, playerInput);

                Game.LevelManager.AddPlayer(playerConfig.PlayerTagConfig, player);
            }
        }