미스테리 퍼즐게임의 세번째 작품 The Room Three 입니다. 이전에 이미 The Room 과 The Room Two의 한글패치를 배포한 적이 있었는데 이번에 딱히 할 일이 없어서 The Room Three의 한글패치를 만들었습니다.

 

다운로드는 여기

https://drive.google.com/file/d/1QVN3JnR3_PWWjrLZAaTh6sC8cDQsRZBL/view?usp=sharing

 

TheRoomThree_Korean_0.2.7z

 

drive.google.com

설치 방법은 다음과 같습니다.

우선 스팀라이브러리에서 The Room Three에 오른쪽버튼을 눌러 속성에 들어갑니다.

그리고 로컬파일 탭에서 로컬콘텐츠 폴더 보기를 누릅니다.

그 다음 압축파일 내용물을 TheRoomThree_Data폴더에 덮어씌워주시면 됩니다.

언어는 그냥 영어 english로 하시면 됩니다.

 

모바일판의 번역을 이용했습니다.

,

digispark는 소형 아두이노가 있습니다. 아두이노를 사용하고 아두이노와 호환되지만 사실 아두이노와는 구조가 다르죠.

 

하지만 크기가 워낙 작아서 쓸모가 많고 전력소비가 적은 ATTY85를 사용해서 전력이 부족한 배터리 환경에서도 사용이 가능하다는 잇점이 있습니다.

 

문제는.. AdaFruit사의 정품은 가격이 좀 쎈편입니다. 2만원 남짓..?

 

대신 중국에서 이를 복제한(복제해도 아두이노 라이센스상 문제는 없습니다.)제품이 배송비 포함 1달러 조금 넘게 팔리고 있습니다. 문제는 이거... 호환성이 극악합니다.

 

알고봤더니 Digispark가 사용하는 부트로더의 버전이 낮은 것이 원인이었습니다.

 

1.6버전을 사용한다고 떠있는데 그마저도 중국에서 수정을 좀 한 것으로 보입니다.

 

Digispark의 부트로더는 Micronucleus라는 것으로 1.x버전으로 1.11까지 나왔고 2.x는 지금도 활발히 개발중입니다. 제가 사용한 보드는 1.6버전의 부트로더를 쓰고 있으므로 2.x를 쓰면 벽돌이 될 확률이 높습니다. 그러므로 1.11버전을 사용하는 것이 좋습니다.

 

Digispark의 버전을 확인 하는 방법은 아두이노IDE에서 Digispark관련 패키지를 설치한 후에 그곳에 있는 툴을 이용해서 확인 하면 됩니다.

 

우선 아두이노IDE를 설치하고(IDE의 설치 방법은 생략합니다. 워낙 쉽기때문에...) 파일-환경설정으로 들어갑니다.

 

그리고 추가적인 보드매니저URL에 다음과 같이 적습니다.

 

http://digistump.com/package_digistump_index.json

 

그 다음 확인을 누른 후

 

툴-보드-보드매니저

여기서 Digistump AVR Boards를 설치합니다

난 이미 설치가 되어 있어서 INSTALLED라고 떠있는 것 뿐이다

그러면 리눅스라면 ~/.arduino15/packages/digistump/tools/micronucleus/ 여기서 폴더 하나만 더 들어가면 micronucleus라는 프로그램이 있고 해당 프로그램을 터미널로 실행 하는 것만으로도 확인이 가능합니다

 

그런데 제가 구입한 보드는 어찌된 영문인지 리눅스용 프로그램에서는 인식이 되지 않고 윈도우에서만 인식이 되었습니다. 그래서 어쩔 수 없이 윈도우 가상머신을 설치 후에 https://github.com/digistump/DigistumpArduino/releases/download/1.6.7/Digistump.Drivers.zip 

위 드라이버를 설치해서 윈도우에서 잡아주는 방법만이 가능했습니다. 대체 중국에서 무슨 짓을 했는지 궁금하군요.

 

어쨌건 드라이버를 설치하고 가상머신에서 USB연결을 이용해서 윈도우에 인식시키니 드디어 장치가 인식 됩니다.

대신 윈도우에서 부트로더를 업그레이드하면 이후에는 리눅스에서도 아무 문제없이 사용이 가능해집니다. 이 참에 윈도우 가상머신을 하나 구비해두시는 것을 추천합니다. 저는 네트워크를 끊어놓은 XP 가상머신 시스템을 하나 구비했습니다.

 

어쨌건 윈도우에서 드라이버가 설치되었다면 보드 인식이 되었을 겁니다. 그리고 드라이버 설치 폴더를 뒤져보면 Micronucleus.exe라는 프로그램이 있을 겁니다. 이것을 이용해서 부트로더를 업그레이드 하게 됩니다. 단, 명령어를 쓰기 때문에 기본 cd명령어 정도는 알고 계셔야 합니다.

 

1. 우선 Digispark장치를 뽑습니다.

 

2. 윈도우에서 CMD.exe를 열고 드라이버 설치 폴더로 들어갑니다. (cd 어쩌고)

 

3. 그리고 https://github.com/micronucleus/micronucleus/blob/v1.11/upgrade/releases/micronucleus-1.11-upgrade.hex 여기서 RAW버튼을 눌러서 hex파일을 다운로드 받아서 Microclues.exe파일이 있는 곳에 복사합니다.

 

Micronucleus.exe --run "micronuclues-1.11-upgrade.hex"

 

이렇게 명령어를 치면 장치를 연결해달라는 말이 뜹니다. 이 5초 안에 장치를 연결하고 USB장치를 잡아야 합니다. 하지만 5초란 시간은 생각보다 넉넉합니다.

 

그러면...

부트로더 업그레이드가 완료 됩니다.

 

이제 리눅스에서 시도해보면 문제없이 구동되는 것을 알 수 있습니다!

,

그동안 쓰던 넥서스7(2012)이 "또" 안 켜졌습니다.

사실 이전에 한번 배터리가 부풀어서(...) 교체를 받았는데 교체 받은지 6개월도 안 되서 또 안 켜지네요. 아무래도 오래된 거라 어쩔 수 없는듯 합니다.

 

그래서 일단 넥서스7의 뒷통수를 뜯은 다음 한번 전압을 재봤습니다.

 

참고로 넥서스7의 뒷통수를 뜯는 것은 그냥 대충 틈새에 신용카드같은것을 넣고 쭈욱 돌리면 따다다닥 하면서 뜯깁니다. 정말 고치기 쉽죠.

 

넥서스7 배터리의 빨간 선과 검은선을 전압계로 재니까... 0.7V??? 이건 그냥 안 나온다고 봐야지요.

쉽게 말해서 배터리 고장입니다. 리튬 배터리는 2V 이하로 떨어지면 다시는 충전이 되지 않습니다. 그냥 버려야 합니다.

 

그렇다고 잘 쓰던 넥서스7을 버리긴 아깝고 해서... 그냥 배터리 없이 그냥 작동 시켜보기로 했습니다.

 

https://forum.xda-developers.com/showthread.php?t=2311799

 

Nexus 7 Running without Battery

Can someone verify that the Nexus 7 can operates perfectly fine with the battery removed and only powered by the USB cable? I've read some threads eluding…

forum.xda-developers.com

여기를 보니까 그냥 대충 4.2V 이하로 만들어서 직접 전원을 넣으면 동작한다고 하더군요. 그래서 전압강하 모듈을 하나 사서 5V어댑터에 연결했습니다.

 

https://www.devicemart.co.kr/goods/view?no=1321132

 

MP1584EN 강하형 DC-DC 소형 가변 컨버터 [SZH-PWSD-002]

최대 3A 출력의 미니 사이즈(4mm * 17mm * 22mm) 강하형 전압 변환 모듈 / 4.5V ~ 28V의 전압을 입력하여 0.8V ~ 20V의 전압으로 출력 가능 / Step-Down / 벅(BUCK)

www.devicemart.co.kr

그리고 잘 적당히 절연처리를 잘 해주고 켜보니까...

 

 

배터리가 0%로 뜨기는 하지만 잘 켜지네요! 대신 시간은 초기화 되지만 어떻게든 돌아가 줍니다... 그런데 뭐만 하면 툭툭 꺼져버리는군요. 그래서 뭐가 문제인지 봤더니...

 

전압강하 모듈이 엄청 뜨겁습니다. 얘기를 들어보니 MP1584EN은 온도가 85도가 넘어가면 전류를 알아서 차단한다고 합니다. 그리고 전원을 완전히 차단하지 않는 이상 다시 전류가 통하지 않는다고 합니다.

 

자세히보니까... 어댑터는 5A이고 전압강하모듈은 최대 3A가 최대입니다. 아무리 그래도 3A 이상 흐르지 않는 이상 과열 될일은 없을 테지만 아무래도 넥서스7이 전기를 많이 먹어서 3A 이상을 먹나 봅니다. (오버클럭도 좀 했습니다. 기본 클럭은 답답해서...) 그래서 전압 강하 모듈을 새로 구매해서 5A 이상 지원 되는 걸 구매했습니다. 이거면...좀 낫겠죠? 아니면 방열판도 새로 사서 달아주면... 넥서스7보다 전원부가 더 커지는 불상사가...

 

추가...

 

여기가 뒷판의 와이파이안테나랑 연결되는 부분인데 박살이 났더군요. 어쩐지 통신 속도가 극악하더라니.... 그래서 이부분에도 안테나를 새로 사서(?) 달아줄까 고민중입니다. 이쯤되니 휴대용이 아니라 괴물이 되어 가는 듯한데...

 

이야기를 들어보니 4.2V로 낮추지 않고 그냥 5V로 넣어도 잘 돌아간다고 합니다. 아니 그냥 5V를 넣어야 안정적이라고 하네요. 대신 GPU풀로드 걸리면 발열량이 무시무시하므로 그건 신경쓰라고 합니다.

 

그래서...

 

그래서 그냥 5V를 쑤셔넣었는데 유튜브도 잘 나오고 3시간째 아무 문제 없이 굴러가고 있습니다

 

그래서...

아래에 플라스틱을 살짝 뜯어 낸다음 선을 뽑았습니다

 

그리고 5V를 어댑터로 직접 연결했더니 아주 잘 켜집니다.

 

그래서 그냥 이제는 화면을 끄지 않고 그냥 돌릴라고 합니다. 아무 문제 없을 것 같습니다.

,

구글의 Compute Engine은 AWS나 Azure와 같은 VPC 서비스입니다. 클라우드의 일부를 빌려주고 이를 이용한만큼 비용을 청구하는 방식입니다.


다만, 구글을 AWS와 달리 평가기간을 길게 주고 어떤 인스턴스를 쓰더라도 쓸 수 있는(대신 강력할 수록 그만큼 크레딧을 많이 쓰지만) 300$의 크레딧을 줍니다. 이것을 이용하면 CPU를 더럽게 많이 쓰는 Blender 렌더링을 무료로 원격렌더링 할 수 있습니다. (대신 SSH나 명령줄이 익숙하지 않으면 렌더링하기 힘들겁니다.)


사실 미리 비슷한 서비스 같은 것을 만들어두면 참 편리한데 사람이란게 참 귀찮아서 말이지요.


원격 렌더링에는 https://blendergrid.com/ 이러한 서비스가 이미 있지만 우린 직접 구축해서 해보는 것을 목표로 해보겠습니다. 이번에 하는 것을 잘 이용하면 Blendergrid 같은 서비스도 만들 수 있을 겁니다. 어차피 Blender도 요즘 웬만한 CGI같이 Python으로 굴러가니까요.


우선 구글 Compute Engine이 뭔지 알아야겠지요.https://cloud.google.com/compute/?hl=ko


이곳으로 접속해봅시다.

구글에 로그인이 되어있는 상태라면 무료로 사용해보기를 누를 수 있습니다. 여기서 사용을 활성화 하세요. 


그리고 결제니 뭐니 그런건 일단 신경 끄고(일단 지금 결제를 할 것은 아니니까 어디까지나 우린 평가중입니다.)

compute Engine의 설정으로 들어갑니다.


그리고 어느 서버에서 사용할 것인지 설정을 해두는 것입니다.




여기서 Region과 영역을 설정합니다. 저 같은 경우에는 asia-northeast1과 asia-northeast1-a 를 선택했습니다. 여기가 도쿄 서버라서 속도가 홍콩이나 다른 곳보다  낫습니다. 아쉽게도 서울은 없습니다.


그리고 VM인스턴스로 들어가서 인스턴스를 하나 생성합니다.


Blender는 닥치고 CPU코어가 많은 것이 짱이기 때문에 vCPU8개를 쑤셔 넣었습니다. 맞춤 설정에서 물론 GPU도 넣으면 상당히 좋지만 GPU까지 끌고 오면 평가판 크레딧이 남아나지를 않습니다. 하나만 넣었는데 배로 나가더군요. 만약 시간이 부족하신 분이라면 맞춤 설정에서 GPU를 넣거나 그냥 계정 활성화를 한번 더 넣어서 코어96개를 박아버리는 것도 방법입니다. 사실 코어96개가 성능이 더 나을거에요. CUDA설정은 조금 귀찮거든요.


그리고 저는 OS를 속편한 Ubuntu 18.04로 했습니다. 참고로 작업한 Blender버전과 렌더링할 Blender버전을 맞추는 것이 좋은데 일단 Blender버전만 같으면 어떤 OS에서 작업해도 상관은 없지만 아무래도 저는 Blender를 따로 wget으로 설치한다던지 하는게 너무 귀찮아서(저는 우분투18.04제공 Blender를 씁니다. 그냥 똑같이 맞춘겁니다.) 2019년 현재 안정버전은 2.79버전이고 제일 많이 쓰이는 것도 이 버전일테니 2.79버전을 저장소에서 제공하는 Ubuntu18.04를 선택한 겁니다. 다른 이유는 없습니다.


이제 서버 접속을 위한 Google Cloud SDK를 설치합니다. 자세한 것은 아래의 주소를 참고하세요. Windows 유저분은 그냥 설치 프로그램을 써서 설치하시면 됩니다.


https://cloud.google.com/sdk/docs/?hl=ko


여기서 Cloud SDK설치가 가능한데 우리의 데비안/우분투는 apt로 설치가 가능합니다.


우선 버전을 맞추기 위해 터미널에서 다음과 같이 명령을 내립니다.


export CLOUD_SDK_REPO="cloud-sdk-$(lsb_release -c -s)"


리눅스 민트의 경우에는

$(lsb_release -c -s) 을 우분투에 맞춰서 바꿔주셔야 합니다.

19.x의 경우에는 bionic이라고 적어주세요. (우분투 18.04기반이므로 우분투 18.04의 것으로 적어두는 겁니다.)


export CLOUD_SDK_REPO="cloud-sdk-bionic"


그리고 저장소를 추가합니다.


echo "deb http://packages.cloud.google.com/apt $CLOUD_SDK_REPO main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list


그다음에 다음 명령으로 저장소 키를 추가합니다.

만약 curl이 없다면 curl을 미리 설치합니다. (그런데 보통은 미리 설치되어 있습니다.)

sudo apt install curl


curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -


이제 익숙한 명령어를 쓰면 됩니다.


sudo apt update

sudo apt install google-cloud-sdk


이제 gcloud 명령을 이용할 수 있습니다.

다음 명령으로 gcloud를 초기화 해봅시다.


gcloud init


이것저것 물어보고 구글 로그인도 하고 그럴텐데 그냥 열심히 진행합시다.

이것으로 인스턴스에 접속하면서 파일 전송을 SCP로 가능하게 됩니다.


다시 VM인스턴스로 돌아와서


인스턴스가 만들어졌다면 SSH라는 것이 있을텐데 이걸 쓰면 바로 브라우저에서 리눅스 서버에 접속이 가능합니다. gcloud의 기능을 쓸 수 없습니다. 간단한 것은 상관 없지만 파일전송이라던가 다른 귀찮은 것은 불가능합니다. 아니면 Private키를 받아와서 SSH클라이언트로 접속하는 것도 있는데 AWS 써보신 분은 아시겠지만 귀찮습니다.


그냥 gcloud로 하면 귀찮은거 없고 짱이에요.


gcloud명령보기를 누르면 gcloud로 터미널이나 CMD에서 긁어다가 쓸 수 있는 명령이 짠하고 나옵니다. 이것을 복사해다가 넣으면 인스턴스에 접속이 됩니다!!!


이제 서버에서 필요한 것을 설치하면 됩니다. 우린 Blender를 설치하려고 했으니 Blender를 설치하기로 합시다.


(서버에 접속한 상태에서)

sudo apt update

sudo apt install blender


먄약 Blender의 다른 버전을 원하시는 분들은 PPA를 등록하던지 직접 Blender홈페이지에서 wget으로 설치하던지 하는 방법으로 Blender를 설치하세요!


2019년 현재 우분투 18.04는 Blender 2.79버전을 제공하고 있습니다.


이제 렌더링을 할 Blend 파일을 서버로 전송하고 서버에서 렌더링을 돌려봅시다.

우선 작업한 Blender에서 설정을 조금 해야 합니다.


우선 Blend파일을 서버로 넣기 전에 필요한 설정을 미리 해둡시다. 렌더링결과를 어떻게 얻을 것 인지를 미리 설정하는 것입니다.


Blender 2.7x 기준 기본UI 상태에서 카메라탭을 누르면 렌더링 설정을 미리 할 수 있습니다.


일단 Output은 ./ 로 해두는 것이 정신 건강에 좋습니다. 자신 있으면 절대경로로 해두는 것도 좋습니다. 그런데 권한 문제로 복잡할 겁니다. 그냥 조용히 ./로 합시다.


그리고 결과물은 어떤 형태인지 몇 프레임에서 몇 프레임으로 할 것인지 후처리는 얼마나 할 것인지 등등을 미리 다 설정합니다. Blender의 좋은 점은 모든 것을 Blend파일안에 다 넣어 준다는 것입니다. 이러한 설정까지 말이지요.


그리고 텍스처와 기타 데이터를 모두 포함하기 위해서 한 가지 더 넣습니다.


File-External Data-Pack All Into .blend 를 눌러서 모든 데이터를 전부 Blend파일 안에 넣습니다.

이제 file-Save를 눌러서 해당 Blend파일을 저장합니다. 데이터에 따라 용량이 어마어마할 겁니다.


그리고 이것을 서버로 전송합니다.


아마도 여러분들이 만든 인스턴스는 instance-1 instance-2 이런 식으로 만들어져 있을 것입니다.

VM인스턴스 페이지에서 확인해보세요.


instance 이름을 확인하자

이 이름을 알아야 하는 이유가 이제 blend파일을 서버로 올려야 하기 때문입니다.


파일을 서버로 올리는 방법은 여러가지가 있지만 저는 gcloud명령을 통해서 scp로 보내는 방법을 쓸 겁니다.


다른 방법은 https://cloud.google.com/compute/docs/instances/transfer-files?hl=ko

이 페이지를 참조하세요.


여기서 이런식으로 파일을 인스턴스 서버의 홈폴더로 전송이 가능합니다. 홈폴더에 넣으면 SSH접속후에 바로 써먹을 수 있어서 편리하지요.

[INSTANCE_NAME]은 위에서 확인한 instance-1 같은 이름을 의미합니다.


gcloud compute scp [LOCAL_FILE_PATH] [INSTANCE_NAME]:~/


예를들어 ~/Dance.blend 파일을 instance-1 인스턴스 서버의 ~/에 올리고 싶다면


gcloud compute scp ~/Dance.blend instance-1:~/


이렇게 하면 전송이 됩니다. 이제 SSH 접속후에 ls명령으로 파일이 들어왔나 확인해봅시다.


gcloud명령으로 접속하면 쉽지요.


그리고 이제 SSH에서 Blender를 명령어로 렌더링 해봅시다.

https://docs.blender.org/manual/en/latest/render/workflows/command_line.html


여길 참고하면 됩니다.

명령어는 현재 blend파일이 있다는 가정하에


애니메이션의 경우

blender -b *.blend -a


특정 프레임의 경우

blender -b *.blend -f XX


이런식으로 하면 해당 폴더에 렌더링 결과물이 나오게 됩니다. 우린 CPU8개 짜리 인스턴스에서 돌리고 있지만 만약 CPU 96개의 인스턴스라면 엄청난 속도로 렌더링을 하고 있겠지요? 거기에 GPU까지 붙이면? 절대로 싼 비용으로는 못할 엄청난 렌더링 속도를 볼 수 있을 것입니다.


그리고 결과물은 다시 gcloud명령으로 받아올 수 있습니다.


gcloud compute scp instance-1:~/결과물 내컴퓨터경로


혹은 폴더로 받아오고 싶으시면


gcloud compute scp --recurse instance-1:~/결과물폴더 내컴퓨터경로


이렇게 하면 원격으로 구글 컴퓨트 엔진을 통해서 렌더링을 할 수 있게 됩니다.


뭔가 복잡한거 같은데 이것을 쉽게 만든다면 SaaS로서 충분히 훌륭한 서비스가 될 것이라고 생각합니다. 특히 Cycle렌더링할 때 CPU를 어마어마하게 사용하는데 원격에 렌더링 시켜놓고 우린 다른 작업을 할 수 있게 되는 것이지요.

,

이전에 더 룸PC판에 대한 한글패치를 공개한 적이 있었습니다.

더 룸 : https://moordev.tistory.com/286




이것의 후속작인 더 룸투의 한글패치가 만들어졌습니다.

기존 더 룸의 방식과 한글폰트 방식이 달라져서 고생을 했는데 슬라임랜처의 한글패치를 만드신분의 도움을 얻어 한글폰트 이식에 성공했습니다. NGUI의 비트맵방식을 사용했는데 https://github.com/dmc31a42/UnityL10nTool 이 도구를 만들어서 배포해 주셨습니다.


그래서 더 룸 투도 같은 방법으로 모바일판의 한글을 컨버팅해서 적용했습니다. 다만 한글 폰트가 조금 안 어울리는 듯하지만 뭐 보이는것이 다행이지요.


패치 방법은 다음과 같습니다.

https://drive.google.com/open?id=1DFRNXwJh5uyTjB9eUO5OsfVVdcr0lzEn



2018 11 30현재 타자기파트에서 오류가 발생한다고 합니다.

오류발생시 기존 파일로 되돌린 뒤에 해당파트를 임시로 진행후 다시 넘기시기 바랍니다.


현재 오류원인 확인중입니다.


타자기 파트 오류 해결되었습니다.





위 파일을 다운로드 받습니다.

그리고 스팀에서 오른쪽 버튼 속성을 누릅니다.


그리고 로컬파일 탭에서 로컬 컨텐츠 보기


TheRoomTwo_Data 폴더로 들어갑니다.



그리고 압축 파일 내용을 여기에 풀어버립니다.


그러면...?


그냥 영어를 덮었으니 영어로 맞춰놓을 것 괜히 한국어로 잘 뜨는데 Korean찾는 바보는 하지 말자


,

https://store.steampowered.com/app/704850/Thief_Simulator/


2018. 12. 1. 공식한글화가 되었습니다.


이제 따로 한글패치를 하지 않으셔도 됩니다!


하지만 공식번역이 부자연스러우므로 더 자연스러운 한글패치를 원하다면 이쪽으로!!

https://www.team-freestyle.com/single-post/2018/12/07/도둑-시뮬레이터-한국어-패치


Options-Settings-Langauge Support에서 kr을 선택하세요!


비공식번역은 ko입니다!







이건 초기 번역기 돌린 버전



일명 도둑시뮬레이터입니다.


Car Mechanic Slmulator 같은 시뮬레이터 게임(?)을 만드는 회사입니다. 이번에는 그 중에서도 특이하게 도둑이 되는 게임을 만들었습니다. 사실 저도 누군가의 추천을 보고 했습니다.


일부 사람들은 중학생 수준의 영어만 할 줄 알면 전혀 문제없다라고 하는데 그래도 이왕이면 한글이 좋잖아요?


그래서 만들었습니다.


일단 초벌번역은 구글 번역기를 동원했고 이후에 손번역(?)을 조금 더 해서 일단 말은 되게끔 만들어 두었습니다. 아직 검수 중이니 중간중간 오역과 이상한 부분이 많이 있을겁니다.


한글패치는 아래의 것을 다운로드 받으세요.(2018. 11. 29)


https://drive.google.com/open?id=1iLUP37iLRlx60Lbb9q_HB8WEv5cia5JU




일단 스팀에서 Thief Simulator에 오른쪽 버튼을 눌러서 속성으로 들어갑니다.


그다음 로컬파일 탭에서 로컬컨텐츠 보기 버튼을 누릅니다.


그 다음 thief_Data 폴더로 들어갑니다.


그리고 압축 파일의 내용을 여기에 덮어버리면 됩니다.


그리고 게임내에서 바로 한글이 뜨는 것이 아니라 옵션을 바꿔줘야 합니다. 우선 프로필을 만든 다음 메뉴로 진입합니다.


그리고 Options-Settings-Language에서 ko를 선택합니다.


이제 한글이 뜹니다!!!


게임내 폰트는 Spoqa Hans Sans (NotoSans CJK KR 기반 경량화 폰트)를 사용했습니다. 그래서 왜인지 안드로이드 모바일 게임 느낌이 다분히 날 겁니다.


검수자 : 림뽐 (twitch.tv/limppom)

제가 플레이가 할 수 없는 지경이라 게임 방송으로 검수 중입니다.

,

명작 퍼즐 게임인 더 룸(The Room)이란 게임이 있습니다. 모바일로 먼저 나왔고 총 3까지 나왔으며 2까진 한글화 되었습니다. 사실 3는 너무 어렵고 배배 꼬아놔서 다들 별로라고 합니다.


더룸의 한글패치는

https://drive.google.com/file/d/1gM8FAqFu7cIO_XiouyepDvEAN6s70X-m/view?usp=sharing


https://drive.google.com/file/d/1AQwSpj3zAB6GNSeiXyjwBYa1VofXGxh9/view?usp=sharing


이것을 다운로드 받아서 (The Room이 설치된 곳)/TheRoom_Data에 덮어 씌우시면 됩니다.


그리고 언어 설정을 German(독일어)로 바꿔 주세요.







===여기서 부터는 작업내용 ====================


어쨌건 이 더 룸이란 게임이 PC판으로도 나왔습니다. PC인 만큼 화질도 좋아지고 선명해 졌습니다.


단! PC판은 한글이 없습니다...

https://store.steampowered.com/app/288160/The_Room/


하지만 분명 모바일버전에서는 한국어가 있었습니다. 아마도 아시아 판권이 없어서 PC판에서는 한국어를 제외한 것 같은데 한국어가 있다 없으니 짜증나지요.


그런데 어차피 모바일이나 PC나 게임 내용은 동일합니다. 게임엔진도 Unity3D로 동일하기 때문에 다른 것이 하나도 없습니다. 그러면 모바일에 있는 문장을 빼다가 PC판에다 이식하면 되지 않을까요?


그래서 직접 해봤습니다.


우선 한국어판 더 룸의 APK를 구합니다. 저는 https://apkpure.com/the-room-asia/com.chorusworldwide.theroom

여기서 직접 다운로드 받았습니다. 플레이스토어를 사용하지 못하는 곳을 위해 만들어진 APK미러 사이트로 웹에서 직접 APK를 받을 수 있습니다.




아시아판이니까 당연히 한국어가 있겠죠?

파일은 xapk란 이상한 것인데 사실 그냥 Zip형태입니다. 그냥 일반 압축프로그램으로 풀립니다. 그리고 그 안에는 우리에게 익숙한 apk파일과 obb파일이 있는 형태입니다.


물론 다들 알다시피 apk파일과 obb파일도 그냥 zip입니다. 그냥 압축해제가 됩니다. 우리는 여기서 /Android/obb/com.chorusworldwide.theroom 까지 들어가서 main.15.com.chorusworldwide.theroom.obb 파일까지 압축을 해제해버립니다.


obb파일도 그냥 일반 압축파일로 인식된다.

그리고 /assets/bin/Data 까지 들어가면... 이제 Unity3D 에셋 파일들이 등장합니다!

이건 이미 만들어진 수많은 Unity3D 해제툴을 이용해서 뜯을 수 있습니다.


저는 Unity3D에셋을 해체할 때 두가지 툴을 이용합니다.

AssetsBundleExtractor(https://7daystodie.com/forums/showthread.php?22675-Unity-Assets-Bundle-Extractor)


UnityEx(

UnityEX.7z

)


우선 모바일 더 룸에서 sharedassets1.assets.split0 안에 번역된 텍스트가 들어있습니다.

이것을 얻으려면 AssetsBundleExtractor를 사용합니다. UnityEx로도 되기는 하는데 불안정한 UTF-16으로 내보내기 때문에 AssetsBundleExtractor를 써서 UTF-8로 뽑아내는 겁니다.


AssetsBundleExtractor에서 sharedassets1.assets.split0파일을 열고 Korean을 찾은 다음 Plugins 클릭 그리고 export to txt를 누르면 한국어로 번역된 문장을 뽑아낼 수 있습니다.


이런 식으로 뽑아낸 텍스트 파일을 PC판의 English에 그냥 이식을 해버리면 모바일에서 번역된 문장을 PC판에서도 쓸 수 있겠지요!


이번에는 PC판 더 룸을 뜯어봅시다.

PC판에서는 (더 룸이 설치된 곳)/TheRoom_Data 에 assets파일들이 들어있습니다. 여기서 필요한 것은 resources.assets입니다. 이 안에 English.txt가 있더군요. 이걸 뽑아내고 비교해서 한국어로 바꾼다음 다시 이식을 하는 것입니다.


PC판의 에셋을 열자

English를 열어서 덤프하고...

모바일버전의 한국어를 PC판 English.txt파일에 새로 적자!

다만 PC판에 일부 문장이 추가되어 있어서 무작정 파일 바꿔치기는 어렵습니다. 따라서 English.txt파일을 번역한다고 생각하고 English.txt파일을 한국어로 바꿔주시면 됩니다. 어차피 상당부분은 겹칠겁니다.


저는 Python 스크립트를 만들어서 해결했는데 공개하기는 좀 더럽네요.

#-*- coding: utf-8 -*-
import csv

eng = open("English.txt", 'r')
kor = open("Korean.txt", 'r')
moded = open("EngKor.txt",'w')

engrdr = csv.reader(eng, delimiter = '=', quotechar='|')
korrdr = csv.reader(kor, delimiter = '=', quotechar='|')
#modedwr= csv.writer(moded, delimiter = '=')

korlist = list(korrdr)


for engline in engrdr:
    print(engline)
    line = engline[0] + '=' + engline[1]+'\n'
    for korline in korlist:
        if engline[0] == korline[0]:
            print (engline[0] + '=' + korline[1])
            line = engline[0] + '=' + korline[1]+'\n'
            #moded.write(engline[0] + '=' + korline[1]+'\n')
        """
        else:
            print (engline[0] + '=' + engline[1])
            line =engline[0] + '=' + engline[1]+'\n'
            #moded.write(engline[0] + '=' + engline[1]+'\n')
        """
        
    moded.write(line)


eng.close()
kor.close()
moded.close()


이것을 이용하면 Engkor.txt 라는 파일이 나오는데 이것을 다시 AssetsBundleExtractor로 English.txt를 대체합니다.


이번에는 English를 누른다음 Plugins를 누르고 import from .txt를 선택해서 번역된 txt파일을 선택합니다.


이제 OK를 누르면 저장할 거냐고 물어봅니다. 기존에 열어버린 resources.assets파일을 덮을 수는 없으니 다른이름으로 저장하고 바꿔주시면됩니다.


이제 PC판 더 룸을 실행하면... 여전히 한글이 안 뜹니다... 이건 폰트 문제인데 UnityEX를 써서 TTF파일을 한글이 나오는 놈으로 바꿔주시면 됩니다. 이건

https://moordev.tistory.com/224


여기서 설명했습니다.


이것은 UnityEX를 이용합니다. AssetsBundleExtractor로 하면 오류가 나더군요.


UnityEX를 실행하고 Open archive Unity를 누른다음 PC판 더 룸의 sharedassets0.assets 파일을 선택합니다.


그 다음 Type에 Font라고 되어있는 항목을 찾습니다. 더 룸은 2개가 그러합니다.

OldTimAme

TheRoom


이 두가지 항목을 선택하고 오른쪽 버튼을 눌러 Export selected를 누릅니다.

그러면 Unity_Assets_Files이란 폴더가 생기고 그 안에 TTF파일 두개가 덩그러니 놓입니다.



이 두 파일을 원하는 한글 TTF로 바꾸시면 됩니다. 저는 서울한강체와 서울남산체를 사용했습니다. 가독성이 정말 좋더군요. 물론 파일명만 바꿔서 덮어버리면 됩니다.


그리고 UnityEX에서 import all files를 누르면 sharedassets0.assets 파일에 덮어버립니다. 만약을 위해서 해당 파일을 미리 백업하는 지혜가 필요하지요.


이제 기존 resources.assets를 지우고 아까 번역본을 English.와 바꿔치기한 resources.assets로 이름을 바꾼 다음 실행하면...


짜잔!!! PC판에서도 한글을 쓸 수 있게 되었습니다!


이후 텍스쳐 작업을 마무리 지었습니다. 역시 텍스쳐는 UnityEx를 이용했고 DDS포맷을 Gimp로 수정한 후 작업했습니다.



,

저는 이전에 스마트폰으로 게임을 하기 위해서

http://moordev.tistory.com/128

이런 물건도 만들었습니다.



사실 스마트폰은 OTG기능과 블루투스가 있기 때문에 스마트폰용 게임패드가 상당히 많이 나와있습니다.


다만, 문제는 게임패드를 지원하는 게임이 많지 않다는 겁니다. 의외로 대다수 게임들은 터치 스크린에 최적화 되어 터치스크린을 비비면서 하게 만들어져 있습니다. PC게임중에서 XBOX게임패드를 지원하지 않아 키보드로 인식시키는 것과 비슷하다고 할까요?


아무튼 그래서 Octopus란 앱이 PlayStore에 나왔습니다.

https://play.google.com/store/apps/details?id=com.chaozhuo.gameassistant&hl=ko_KR

이 앱은 중국에서 만들어진 것으로 그동안 터치패드로 인식 시키기 위해 루팅을 하거나 각종 디버그 도구를 써야했던 것을 벗어나 루팅 없이 게임 패드를 터치로 인식 시킬 수 있는 앱입니다. 지원 패드는 여러가지가 있지만 일단 XBOX패드 혹은 그 호환 패드를 추천합니다. 그리고 블루투스 연결은 인풋렉이 좀 심하더군요. 개인적으로 OTG케이블을 이용해서 유선으로 연결을 해주세요.


그럼 이것을 이용해서 이떻게 해야하는지 설명해 보겠습니다. 설명에 사용될 타깃은 Mihoyo의 붕괴3rd입니다.


오늘의 타깃은 바로 이 게임. 왼쪽에 조이스틱 터치패드가 보인다. 이것을 조이패드로 플레이 할 예정이다.

이 게임은 액션 게임이라 뭔가 마구 눌러주는 것이 많습니다. 하지만 터치스크린에 두드려봐야 그 재미가 줄어들지요. 그래서 Octopus로 이를 써먹을 예정입니다.


우선 Octopus를 안드로이드 스마트폰에 설치해야겠지요?


https://play.google.com/store/apps/details?id=com.chaozhuo.gameassistant&hl=ko_KR


이 링크로 들어가면 PlayStore가 나와서 설치할 수 있을 것입니다.

안드로이드 4.4 Kitkat 이상이면 실행이 아무 문제 없이 잘 됩니다. 현재 누가 7.0에서 문제 없이 구동됨을 확인 했습니다.


그리고 구동을 위한 게임도 함께 다운로드 합시다. 붕괴3rd는 생각보다 용량을 많이 먹는 게임입니다.


그리고 Octopus앱을 켜면...


여기 있는 PUBG는 미리 등록한 것이다. 난 없는데 뭐냐고 하는 사람은 없길 바란다.

뭔가 번역기가 심하게 돌아간 한국어가 여러분을 반길겁니다. 뭐 어쩌겠습니까 중국에서 만든 것이니 그냥 그러려니 해야지요. 여기서 "게임첨가"(?)를 누릅니다.


여기서 Octopus로 실행할 게임을 선택해서 등록합시다. 그리고 게임패드를 연결하면...


이렇게 메뉴에 추가 된것을 확인 할 수 있습니다. 그리고 위에 게임패드가 연결 되었음을 알 수 있습니다. 만약 연결 어쩌고가 없다면 그건 패드 연결이 안 된것이니 다른 패드를 쓰거나 블루투스라면 유선 연결을 시도해주시기 바랍니다. 저는 Xbox패드를 써서 Xbox패드라고 인식이 되었습니다.


그리고 Octopus앱에서 게임 아이콘을 눌러서 실행을 해봅시다.


만약 저 외계인이 보이지 않는다면 Octopus가 실행이 되지 않은 것이다. 당장 게임을 끄고 다시 Octopus에서 게임을 실행하길 바란다.

한쪽 구석에 귀여운 보라색 외계인이 떠 있는 것을 알 수 있습니다. 바로 이 외계인이 Octopus입니다. 저 외계인 버튼을 누르면 각 게임 패드의 버튼을 어디에 할당할 것인지 설정할 수 있는 창이 뜹니다.


여기서 왼쪽 스틱은 당연히 패드의 왼쪽 스틱을 말하는 것이고 이걸 길게 누르면 터치 스크린의 어디를 스틱으로 인식 시킬 것인지 나오게 됩니다. (이건 스크린샷을 찍기 힘들어서 포기 했습니다.) 저는 왼쪽 아래의 터치형 조이스틱부분에 걸쳤습니다.


그리고 손잡이라고 나온 것이 오른쪽 스틱입니다. 이 게임에서는 그냥 화면을 미는 것으로 카메라를 돌리게 됩니다. 저는 이 것을 적당히 그냥 빈 공간에 배치했습니다.


그리고 제일 중요한 버튼! 버튼은 길게 눌러 배치를 하고 조이패드의 버튼을 눌러서 이 버튼이 어떤 버튼에 대응되는지 알려주어야 합니다. 그럼 화면에 조이패드의 버튼이름이 뜨게 됩니다.


아무튼 이런 식으로 조정을 하다보면...


아이 이 자식이 터치형 조이스틱 화면을 가려버렸지만 아무튼 이 위치가 조이스틱 위치다. 버튼부는 각각의 버튼이 어떤 곳에 위치했는지 알 수 있게 잘 해놓았다.

이렇게 배치를 할 수 있습니다. 그리고 게임을 하면서 이상한 부분이나 잘못 맞춘듯한 부분은 크기를 조정하고 위치를 조정하면서 맞추면 됩니다.


이 게임은 하다보면 계속 버튼이 추가되기 때문에 Act1을 전부 클리어 한 다음에 버튼배치를 완료하는 것을 추천합니다. 적당한 연습 모드에서 배치를 하는 것이 제일 낫습니다.


P.S Octopus를 이용하면 GooglePlay로그인이 되지 않습니다. 구글 계정으로 게임을 하고자 하시는 분들은 아쉽게도 불가능합니다. Facebook이나 다른 방식 로그인을 하게끔 해주시기 바랍니다. 붕괴3rd같은 경우에는 MiHoYo계정으로 하는 것을 추천합니다.


이것으로 각종 스마트폰 게임을 패드로 할 수 있게 되었네요. TeraM 이나 위에서 보였던 PUBG모바일도 가능합니다.

,

csv파일은 굉장히 오래된 포맷입니다. Lotus 1-2-3시절부터 써오던 현재 Excel이 가지고 있는 위상을 그대로 가지고 있지요.


사실 csv포맷 자체는 단순하기 때문에 8bit마이컴에서도 쓸 수 있을 정도로 간단합니다. 하지만 그에비해 이를 이용하는 스프레드시트는 발전에 발전을 거듭하여 이에 범접할 수 없는 위치까지 왔습니다.


사실 최근에 쓰이는 스프레드시트는 csv포맷을 지금도 잘 읽어들입니다.

단, 나름 똑똑한 기능이라고 CSV파일에 숫자가 있으면 이를 Excel이나 LibreOffice Calc에서 읽어서 숫자 셀로 만들어버립니다. 편리한 기능이지요.


다만, 이건 숫자 데이터상의 CSV일때 이야기고 다른 상황이면 애매해집니다.


대표적인 경우가 다음과 같은 경우입니다.


대충 이런 형태의 CSV파일입니다.


제일 왼쪽은 16진수로 표시되고 그 다음열은 영문 문장 그 다음열은 번역된 문장으로 구성됩니다. 열과 열은 탭으로 구분되어있는 일명 TSV형태 입니다.


사실 LibreOffice의 Calc나 Excel, Google SpreadSheet 등 최근 스프레드시트는 모두 잘 읽어들입니다. 문제는.. 그놈의 숫자셀 기능이 문제를 일으킨다는 것이지요.


38e0이란 16진수가 38이 되어버렸다.

사실 그냥 숫자가 아닌 16진수이기 때문에 오인할 가능성은 있습니다. 문제는 16진수는 abcdef를 사용하는데 이를 알파벳으로 읽어버리고 이는 문자열셀로 만듭니다. 숫자만 있으면 숫자로 남기지요. 하지만 알파벳e와 숫자가 섞인 것은 자그마치 지수로 생각합니다!


그러니까 본래 38e0 이라는 16진수를 3.8 X 10 이라는 숫자로 읽어버리는 것입니다. 참고로 이를 원래의 텍스트로 되돌리지도 못합니다. 이놈의 프로그램은 CSV를 다시 읽어들인다든지 하는 것은 없더군요!


이는 Excel에도 같은 문제가 있기에 해당 문제에 대해 물어본 사람이 있습니다.

https://answers.microsoft.com/ko-kr/msoffice/forum/msoffice_excel-mso_winother-mso_2010/csv-%ED%8C%8C%EC%9D%BC-excel-open-%EC%8B%9C/7f8bcd9f-2177-4e80-b31c-0a79d61f117a


그런데 동문서답하네요. 그 이야기가 아닌 것 같은데...


그런데 불행인지 다행인지 딱 하나 Google 스프레드시트에서 이를 회피할 수 있는 방법이 있었습니다. 어차피 Google 스프레드시트에서 xls나 ods로 내보내기가 가능하니까 다른 프로그램 사용자도 이를 적용해서 변환한 다음 사용하면 아무 문제없이 쓸 수 있을 것입니다.


일단 https://docs.google.com/spreadsheets/u/0/ 일단 여기로 접속합니다. 구글 로그인은 되어있다는 가정하에요.


개인 적으로는 크롬을 사용하는 것을 추천합니다. 이러니 저러니해도 크롬이 가장 구글의 서비스를 쓰기 편하거든요.





그리고 오른쪽 아래의 빨간색 +버튼을 누릅니다. 그러면 빈 스프레드시트가 생성됩니다.


뒤에있는 데이터는 신경쓰지말자. 아까 보여줬던 그 데이터다.

파일 - 가져오기

이렇게 들어갑니다.


그리고 업로드 탭으로 들어간 뒤에 드래그 하라는 곳으로 CSV 파일을 던져 넣어서 업로드 합니다. 아니면 파란버튼을 눌러서 CSV파일을 열어도 됩니다.


그러면



파일 가져오기에 대한 옵션이 뜨는데 다른 것은 전부 기본상태로 둬도 되지만(구분 유형은 해주는 것이 그래도 좋습니다. 정 모르겠다고 하실 때만 자동 감지를 해주세요.)

"텍스트를 숫자 및 날짜로 전환" 부분을 아니오로 체크합니다. 그러면...


아까 지수로 읽히던 부분이 16진수의 텍스트로 잘 읽힙니다!


그럼 이걸 그냥 Google스프레드시트에서 바로 작업해도 되고 익숙한 다른 프로그램을 사용하고 싶으시면


파일 - 다른 이름으로 다운로드에서 xls 혹은 ods 다운로드가 가능합니다. 그러니까 이후에는 아무 문제없이 텍스트 셀로 된 파일을 열 수 있는 것입니다.


일단 구글의 프로그램으로 우회하긴 했지만 대량의 데이터가 들어간 CSV를 ods나 xls로 만들어 셀 속성을 살릴 수 있는 방법이었습니다. 이후 셀 속성을 바꾸고 싶다면 해당 프로그램에서 셀 속성을 바꾸면 그만입니다.

,

RenPy게임은 사실 허점이 많습니다. 이런 저런 잠금장치를 해봐도 결국 Python이라는 특성상 Py파일을 열 수 있고 엔진의 Py파일을 손대면 이러니저러니 해도 데이터 마이닝을 쉽게 할 수 있습니다.


사실 대다수 게임엔진은 개발자모드 혹은 콘솔진입을 허용합니다. 대표적인 게임이 퀘이크 엔진과 그의 영향을 받은 소스엔진 같은 게임 엔진입니다.


멀리 갈 것도 없이 소스엔진 게임인 half-life를 실행한 상태에서 `키(혹은~키)를 누르면 갑자기 게임 내에서 명령어 창이 뜹니다. 이게 바로 게임 엔진의 콘솔인 것이지요. 일반인들은 이 콘솔을 치트키를 치는 창 정도로 생각하지만 (sv_cheats 1 이런 것)사실은 이 명령창은 개발자의 개발 편의성을 위해 만들어진 것 입니다.


RenPy도 게임엔진이기에 개발자의 편의를 위한 기능을 내장하고 있습니다. 보통 options.rpy파일로 이를 제어하고 있습니다.


우선 매뉴얼을 볼까요?


https://www.renpy.org/doc/html/developer_tools.html

Shift+O키를 누르면 콘솔이 활성화 되고 Shift+R을 누르면 스크립트를 다시 읽어들인다고 합니다. 실시간 스크립트 수정이 필요할 때 아주 좋지요.


하지만 이것을 실제 게이머가 실수로 누르기라도 하면 난감해지겠지요? 어떻게 하는지도 잘 모를 것이고요. 이를 제어하는 일반적인 방법은 다음과 같습니다.


Renpy로 만들던 중에 Options.rpy 파일을 열면

init -1 python hide:
    config.developer = False
    config.console = False

이러한 구문이 있거나 이것과 흡사한 구문이 있습니다.


바로 개발자모드를 활성화 하는 코드입니다. 물론 실제 상용 게임에는 True를 False로 바꿔서 개발자모드 진입을 막습니다. 그리고 파일을 쉽게 읽기 어렵게 하기 위해 rpyc형태로 배포합니다. 한번 컴파일한 형태이지요. 물론 rpyc는 쉽게 디컴파일이 되지만 Python 직접 접근 구문에서 간혹 파일이 깨지기도 합니다. 그러므로 rpyc파일을 디컴파일해서 rpy로 만든 다음 수정해도 되지만 이는 별로 추천하지 않습니다.


무엇보다 Renpy는 Python이기에 위험한 작업 없이도 쉽게 됩니다.


Python은 인터프리터 언어이고 이미 있는 객체의 이름을 다른 객체로 선언하면 이전의 객체는 무시됩니다. 그리고 Renpy는 스크립트를 읽어들일때 이름 순으로 읽습니다. 즉, A로 시작되는 파일을 읽기 시작해서 z로 시작하는 파일로 끝내는 것입니다.


그렇다는 것은 Options.rpy를 읽어들여서 개발자모드가 비활성화 되었다고 한들 z로 시작되는 파일을 읽어서 활성화 되면 개발자모드가 다시 활성화 되는 것입니다.


두근두근 문예부의 경우 이를 비활성화 해 놓았습니다. 막말로 이런 플레이어를 가지고 노는 게임이 개발자모드로 진입하면 이게 게임의 일부분인지 아니면 실수인지 알 길이 없지요.(오류메시지나 블루스크린마저 게임의 일부분으로 써먹는 게임이니까요. 진짜 오류메시지와 구분이 안 갑니다.)


하지만 zzzzz.rpy라는 파일을 game폴더에 만들어 놓고 다음과 같이 적어봅시다.

init -1 python hide:
    config.developer = True
    config.console = True


이렇게 하고 게임을 실행하면...


평상시와 다를 것이 없습니다. 하지만 Shift+O키를 누르면 상황이 달라집니다.

>

어디서 많이 보지 않았나요?

닮았죠?

네 바로 Python 커맨드 창입니다. 직접 여기서 명령을 내려서 제어를 할 수 있습니다.

물론 Python구문뿐 아니라 RenPy모듈도 이미 import 되어 있기에 RenPy명령어도 먹힙니다.


그러므로 개발자 콘솔에서 탈출을 하려면 Python과 똑같이

exit

이 명령을 하면 됩니다.


그럼 한번 치트를 시도해봅시다.


jump credits


이러면 바로 credits라고 정의된 부분으로 바로 점프합니다. (타이틀에서는 먹히지 않습니다. 일단 새 게임을 눌러서 게임이 시작되야 먹힙니다. credits 레이블이 나중에 만들어지기 때문입니다.)


그럼 바로 엔딩 보는 겁니다. 물론 CG는 회수 된 부분 까지만 나오게 됩니다. Monika가 놀라서 뒤집어질 일이 일어난 것이지요. (이래서 데이터 마이닝을 하는 사람은 미스테리 게임을 못합니다. - 언더테일 제작자 왈)


이런 jump기능은 특정 label로 바로 넘어가기 위한 구문으로 실제로 스크립트에 써먹는 구문입니다. 이걸 명령을 때우는 겁니다. Python개발 할 때랑 비슷하지요.


그리고 넘기기가 안 먹히는 구간에서 콘솔을 열고 config.fast_skipping=True를 다시 때려버리면 마구 넘어갑니다. 이 외에도 많은 부분을 뜯어 볼 수 있습니다.


물론 이걸 남용하면 Monika가 그랬던 것처럼 게임이 망가집니다. 주의하세요!

,