최근 수정 시각 : 2023-08-14 12:00:19

Antimatter Dimensions/오토메이터


파일:Antimatter_Dimension_main_logo.png
Ω 초반
∞ 무한 ∝ 무한 돌파
Δ 영원 시간 연구
Ψ 시간 팽창
Ϟ 리얼리티 오토메이터
셀레스티얼
기타 도전과제
도전
공략
모드 NG+++


1. 개요2. 스크립트 명세3. 글자 수 최적화 팁4. 샘플

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 에서 스크립트 샘플을 구할 수 있다.
[1] 1039번 리얼리티시 도달[2] 1~6이다. 0부터 시작하지 않으니 유의해야한다.[3] 앞에서 unlock을 해주지 않았다면, EC는 자동으로 해금하지만 딜레이션은 무한루프가 걸릴 수 있다.[4] 보통 설정을 바꾸면 자동으로 활성화되어, 굳이 쓸 일이 없는 설정이다.[5] 버그가 있는지 until이 있는 줄을 실행하는 중에 이벤트가 발생해야 제대로 인식된다.[6] 딜레이션 등의 해금에 사용된 TT는 제외된다.