피드로 돌아가기
Hacker NewsBackend
원문 읽기
25MHz CPU에서도 매끄러운 교통 시뮬레이션을 구현한 초경량 설계 전략
How Pizza Tycoon simulated traffic on a 25 MHz CPU
AI 요약
Context
현대적 설계 방식인 Pathfinding과 Collision Detection 도입 시 시스템 복잡도 급증. 공유 락(Shared Locking) 기반의 타일 점유 방식 사용으로 인한 동기화 오버헤드 발생. 저사양 하드웨어 환경에 부적합한 과도한 CPU 자원 소모 문제.
Technical Solution
- 경로 탐색 로직을 제거하고 각 Road Tile에 주행 방향 정보를 내장한 상태 기반 이동 방식
- 픽셀 단위 이동은 매 틱(Tick) 수행하되 타일 경계 판단 로직은 1/16 주기로 실행하는 연산 분산 전략
- 차량별 Progress Counter에 랜덤 값을 부여하여 타일 경계 체크 시점이 겹치지 않게 분산하는 부하 분산 설계
- 차량 방향 정보를 우선 비교하여 충돌 가능성이 없는 쌍을 즉시 제외하는 Early-exit 기반의 $O(n^2)$ 충돌 검사 최적화
- 충돌 발생 시 즉시 멈춤 대신 10틱의 대기 시간을 부여하여 자연스러운 정체 현상을 구현하는 단순 대기 큐 방식
- 화면 밖으로 나간 차량을 반대 방향의 새 차량으로 즉시 대체하는 순환형 스폰(Spawn) 메커니즘
Impact
- 25MHz CPU 환경에서 구동 가능한 수준의 연산 최적화 달성
- 타일 경계 로직 실행 빈도를 1/16로 감소시켜 CPU 부하 절감
- 10틱의 대기 카운터를 통한 교통 정체 시뮬레이션 구현
Key Takeaway
모든 문제를 정교한 알고리즘으로 해결하기보다 도메인 제약 사항(일방통행 도로 등)을 설계에 반영하여 계산 복잡도를 획기적으로 낮추는 단순함의 미학이 중요함.
실천 포인트
성능 제약이 극심한 환경에서는 정밀한 물리 시뮬레이션보다 시각적 설득력이 있는 단순화된 상태 머신 설계를 우선 검토할 것