이곳은 개발을 위한 베타 사이트 입니다.
기여내역은 언제든 초기화될 수 있으며, 예기치 못한 오류가 발생할 수 있습니다.

Roblox Studio

덤프버전 :




로블록스 스튜디오
Roblox Studio
}}}
개발
Roblox Corporation
플랫폼
Microsoft Windows | macOS
출시
2005년
프로그래밍 언어
Lua[1]
한국어 지원
지원
관련 사이트
파일:Roblox Studio 아이콘.svg로블록스 개발자 허브
파일:Roblox Studio 아이콘.svg로블록스 교육 허브[2]
파일:Roblox Studio 아이콘.svg로블록스 스튜디오 자습서
파일:Roblox Studio 아이콘.svg로블록스 개발자 포럼
다운로드
파일:Roblox Studio 아이콘.svg

1. 개요
3. Tool Box
3.1. Model
3.2. Image(구 Decal)
3.3. Video
3.4. Mesh
3.5. Audio
4. 문제점
4.1. R63 관련 문제[3]
4.2. 버그
4.3. Lua 바이러스
4.4. Terrain
4.5. 실행 관련
5. 스크립트
5.1. 스크립트 종류
5.1.1. 로컬 스크립트
5.1.2. 서버 스크립트
5.1.3. 모듈 스크립트
5.2. 자주 쓰이는 함수와 명령
5.3. 자료형
5.4. 이벤트
5.4.1. BasePart[4] 관련
5.4.2. Players 관련
5.4.3. ProximityPrompt 관련
5.4.4. Gui 관련
5.4.5. 모든 개체 공통
5.4.6. 기타
5.5. 메서드
6. 플러그인
7. 개발 팁



1. 개요[편집]


Roblox 플랫폼의 게임 개발 도구. 여기에서 다운로드받아 설치할 수 있다.

개발 도구 내에서 게임을 개발하며 테스트해 볼 수 있으며, 게임을 발행(Publish)하면 개발한 게임을 다른 친구들과 함께 플레이할 수 있다.

로블록스 개발자 허브 다양한 공지와 API문서를 한꺼번에 볼 수 있다. 기본적으로 API문서가 여기에 다 있으니 참조를 할 수 있다.

로블록스 교육 허브 사이트에서 개발 관련 자료를 찾아볼 수 있으며, 일부 자료는 한글화되어 있는 걸을 볼 수 있다. 유튜브에서도 "로블록스 스튜디오"로 검색하면 로블록스 개발 관련 영상을 찾아볼 수 있다. 하지만 현재 구할 수 있는 대부분의 개발 자료가 영어로 되어 있으므로 진입장벽은 감안해야 한다.

그래도 국내 일부 로블록스 게임 개발자 유저들이 네이버 카페에 커뮤니티를 만들어서 개발을 하면서 어려움 점이나 자신의 지식을 공유할 서로 서로 공유를 할 수가 있다.
링크 : https://cafe.naver.com/robloxstudio

2021년 1월 패치로, 스튜디오 자체 툴 메뉴 대부분이 한글화되었다. 번역 수준은 매우 깔끔한 편이다.

2021년 2월에 로고가 바뀌었다.

2021년 10월 29일 서버 다운사태 때문에 당시 접속이 불가능 했었다.

2022년 9월에 UI 개편이 있었다..만, 9월 말~10월 초에 원래 UI로 롤백되었다. 아마 가독성 문제 때문에 그런 듯.


2. 템플릿[편집]


파일:상세 내용 아이콘.svg
  "display: none; display: 문단=inline"를
의 [[Roblox Studio/템플릿#s-"display: inline; display: 앵커=none@"
@앵커@@앵커_1@ 부분을
참고하십시오.



3. Tool Box[편집]




필요한 에셋을 검색을 통해 꺼내와 사용할 수 있는 곳이다.

검색을 하여 필요한 에셋을 꺼내 사용할 수 있는데, 유저가 만든거나, ROBLOX가 자체적으로 만든[5] 것도 있다. 그리고 로블록스에서 인증된 모든 툴들은 노란색의 뱃지 표시가 있다. 툴박스에서 사용 가능한 툴은 Models, Images, Meshes, Audio로 분류되어 있다.

저작권에 걸리는 모델[6]은 웬만하면 쓰지말자. 바이러스의 위험도 있고 저작권법 위반이다. [7]

간혹 모델중에 가끔
유료로 판매하는 모델을 허가없이올려서 무료로 판매하는 사람들도 있어 조심해야한다.[8]

3.1. Model[편집]


파일:Models roblox studio.png

여러 오브젝트를 묶어 한 곳에 모은 일종의 폴더이다.
종류 상관없이 작품을 만들 때 사용된 여러 부품을 하나의 Model로 정리할 수 있다. Roblox Studio에서 가장 큰 비중을 차지한다고 볼 수 있으며, 게임을 제작할 때 가장 유용하게 사용된다.
그러나 비슷하게 사용되는 Folder는 모델처럼 부품들을 묶지만 화면에서 선택하면 모두 선택되는 모델과는 다르게 화면에서 각각 선택이 가능하므로 시간을 절약 하고 싶다면 폴더가 훨씬 유리하다.(키보드의 Alt 키를 누르면서 모델을 눌러도 된다)

3.2. Image(구 Decal)[편집]


Image는 모델에 씌울 수 있는 사진이나 그림이다. 이미지는 자신이 직접 업로드할 수 있다.
글씨가 작게 적힌 파일을 업로드하면 검열에 걸릴 가능성이 높으니 주의.(크게 적혀있으면 잘 통과한다) 이 외에도 다른사람의 얼굴이 나온 사진, 혐오스러운 사진, 총기 사진, 피가 나오거나 잔인한 사진, 링크가 걸린 QR코드, 사이트 링크,[9] 수 분 이내에 경고를 먹게 된다.이러한 경고를 여러 차례 먹게 될 경우 계정 제재의 원인이 되므로 주의하자.[10]
기존엔 Decals라는 분류였다가 Images로 바뀌었다.


3.3. Video[편집]


게임 안에서 영상을 볼 수 있게 해주지만 현재는 베타 버전인지 인증된 사용자만이 올린 극소수의 Roblox 오리지널 동영상만이 존재하며, 이 때문에 활용도가 극히 제한적이다. 무엇보다 최적화가 덜 된 상태라서 많이 사용하면 프레임이 떨어진다.


3.4. Mesh[편집]


Mesh는 Blender 등의 3D모델링 프로그램으로 만들어진 파일의 정보를 담은 것으로, 만든 3D 파일을 Mesh를 이용해 Roblox에 불러올 수 있다. MeshPart를 이용해 불러온다. 당연히 단독으로는 작동하지 않는다.

MeshPart가 충돌 인식이 안 좋다.[해결]
좀 복잡하다 싶은 구조물(주로 총이나 자동차. 특히 현실의 것을 모티브로 한 경우)은 십중팔구 Mesh를 이용한 것이라고 보면 된다.


3.5. Audio[편집]


Audio는 적용 가능한 소리 파일이다.

2022년 3월부터 오디오를 무료로 업로드할 수 있다. (최대 7분)#[11] 다만 제약사항이 있는데, 한 계정당 30일에 10개의 오디오밖에 업로드할 수 없다.[12] 또한 기존에 올린 6초이상 오디오들이 3월 22일부로 모두 비공개 처리되었다
자세한 건 Roblox/사건 사고 참고.


4. 문제점[편집]



4.1. R63 관련 문제[13][편집]


일부 유저들은 이상한 아이템들을 개발하여 모델로 내놓는다.[14][15]

사실상 거의 해결된 문제이다, 로블록스의 대대적인 제재와 더불어 유저들이 R63 이란 이름을 대고 테러 아이템[16]을 넣는 등 제 3자의 활동으로 거의 해결되었다.
…라곤 하지만 그래도 여전히 R63은 남아있다.

이 문제가 심각한 것을 인지한 로블록스는 12월 3일 R63 관련 제작자들은 법적 소송할 것이라 밝혔으며 12월 6일 16살[17] R63 제작자 대상으로 법적으로 위협까지 감행했다.


4.2. 버그[편집]


자체 엔진을 사용하는 만큼 버그도 많다.

  • 유니온이 안보이거나 유니온 해제가 안될때가 있다. 스튜디오를 재시작하면 다시 보이기도 하는데 재시작 후에도 안보이고 유니온 관련 시스템이 안먹힐 경우에는 복구가 불가능하다. 복구 할 수 있는방법은 참조바람.[18] 복구 원리는 간단하다. 로블록스 스튜디오에서 유니온으로 바꿀 때 유니온 데이터가 자산id로 이동하여 그 데이터가 문서에 그대로 남겨있어서 복구를 할 수 있다.
  • 유니온으로 구멍을 뚫더라도 파츠가 투명하게 남아있다.[예시] [해결법]

  • 일부 극소수의 사람들은 모든 생성된 파트가 고정이 풀려있어도 이동시키거나 크기를 키우려고 하면 자동고정이 걸리는데 원인 불명. [만약]

  • 모델을 생성했는데도 불구하고 먹통일때가 있다. 집 또는 킬러 모델이 주로 걸린다.

  • 메시파츠가 안보이는 버그. 이걸 해결할려면 아예 다시 만드는것 말고는 방법이 없다.


4.3. Lua 바이러스[편집]


일부 유저는 스튜디오로 악성 스크립트를 개발[19]해서 그 스크립트(이하 바이러스)가 심어진 모델을 배포한다. [주의]

일반적으로 바이러스는 다음과 같은 경로로 감염된다.
  • 툴박스에서 바이러스가 심어진 악성 모델을 불러온다.
  • 정상 플러그인을 사칭한 악성 플러그인을 설치한다.
  • 팀 크리에이트나 다른 개발자가 있는 그룹 게임에서 다른 사람이 이를 감염시킬 수 있다.

바이러스는 다음과 같은 모델에 자주 들어가있다.
  • 툴박스에서 노란색 인증 뱃지가 달리지 않은 상단의 모델.
    • 예전에는 없었는데 갑자기 툴박스 상단으로 나온 모델들. 봇을 이용한 조작으로 순식간에 인기모델로 상단에 노출되게 한다.
  • 이름이 한 단어 도배로(예시: NOOB NOOB NOOB NOOB) 이루어진 대부분의 모델.
  • 검색 키워드랑 전혀 관련 없어보이는 뜬금없는 모델. 자전거를 검색했더니 대관람차가 나온다거나.
  • Anti-Exploit, Anti Lag Script 등 핵 방지나 최적화를 해준다는 스크립트라 주장하는 모든 모델. 애초에 그런건 모델로 구현이 불가능하고 플러그인으로 구현해야 한다.
  • 툴박스에서 같은 이름을 가진 동일 모델이 여러개 있는 모델들.
  • 모자 없애는 발판이나 속도 발판, 자판기, 총 지급 장치, 아이템 지급기[20] 등 많은 사람이 사용하는 모델의 복제품들.[21] 비슷한게 널려서 구별도 쉽지 않다.
  • 표지판이나 의자같은 단순한 물건에 스크립트가 덕지덕지 붙어있는 경우.

다음과 같이 행동하면 게임에 바이러스가 창궐하는 걸 예방할수 있다.

  • 툴박스에서 노란색 인증 뱃지가 붙은 모델만을 불러온다.

정 안되면 1200표가 넘는 모델을 불러온다[22]

  • 툴박스를 건드리지 않고 혼자서 모델과 스크립트를 전부 직접 만든다.

  • 툴박스에선 이미지나 오디오, 메쉬만을 불러와 사용한다.

  • 툴박스에서 불러온 모델에 수상한 스크립트 파일은 없는지 꼼꼼히 검사 후 게임에 넣는다.

이 바이러스는 컴퓨터 자체에는 영향을 끼치지 않는, 보통 Lua 바이러스라고 불리는 바이러스다.
백도어의 경우에도 컴퓨터 자체에는 영향을 끼치지 않지만, 게임을 발행하고 사람이 좀 많아지면 백도어를 유포한 사람한테 기록이 가고[23] 그 사람이 특정 조건을 만족한 (부)계정[24]으로 게임에 접속하면 게임안에 특정 GUI가 나오고 그 사람은 그걸로 각종 나쁜 짓을 할수 있게 된다.

'바이러스' 종류에서 주로 발생하는 일은
  • 게임이 시작하자마자 FREE ROBUX같은 다른 게임으로 옮겨버린다.
  • 화면이나 GUI를 계속 깜빡거리게 하여 눈을 아프게 만든다.
  • 의미 없는 모델[25]을 구매하라고 계속 구매창이 나와 게임을 불편하게 한다.
  • 무한 루프를 이용한 서버/클라이언트의 엄청난 렉을 유발한다.
  • 더 나아가, 로블록스가 게임을 잘못 판단하면 게임 또는 계정이 제재를 당할 수 있다.

'백도어' 종류에서 주로 발생하는 일은
  • 루아 바이러스나 백도어를 만든 사람에게 각종 도구와 기능, 좋은 예시로 어드민을 제공한다.
  • GUI를 이용한 각종 팝업 메세지를 띄운다.
  • 불이나 파트등 물체를 소환한다.
  • 데이터스토어[26]를 변형한다.
  • 스크립트나 물체의 이름을 바꾸거나 지워 게임을 망가뜨린다.
  • 게임내에서 일반적으로 불가능한 Star glitcher같은 스크립트를 사용한다. 스튜디오 내의 서버 스크립트를 사용한 백도어를 심어 콘솔 스크립트를 사용하는 것.
  • 여담으로 백도어 중에서는 Ro-Sync이라는 것이 있는데 이것이 당신의 게임에 있을 경우 각종 스크립트에 Last Synced (날짜 혹은 시간) 이 적혀 있으며 사용자가 당신의 게임에 각종 악성코드를 삽입할 수 있게 된다. 만일 스크립트에 "Last Synced (일렬의 숫자)" 가 적혀 있거나 RoSync Loader라는 이름의 오브젝트가 있을 시 백에는 백 툴박스표 에셋 사용 등의 경로로 게임이 감염된 것이니 그럴 때에는 아래 스크립트를 Command Bar에 입력하자:
for i,v in pairs(game:GetDescendants()) do
pcall(function()
if v:IsA("Script") then
if string.find(v.Source, "RoSync Loader") then
local code = ""
local splitted = string.split(v.Source, "\n")
for lineNum, line in pairs(splitted) do
print(type(string.find(line, "Last synced")))
print("removinga")
if string.find(line, "Last synced") then
else code = code.."\n"..line
end

end
v.Source = code
print(code)

end

end

end)
end
">


바이러스를 찾는 방법은 대표적으로 다음과 같다.
  • 파트 내부를 작은 블럭 하나하나까지 뒤져보거나 "RotateP","RotateV","Fire","Weld"로 익스플로러에 검색한다. 그리고 그 안에 괴상한 이름을 가진 스크립트가 있다면, 절대다수가 바이러스다. Fire의 경우에는 횃불같은 의도한 불이면 바이러스가 아니지만, 전혀 불이 안들어갈만한 장소에 전혀 드러나지 않는 불이 있다면 무조건 바이러스성 불이니 바로 지우자.
  • Ctrl+Shift+F로 전체 스크립트를 검색해 getfenv, require, loadstring를 검색하자. require의 경우에는 A-chassis tune이나 Kohl's Admin 같은 많은 정상 스크립트가 이용해서 무턱대고 지우지 말고 좀 이상한 것을 찾자. 만약 의도하지 않은 스크립트라면 대부분이 백도어다. getfenv나 loadstring은 대다수가 백도어다. 과감히 지우자.
  • 너무 많거나 귀찮다면 플러그인에 Ro-Defender를 설치하여 렉 유발 바이러스를 없애주면 된다. 스크립트 내용이나 방식, 이름[주의]같은걸 찾아서 대부분은 확실하게 없애주지만 간혹 놓치는것도 있으니 꼼꼼히 찾자.
  • 구매 유도 바이러스의 경우에는 PromptPurchase , MarketplaceService 를 전체검색으로 찾아보자. 첫 줄에 local wat=이 있으면 이게 구매 유도 바이러스다!
  • 스크립트 이름이 검은 마름모 안에 물음표가 들어있는 기호[27]가 도배된 것을 발견한다면 바이러스니 지우자. 이 기호는 유니코드 오류 시 뜨는 기호이기 때문에 검색에서도 뜨지 않으니 주의하자.


4.4. Terrain[편집]


지형이 자연스럽게 다듬어지지 않을때가 있다.

위 문제는 23일자 업데이트로 거의 해결되었다. (물이 닿는 해안선의 지형이 자연스럽게 연결된다.)


4.5. 실행 관련[편집]


파일:1654156364894.png

현재 일부 유저들에게 파일이 손상되었다면서 다시 깔으라고 한다. 하지만 다시까는것을 반복해도 안되고 있다.[28] 여러사람들이 겪고 있는걸 보면 이는 개개인의 문제가 아닌 서버상의 문제이거나 툴 자체에 뭔가 문제가 생긴것일 가능성이 높다. 하지만 우클릭 후, 관리자 권한으로 실행할 시에는 잘 작동한다.


5. 스크립트[편집]


로블록스 Scripting 페이지(영문) 스크립트를 이용하여 각종 시스템이나 효과를 만들 수 있다.
Roblox Studio의 스크립트 기능은 Lua 5.1을 기반으로 만든 Luau를 사용하고 있다. '프로그래밍 루아'라는 이름의 서적이 한국어로 번역되어 있으니 Lua 스크립팅을 공부하고 싶다면 관련 서적을 읽어보는 것도 좋다.[29]


5.1. 스크립트 종류[편집]


로블록스에는 총 3개의 스크립트 종류들이 있다.


5.1.1. 로컬 스크립트[편집]


로컬 스크립트 [Local Script]

서버가 아닌 로컬[30]에서 구동 되는 스크립트다.[31] 로컬 스크립트에서 변동 된 항목들을 개인에게만 적용 되며, 모든 물리 연산은 개인 컴퓨터에서 계산 된다. [32]
로컬 스크립트는 당연히도 클라이언트 측에서 작동되는 스크립트 이므로 클라이언트와 관련된 개체 밑에서만 작동을 한다. [33]

또한 로컬스크립트에서만 작동되는 서비스나 이벤트들이 있는데, 플레이어의 입력을 감지하는 UserInputService 와 함수가 프레임 마다 실행될수 있게 하는 RenderStepped 이벤트, 등이 있다.

5.1.2. 서버 스크립트[편집]


서버 스크립트 [Server Script]

거의 스크립트들의 기본값이라 봐도 무방. 서버에서 연동 되는 스크립트다. 로컬이 아닌 서버에서 모든 연산 및 물리 계산을 하기 때문에 개인 컴퓨터의 사양에 영향을 안받는다. 서버 스크립트에서 변동 된 항목들을 모든 플레이어에게 적용이 된다. 서버 스크립트는 로컬 스크립트와는 다르게 모든곳에서 작동 된다.[34]


5.1.3. 모듈 스크립트[편집]


모듈 스크립트 [Module Script]

반복적인 코드들을 정리하고 재사용 할수 있게 하는 특별한 류의 스크립트이다.
모듈 스크립트는 기본적으로 테이블 형태로 되어있어 자동적으로 실행되지 않는다.
또한 서버와 로컬 공용으로 쓰이며 호환되지는 않는다.
모듈 스크립트 자체가 정적이라 특별한 이유없이는 잘 쓰이지 않았지만, 메타테이블 이라는 테이블을 클래스화 시켜주는 방법이 등장함으로써 모듈 스크립트도 동적으로 사용이 가능해졌고 사용률도 훨씬 올랐다.

다음은 모듈 스크립트의 기본 사용예제이다.

[ 모듈 스크립트 사용 예시 ]
--모듈 스크립트
local module = {}

module.a = 1

function module.b()
    print("b")
end

function module:c()
    print("c")
end

return module -- 모듈 스크립트는 값을 반환해야함.

--서버 or 로컬 스크립트

local module = require(모듈_경로) -- 모듈 볼러오기

print(module.a) -- 1 출력
module.b() -- b 출력
module:c() -- c 출력


5.2. 자주 쓰이는 함수와 명령[편집]


많이 쓰이는 함수와 명령 목록은 이렇다.

  • wait(숫자) = (숫자)초만큼 기다린다.[35][36]
  • print(문자열) = 문자열을 Console에 출력한다[37]
  • end = 조건문이나 반복문, 함수를 끝낸다.
  • while 조건 do = 조건이 계속 충족되는 한 계속 실행한다. [38]
- 이때 while true do를 하면 게임이 시작되는 순간부터 끝날 때까지 계속 실행한다.[39]
- while 조건 do를 치고 엔터를 누르면 아래에 Tab키를 눌렀을 때만큼의 띄어쓰기가 되어 있고 끝에 End가 자동으로 붙는다.
  • for i = val1, val2, val3 do = 조금 복잡하다. 간단히 요약하면, i가 처음 시작하는 수가 val1이고, 한번 반복하면 i가 val3씩 늘어난다. for 반복문은 i가 val2보다 큰지 계속 검사하여, 만약 i가 val2보다 크면 반복문을 빠져나간다. [40]
    • for i, v in ipairs(배열) do = for i = val의 상위버전, 배열의 i 번째 개체를 자동으로 변수 v로 치환해주는거다. 이거를 이용하여 모델에 스크립트 하나만 넣어 모델의 어느 파트에만 닿아도 죽게 만들 수 있다.
      [ 스크립트 예시 펼치기 · 접기 ]
      • 아무 파트나 닿으면 죽는 모델 스크립트
      local Cooldown = false --쿨다운 변수 만드는 부분
      local Model = script.Parent:GetDescendants() -- 모델 지정후 모델의 모든 개체 지정
      local parts = {} -- 빈 배열 생성(파트들을 담기위한 배열)
      
      for a=1, #Model do
          if Model[a]:IsA("BasePart") then
              table.insert(Model[a], parts)
          end
      end
      
      for i, v in ipairs(parts) do
          v.Touched:Connect(function(part)
              if part.Parent:FindFirstChild("Humanoid") and Cooldown == false then
                  Cooldown = true
                  local humanoid = part.Parent:FindFirstChild("Humanoid")
                  humanoid.Health = 0
                  task.wait(1)
                  Cooldown = false
              end
          end
      end
      
  • if 조건 then = 만약 조건이 충족되면 안에 있는걸 실행한다.
- (숫자) = (숫자) 로 조건을 쓰면 오류 난다.[41] 같은지 비교할 땐 (숫자) == (숫자) 를 쓰도록 하자.
  • repeat wait(숫자) until 조건 = 조건일 때 까지 계속 반복한다.
- 이것도 조건에서 (숫자) == (숫자)와 같이 써야된다.


5.3. 자료형[편집]


로블록스에는 수많은 자료형들이 있지만 그 많은 자료형중 몇몇만 자주 사용된다.
많이 쓰이는 자료형 목록은 이렇다.

  • boolean (참/거짓)
  • nil (아무것도 없는 값 [42])
  • number (숫자)
  • string (문자열)
  • table (테이블 [43][주의할점])
  • Instance (개체 [44])
  • script (스크립트 [45])
  • Vector3 (3차원 위치 단위 [46])
  • CFrame (Vector3 처럼 위치를 나타내는 스크립트지만 CFrame은 개체의 피펏의 기준으로 한다.]
  • Color3 (색)
  • Udim2 (2차원 위치 단위 [47])
  • Enum (거의 모든 자료형의 담고있는 자료)


5.4. 이벤트[편집]




5.4.1. BasePart[48] 관련[편집]


  • BasePart 개체.Touched : 플레이어가 닿았을때 상호작용하는 이벤트. 쿨다운을 설정 안하면 한번에 여러번 호출되니 조심. 인자엔 닿은 개체가 들어온다.
[ 스크립트 예시 펼치기 · 접기 ]
  • 닿으면 죽는 KillPart 스크립트
local Cooldown = false --쿨다운 변수 만드는 부분

script.Parent.Touched:Connect(function(hit)
    local Humanoid = hit.Parent:FindFirstChild("Humanoid") --변수 만드는 부분
    if Humanoid and not Cooldown then --휴머노이드 개체가 있는지 확인하는 부분 + 쿨다운이 아닌지 확인하는 부분
        Cooldown = true
        Humanoid.Health = 0 --닿은 플레이어의 체력
        wait(1) --1초 기다림
        Cooldown = false
    end
end)


  • BasePart 개체.TouchEnded : Touched의 반대로 플레이어가 더이상 닿지 않을 때 상호작용하는 이벤트.이것도 쿨다운을 설정 안하면 한번에 여러번 호출되니 조심. 인자엔 더이상 닿지 않는 개체가 들어온다.
[ 스크립트 예시 펼치기 · 접기 ]
  • 더이상 닿지 않을 때 죽는 스크립트(Touched 예시 스크립트에서 이벤트만 바꾼 버전이다)
local Cooldown = false --쿨다운 변수 만드는 부분

script.Parent.TouchEnded:Connect(function(hit)
    local Humanoid = hit.Parent:FindFirstChild("Humanoid") --변수 만드는 부분
    if Humanoid and not Cooldown then --휴머노이드 개체가 있는지 확인하는 부분 + 쿨다운이 아닌지 확인하는 부분
        Cooldown = true
        Humanoid.Health = 0 --닿은 플레이어의 체력
        wait(1) --1초 기다림
        Cooldown = false
    end
end)


5.4.2. Players 관련[편집]


  • Players 개체.PlayerAdded : 플레이어가 들어왔을때 호출되는 이벤트. 인트로나 로딩 화면에 이용된다. 인자엔 들어온 플레이어 개체가 들어온다.
    [ 스크립트 예시 펼치기 · 접기 ]
    • 플레이어가 게임을 들어왔을때 플레이어 ID를 출력하는 스크립트
    end)
    ">



5.4.3. ProximityPrompt 관련[편집]





5.4.4. Gui 관련[편집]




5.4.5. 모든 개체 공통[편집]




[ 스크립트 예시 펼치기 · 접기 ]
  • 스크립트의 Parent가 바뀌면 출력에 프린트하는 스크립트
script.AncestryChanged:Connect(function(Child, Parent)
    print(Child.Name .. "의 Parent는 이제" .. Parent.Name .. "입니다.")
end)



5.4.6. 기타[편집]




5.5. 메서드[편집]












이 외에도 여러 가지 서비스가 존재한다.
  • BasePart 개체 또는 모델:MoveTo() : BasePart 개체 또는 모델을 저 괄호 안에다가 적은 포지션으로 이동시켜주는 코드다. 하지만 이동시킬 위치에 이미 무언가 있다면 이미 있는 개체 위로 이동된다.
  • BasePart 개체 또는 모델:PivotTo() : BasePart 개체 또는 모델을 저 괄호 안에다가 적은 CFrame으로 이동시켜주는 코드다. MoveTo와 다르게 이동시킬 위치에 이미 무언가 있어도 그냥 이미 있는 개체를 무시하고 적은 CFrame으로 이동하는 코드다. CFrame으로 개체를 이동시킬때는 CFrame을 곱해서 그 개체의 피펏을 기준으로 움직이게 할 수 있다.


  • 6. 플러그인[편집]


    로블록스 스튜디오를 개발해주는 데 도움을 주는 각종 플러그인이 있다.
    Brick Cutter나 Animation Editor Classic등 편리한 제작 도구부터 바이러스를 막는데 특화된 Ro-Defender 등 각종 도구가 있다.
    이 역시 악성 유저들이 각종 Lua 백도어를 설치하는 악성 플러그인을 봇팅을 통해 상단으로 올려놓고 설치를 유도하는 경우도 있다. 플러그인을 설치할 때도 조심해야 한다.


    7. 개발 팁[편집]


    이하는 로블록스 스튜디오로 게임을 개발할 때 도움이 되는 정보들이다.










    [1] 정확히는 Luau[2] Lua 스크립트 강좌도 초보자들이 이해하기 쉽게 적혀져 있으니 배우고 싶거나 관심 있으면 검색창에 Script라 쳐서 둘러보자. 구글 자동 번역으로 번역하면 번역이 깔끔하게 된다. 영어가 서툴다면 자동 번역을 키자.[3] 로블록스에서 굉장히 성적이라 많은 사람들이 혐오하는 것들이다.[4] 파트, 웨지, 메시 등 로블록스의 모든 밟을수 있는 것들을 포함한 넓은 개념이다.[5] 주로 기초적인 스크립트나 모델이다.[6] 현존 게임의 스크립트, 메쉬 등을 크래킹으로 뽑아내어 유포한 것 등.[7] 특히 이건 처벌이 될 수 있기 때문에 진짜 하지마라. 남한테 피해주는 행동인 것도 문제이다.[8] 잘못하면 일부 게임을 이용하는데 제한이 생길수도 있다.[9] 유튜브, 디스코드, 페이스북, 트위터, 트위치등 로블록스 내에서 지원하는 링크가 아닌 다른사이트 링크는 바로 제제를 때린다.근데 지원하는 사이트 링크여도 제제를 때린다! [10] 고양이 사진도 영정먹는다 이상한 로블[해결] 이건 CollisionFidelity에서 Default를 PreciseConvexDecomposition로 바꿔주면 된다.[11] 영어로 되어 있는 페이지이므로 Chrome 사용자들의 경우 자동 번역을 사용하는 것을 추천한다.[12] ID가 인증된 계정은 30일에 100개를 업로드할 수 있다.[13] 로블록스에서 굉장히 성적이라 많은 사람들이 혐오하는 것들이다.[14] 대부분 검열을 피하기 위해 큰 상자에 넣어 올린다.[15] 이런 것들을 방지하기 위해 일부러 트롤 사진을 올려놓는 사람들도 있다.[16] 전혀 다른게 들어있는 낚시 아이템이나 사운드 파트가 지우면 재생되는 것을 악용하여 R63 모델을 지우면 귀갱을 하는 등 여러가지 방법[17] Ruben Sim을 소송한 이후로 굉장히 이례적인 일이다.[18] #[예시] 사각형에 원통으로 구멍을 꿇어지만 빈공간에 투명하게 파츠가 있어서 공중에 뜨거나, 공간이 있어도 실제로 들어갈수 있는 공간이 훨씬 적다. 게다가 일정한것도 아니다.[해결법] CollisionFidelity => PreciseConvexDecomposition 이렇게하면 사실상 없어진다. [만약] 하지만 studs 가 지나치게 커져있으면 안움직이기도 하니 확인 할 것[19] 개발이라 하기도 뭐하고, 구글에 검색하면 그런 코드는 널린데다 아예 다른 악성 모델에서 스크립트 자체를 뜯어오든 하는게 극히 대부분.[주의] A B virus같은 이름이 붙어있으면 지워버리기 때문에, 멀쩡한 모델같은것에 그런 이름을 붙여두면 같이 날아가버리는 참사가 발생한다.[20] Item Giver라고 흔히 알려져있다.[21] 단순히 프리 모델을 꺼내와서 손 쉽게 게임을 만들려고 하는 유저들을 도와주기 위해 복제품을 만드는 유저도 있지만, 대부분은 상위권을 노리려고 만들거나 바이러스를 심어놓는 경우가 많다.[22] 정 이것도 뭐한게 요즘엔 봇으로 표를 늘린다.되도록이면 밑과 위 항목을 실천하자.[23] 디스코드 등[24] 누구랑 친구를 추가했거나, 일정 명령어를 입력했거나, 그룹에 가입했거나 등[25] 주로 의자, 나무 등 의미 없는게 많다.[26] 게임 내의 플레이어 정보를 저장하는 곳. 인게임 돈이 대표적이다. 단 대부분의 게임이 서버에 정보를 저장하기 때문에 눈에 보이는 값만 바꾸는 것은 나갔다만 와도 소용이 없어진다.[27] [28] 6월 2일 기준 월요일까지만 해도 잘됐다.[29] 아니면 Lua 5.1 사이트를 들어가서 볼 수 있다.[30] 개인 컴퓨터[31] 그렇기에 game.Players.LocalPlayer를 통해서 해당 로컬 스크립트가 구동중인 플레이어 값을 구할 수 있다[32] 그러므로 대부분의 서버 측 처리가 불필요한 상황에서는 서버 렉 감소를 위해 로컬스크립트를 사용하는게 효율적이다.[33] 예로 gui, player, character 안에서 작동이 된다.[34] 하지만 특정 플레이어에게만 적용을 원할 경우 로컬 스크립트를 쓰는게 사실상 필수다[35] 물론 완전 정확한건 아니고 오차는 있다. 그리고 최소가 좀 높아 느리므로 서버의 속도에 맞춘 wait를 사용하고 싶으면 task.wait를 사용하자.[36] 괄호 안에 아무것도 안넣으면 기본값으로 1초를 기다린다[37] 사실 디버깅할때 말고는 별로 쓸모가 없다.[38] 하지만 이것만 사용하면 대부분 과부하가 되니 중간에 wait()을 넣어주자.[39] while true do를 사용시 스튜디오와 게임 과부화가 심하게 될 정도로 반복 하니 while wait() do 처럼 변환해서 사용하자.[40] 이것 역시도 제일 끝에 wait()를 넣어주자. 아니면 과부하가 걸린다.[41] 등호 하나는 앞의 값에 뒤의 값을 덮어쓰겠다는 뜻이다.[42] 타 언어의 null 과 같다.[43] 다차원 테이블(테이블 안에 있는 테이블)도 가능하며 key-value 형의 딕셔너리(for i, v in ipairs(테이블) do)도 가능하다.[주의할점] 루아 스크립트에서는 테이블의 번호를 1번 부터 샌다.[44] 스튜디오에서 만들수 있는 대부분의 것들이라고 봐도 무방하다.[45] 사실상 스크립트도 자료형이다. 이 자료형은 스크립트 개체를 가르킨다.[46] 로블록스에서 CFrame 과 함께 위치를 나타내는 단위이다.[47] gui 상에서 많이 사용된다.[48] 파트, 웨지, 메시 등 로블록스의 모든 밟을수 있는 것들을 포함한 넓은 개념이다.[49] 좌클릭만 해당[50] 사실상 삭제가 아닌 개체의 Parent를 nil 값으로 변경해서 못찾게하는거지만, 그냥 편하게 삭제 시킨다고 보면 된다[51] GetChildren의 상위호환이라고 보면 된다[52] 단, 메쉬의 트라이가 5,000 트라이 미만이여야 로블록스로 불러올 수 있다. 또한, 계정에 등록된 생년월일 기준으로 13세 미만일 시, 메쉬가 정상적으로 불러와지지 않을 수 있다.[53] 약칭 WB, 아르마 시리즈를 참고해 만들어진 시스템이며 R6 캐릭터를 사용할 때에만 작동한다. 대다수의 모델은 스크립트의 노후화로 각종 버그(예를 들어서 마우스 포인터가 없어진다거나)가 있으며 후술할 여러 모델들의 모태가 되었다.[54] 유명 SCP 게임들이 쓰는 건킷이지만 버그도 많고 불안정하다[55] Advanced Combat System 의 약자, 아르마 시리즈와 이스케이프 프롬 타르코브를 참고해 만들어진 시스템이다. 최신형인 1.8 및 2.0을 제외하면 R6 형태의 캐릭터를 사용할 때에만 작동한다. ACS 2.0.1는 R6이니 주의하자.[56] Vanguard Engine의 약자, Warbound의 공식 후계이다. 사실상 ACS의 하위호환이라 볼 수 있다.[57] ACS를 참고해 모 유저가 직접 R15 캐릭터가 호환되도록 만든 시스템. 오리지널 ACS에는 없는 여러 기능이 있다.[58] 현대전 총들도 있지만 많은 총들이 머스킷 등 옛날 총들이 있으며 주로 중세 시대 전쟁이나 조선시대 같은 전쟁 게임을 만들때 많이 사용된다.[59] ACS의 개선판으로 매우 많은 버그들이 수정되었고 총기에 따른 속도 감속이나 커스텀하기 쉬운 파티클 제작 등 기능들이 추가 된 버전이다.[60] 보통 이런 경우는 Discord 같은 곳에서 무단으로 거래가 이루어진다. Roblox에서는 Roblox 내의 거래 시스템을 제외한 모든 플레이어간의 거래를 금지하고 있다. 즉, 모델을 구매하는 것은 규정 위반이다.[61] 사실, GUI에만 없어진거지 스크립트로 불러올 순 있다.[62] 한글로 치면 만약 ㅇㅇ이 6 이면 ㅇㅇ을 해라. 아니라면 ㅇㅇ을 해라. 아니라면 ㅇㅇ을 해라. 아니라면 ㅇㅇ을 해라. 아니라면 ㅇㅇ을 해라.... [유튜브] 유튜브에 적용법이 나온다.[63] --을 사용해 주석을 치고 원하는 내용을 적고 Alt+\를 누르면 된다. 스크립트를 쓰다가 기다리면 자동으로 추천해주기도 한다. Tab으로 추천된 코드를 완성시킬 수 있다.

    관련 문서