Tickline: 엔진 비종속 결정론 시뮬레이션 코어
서버 권위 시뮬레이션을 전제로 순수 C# 코어를 Unity에서 분리하고, 시드 기반 리플레이 해시와 스펙 재현 테스트로 결정론을 검증했다.
- 역할
- 설계 · 구현 (단독)
- 기술
- C# · Unity 6 (그레이박스) · NUnit · Mermaid
- 0
- 코어의 float · double 사용
- 29
- EditMode 테스트
- 104
- 근거가 붙은 결정 로그 항목
육각 타일 위에서 유닛과 플레이어가 모두 속도를 가진 타임라인 엔티티로 움직이는 턴제 전술 규칙을, 엔진 참조 없는 순수 C# 코어(3,080줄)로 구현했습니다. 모든 판정이 정수·결정론이라 같은 시드면 같은 로그 해시가 나오고, 기획서의 시야 수치가 그대로 테스트가 됩니다.
상황
규칙을 서버가 판정하고 클라이언트는 재생만 하는 구조를 염두에 두고, 어떤 플랫폼에서 돌려도 같은 결과가 나오는 코어가 먼저 필요했습니다.
한 일
- 01
엔진 비종속 코어
어셈블리 정의에 엔진 참조를 끊고 정수 연산만 썼습니다. 난수는 xorshift 시드 1종으로 덱 셔플에만 쓰여 '무작위는 드로우뿐'이라는 규칙이 코드로 강제됩니다.
- 02
결정론 검증
이벤트 로그를 FNV-1a 64로 접은 리플레이 해시를 두고, 같은 시드로 두 매치를 자동 플레이어로 완주시켜 해시와 로그 길이가 일치하는지 테스트합니다. 정수 supercover 시야 계산은 기획서의 27/91, 33/91 같은 수치를 그대로 재현합니다.
- 03
예고 = 실행
밀기 미리보기와 실행이 같은 함수를 공유해 완전 정보 예고가 어긋나지 않음을 테스트로 고정했고, 규칙 토글로 A/B, 활성화당 소요 시간을 jsonl로 적재하는 계측, 헤드리스 배치 스크린샷을 넣었습니다.
- 04
결정 로그
결정 104건을 번호·날짜·근거(다관점 분석 · 교차검증 · 악용검증)와 함께 표로 남기고, 번복은 취소선과 새 번호로 처리했습니다. 효과 DSL은 문서 스펙까지 작성했고 코어에는 동사 4종만 구현했습니다.
결과
- 순수 C# 코어 14파일 3,080줄, NUnit 테스트 29건, 그레이박스 1v1 핫시트 프로토타입.
- 설계 의사결정을 추적 가능하게 기록하는 습관의 증거.
정직하게 적어 두는 것
- 개인 프로젝트이며 저장소는 비공개입니다. 규칙·수치 전체는 공개하지 않습니다.