[월간TECH프로젝트] 로블록스 "빨간마스크" 게임 제작기 3주차

2021. 11. 15. 20:01
728x90
반응형

=== Prologue ===

 

어느덧 3주 차에 접어든 월간 테크
회사 끝나고 평일 자투리 시간과 주말 시간을 활용해 공부 중이다. 

기록을 남긴다는것은 정말이지 생각보다 엄청난 선순환으로 작용한다.
스스로 한일이 정리되고, 다음에는 무엇을 할지 계획이 잡힌다는 점이다. 
시각적으로 내가 무엇을 했는지 봄으로써 동기부여도 된다. 

이번주는 본격 스크립트를  작성해 보기로 했다.

지난주 회고록[테크일지]에서 정리한 대로   
필자의 이번주 목표라인은 이러했다. 

 

==== Mission ====

 

✔ 빨간마스크 스토리 라인을 조금 더 구체화시켜 짜 보기로 한다.

✔ 플레이어의 움직임 스크립트를 직접 코딩해보기로 한다. 
-> 활용하고 싶은 움직임에 대한 캐릭터 스크립트 분석을 하고 나서 ,
그 스크립트를 가지고 내 캐릭터에 적용시켜 본다. 

✔ 다른 게임을 보며 자연스러운 게임 세계관을 익히기로 한다. 

 

=== description ===

 

과정을 간단하게 순서대로 정리하자면, 

① 월요일에 연차를 내어 스크립트를 구체적 분석했다. 
시간이 꽤 걸렸었는데, 연차 내길 잘한 것 같다. 절대 자투리 시간 가지고는 힘들었을 일 
( + 다른 로블록스 대표적 게임들을 살짝 플레이 해보았다.) 

② 스토리라인 구체화 

 

③ 캐릭터 Appearance 적용시키기 

④ 이후, 캐릭터에 움직임을 적용시켜 본다. 

캐릭터에 적용시키는 과정이 은근 힘들었다. 
이론으로 아는것과 직접 하는 것의 갭이 있으니 버벅대었고, 

라이브러리의 소스대로 캐릭터에 적용시키려다 보니, 오류 나거나, 찾는 변수/함수가 없거나 하는 것들이 한두 가지가 아니었다. 

루아 문법만의 내장함수의 쓰임도 정확히 파악이 안 됐을뿐더러, 
무엇보다 Animation에 관한 이해가 부족했다. 

 

 

 

반응형

 

==== detail progress ====

 

①  스크립트를 구체적 분석

🚩 스크립트 분석기는 꽤 내용이 길어 따로 테크일지로 빼두었다. 

 

https://bokartstudio.tistory.com/72?category=1030363

 

[월간TECH프로젝트] 로블록스 "몬스터 Bloody Ghost Girl" 스크립트 분석기

=== Prologue === 스크립트에 대한 이론(문서)을 읽었으니 로블록스 플레이어 or 몬스터를 작동시키려면 스크립트를 알아야 한다. 해서 하나하나 분석해보려고 한다. 구조를 알아야 나도 플레이어를

bokartstudio.tistory.com

 

② 스토리라인 구체화 + 로직 

게임을 해보면서 조금 더 구체적으로 스토리라인을 생각해 보게 되었고, 
라이브러리 분석을 하다보니, 어떤 식으로 로직을 짜야하는지까지 감이 잡혔다.

 

** 빨간마스크
⁃ 빨간 마스크 닿으면 휴머노이드 0
⁃ 빨간마스크 주변으로 가도 HR 감소
⁃ 돌아다니다가 플레이어가 반경에 들어오면 소리 on, 속도 on (if 플레이어가 엎드리거나 2층으로 올라가면 off)

** 플레이어
⁃ 돌아다님
⁃ 몰래 뭔가를 획득해라 (무엇을?? - 집 열쇠 키)
⁃ 집 열쇠 키를 획득해서 2층의 잠겨 있는 문 열수(통과) 할 수 있음
⁃ 최종적으로는 어디를 도착?? (심부름 나온 콘셉트?) (공부 끝나고 집으로 돌아가는 컨셉?)

 

③ 캐릭터 Appearance 적용시키기 

 

 

기본적 women rig를 불러오고, 하나하나 뜯어보면 관절이(rig) 다 나뉘어 있는데 

그 관절마다 색깔을 지정할 수 있다. 

 

그리고, 옷도 내가 원하는 이미지 파일을 불러와서 입힐 수 있다.

 로블록스 devloper 사이트에서 찾아보니, 가이드가 나와있었다. 

블록이 네모나니까, 저렇게 나뉘어서 옷을 입힐 수 있는 듯했다. 

 

그리고 아래는 사이즈에 대한 가이드이다. 

Large, Tall, Medium 이렇게 존재했다. 생각보다 간단했다. 

 

필자의 얄팍한 포토샵으로 빨간 마스크 얼굴과 옷을 만들었다.

옷 전체는 사실상 3D 툴로 만들어야 돼서, + 머리도 우선 생략했다. 

3D는 따로 blender라는 툴이 필요했다. --> 이후에 한번 시도해 볼 생각이다. 

 

 

외부에서 파일을 가져올 때에는, 

개체 생성이 필요한데 원하는 부분( 얼굴이라던지, 옷이라던지) 속성 파트에 들어가서 TextureID를 생성해 줘야 한다. 

이미지 추가를 눌러 파일을 삽입하면, ID는 자동으로 생성되고, 적용도 쉽게 가능하다. 

 

 


 캐릭터 움직임 적용

처음에는 라이브러리 스크립트 참고로 직접 스크립트를 짜려고 하다가, 
결국 라이브러리의 스크립트를 먼저 캐릭터에 적용시켜 보기로 했다. 
처음에는 아예 스크립트 자체가 먹지를 않다가 하나하나 디버그 해가면서 오류 나는 부분들을 수정해주었다. 

하지만, 결국 애니메이션 부분은 적용시키지 못했는데, 
그 부분에서 내가 얻은 인사이트를 공유하고자 한다.

 

이번 주는.. 새로 알게 된 사실들도, 공유하고자 하는 내용도 많다!! 

잘 전달될지는 모르겠지만 점점 나아지려고 하니 지켜봐 주시길 바란다.  

 

 

🧨 긴 글이 예상되오니 숨 한번 크게 쉬고 따라와 주십시오! 

1. 로블록스 스튜디오 디버그 하는 법

 

스크립트 코드를 써놓고, play 하게 되면 오류가 걸리는 부분도 있을 거고, 어떤 이벤트가 작동하고 있는지 등등 을 알고 싶을 것이다.

 

console.log 또는 print( )의 역할을 보고 싶다면, 

[보기] -> [출력] 창을 켜자. 

[보기] -> [스크립트 분석] 창도 현재 스크립트에 대한 오류나, 모든 스크립트에 대한 오류 등을 찾아 내줄 것이다. 

[보기] -> [중단점]을 누르고 한줄한줄 옆에 표시하면, 그 부분을 실행하면서 한 줄씩 끊어서 보여주게 된다. 

 

 

 

2. 애니메이션은 RIG의 part수가 (Rig 6, Rig15) 일치해야 작동한다.

 

맨 리그를 만들어 놓고, 애니메이션 스크립트 코드를 복사해 왔을 때, 리그의 개수가 맞는 캐릭터인지 파악하자. 

파트수가 틀리면 애니메이션 움직임이 작동하지 않는다. 

 

3. Humanoid와 Zombie는 따로 구별시켜줘야 한다. (서로 공격하거나 따라가는 것을 방지) 

 

캐릭터를 만들 때에는 사람 표시가 표시되어서 개체와 구별되는데 Humanoid가 기본값이다. 

하지만 레드 마스크나 좀비처럼 몬스터 등을 만들고 싶을 때에는 humanoid 대신 다른 이름값을 넣어주자.

따라가는 이벤트라던지, 공격하는 이벤트를 넣을 때 humanoid 개체를 가지고 있는 player들을 공격하기 위해선 구분이 필요하다! 

 

 

4. animation은 local 스크립트가 아니라 서버 스크립트에 적용시켜 줘야 한다. 

 

애니메이션 패키지를 원래 내 캐릭터에서 가져오게 되었는데, 

애니메이션은 로컬 스크립트가 아닌, 서버 스크립트로 넣어줘야 하므로 소스 위치를 따로 변경해주었다. 

 


그리고 결국 애니메이션 부분에서 막힌 나는 다시 돌아가.. 
내장 함수들과 그 쓰임을 정확히 이해하기 위해서 
로블록스 스크립트 강의 기초/중급 강좌를 듣고 만다. [유튜브 - reference에 게시해놓았습니다.]

그리고 알아주면 좋은 내장 함수들을 정리해보자면, 이렇다. 

 

📍  자식클래스 찾는법

→ FindFirstChild

→ FindFirstChild(_, true) - 반복적으로 찾아줌

→ FindFirstAncestor ()

→ FindFirstChildOfClass() - 클래스를 찾아줌

→ FindFirstChildWhichIsA - 클래스를 찾아주는데..

 

📍  대미지 시키는 법

→ health part -= 데미지 마이너스 시킴

→ TakeDamage() → 포스 필드가 있을 경우 대미지를 안주고, 없을경우에 데미지를 줌

 

📍 이벤트 짧게 주기 & 쿨타임

→ 바로 함수를 connect 안에 연결시킬 수 있음

part.Touched:Connect(function()

end)

→ 쿨타임 넣으려면 변수 하나 설정해서 true/false로 구분시키자

 

📍 Clone() - 스크립트까지 복사

 

📍 MoveTo() - workspace 한해서 작동

 

→ PrimaryPart 기준으로 위치 이동

 

📍 ChildAdded

→ 개체 안에 개체가 추가되었을 때 이벤트

 

📍 DescendantAdded

→ 위와 같은데 2,3단계 더 아래로 추가되었을 때도 감지함

 

📍 Changed

→ 개체의 속성 중 하나가 바뀌었을 때 이벤트

 

📍 GetPropertyChangedsignal("속성 이름")

→ 특정 속성이 바뀌었을 때만 호출함 , : 콜론으로 연결한다.

 

📍 PlayerAdded

→ 서버에 새 플레이어가 접속했을 때 이벤트

→ players 개체에서만 쓸 수 있음

 

📍 CharacterAdded

→ 캐릭터가 "스폰"되었을 때의 이벤트

 

📍 로컬 스크립트가 작동하는 곳

→ ReplicatedFirst

→ StarterGui → playerGui

→ StarterPack → Backpack

→ StarterPlayerScripts → PlayerScripts

→ StarterCharacterScripts

 

📍 바인 더블 이벤트

→ Fire() : 함수 호출 식으로 신호를 보내고

→ Event() : 이벤트 형식으로 신호를 받는다.

 

📍 CFrame : 위치 + 회전도

→ Position 이랑의 차이는 회전도가 추가된다는 것! 

 

 

==== Result ====

 

🌵 개발자야잴씨와 함께 이번 한 주는 캐릭터 모델이 움직이는데 집중했다. 

🌵 다양한 로블록스의 내장 함수를 알게 되었다. 

🌵 쉽지 않았다.... 따흐흑

🌵 하지만 그만큼 얻은 것도 많아 값진 일주일이었다.  

🌵 일정이 딜레이 된 것을 오늘에서야 깨달았지만, 4주 차에도 전력을 다 할 예정이다.

 

==== Reference====

 

📌 유튜브 [노페어] 님의  기초 / 중급 강좌를 들었습니다. 

https://www.youtube.com/c/%EB%85%B8%ED%8E%98%EC%96%B4

 

노페어

로블록스 스튜디오 강좌들을 꾸역꾸역 올리고 있습니다. 모든 사람이 자기만의 게임을 만들수 있도록...! 제 영상들 중 스크립트 관련 강좌 영상들은 스크립트 기초를 알고 계신다는 전제하에

www.youtube.com

 

 

==== See More ====

 

 

🧐 로블록스 "빨간 마스크" 게임 제작기에 대한 개발자야잴씨의 테크 일지가 궁금하다면? 

 

https://jaylee222.github.io/tech/

 

테크노트 | 중얼대는 테크블로그

중얼대는 테크블로그

jaylee222.github.io

 

 

🧐 로블록스 "빨간 마스크" 게임 제작기가 궁금하다면? 

 

https://bokartstudio.tistory.com/70?category=1030363 

 

[월간TECH프로젝트] 로블록스 "빨간마스크" 게임 제작기 2주차

=== Prologue === 작심 3일이라는 말이 있지만 2주 차를 넘어선 월간 TECH 스스로 칭찬하고 뿌듯하다. 사이드 프로젝트라 시간이 날까 했었는데 또 하고자 하는 마음이 있으면 시간이 나게 된다. 지난

bokartstudio.tistory.com

 

https://bokartstudio.tistory.com/68

 

[월간TECH프로젝트] 로블록스 "빨간마스크" 게임 제작기 1주차

=== Prologue === 첫 번째 월간 프로젝트는 "로블록스" 게임 제작으로 정했다. 최근 HOT 한 이슈인 메타버스의 대표주자이기도 했고, 앞으로 무궁무진한 발전 가능성을 보여주는 로블록스에 흥미가 갔

bokartstudio.tistory.com

 



728x90
반응형