일단,
엔티티의 unit_number랑
https://lua-api.factorio.com/latest/LuaEntity.html#LuaEntity.unit_number
game.ticks_played
- 서버로 열었을 때, 서버브라우저에서 보이는 플레이타임, /editor에서 일시정지해도 이건 흘러감.
game.tick
- 게임 월드 내부 시간흐름
기차 ID는 깜빡하고 안해봄;
먼저 unit_number
어캐하냐면
유닛 깔고 지우고 저장하고 저장한 파일에서 level.dat파일 끄집어내고,
유닛 깔고 지우고 저장하고 저장한 파일에서 level.dat파일 끄집어내고,
해서 헥스에디터로 두 파일을 비교해서 유닛넘버 다음 등록 대기 번호가 되는 파일위치를 찾는다.
해봤더니 그냥 소리없이 오버플로우 해버리고 유닛넘버가 4인 녀석이 둘이 되었다.
This is universally unique for every entity that has one, for the lifetime of a whole game.
이라며? ㅋㅋㅋㅋㅋㅋㅋ
이번엔 플레이타임.
켜자마자 일시정지 걸려있는 헤드리스로 체크함.
응 9744
9744 !!! 물론 야금야금 시간을 흘린 level.dat파일 여러개 뽑아서 비교해서 찾는다.
00FFFFFF로 바꾸고
싱글에서 체크해봄.
걍 넘어감.
서버 브라우저에서 보면 이렇다.
game.ticks_played는 서버로 돌릴경우 오버플로우가 일어나려고 하는 game.ticks_played = 4294967295 이 되면 프리징 걸림;;;
싱글은 괜찮음. 이 위기의 순간이 오면 서버는 잠시 접고 싱글로 저 시간을 넘기면 됨.
세이브파일 날리려고 하자 경고하네. 실제플탐 1분도 안되는뎈ㅋㅋㅋ
이젠 game.tick해보자
2305? 헥스로 0109.
시간 좀 흘리고 저장하고, 좀 흘리고 저장하고 이런다음에 각각 level.dat뽑아서 비교한뒤 알맞는 0109를 찾음.
싱글에서
응 그냥 넘어감.
서버에선?
game.tick은 프리징 없음. 별일없고. 그냥 넘어감.
근데, game.tick을 사용해서 만든 스크립트 같은걸로 전후 비교하는 구문같은거 작성했으면 꼬이겠다.
기차는 안해봤다. 누가 해볼래
이러시는 이유가 있을거 아니에요
밑에 팩토리오 최대ID몇이냐 그래서 궁금해가지고...
아 생각해보니, 서버 저 프리징 시간이 오기전에 game.reset_time_played() 쓰면 game.ticks_played만 초기화된다.
그러면 멀티클레이어 할때 디스플레이 되는 시간도 같이 초기화됨???
ㅇㅇ