Rust로 웹 테트리스 구현하기

[원본 링크]

https://github.com/myyrakle/rustetris
Rust Yew.rs, HTML 캔버스, 웹어셈블리만을 사용해서 테트리스를 구현했다.
스타일은 tailwind만 조금 사용했다. 편하긴 하더라.

들어가기
https://tetris.myyrakle.com/
조작키
좌우이동: 방향키
하드드롭: 스페이스바
소프트드롭: 방향키 아래
회전 시계방향: x
회전 반시계방향: z
회전 180도: a
홀드: 쉬프트

플레이영상

구현해야할거

  1. 콤보시스템

  2. SRS 시스템 (벽치기, 티스핀 등)

  3. 메세지 띄우기? (Optional) (시작, 종료 메세지, 콤보, 티스핀, 테트리스, PC 등)

  4. 고스트 구현 (드랍될 위치 미리보기)

  5. 멀티플레이 모드로 재구현



개선할거

  1. 구린 조작감

  2. 렌더링 개선 (webgl, request_animation 사용하도록 바꿔야할듯)

  3. 디자인

  4. 포커스 잘 맞추기 (key event handling을 위함)

  5. 진입시에 렌더링시키기 (yew에서 onload 관련 이슈로 교착상태)






소감

yew.rs는 아직 프로덕션 레벨이 아니다. 불편한 것도 불편한건데 치명적인 잔버그가 너무 많다... 특히 함수형 컴포넌트가 더 그렇다.
게다가 web_sys를 통해 웹어셈블리로 직접 작업해야할 경우가 많았다.