다음은 가장 기본적인 대사 출력입니다. 복사해서 실행해보세요.
이오리:
- 안녕 프로듀서
프로듀서:
- 안녕 이오리
말하는사람:
을 써준 뒤, 그 밑에 - 대사
를 써주면 해당 캐릭터가 해당 대사를 말하게 됩니다.
대사 출력은 되는데 뒷배경도 없고 캐릭터도 없으니
나타나게 해봅시다.
@set-meta
와 ---
를 이용해서
설정을 해줍니다.
@set-meta
안에 stage:bg
로 설정할 수 있습니다.
@set-meta
stage:bg 사무소 앞
---
이오리:
- 안녕 프로듀서
프로듀서:
- 안녕 이오리
쓸 수 있는 배경은 여기를 참고해주세요. 캐릭터도 나타나게 해봅시다.
character:pose target 포즈 표정
을 쓰면 됩니다.
@set-meta
stage:bg 사무소 앞
character:pose iori 기본 미소
---
이오리:
- 안녕 프로듀서
프로듀서:
- 안녕 이오리
쓸 수 있는 캐릭터는 여기를 참고해주세요.
조용하니까 bgm도 나오게 할게요.
music:bg bgm 이름
을 쓰면 됩니다.
@set-meta
stage:bg 사무소 앞
character:pose iori 기본 미소
music:bg Tender
---
이오리:
- 안녕 프로듀서
프로듀서:
- 안녕 이오리
쓸 수 있는 BGM 목록은 여기를 참고해주세요.
말이 짧으니 연이어 말을 시켜보도록 하겠습니다.
@set-meta
stage:bg 사무소 앞
character:pose iori 기본 미소
music:bg Tender
---
이오리:
- 안녕 프로듀서
프로듀서:
- 안녕 이오리.
wait 1000
- 오늘은 어때?
이오리:
- 음, 글쎄..
- 당신 얼굴 1000배 정도는 상태가 좋을까나~
프로듀서:
- (상태가 좋다는 건지 나쁘단 건지.... 아냐 아마 좋은 걸 거야)
wait 숫자
로 숫자 밀리초 이후에 실행시킬 수 있습니다.
이오리의 말처럼 '음 글쎄', '당신' 사이에 빈 칸이 있으면 대사가 스킵 가능한 단위로 끊어져서 나옵니다.
'이오리:
' 가 생략된 거라고 보시면 됩니다.
다음은 대화 중 표정 변화를 해보겠습니다.
@set-meta
stage:bg 사무소 앞
character:pose iori 기본 미소
music:bg Tender
---
이오리:
- 안녕 프로듀서
프로듀서:
- 안녕 이오리.
wait 1000
- Animation(iori, 기본, 기본)
- 오늘은 어때?
이오리:
- Animation(iori, 기본, 행복)
- 음, 글쎄..
- Animation(iori, 기본, 미소)
- 당신 얼굴 1000배 정도는 상태가 좋을까나~
프로듀서:
- Animation(iori, 기본, 기본)
- (상태가 좋다는 건지 나쁘단 건지.... 아냐 아마 좋은 걸 거야)
Animation(타겟, 포즈, 표정)
아이템으로 대사 도중에 표정을 변화시킬 수 있습니다.
소리도 넣을 수 있습니다! 그런데 먼저 준비를 해야해요. 소리 파일을 웹에 업로드 하셔야 합니다. 그리고 준비된 링크를 Audio(링크)
로 넣어주면 됩니다.
이오리의 '안녕 프로듀서' 소리를 재생 시켜보겠습니다.
대사 이후에 적으면 대사가 재생된 다음 소리가 재생되니 앞에 적어줍시다.
@set-meta
stage:bg 사무소 앞
character:pose iori 기본 미소
music:bg Tender
---
이오리:
- Audio(https://glglgozz.leeingnyo.me/temp/iori_audio/오하요프로듀서.mp3)
- 안녕 프로듀서
프로듀서:
- 안녕 이오리.
wait 1000
- Animation(iori, 기본, 기본)
- 오늘은 어때?
이오리:
- Animation(iori, 기본, 행복)
- 음, 글쎄..
- Animation(iori, 기본, 미소)
- 당신 얼굴 1000배 정도는 상태가 좋을까나~
프로듀서:
- Animation(iori, 기본, 기본)
- (상태가 좋다는 건지 나쁘단 건지.... 아냐 아마 좋은 걸 거야)
지금은 녹음된 목소리만 재생할 수 있지만 언젠가는 목소리를 생성해서 나오도록 생각해보겠습니다.
다음은 아이돌 마스터 커뮤니케이션의 중요 요소인 선택지를 알아보겠습니다.
6월 14일 추가. 다음을 실행해보세요. 코토리가 사이드에 나타납니다.
@set-meta
music:background morning_rmx
stage:background 사무소 안
---
코토리:
- 프로듀서 씨!
프로듀서:
- 앗, 안녕하세요
- ..... 오토나시 씨, 언제부터 이미지가 나오게 되셨나요?
코토리:
- 프로듀서 씨도 참!
- 말하는 사람 이름을 '코토리'로 하면 나온답니다.
선택지에 대해서 알아보겠습니다.
아이마스 시리즈에 나오는 선택지로는 2종류가 있습니다.
3가지 선택지 (스테마스에선 4가지, 인데 의미없음) 중 하나 고르기와 아이돌을 터치하거나 문지르는 커뮤니케이션이 있죠.
먼저 고르기 선택지를 만드는 법을 알아보겠습니다.
고르기 선택지는 아래와 같이 만들 수 있습니다.
@set-meta
stage:bg 사무소 앞
character:pose miki 저기 기본
---
미키:
- 있지있지 프로듀서, 우리 둘이 같이 있으면 어떻게 보일까?
choice
ㄴ> 아이돌과 프로듀서 -> END
ㄴ> 연인 -> END
ㄴ> 오빠와 여동생 -> END
대사 이후, choice
로 한 줄 써준 뒤, 밑에 고르기에 쓰일 선택지를 한 줄에 하나씩 써주면 됩니다. 고르기 선택지 아이템은
ㄴ> 선택지 이름 -> 선택지를 선택했을 경우 가게되는 라벨
의 형식을 띄게 됩니다. 고르기 선택지는 4개까지 쓸 수 있으니 참고하세요.
위 스크립트는 전부 END 라벨로 가게끔 했는데 END 라벨은 있지 않으니 그냥 끝나게 됩니다. 라벨에 대해서 설명드리겠습니다.
라벨은 :라벨이름
으로 씁니다. :라벨
을 적어주고,
그 밑에는 다시 캐릭터 대사나 set-meta 를 사용해서 배경을 바꾸거나 해주시면 됩니다.
@set-meta
stage:bg 사무소 앞
character:pose miki 저기 기본
---
미키:
- 있지있지 프로듀서, 우리 둘은 같이 있으면 다른 사람들이 어떻게 볼까?
choice
ㄴ> 아이돌과 프로듀서 -> IDOL_PRODUCER
ㄴ> 연인 -> COUPLE
ㄴ> 오빠와 여동생 -> BROTHER_SISTER
:IDOL_PRODUCER
프로듀서:
- 아이돌과 프로듀서로 보이지 않을까?
-> END
:COUPLE
프로듀서:
- 글쎄 연인 관계처럼... 아닐거야.
-> END
:BROTHER_SISTER
프로듀서:
- 오빠 동생 사이로 보이지 않을까?
-> END
IDOL_PRODUCER, COUPLE, BROTHER_SISTER 라벨을 써놨고 각 선택지와 연결해줬으니 선택하면 해당 라벨로 점프!하게 될 겁니다.
그리고 각 라벨의 프로듀서 대사가 다 끝나면 다 끝나면 -> 라벨이름
으로 END로 가게 했습니다.
END는 없는 라벨이니까 그냥 끝나게 됩니다.
아이마스에서 커뮤니케이션을 할 때는 선택지가 랜덤으로 나오기 때문에 순서가 항상 섞이지만,
약속 등과 같은 커뮤니케이션에서는 '약속한다'와 '약속하지 않는다'의 순서가 섞이지 않습니다.
그럴 때는 choice
옆에 no-shuffle
이란 옵션을 줘서 섞이지 않게 할 수 있습니다.
또, 5초의 선택시간을 없애고 영원히 기다리게 할 수도 있습니다. (시간을 바꾸는 건 아직 안 됩니다)
choice
옆에 wait-forever
를 적어주면 됩니다. 밑에서 확인해보세요.
@set-meta
stage:bg 사무소 앞
character:pose miki 저기 기본
---
미키:
- 있지있지 프로듀서, 우리 둘은 같이 있으면 다른 사람들이 어떻게 볼까?
choice wait-forever no-shuffle
ㄴ> 아이돌과 프로듀서 -> IDOL_PRODUCER
ㄴ> 연인 -> COUPLE
ㄴ> 오빠와 여동생 -> BROTHER_SISTER
:IDOL_PRODUCER
프로듀서:
- 아이돌과 프로듀서로 보이지 않을까?
-> END
:COUPLE
프로듀서:
- 글쎄 연인 관계처럼... 아닐거야.
-> END
:BROTHER_SISTER
프로듀서:
- 오빠 동생 사이로 보이지 않을까?
-> END
위처럼 no-shuffle
옵션을 주면 고르기 선택지가 순서대로 오른쪽, 왼쪽, 위쪽 아래쪽에 나타납니다. 이 점 주의하세요.
다음은 터치 입니다. 터치도 고르기와 비슷한데요, 한 가지 다른 점은 영역이 있다는 겁니다.
영역을 설정해준 뒤 그 영역을 누를 건지 문지를 건지 같은 방법을 정해줘야 합니다.
먼저 영역 설정하는 법을 알아볼게요. 영역은 직사각형이고,
* 영역이름(왼쪽꼭지점의 X좌표 (퍼센트 단위), 왼꼭Y, 사각형너비, 사각형높이)
로 설정해줄 수 있습니다.
단위는 전부 퍼센트 니까 주의해주세요.
밑에 예시를 참고해주세요.
그리고 이 터치하면 또 점프!를 해야겠죠? 고르기와 마찬가지로 써줍니다. 이 터치 아이템은
ㄴ> 터치방법(터치영역이름, 기타옵션) -> 라벨
의 형태를 띕니다. 밑에서 더 설명할게요.
@set-meta
stage:bg 사무소 앞
character:pose haruka 기본 입연
---
하루카:
- 맞아!
wait 1000
- Animation(haruka, 뒷짐, 기본)
- 프로듀서 씨가 보기엔
wait 300
- Animation(haruka, 기본, 강한)
- 저 어디 전보다
wait 200
- Animation(haruka, 방어, 멋쩍은말하는)
- 살찐 곳이라든가,
wait 400
- Animation(haruka, 기본, 곤란)
- 있나요..?
touch -> NO_TOUCH
* 머리(18, 43, 15,27)
* 가슴(55, 42, 15, 15)
* 배(73, 43, 16, 13)
ㄴ> touch(머리) -> HEAD
ㄴ> (가슴) -> CHEST
ㄴ> (배) -> BELLY
:HEAD
하루카:
- Animation(haruka, 기본, 걱정)
- 얼굴이요?
- Animation(haruka, 확마, 화남)
- 너무해요! 죽어버려!
-> END
:CHEST
하루카:
- Animation(haruka, 어머나, 놀란)
- 와아앗!
wait 1300
- Animation(haruka, 어머나, 기본)
- ..... 프로듀서 씨도 참,
wait 300
- Animation(haruka, 기본, 질색)
- 그런 짓 하면 안 된다고 생각합니다...
-> END
:BELLY
하루카:
- Animation(haruka, 기본, 슬픔)
- 허리요?
- Animation(haruka, 데헷, 데헷)
- 과자는 역시나 허리로 가나보네요
-> END
:NO_TOUCH
프로듀서:
- Animation(haruka, 기본, 노노와)
- 아니, 아무데도 안 찐 것 같아.
하루카:
- Animation(haruka, 깍지, 행복)
- 정말이요? 헤헤 다행이다.
좀 길지만 주황색 부분만 봅시다.
위 커뮤는 여기서 일부를 발췌했습니다. 머리와 배 반응은 제가 확인할 수 없어 임의로 넣었습니다.
첫 시작은 choice
처럼 touch
를 써줬습니다.
고르기는 제한 시간동안 선택을 하지 않으면 좋은 선택지를 제외한 나머지 중 무작위로 선택되는데,
터치의 경우는 터치 안 함 이라는 선택지가 무조건 등장하죠.
그래서 wait-forever
옵션이 붙어있지 않으면, 항상 시간제한이 지날 경우 가게 될 라벨을 지정해줘야 합니다.
여기서는 NO_TOUCH 라벨로 가게 되겠군요.
그 밑에, * 머리(18, 43, 15, 27)
처럼 영역을 지정해줬습니다.
영역은 눈대중으로 수치를 정하기 힘드니 터치 영역 에디터에서 복사해오세요.
영역을 지정해준 다음에는 ㄴ> 터치방법(영역이름) -> 가게될 라벨
를 통해 영역을 활성화? 시켜줬습니다.
터치방법에는 터치와 문지르기가 있는데, 단순 터치의 경우 굳이 안 써줘도 됩니다. 괄호는 있어야 합니다.
이제 선택지로 분기도 칠 수 있고 다 할 수 있겠죠?
다음은 여러 아이돌을 등장 시켜보겠습니다.
이제 여러 아이돌을 세워봅시다. 아이돌을 @set-meta
에서 character:pose 캐릭터 포즈 표정
로 나타나게 하면
전부 가운데에 생기게 됩니다. 2명을 세워도 겹쳐서 나타나게 될 겁니다. 그래서 캐릭터의 위치를 옮겨줘야 하는데요.
그러기 위해선 character:position 캐릭터 위치
를 사용하면 됩니다. '캐릭터'에는 pose 때와 마찬가지로 들어가고,
위치는 0부터 100까지의 숫자나, right, center, left 같은 알파벳이 들어갑니다. 숫자일 땐 50이 가운데임을 잊지 말아주세요.
0과 100은 화면에서 안 보입니다.
@set-meta
stage:bg 사무소 앞
character:pose iori 기본 기본
character:position iori left
character:pose miki 기본 기본
character:position miki right
---
프로듀서:
- 안녕, 얘들아
wait 200
- Animation(iori, 기본, 극혐)
wait 1000
- Animation(miki, 기본, 화난)
2명이 생겼습니다. 둘 다 화났네요. 둘을 화면으로 나가게 해봅시다.
@set-meta
에 character:position
을 쓰면 캐릭터들 위치가 딱 세팅이 되죠?
대사 중간에 움직이게 할 때는 Move(캐릭터, 위치)
를 씁니다.
@set-meta
stage:bg 사무소 앞
character:pose iori 기본 기본
character:position iori left
character:pose miki 기본 기본
character:position miki right
---
프로듀서:
- 안녕, 얘들아
wait 200
- Animation(iori, 기본, 극혐)
wait 1000
- Animation(miki, 기본, 화난)
프로듀서:
- 어 왜 그래...
wait 200
- Move(iori, 0)
wait 500
- 이오리!
- Move(miki, 100)
wait 500
- 미키!
둘 다 사라져버렸습니다. 찾으러 갈 건데, 사무소 안에서 응접실이나 바깥으로 나가게 될 것입니다.
장면 변환이 필요한데요, @set-meta
안에 페이드아웃과 페이드인을 설정할 수 있습니다.
밑의 예시를 조금 내려서 주황색 부분을 확인해보세요.
@set-meta
stage:bg 사무소 안
character:pose iori 기본 기본
character:position iori left
character:pose miki 기본 기본
character:position miki right
---
프로듀서:
- 안녕, 얘들아
wait 200
- Animation(iori, 기본, 극혐)
wait 1000
- Animation(miki, 기본, 화난)
프로듀서:
- 어 왜 그래...
wait 200
- Move(iori, 0)
wait 500
- 이오리!
- Move(miki, 100)
wait 500
- 미키!
choice wait-forever no-shuffle
> 미키를 찾으러 간다 -> MIKI
> 이오리를 찾으러 간다 -> IORI
:MIKI
@set-meta
stage:fade-out black
character:pose miki 기본 화난
stage:bg 응접실
character:position miki 50
stage:fade-in
---
프로듀서:
- 미키! 왜 화나서 가는 거야?
미키:
- Animation(miki, 팔굄, 미소)
- 허니, 역시 날 선택해줬구나!
-> END
:IORI
@set-meta
stage:fade-out black
stage:bg 사무소 앞
character:pose iori 기본 극혐
character:position iori 50
stage:fade-in
---
프로듀서:
- 이오리! 왜 화나서 가는 거야?
이오리:
- Animation(iori, 공주, 기본)
- 니히힛! 당신, 역시 날 선택해줬구나!
-> END
장난감이 되어버린 프로듀서가 불쌍하니까 아래 다른 예제를 준비해봤습니다.
@set-meta
stage:bg 응접실
---
프로듀서:
- 좋은 아침!
- 음? 아무도 없나?
@set-meta
stage:fade-out black
---
프로듀서:
- 앗
- 정전인가?
???:
- 와악!
프로듀서:
- 으악! 뭐야?!
@set-meta
character:pose iori 기본 미소
character:position iori left
character:pose miki 기본 미소
character:position miki right
character:pose haruka 기본 미소
character:position haruka center
character:pose yukiho 기본 기본
character:position yukiho 30
stage:fade-in
---
하루카:
- 짜잔! 생일축하드려요, 프로듀서!
네, 이제 제가 만든 건 전부 설명한 것 같습니다. 재밌는 거 만들어주세요.
위에서 나온 사항들을 한 곳에 정리했습니다. 복사해서 실행해보면서 읽으셔도 좋습니다.
@set-meta
stage:bg 사무소 앞
character:pose iori 기본 미소
---
말하는사람이름:
- 대화 내용.
- 연이어 쓰면 위의 대사가 끝나고 나옵니다.
- 한 칸 띄우고 쓰면 말하는 사람은 같은데, 스킵으로 구분 가능한 대사로 분리됩니다.
wait 1000
- wait을 쓰면 밀리세컨드만큼 기다렸다가 말합니다. 너무 많이 쓰면 화면에 안 나오니까 주의해주세요.
다른사람:
- 다른 사람의 대사입니다.
말하는사람이름:
- Animation(iori, 기본, 극혐)
- 표정변화입니다. Animation(대상, 포즈, 표정) 으로 적습니다.
- 현재 가능한 대상과 포즈, 표정은 아래를 참고해주세요
이오리:
- Audio(https://glglgozz.leeingnyo.me/temp/iori_audio/프로듀서3.mp3)
- 프로듀서.
말하는사람이름:
- 저렇게 Audio(경로) 를 쓰면 재생됩니다.
선택지:
- choice를 쓰면 선택지를 나타낼 수 있습니다.
- 옵션으로 wait-forever 와 no-shuffle 이 있습니다.
- 기본 동작은 셔플이고, 5초의 기다림이 있고, 시간이 지나면 아무거나 선택됩니다.
choice wait-forever no-shuffle
ㄴ> 선택지 1 -> 갈곳
ㄴ> 다른 선택지 -> 다른곳
:갈곳
점프:
- :라벨 처럼 라벨을 지정합니다.
wait 200
- 지정된 라벨로 점프는 -> 를 사용하시면 됩니다.
-> 점프
:다른곳
점프:
- 라벨 이름에는 : 가 들어가면 안 됩니다.
-> 점프
:점프
터치:
- 터치도 choice와 비슷합니다. touch 를 쓰시면 됩니다.
- 터치는 영역과 명령으로 나뉩니다. * 로 영역을 정의하고 ㄴ> 로 터치에 대한 걸 적어줍니다.
- * 이름(사각형 top % 위치, 사각형의 왼쪽 % 위치, 사각형 너비 %, 사각형 높이 %)
- 영역 정의의 경우, 텍스트로 수정하기 어려워서 마우스로 찍게 만들 예정입니다.
- 명령은 다음과 같습니다
- ㄴ> 명령타입(영역이름) -> 터치하면갈곳
- 명령 타입은 우선 '터치', '문지르기' 가 있습니다. 문지르기의 경우
- 자세한 건 밑에를 참고해주세요.
- 터치는 9초고 wait-forever 옵션이 없을 경우 -> 로 노 터치 시 갈 라벨을 정해줘야 합니다.
touch -> 점프
* 터치할 곳(0, 0, 50, 100)
* 오른쪽(50, 0, 50, 100)
ㄴ> 터치(터치할 곳) -> 터치이후
ㄴ> 문지르기(오른쪽, 2, 100) -> 터치이후:점프
:터치이후
끝:
- 다 보셨나요?
- 하나씩 천천히 해보세요.
에디터에서 확장 기능에 체크하면 사용하실 수 있습니다.
복사해서 실행해보면서 읽으셔도 좋습니다.
상태변화주기:
- 선택지에 메타 정보를 넘기면 됩니다.
- ㄴ> 선택지이름 { 메타 정보 } -> 다음 라벨
- { } 에 정보를 넣어주시면 몇 가지 특이한 걸 할 수 있습니다.
- { "type": "change" } 는 커뮤니케이션 결과를 바꿀 수 있습니다.
- 메타 정보에 { "type": "change", "normal": "bad" } 처럼 "현재상태": "다음상태" 로 넣어주면 커뮤니케이션 결과가 다음 상태로 바뀝니다.
- 예를 들어 부정적인 선택을 해서 normal -> bad, good -> normal 이면
- { "type": "change", "normal": "bad", "good": "normal" } 처럼 , 로 구분해주시면 됩니다.
- "bad": "bad" 같이 동일한 것은 안 써주셔도 됩니다.
- 짝이 맞는 { 와 } 사이에는 줄바꿈을 얼마든지 쓰셔도 됩니다. 다 한줄로 만드는 건 알아두세요.
- 처음 상태는 항상 normal 입니다.
- 위 사항은 언제든지 바뀔 수 있습니다.
- 그럼 선택해주세요
choice wait-forever
ㄴ> 노말로 -> end
ㄴ> 굿! { "type": "change", "normal": "good" } -> end
ㄴ> 배드... {
"type": "change", "normal": "bad"
} -> end
:end
끝:
- 결과는?