산성비 게임 아이템 구현

나만무 20일차 TIL

정글일지 58

날짜

2023년 6월 20일 화요일

계획

  • 타이핑 게임 멀티플레이위한 프론트 구현하기
  • 제한시간 설정하기
  • 하강 속도 증가 기능 구현
  • 아이템에 관한 프로퍼티 설정
  • Colyseus로 타이핑 게임 룸 구현
  • 중복된 키워드 출제 방지

결과

  • 타이핑 게임의 Reducer를 분리하였다. 전체 코드가 알맞게 분할되어 관리하고 보기 편해졌다.
  • 각 키워드에 관해 아이템을 설정할 프로퍼티를 구성해놨다.
  • 중복 출제 방지는 현재 불가능하다.

TIL

Reducer

리액트에서 컴포넌트를 통하여 다양한 기능들을 모듈화한다. 이 기능 내에서도 작게 분할하여 Reducer로 만들 수 있다. 예를 들어 내가 구현하는 산성비 게임은 리스트에서 단어를 골라 위에서 떨어뜨리는 기능, 유저가 입력하면 키워드가 사라지는 기능, 게임 창을 켜는 기능 등이 리듀서로 되어있다. 컴포넌트에는 ‘키워드 리스트에서 하나를 꺼내서 어떤 리듀서를 호출한다.’ 라는 식으로 구성이 되어있다. 유지, 보수의 장점은 확실하다.

CI/CD

Continuous Integration/Continuous Delivery 의 약자이다. 애플리케이션 개발 단계를 자동화하여 애플리케이션을 더욱 짧은 주리고 고객에게 제공하는 것이다.

Mediapipe

Mediapipe를 typescript로 구현하여도 결국 image transforming을 구글 서버에서 해주기 때문에 굉장히 느리다. 백엔드에 서버를 구현하여 우리 서버에서 변환하도록 구현해봐야겠다.

회고

오늘 팀원이 웹캠으로 받은 비디오스트림을 아바타로 변환하는데 성공하였다. 받은 스트림을 mediapipe를 통해 canvas를 그리고 그것들을 겹쳐서 출력하는 방식이다. 정말 기뻤지만, 너무 느려서 다른 방법을 강구해야 한다. 그래도 되긴 하니 다행이긴하다. 오늘 코치님이 오셨다. 나는 Skyoffice에서 whiteboard 요소를 다 제거하고 내 게임을 연결하느라 이것저것 건드려서 작동이 안되는 상태였다. 물론 우리 레포의 main 브랜치를 pull하면 되긴 하지만.. 그 모습을 보신 코치님이 여러 마디 하셨다. 30년 전의 개발자들이 일하는 방식으로 하고 있다고.. 깃허브의 브랜치를 자주 이용해서 머지하고, 되돌리고, 저장하고, 끊임없이 조정해야 하며 생각할 시간에 가지고 와서 직접 해보고 안되면 버리고 다시 시작해야 한다고 하셨다. 이전에 우리 슬랙에 하급개발자와 Elite 개발자의 차이에 관해 여러 말들을 말씀해주셨다. 2021년에 구글 클라우드에서 발간한 보고서에 의하면 초급과 고급은 deploy(배포)가 973배 차이가 나고, 걸리는 시간은 6570배 라고 하셨다. 그 이외에도 충격적인 지표들에 대해 많이 보여주셨는데 잠깐 잊었는데 다시 말씀해주셨다. 찾아 보실분들은 구글에 state of devops 2021 검색하시면 된다. 그 이외에도 터진 서버를 1시간만에 복구하는 것과 1초안에 복구하는 것의 차이에 대해 물어보셨다. 뭐 AI로 해놓나? 생각이 들었는데 서버 이상을 감지하면 다른 서버로 바로 돌리도록 해놓으면 되는 것이라고 하셨다. 개발자가 그냥 코딩하고 알고리즘 잘 풀면 되는게 아니구나. 갈 길 참 멀다. 좋은 말씀 많이 들어서 그래도 다행이다.