https://arca.live/b/textgame/68541605

https://arca.live/b/textgame/69712330 

이거 대충 완료했음.


1. 어케했노 시발놈아

딱히 실행기(에뮤에라)를 새로 만들거나 최적화한건 아니고, 걍 당장 안 쓰는 ERB를 로딩 안하고 있다가 호출될 때 불러오도록 함.

에뮤에라의 로딩속도와 메모리는 최적화를 전혀 신경안쓴 것도 있지만, '모든 ERB'를 실행시점에 메모리에 올리는 구조가 가장 크다.

메가텐 한번 실행해서 거기 있는 캐릭 수백명의 구상을 다 볼 게 아니잖아? 근데 에뮤에라는 수백명분의 구상을 일단 무조건 메모리에 다 올리고 시작함.

그러니 게임이 커질수록 로딩이 느려질 수 밖에 없는 거고.


그래서 초기 로딩에서 제외시킬 파일들을 폴더 단위로 설정할 수 있게 하고, 이 파일들은 유저가 호출하는 시점에 로딩되도록 코드를 뜯어고쳤음.


대충 구상, 아이템, 스킬, 의뢰, 전용이벤트, 의상을 초기 로딩에서 제외시킨 결과. 메모리도 대충 저 비율만큼 절약됨.

게임을 돌려보면 조교나 뭐 그런거 할때 해당 캐릭터 구상파일을 실시간으로 읽어오기 때문에 조금씩 렉이 걸림.

이론상으로는 모든 erb를 다 초기로딩에서 제외해도 돌아는 가는데, 그러면 시작할 때부터 실시간 로딩하느라 게임이 뚝뚝 끊기지 않을까...? 그렇게는 안해봐서 모르겠다.


2. 만들었으면 안내놓고 뭐하노


암호 없음. 받아서 메가텐 폴더에 넣고 이 실행기로 돌리면 됨.

메가텐 rev143 한글화 통합본+구상 기준으로 설정되어 있음.


최초 실행시에 지연로딩용 테이블을 생성하기 때문에 적용은 그 다음번 실행때부터 된다.

혹시 안되면 도움말->설정->시스템에서 '지연 로딩 사용'이 체크되어 있는지 확인하자. 체크 안되어 있으면 체크하고 저장하고 재시작하면 됨.

왜 설정이 한글이냐고 하면 내가 이 부분만 한글화해서 그럼. 

원래 하는 김에 다 하려고 했는데 너무 많은데다가 번역기 돌려도 뭔 소린지 알 수 없는 설정이 많아서 포기했음.

참고로 '사용하는 동아시아 언어'가 언어설정인데, 원래 인코딩 체크용으로 쓰는 것 같은데 귀찮아서 걍 메뉴 한글여부를 저 값에 연동했음.


혹시 메뉴 한글로 안뜨면 저 '사용하는 동아시아 언어' 부분 확인하고 저게 한글인데도 안뜨면 댓글로 알려주셈.


3. 이거 믿어도 됨?

기본적인 조교와 전투까지는 에러 없이 돌아가는 걸 확인했음. 

근데 나도 많이 돌려본거 아니니까 보장은 못함. 님들이 베타테스터 해줘야함.


4. 다른 에라에서도 쓸 수 있음?

기존 에뮤에라의 문법을 수정한 게 아니므로 이론상으로는 emuera v1.824로 돌릴 수 있는 모든 에라에서 동작함.

다만 지연로딩 설정이 메가텐에 맞춰져 있으므로 고쳐야 함.

설정 파일은 lazyloading.cfg고 여기에 ERB폴더로부터의 상대경로를 적으면 됨.


다만 TW같은건 아예 실행기 자체가 개조버전인 것 같던데 난 그쪽은 아는 게 전혀 없어서 잘 모르겠음. 


P.S> 깜빡했는데 처음 실행할때 '~~~~함수에 #FUNCTION이 정의되어 있어 해당 파일을 제외합니다.' 어쩌고 하는 메세지가 뜨는 건 에러 아님. 무시해도 된다.

P.S2> 설정을 바꾸고 저장한 후에 다시 설정을 열어보면 바뀐 게 적용이 안 되어있는데 그건 에뮤에라에 원래 있는 버그인 듯. 저장은 정상적으로 되니까 다시 실행하면 된다. 저 버그 원인 찾느라 두 시간 넘게 디버거 붙잡고 씨름했는데 못찾겠더라 ㅅㅂ