프로젝트 완료

*이 콘텐츠는 AI(베타)를 사용해 번역되었으며, 오류가 있을 수 있습니다. 이 페이지를 영어로 보려면 여기를 클릭하세요.

축하합니다! 멀티플레이어 전투 로얄을 방금 만들었습니다! 이 시리즈에서 다음이 있습니다.

  • 플레이어 이동과 같은 다른 게임 기능을 처리하는 모듈러 스크립트를 만듭니다.
  • 시작 및 끝 이벤트에 대한 사용자 지정 이벤트 코딩 방법 배움
  • 플레이어가 게임에 참여하거나 승리하거나 게임을 떠나게 할 때 사용되는 배열.

하지만, 게임이 거의 다른 사람들이 플레이할 준비가 되었습니다. 아레나를 독특하게 만들고 눈에 띄는 썸네일을 만들어 플레이어를 유인하세요.

선택적 개선

다음은 경험을 개선하는 몇 가지 방법입니다.

맵 시각화 개선

시각적으로 매력적인 맵은 게임에 대한 강한 첫인상을 줍니다. 사람들이 플레이를 시작하도록 유도하십시오. 회색 상자 수준을 실제 맵으로 전환하는 데 시간이 걸리십시오.

이 시리즈의 시작 부분에 게임에 대한 설정 내용을 작성하는 것을 잊지 마십시오? 빌드 중에 맵에 명확한 설정이 있는지 확인하십시오. 영감을 위해, Roblox 개발자가 빌드한 몇 가지 예시 맵이 있습니다.

럭셔스 아이즈 맵
Janedel의 맵

Studio에서 빌드하거나 Roblox가 제공하는 미리 만든 자산을 사용할 수 있습니다. 아래는 Roblox에서 업로드한 환경을 빌드하는 데 사용할 수 있는 일부 권장 자산입니다. 각 팩에는 고품질, 완전히 텍스처화된 모델이 포함되어 있습니다.

포스필드 변경

게임 중에는 플레이어가 부활할 때 힘 필드를 알 수 있습니다. 힘 필드가 생성 위치 속성에 얼마나 지속되는지 변경하십시오.

  1. 관련 스폰 위치를 클릭하십시오.
  2. 속성 > 포스필드에서 지속 시간 값을 변경합니다.

플레이테스트 및 확인 변수

Roblox의 성공적인 게임은 게임 플레이가 재미있고 공정하도록 자주 테스트됩니다.

친구들과 게임을 플레이테스트하고 팔로잉확인하세요:

  • 매치의 지속 시간이 적절한가요? 승리한 플레이어가 없는 매치는 너무 빨리 끝나거나, 너무 오래 지속되나요?
  • 맵의 크기가 적절한가요? 맵의 어떤 구역이 너무 비어 있는 것 같나요? 다른 플레이어에게 실행하는 데 오랜 시간이 걸릴 것인가요?

게임 플레이를 개선하기 위해 변수를 테스트하고 평가하고 수정하십시오. 일부 예:

  • 대형 맵에서 매치를 더 길게 하려면 GameSettings.matchDuration를 변경합니다.
  • 플레이어가 너무 놀라워하면 휴식 시간을 더 길게 만듭니다.

로비 소셜 만들기

Roblox의 인기 있는 게임은 종종 플레이어가 휴식을 취할 때 재미를 가지고 소셜하게 플레이할 수 있도록 하기 위해 미니게임을 추가합니다. 여기에는 물리학 구슬 부품을 넣어 플레이할 수 있거나 심지어 장애물 코스를 미니로 구성할 수 있습니다.

선택적 도전

많은 Roblox 경험은 출시 후에도 계속 업데이트됩니다. 아래에는 프로젝트에 새로운 기능을 추가할 수 있는 옵션 도전이 있습니다.

함정

플레이어에게 피해를 주는 함정이나 장애물을 추가하여 맵을 더 도전적으로 만드십시오. 자세한 내용은 함정 생성에 참조하십시오.

트랙 스코어

라운드에서 승리한 횟수를 추적하는 순위표를 생성합니다. Leaderboards에 있는 이 기사를 사용하여 순위표를 생성하십시오.

파워업

플레이어의 속도나 도구의 공격력을 수정하는 것과 같은 변경을 하는 스크립트 부품을 생성합니다. 끝에 일치끝나면 resetMatch()를 사용하여 파워업 세트를 다시 생성하십시오. 참조용으로 Powerups 튜토리얼을 참조하십시오.

더 많은 아레나 추가

다른 설정과 코드로 더 많은 아레나를 구축하고 랜덤 맵 선택을 코드화합니다. 플레이어가 매치를 시작하면 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