축하합니다! 방금 멀티플레이어 배틀로얄을 만들었습니다! 이 시리즈에서 다음이 있습니다:
- 플레이어 순간이동과 같은 다양한 게임 기능을 처리하는 모듈화된 스크립트를 만들었습니다.
- 매치의 시작과 끝에 대한 사용자 지정 이벤트를 코딩하는 방법 배우기
- 플레이어가 게임에 참여하거나 승리하거나 게임을 떠날 때 배열을 사용하여 관리했습니다.
그러나 게임은 거의 다른 사람들이 플레이할 준비가 되었습니다. 아레나를 독특하게 만들고 눈에 띄는 썸네일을 만들어 플레이어를 게임으로 섬네일.
선택적 개선
아래는 경험을 개선하는 몇 가지 방법입니다.

맵 시각 개선
시각적으로 흥미로운 맵이 있으면 게임에 대한 강한 첫인상을 심어 사람들이 플레이를 시작하도록 유도합니다.회색 상자 레벨을 실제 맵으로 변환하는 데 시간을 할애하십시오.
이 시리즈의 시작에서 게임에 대한 설정 설명을 작성했습니까? 빌드하는 동안 맵에 명확한 설정이 있는지 확인하십시오.영감을 위해 Roblox 개발자가 빌드한 몇 가지 예제 맵이 아래에 나와 있습니다.


Studio에서 빌드하거나 사전 제작된 자산을 사용할 수 있습니다.다음은 Roblox에서 업로드한 몇 가지 제안 자산으로, 환경을 구축하는 데 사용할 수 있습니다.각 팩에는 고품질의 완전히 텍스처화된 모델이 포함되어 있습니다.
포스필드 변경
게임 중에 플레이어가 재생성할 때 포스필드를 알아차릴 수 있습니다. SpawnLocation 속성의 포스필드가 지속되는 시간을 변경합니다.
- 관련 스폰 위치를 클릭하십시오.
- 속성 > 포스필드에서 지속 시간 값을 변경합니다.
플레이테스트 및 변수 확인
Roblox의 성공적인 게임은 게임플레이가 재미있고 공정한지 확인하기 위해 자주 플레이테스트됩니다.
동료와 게임을 플레이하고 팔로잉확인하십시오:
- 매치의 기간이 적절하게 느껴집니까? 승리하는 플레이어 없이 매치가 너무 빨리 종료되거나 너무 오래 걸리나요?
- 맵의 크기가 적절한 느낌이 들까요? 너무 비어 있는 영역이 있나요? 다른 플레이어에게 접속하는 데 오랜 시간이 걸릴까요?
게임 플레이개선하기 위해 변수를 테스트하고, 평가하고, 수정합니다. 몇 가지 예:
- 변경 GameSettings.matchDuration 더 큰 맵에서 일치 시간을 늘리기 위해 변경합니다.
- 플레이어가 너무 갑작스럽다고 느끼면 휴식 시간 길이를 더 길게 만듭니다.
로비를 소셜하게 만들기
Roblox의 인기 게임은 종종 휴식 시간을 기다리는 동안 플레이어가 재미를 갖고 소셜하도록 미니 게임을 추가합니다.여기에는 플레이어가 플레이할 수 있거나 미니 장애물 코스도 포함될 수 있는 물리학이 있는 구체 부품을 넣는 것이 포함될 수 있습니다.
선택적 도전
많은 Roblox 경험은 출시 후에도 업데이트를 계속 받습니다.아래는 프로젝트에 새로운 기능을 추가할 수 있는 일부 선택적 도전입니다.
트랩
플레이어에게 피해를 주는 함정이나 장애물을 추가하여 맵을 더 도전적으로 만듭니다. 함정 생성에 대해 자세히 알아보세요.
추적 점수
누가 라운드에서 몇 번 승리했는지 추적하는 리더보드를 만듭니다. 리더보드에 이 문서를 사용하여 코드를 작성합니다.
파워업
플레이어의 속도 또는 도구의 공격 능력과 같은 변경을 수행하는 스크립트 부품을 만듭니다.일치끝난 후에는 resetMatch()를 사용하여 파워업 세트를 재구성하십시오.참조를 위해, 파워업 튜토리얼에서 자세히 알아보세요.
더 많은 아레나 추가
다른 설정과 코드로 더 많은 아레나를 구축하고 랜덤화된 맵 선택을 코딩합니다.플레이어가 일치시작할 때마다 MapManager라는 모듈 스크립트가 랜덤 맵을 선택하고 필요에 따라 플레이어를 스폰 위치에 할당합니다.힌트가 필요하거나 하나의 구현을 보려면 아래 코드 상자를 확인하십시오.
--[[
Setup Notes:
1. In Workspace, create a folder named Maps. Store all parts of a map in individual folders.
2. For each individual map, include a folder named SpawnLocations
3. When starting a match, use pickNewMap() to get a random map. When assigning player spawn points, use
GetSpawnLocations() to get a table with all locations.
]]
local MapManager = {}
local mapsFolder = workspace.Maps
-- 서로 회전할 수 있는 모든 맵을 저장합니다
local availableMaps = mapsFolder:GetChildren()
-- 플레이 중인 현재 맵 저장
local activeMap
-- 랜덤 맵을 가져오는 데 사용됩니다.
local randomGenerator = Random.new()
-- 사용 가능한 맵 테이블에서 랜덤 맵 가져오기
function MapManager.pickNewMap()
local whichMapKey = randomGenerator:NextInteger(1, #availableMaps)
activeMap = availableMaps[whichMapKey]
print("New map: " .. activeMap.Name)
end
-- 현재 스폰 지점이 있는 테이블을 반환합니다
function MapManager.getSpawnLocations()
local spawnPoints = activeMap:FindFirstChild("SpawnLocations")
local availableSpawnPoints = spawnPoints:GetChildren()
return availableSpawnPoints
end
return MapManager