deterministic random. #66

Closed
opened 2018-03-28 03:27:30 +09:00 by Hide_D · 4 comments
Owner

'턴 수행을 그대로 리플레이 가능하게 하고자' 하는 목적으로 장수 턴 실행 시 random을 다음과 같이 적용

random_seed := hash(game_seed | generalID | year | month)

로 하고 이 값의 '31비트를 자른 값'을 mt_srand에 입력하는 방안.

game_seed는 내부에 숨겨져 보이지 않으므로, 게임 이용자는 랜덤 결과를 예측할 수 없음.

'턴 수행을 그대로 리플레이 가능하게 하고자' 하는 목적으로 장수 턴 실행 시 random을 다음과 같이 적용 random_seed := hash(game_seed | generalID | year | month) 로 하고 이 값의 '31비트를 자른 값'을 mt_srand에 입력하는 방안. game_seed는 내부에 숨겨져 보이지 않으므로, 게임 이용자는 랜덤 결과를 예측할 수 없음.
Author
Owner

mt_srand와 mt_rand의 설명에 따르자면,
PHP 버전에 따라 seed가 같더라도 mt_rand의 결과값이 ''항상 같다고 생각하지는 말라'' 라고 적혀있음.

별도의 HASH_DRBG 비슷한 물건의 세팅이 필요할지도.

mt_srand와 mt_rand의 설명에 따르자면, PHP 버전에 따라 seed가 같더라도 mt_rand의 결과값이 ''항상 같다고 생각하지는 말라'' 라고 적혀있음. 별도의 HASH_DRBG 비슷한 물건의 세팅이 필요할지도.
Author
Owner

문제라면 운영자가 결과값을 예측가능하다는 문제가 있는데...

random_seed에 sequence값을 추가로 넣고,

sequence값이 장수의 '턴 입력', '부대 탑승', '수비 켬끔', '내무부 값 변경', '인사부 값 변경', '설문 조사 입력', '전체 메시지 입력' 등에 따라 증가하도록 하면 됨. (턴 갱신은 제외)

이 경우 운영자가 예측할 수 있는 값은 많아봐야 최대 1분일 것으로 예상함.

문제라면 운영자가 결과값을 예측가능하다는 문제가 있는데... random_seed에 sequence값을 추가로 넣고, sequence값이 장수의 '턴 입력', '부대 탑승', '수비 켬끔', '내무부 값 변경', '인사부 값 변경', '설문 조사 입력', '전체 메시지 입력' 등에 따라 증가하도록 하면 됨. (턴 갱신은 제외) 이 경우 운영자가 예측할 수 있는 값은 많아봐야 최대 1분일 것으로 예상함.
Author
Owner

2차로 미룸

2차로 미룸
Author
Owner

#208 에서 모듈 구현 완료.

운영자 문제는 어차피 작정하면 못 이기는데 굳이 상관이 있나 하는 생각.

그냥 충분한 랜덤을 보장하되, 추후 replayer 같은걸 만들 때 에러가 잘 발생하지 않는 수준에서 마저 만들면 될 것으로.

#208 에서 모듈 구현 완료. 운영자 문제는 어차피 작정하면 못 이기는데 굳이 상관이 있나 하는 생각. 그냥 충분한 랜덤을 보장하되, 추후 replayer 같은걸 만들 때 에러가 잘 발생하지 않는 수준에서 마저 만들면 될 것으로.
Hide_D removed the due date 0001-01-01 2022-05-17 14:24:48 +09:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: devsam/core#66