전문 개발 스튜디오의 경우, 서드파티 도구를 설정하고 자동화에 투자하는 것은 개발자 생산성을 극적으로 향상시킬 수 있습니다. 로블록스의 클라우드 우선 접근 방식은 많은 장점이 있지만, 개발 워크플로의 특정 부분을 클라우드 외부로 이동하면 더 큰 팀이 시간에 따라 변경 사항을 추적하고, 코드를 검토하며, 이미 익숙한 언어와 도구를 사용할 수 있습니다.
- 외부 텍스트 편집기를 사용하거나 코드를 버전 관리에 유지하고 싶다면, 스크립트 동기화가 훌륭한 선택입니다.
- 전체 프로젝트를 로컬 파일 세트로 관리하고 싶다면, 이 페이지에서는 몇 가지 도구와 전략을 다룹니다.
동기화 문제
본질적으로 로블록스와 외부 도구를 사용하는 것은 동기화 문제입니다:
- 로블록스 인스턴스가 디스크의 파일로 존재하여 자신의 도구를 사용하여 작업할 수 있기를 원합니다.
- 작업을 마친 후 파일을 로블록스 프로젝트로 다시 가져와야 합니다.
- 그 사이에 다른 사람이 동일한 파일을 변경했다면, 충돌을 처리해야 합니다.
전체 솔루션이 원활하고 자동으로 느껴지려면 a) 파일 변경 사항을 듣고 b) 이러한 변경 사항을 스튜디오에 통합해야 합니다.
로블록스의 클라우드 우선 접근 방식 대신, Rojo는 "파일 시스템 우선" 접근 방식을 허용합니다. 이는 귀하의 머신에서 서버를 실행하여 스튜디오 플러그인과 통신하여 파일과 스튜디오 데이터 모델을 동기화합니다.
Rokit으로 Rojo 설치하기
Rojo 바이너리를 수동으로 다운로드하고 실행할 수 있지만, 이 접근 방식은 팀의 다른 개발자가 서로 다른 Rojo 버전을 사용하는 위험이 있습니다. 더 나은 솔루션은 Rokit과 같은 도구 체인 관리자를 사용하는 것입니다. 이는 설치 및 업그레이드 프로세스를 일관되게 유지하기 위해 구성 파일—저장소 및 버전 목록—을 사용합니다.
Rokit은 프로젝트 내의 패키지가 아니라 기본 개발 환경을 관리하므로 nvm과 더 유사하지만 npm과의 비교는 완벽하지 않습니다. 간단한 rokit.toml 파일은 다음과 같습니다:
[tools]
rojo = "rojo-rbx/rojo@7.6.1"
wally = "upliftgames/wally@0.3.2"
lune = "lune-org/lune@0.10.4"그런 다음 rokit install로 이러한 도구를 설치합니다. 전역 rokit.toml 파일 외에도, Rokit은 프로젝트별 파일을 지원하므로 서로 다른 프로젝트에 대해 Rojo, Wally 또는 기타 도구의 서로 다른 버전을 쉽게 사용할 수 있으며, 전체 팀이 동일한 버전을 유지할 수 있습니다.
도구가 새 버전을 출시하면, .toml 파일에서 버전 번호를 명시적으로 증가시키고, Rokit을 사용하여 업그레이드를 수행하고, 새 버전을 테스트한 후 문제가 발생하면 다운그레이드합니다. 명령 및 설치 지침은 Rokit를 참조하십시오.
Rojo 실행하기
Rokit으로 Rojo를 설치한 후, 실제로 설치한 것은 Rojo 서버입니다. 다음 단계는 로블록스 스튜디오용 Rojo 플러그인을 설치하는 것입니다.
크리에이터 스토어에서 설치하거나 다음 명령으로 로컬에 설치할 수 있습니다:
rojo plugin install그런 다음 새 게임의 프로젝트 구조를 생성하고 빌드합니다:
rojo init my-new-experience
cd my-new-experience
rojo build -o my-new-experience.rbxl또는 기존 게임을 포팅할 수 있습니다. 어떤 방법이든 프로젝트가 생기면 Rojo 서버를 시작합니다:
rojo serve로블록스 스튜디오에서 방금 빌드한 .rbxl 파일을 열고, Rojo 플러그인을 열고, 이제 실행 중인 서버에 연결합니다. 이 시점에서 선호하는 텍스트 편집기에서 변경을 시작하고 이러한 변경 사항이 자동으로 스튜디오에 동기화되는 것을 볼 수 있습니다.


Rojo 프로젝트는 파일에 대한 특정 명명 요구 사항, 다양한 구성 옵션 및 몇 가지 제한 사항이 있으며, 이 모든 것은 Rojo 문서에서 다룹니다.
패키지 관리자
로블록스는 강력한 API 세트를 포함하고 있지만, 커뮤니티 소프트웨어 패키지를 일관되고 재현 가능한 방식으로 사용하려면 패키지 관리자가 필요합니다. Wally는 인기 있는 옵션입니다. Rojo와 마찬가지로 Rokit을 통해 설치할 수 있습니다.
게임의 Rojo 디렉토리 내에서 wally init을 실행합니다. 그런 다음 원하는 패키지를 wally.toml에 추가합니다. 파일은 다음과 같을 수 있습니다:
[package]
name = "my-home-directory/my-new-experience"
version = "0.1.0"
registry = "https://github.com/UpliftGames/wally-index"
realm = "shared"
[dependencies]
react = "jsdotlua/react@17.2.1"
react-roblox = "jsdotlua/react-roblox@17.2.1"
cryo = "phalanxia/cryo@1.0.3"그런 다음 wally install을 실행합니다. Wally는 Packages 디렉토리를 생성하고 지정된 패키지를 그곳에 다운로드합니다. 마지막 단계는 Packages 디렉토리를 Rojo에 추가하여 그 내용이 로블록스로 동기화되도록 하는 것입니다. default.project.json을 열고 경로를 추가합니다. 간단함을 위해 이 예제에서는 모든 패키지가 모든 스크립트에서 사용 가능하도록 ReplicatedStorage에 전체 디렉토리를 추가하지만, 특정 패키지를 ServerScriptService 또는 StarterPlayerScripts에 추가하는 것이 더 나을 수 있습니다:
{
"name": "my-new-experience",
"tree": {
"$className": "DataModel",
"ReplicatedStorage": {
"Shared": {
"$path": "src/shared"
},
"Packages": {
"$path": "Packages"
}
},
...
}
}그런 다음 스크립트 내에서 패키지를 다른 ModuleScript처럼 요구할 수 있습니다:
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local React = require(ReplicatedStorage.Packages.react)
local ReactRoblox = require(ReplicatedStorage.Packages["react-roblox"])
local handle = Instance.new("ScreenGui", Players.LocalPlayer.PlayerGui)
local root = ReactRoblox.createRoot(handle)
local helloFrame = React.createElement("TextLabel", {
Text = "안녕하세요, 세상!",
Size = UDim2.new(0, 200, 0, 200),
Position = UDim2.new(0.5, 0, 0.5, 0),
AnchorPoint = Vector2.new(0.5, 0.5),
BackgroundColor3 = Color3.fromRGB(248, 217, 109),
Font = Enum.Font.LuckiestGuy,
TextSize = 24
})
root:render(helloFrame)대부분의 다른 소프트웨어 프로젝트와 마찬가지로, 목표는 기여자가 저장소를 클론하고, Rokit을 설치하고, 몇 가지 명령을 실행하여 팀의 나머지와 동일한 개발 환경을 갖는 것입니다.
버전 관리
일련의 일반 텍스트 파일을 컴퓨터에 보관하면 다양한 기능이 열리지만, 주요 기능은 _버전 관리_입니다. Git 또는 Mercurial 저장소에 파일을 저장할 수 있으며, 원격 저장소를 호스팅하고 GitHub, GitLab 또는 Bitbucket에서 코드 변경 사항을 검토할 수 있으며, 원하는 텍스트 편집기를 사용할 수 있습니다.
Visual Studio Code와 Cursor는 가장 큰 확장 생태계를 가지고 있지만, Sublime Text, Notepad++, Vim도 인기 있는 선택입니다. 어떤 편집기를 선택하든 스튜디오 스크립트 편집기의 기능을 일치시키려면 몇 가지 확장이 필요합니다.
다음과 같은 추가를 고려할 수도 있습니다:
- 일반적인 문제를 잡고 코딩 표준을 강제하기 위한 린터 selene
- 코드 포매터 StyLua
- 자동 완성, 유형 검사 등을 위한 언어 서버 Luau Language Server
모든 것을 되돌리기
서드파티 도구가 변경 사항을 로블록스 스튜디오에 동기화하고 이를 대체하지 않기 때문에, 이 워크플로의 어떤 부분도 잠금이 없습니다. 언제든지 이러한 도구 중 하나 또는 모두의 사용을 중단하고 게임을 스튜디오에서만 편집할 수 있습니다. 위험이 없기 때문에 서드파티 도구를 실험하는 것이 특히 매력적입니다.