피드로 돌아가기
A 3.7 KB Othello Engine: Bitboards in Rust, Raw WASM, No wasm-bindgen
Dev.toDev.to
Frontend

Rust Bitboard와 Raw WASM 기반 3.7KB 초경량 오델로 엔진 구현

A 3.7 KB Othello Engine: Bitboards in Rust, Raw WASM, No wasm-bindgen

SEN LLC2026년 4월 23일10advanced

Context

브라우저 환경에서 실행 가능한 고성능 게임 엔진 구현을 위해 WASM의 런타임 오버헤드 최소화 필요. 기존 wasm-bindgen의 JS Glue Code 생성으로 인한 바이너리 크기 증가 문제를 해결하고자 함.

Technical Solution

  • Bitboard 설계를 통한 게임 상태의 u64 데이터 타입 단일화로 메모리 사용량 최적화
  • Shift 및 Bitwise AND 연산 기반의 7라인 로직을 통한 분기 없는 Legal Move 생성
  • no_std 및 zero heap allocation 적용을 통한 Rust 표준 라이브러리 의존성 제거
  • wasm-bindgen을 배제한 Raw WebAssembly.instantiate 호출로 불필요한 JS Glue Code 제거
  • NOT_A_FILE 및 NOT_H_FILE 마스크 설계를 통한 Bit Shift 시 열 바뀜(Column Wraparound) 현상 방지
  • cfg_attr 설정을 통한 no_std 브라우저 빌드와 std 기반 유닛 테스트 환경의 이원화 구조 설계

1. 런타임 오버헤드가 치명적인 환경에서 no_std 및 panic=abort 설정 검토

2. 반복적인 조건문 대신 Bitmask와 Bitwise 연산을 활용한 분기 제거 가능성 분석

3. 소규모 WASM 모듈의 경우 Glue Code 생성 도구 없이 Raw API 사용을 통한 크기 최적화 시도

4. #[cfg(not(test))]를 활용하여 최적화 빌드와 테스트 환경의 독립적 구성

원문 읽기