본문 바로가기
  • 초부득3 - 어제보다 나은 내일을 위해
  • 꿈이 현실이 되는 날까지
TIL (반쯤은 일기)

TIL 21.12.01 슈퍼슬랩 [준]완성!

by 금의야행 2021. 12. 1.

 

❓오늘의 질문

우리 프로젝트에서 내가 겪은 기술적 챌린지 요소는?

 

1. 타입스크립트를 활용한 변수 타입 통제

 

게임을 제작하기에, 정말 많은 수의 변수가 게임 로직 진행을 위해 필요한데, 이를 타입스크립트 기능으로 각 변수에 타입을 줘서 통제하니, 잘못된 값이 들어가는 식의 오류등을 쉽게 찾을 수 있었다.

 

다만 많은 변수들을 한번에 관리하기 위해 객체 및 클래스 문법을 활용했는데 이 때문에 복잡해진 객체에 맞는 타입을 부여하는 과정에서 어려움을 느꼈음.

 

2. 게임 개발 그 자체.

 

처음에는 가볍게 생각했는데, 생각한 것보다 정말 고려할 요소가 많았다. 아이디어, 게임 로직, 그래픽 이 세 박자가 잘 어우러지게 개발하는 과정 자체가 도전적이었다.

 

 선형적으로 진행되는 게임 플레이 동안 각 시간대마다 표현되야 하는 요소가 바뀌고, 조작을 막거나 활성화하는 등의 통제부터, 극한의 상황에 의한 오류가 발생하지 않게 제한하는 등의 여러 과정들이 있었다. 

 

첫 2d 게임 개발인 만큼 캔버스란 기초적인 툴을 선택하여 학습 진입장벽을 낮추었는데, 캔버스의 단순한 구조가 간편하면서도 편의 기능이 부족했던 점에 의해 개발 양 자체가 오히려 증가하는 면도 있었다.

 

또한 소켓 io를 사용하는 멀티플레이어 게임인 폭탄 돌리기의 경우, 서버와 올바르게 통신하며 게임 정보가 각 플레이어들에게 공통되게 유지되게 하는 로직 구현이 도전적이었다. 

 

3. 리액트 재랜더링 통제

 

리액트 컴포넌트를 사용하는 게임이 아닌 이상에야 게임이 시작된 후 부터는 재랜더링이 게임 끝날 때 까지 필요가 없다. 

 

큰 문제는 아니었으나, useEffect, memo 등의 기능들로 재랜더링을 통제하여 게임 진행이 리액트 기능에 의해 방해되는 경험이 잦았고, 이를 극복했다.

 


😃삶 + 마무리 할 말

 

나는 행복합니다~

 

 

 

 

 

 

댓글