11월 4일 패치 노트 (10) — 새 Rust 엔진 준비: 물 계산을 먼저 옮겼어요

웹·앱·PC·서버에서 함께 쓸 Rust 엔진을 지금 게임 옆에서 만들기 시작했어요. 첫 부품은 물 계산이에요. 결과는 지금과 똑같고 계산은 2.5~5배 빨라요. 이번 배포에서는 아직 꺼 둔 상태라 게임은 그대로예요.

  • 패치 노트
  • 엔진
  • 성능
  • 물
  • 교실

한눈에 보기

나중에 안드로이드 앱, PC, 웹을 모두 하나의 엔진으로 만들기 위해, 게임의 핵심 계산을 Rust로 옮기는 작업을 시작했어요. 지금 게임은 그대로 운영하면서, 부품을 하나씩 옮기고 결과가 똑같은지 확인한 다음에만 바꿔 끼워요.

첫 부품은 물 계산이에요. 브라우저에서는 WebAssembly로, 교실 서버에서는 Node 안에서 돌아가요.

BEFORE / AFTER

같은 물을 흘려서 TypeScript(이전)와 Rust(새 엔진)로 계산 시간을 쟀어요. 물이 흐르는 결과는 한 칸, 한 순서까지 똑같아요.

물 계산 시간 비교: 교실 서버에서 한 번 계산이 25.1 ms에서 5.0 ms로, 브라우저에서 물 20만 칸일 때 한 번 갱신이 3.0 ms에서 1.1 ms로, 저장된 교실 다시 열기가 86 ms에서 35 ms로 줄어든 막대 그래프

이번에 달라진 점

  • 아직은 꺼져 있어요. 이번 배포로 게임에서 달라지는 건 없어요. 문제가 없는지 확인한 다음 단계적으로 켜요.
  • 결과는 똑같아요. 무작위로 만든 세계 수십 개에서 두 엔진이 같은 칸을 같은 순서로 바꾸는지 매번 자동으로 검사해요. 반 블록·계단·원형 블록 안의 물, 가구, 들판 이동, 교실 저장과 초기화까지 포함해요.
  • 문제가 생기면 자동으로 원래대로. 새 엔진에서 오류가 나면 그 게임(또는 그 교실)만 바로 기존 계산으로 돌아가고, 물은 멈추지 않고 계속 흘러요.
  • 교실을 다시 열 때 더 빨라졌어요. 블록 모양별 물막이 계산을 미리 표로 만들어 둬서, 큰 교실을 다시 여는 시간이 줄었어요.

앞으로

  1. Rust 물 계산을 기본으로 켜기
  2. 블록 화면 만들기(메시)와 캐릭터 물리를 차례로 옮기기
  3. 같은 엔진으로 안드로이드 앱 만들기 (터치 조작, 저사양~최신 폰 그래픽 단계)