Rust로 웹 테트리스 구현하기
https://github.com/myyrakle/rustetris
Rust Yew.rs, HTML 캔버스, 웹어셈블리만을 사용해서 테트리스를 구현했다.
스타일은 tailwind만 조금 사용했다. 편하긴 하더라.
들어가기
https://tetris.myyrakle.com/
조작키
좌우이동: 방향키
하드드롭: 스페이스바
소프트드롭: 방향키 아래
회전 시계방향: x
회전 반시계방향: z
회전 180도: a
홀드: 쉬프트
플레이영상
구현해야할거
-
콤보시스템
-
SRS 시스템 (벽치기, 티스핀 등)
-
메세지 띄우기? (Optional) (시작, 종료 메세지, 콤보, 티스핀, 테트리스, PC 등)
-
고스트 구현 (드랍될 위치 미리보기)
-
멀티플레이 모드로 재구현
개선할거
-
구린 조작감
-
렌더링 개선 (webgl, request_animation 사용하도록 바꿔야할듯)
-
디자인
-
포커스 잘 맞추기 (key event handling을 위함)
-
진입시에 렌더링시키기 (yew에서 onload 관련 이슈로 교착상태)
소감
yew.rs는 아직 프로덕션 레벨이 아니다. 불편한 것도 불편한건데 치명적인 잔버그가 너무 많다... 특히 함수형 컴포넌트가 더 그렇다.
게다가 web_sys를 통해 웹어셈블리로 직접 작업해야할 경우가 많았다.