Ω 초반 | |
∞ 무한 | ∝ 무한 돌파 |
Δ 영원 | 시간 연구 |
Ψ 시간 팽창 | |
Ϟ 리얼리티 | 오토메이터 |
셀레스티얼 | |
기타 | 도전과제 |
도전 | |
공략 | |
모드 | NG+++ |
1. 개요
리얼리티 이후 해금되는 자동화 시스템인 오토메이터에 관한 문서, 스크립트 시스템을 사용하여 개발에 연이 없는 사람이라면 처음 사용할때는 배워야 할 것이 많을 수도 있다.텍스트 에디팅과, 블럭 에디팅 두가지의 방식으로 스크립트를 작성 할 수 있다.
텍스트 에디팅의 경우 모든 구문은 한 줄에 한개만 작성될 수 있고, 닫는 중괄호도 한줄을 차지한다.
스크립트는 20개까지 저장 가능하고, 글자 수는 스크립트당 1만자, 총합 6만자 까지만 허용된다.
실행의 경우 기본적으로 초당 2줄까지 실행되고, 리얼리티 횟수당 0.6%씩 증가해서 초당 1000줄[1]까지 실행이 가능하다.
2. 스크립트 명세
- 타임 스터디 관련
- studies respec
타임 스터디의 재설정 기능을 활성화한다. 재설정은 다음 이터니티에 진행된다.
- studies [nowait] load id <selector>
- studies [nowait] load name <name>
타임 스터디를 불러온다. id로 설정하면 몇번째 프리셋을 불러올지[2], name이면 어느 이름의 프리셋을 불러올지 지정하면 된다.
nowait이 붙어있다면 완전히 불러오지 못해도 그대로 넘어가고, 붙어있지 않다면 모두 불러올 때까지 대기한다.
- studies [nowait] purchase <study_list>
지정된 타임 스터디를 구매한다. 각 스터디는 반점(,)으로 구분하고, 번호 외에 이름을 가진 스터디는 이름을 입력해도 된다.
nowait이 붙어있다면 모두 구매하지 못해도 다음으로 넘어가고, 붙어있지 않다면 모두 구매할 때까지 대기한다.
- 이벤트 트리거 관련
- infinity [nowait]
- eternity [nowait] [respec]
- reality [nowait] [respec]
지정된 프레스티지 리셋을 진행한다.
nowait이 붙어있다면 리셋하지 않고도 다음으로 넘어가고, 붙어있지 않다면 리셋이 가능할 때까지 대기한다.
respec이 붙어있다면 이터니티는 타임 스터디를 재설정하고, 리얼리티는 글리프 장착을 해제한다.
- unlock [nowait] <ECn|dilation>
이터니티 챌린지 혹은 딜레이션을 해금한다.
nowait이 붙어있다면 해금하지 않고도 다음으로 넘어가고, 붙어있지 않다면 해금이 가능할 때까지 대기한다.
- start [nowait] <ECn|dilation>
이터니티 챌린지 혹은 딜레이션을 시작한다.
nowait이 붙어있다면 시작하지 않고도 다음으로 넘어가고, 붙어있지 않다면 시작이 가능할 때까지 대기한다.[3]
- 설정 변경 관련
- auto infinity <setting>
- auto eternity <setting>
- auto reality <setting>
지정된 자동구매기의 설정을 변경한다. 설정값은 다음과 같다. - on - 활성화한다.[4]
- off - 비활성화한다.
- <n> <seconds|minutes|hours..> - 지정된 시간을 간격으로 설정한다. ns, nm, nh 형태로 축약 할 수 있다.
- <n> x highest - 최고 IP/EP/RM보다 n배 높을때 자동으로 리셋하게 설정한다.
- <n> <IP|EP|RM> - 주어진 값에 도달하면 자동으로 리셋하게 설정한다. 리얼리티 자동구매기의 글리프 레벨 옵션은 설정 할 수 없다.
- black hole <on|off>
블랙홀을 켜고, 끈다.하지만 굳이 끌 사람이 있을까..
- 정보 관련
- notify <"text">
지정된 내용을 알림창으로 띄운다. 하지만 고정된 내용만 띄울 수 있어 생각보다 활용도가 높지는 않다.
- // [comment]
- # [comment]
주석이다. 즉, 아무런 실행을 하지 않는다.
하지만 한개의 명령어라 한 줄을 통째로 차지한다.
- 스크립트 진행 관련
- wait <condition>
주어진 조건을 만족할 때까지 대기한다.
- pause <interval>
주어진 간격동안 대기한다. ms, seconds, minutes, hours 단위가 있고, 축약형도 지원한다.
오프라인 틱을 계산할 때는 제대로 동작하지 않을 수 있다.
- if <condition> { \~\~ }
조건이 만족되었을 때만 코드를 실행하고, 그렇지 않다면 블럭의 뒤로 이동한다.
- until <contidion|prestige> { \~\~ }
조건이 만족될 때 까지 코드를 실행한다.
조건 대신 프레스티지 이벤트를 지정할 수 있고, 이 때는 해당 이벤트가 발생할 때까지 반복한다.[5]
- while <condition> { \~\~ }
조건이 만족되는 동안 코드를 실행한다.
일반적인 프로그래밍 언어와는 달리, break가 없어 반드시 조건이 거짓이 되어야만 탈출이 가능하니 주의해야한다.
- 연산 관련
- 비교 연산자
오토메이터에는 4개의 비교연산만 존재한다. <, >, <=, >= 4개만 사용할 수 있고, ==, != 조차도 없다.
- 재화 목록
비교 대상으로 사용할 수 있는 재화들의 목록이다. 비교 연산자와 함께 사용하여 조건문을 사용할 수 있다. - AM, IP, EP, RM - 각각 현재 소지한 반물질, IP, EP, RM의 양이다.
- infinites, eternities, realities - 현재 소지한 인피니티, 이터니티, 리얼리티 횟수이다.
- banked infinites - 보관된 인피티티 횟수이다.
- pending ip, pending ep, pending tp, pending rm, pending glyph level - 리셋시 얻을 수 있는 IP, EP, TP, RM의 양과, 글리프의 레벨이다.
- dt, tp, rg, rep, tt - 현재 소지한 DT, TP, 레플리칸티 갤럭시, 레플리칸티, TT의 갯수이다.
- total tt - 소지한 TT와 이미 사용한 TT의 합산이다.[6]
- total completions - EC의 클리어 횟수 합산이다.
- pending completions - 이번 리셋에서 EC가 클리어되는 횟수이다.
- ecX completions - 해당 챌린지가 클리어된 횟수이다.
3. 글자 수 최적화 팁
스크립트에 글자 수 제한이 있는 만큼, 가급적이면 글자수를 적게 유지하는 것이 더 많은 스크립트를 사용하는 것에 도움이 될 수 있다.혹은 스크립트를 따로 작성 및 저장한 뒤, 외부 툴인 Automator++를 통해 압축하는 방식도 사용할 수 있다.
수동으로 스크립트를 최적화하고자 한다면, 다음을 참고하자.
- 주석은 스크립트를 읽는 데에 도움은 되지만, 주석도 글자 수를 차지한다.
차라리 원본 스크립트를 따로 저장해두고, 인게임에는 주석을 지운 스크립트를 저장해두면 글자 수를 확보할 수 있다.
무조건 주석을 유지해야겠다면, 반드시 주석을 // 대신 # 으로 시작하자. 1글자가 줄어든다.
- 중괄호의 줄바꿈은 없앨 수 없다.
일반적인 프로그래밍 언어와는 다르게, 여는 중괄호는 앞 조건문에 묶인 문법이고, 닫는 중괄호는 블럭의 끝을 알리는 일종의 명령이다.
이로 인해 중괄호 한개만 있는 줄이 있어도 더 줄일 수가 없다.
- 가급적이면 축약 표현을 사용하면 좋다.
시간의 경우 10초는 10 seconds 대신 10s, 1분은 1 minutes 대신 1m으로 쓰는 등의 축약 표현이 지원된다.
축약 표현으로 쓰는 것이 훨씬 짧을것이다.
숫자의 경우 뒤에 0이 여러번 반복된다면, 로거리즘 표기법을 사용하자. 1000 -> 1e3, 10000 -> 1e4와 같이 사용하면 된다.
- 불필요한 띄어쓰기는 제거해도 된다.
이터니티 챌린지를 가리키는 ecX의 경우 붙여도, 띄워도 동작한다. 다만, 붙이는 쪽이 1글자 더 짧다.
비교연산자의 앞뒤에도 띄어쓰기를 제거할 수 있다. 문법 하이라이팅이 제대로 동작하지 않는 경우도 있지만, 문제 없이 동작한다.
- 이상, 이하보다 미만, 초과를 주로 사용하면 좋다.
<=, >=보다 <, >이 더 짧다.
우선 비교에 사용하는 게임 내의 모든 숫자는 정수로만 되어있기 때문에, x >= y는 x > y-1, x <= y는 x < y+1로 작성해도 된다.
혹은 큰 수의 경우, 오차가 이상 혹은 이하를 사용하는 것이 미만, 초과를 사용하는 것과 큰 차이가 없을 정도인 경우가 대부분이다.
예를 들어 1e5000 + 1과 1e5000을 비교하면, 1은 아무런 의미가 없는 차이이기 때문이다.
4. 샘플
처음부터 스크립트를 짜기에는 무리가 있으므로,샘플을 구해서 자신의 상황에 맞게 변경해서 사용하면, 훨씬 수월하게 진행할 수 있다.
https://discord.com/channels/351476683016241162/1053347773828829214 에서 스크립트 샘플을 구할 수 있다.