Skip to main content

게임

React로 게임 프로토타이핑하기

액션, 실시간 반응이 비교적 덜 중요하고, 상태들의 이산적인 전환으로 설명될 수 있는 종류의 게임을 만든다면 웹 프론트엔드 도구… 그러니까 React 같은 걸로, SPA를 만들듯이 프로토타이핑하는 게 괜찮을 수 있다.

이터레이션 속도

개인적으로는 React로 게임을 프로토타이핑하는 게, 대충 '프로그래밍할 수 있는 페이퍼 프로토타이핑' 비슷한 것 같다. 페이퍼 프로토타이핑은 유용하지만, 다뤄야 할 데이터가 많고 상태 변환이 잦아질수록 사람이 대응하기 어렵다…. 카드 한장한장 쓰거나 출력하는 것도 일이다. React로, html과 js, css를 구사해 그런 상태 변환을 만드는 건 충분히 빠른 작업이고 양적으로 뭐가 많아야 하는 상황에 더 적합하다.

대안들

게임엔진들은 느리다.

React는 낡았다고 해서 기술적 힙함을 추구하며 svelte를 써 봤는데 상태 관리가 더 쉽게 느껴지거나 하지는 않았다. 힙하대서 tauri도 써 봤는데, rust는 요구사항이 3초마다 바뀌는 상황에서 적합한 언어는 아니다.(타입스크립트도 내 생각에는 부적절하다.)

페이퍼 프로토타이핑은, 계산과 판단을 사람이 해야 한다는 점에서… 그런 일이 많아질수록 웹개발적인 접근이 좀 나은 것 같다.

어려운 점

웹 프로그래밍 특유의 DOM, 그에 수반하는 React의 상태 관리 때문에 골치아플 수 있다.(나는 프로그래머가 아니다.) 뭐 근데 대충 해 보니까 UI랄 것을 띄우려면 이 정도는 감수해야 하나 싶기도? 사실 나는 콘솔 어플리케이션으로 게임 만드는 것도 충분히 할 수 있는 일이라고 생각한다.

프로토타입이 성공적으로 작동해서 실제 출시할 프로젝트가 되었을 때, 게임 엔진을 선택했으면 소프트웨어 프로토타입이 개발 버전으로 바로 이어지는 것이 이상하지 않지만… React로 프로토타입한 걸 들고 게임을 출시까지 가져간다고 한다면…… 아주 많은 각오가 필요할 것이다.

최근 겪는 어려움

전에는 별로 생각할 필요 없이 create-react-app 하면 이 용도로는 거의 충분했다고 생각하는데, 이게 퇴역하면서 공식적으로 제시된 다른 선택지들이 백엔드까지 포함하고, SSR을 자연스럽게 섞은 것들이 많아서(웹 개발쪽 트렌드인 것 같다) 공식 선택지(Next.js, React Router v7) 중 하나를 골라서 진행하면 이 용도로 작업하기에 최적은 아니게 되었다고 생각한다. 최근에 해 본 결과, vite로 설치하고, react-router를 라이브러리로 설치해 주는 정도가 무난했던 것 같다. (react-router의 용도는 unity로 치자면 개발용 scene을 여러개 만드는 용도에 대응시킬 수 있을 것 같다)