5월, 2022의 게시물 표시

자율 프로젝트 end

이미지
시작 당시 사용하려 했던 기술을 사용해서 웹게임을 구현했고, 3일간 싱글게임 약 400회 멀티게임 약 250회가 플레이 되었다. 애시당초 구현하려던 충돌 멀티엔진은 실패 했지만 문서화나 사람들의 플레이 후기가 썩 괜찮았던 만족스러운 프로젝트 시작 때 사용하려 했던 기술들에 대해 다시 한번 짚으려고 한다.  webSocket 과 STOMP  컨트롤러에서 어노테이션으로 간단하게 연결가능 했으며 sub한 유저들에게 pub 해준다 라는 다소 난해한 설명과 달리 http 요청과 흡사하게 사용할 수 있었던 것 같다. 해당 기능으로 다른 유저의 방 접속 여부, ready 여부, 움직임 등을 공유해서 멀티 플레잉을 구현했으며 채팅과 달리 키입력을 모두 주고 받았음에도 동시에 5명 정도는 매우 매끄럽게 통신이 가능했다. 물론 규모가 커지면 내부 simplebroker를 외부 브로커로 적용 시키고, 서버를 따로 두는 등의 노력을 해야한다.  + 소켓이 연결 및 해제될 때 중간 중간 잡아주는 ChannelInterceptor 가 있는데, 해당 부분에서 메세징 보내는걸 몇번이나 실패했다.  gradle  시작할 때 건들고 이후 몇번 implementation 을 추가한 것 이외에는 별로 접해보지 않았다. 빌드 속도나 편리성에서 사실 maven 보다 월등한 점은 모르겠다. 다만 eclipse 기준으로 import 해오는 방식이 굉장히 복잡하고 문제가 발생할 여지가 많은 것 같은 기분, 이름이 겹치기만 해도 프로젝트를 자바프로젝트로 인식 하지 못하는 문제가 존재한다. 이번에 이를 겪으며 트러블 슈팅한 경험은 다행. 이클립스에서 import할 때 여기 이름이 일치하는지도 살펴보자 Redis Redis repository 로 JPA 와 비슷하게 사용하였다.  save()를 이용하여 저장할 경우 데이터가 hash로 저장되며 이때의 key는 "Object:id" 의 형태가 된다. 우리의 경우 Access 라는 객체에 sessionId를 @id로 저장했기 때문에 "a