[Unity] 오픈 소스 게임 서버 Nakama를 알아보자
Unity/Network 2024. 10. 24. 00:16[Unity] 오픈 소스 게임 서버 Nakama를 알아보자

🤨Nakama?🔗공식 깃허브 저장소 GitHub - heroiclabs/nakama: Distributed server for social and realtime games and apps.Distributed server for social and realtime games and apps. - heroiclabs/nakamagithub.comNakama는 소셜, 실시간 게임을 위한 서버다.클라우드 서버가 아니고 오픈 소스로 다 구축된 서버 소스를 제공하고 내가 셀프 호스팅으로 서버를 구축하는 것이다. (밀키트 같은 느낌?)서버 소스뿐만 아니라 Unity 클라이언트 패키지도 준비돼있다. 사용자 계정 관리, 친구, 그룹(길드 같은), 파티, 매치, 리더보드 등등 다양한 기능들이 구비돼있다. 아니 이런..

[Unity] HTTP REST api 통신 모듈 구현
Unity/Network 2023. 2. 14. 10:33[Unity] HTTP REST api 통신 모듈 구현

개요사내에 딱 정해진 REST api 통신 모듈이 없다보니직접 만들고 다음 프로젝트가 진행될때마다겪었던 시행착오들을 상기하며  모듈을 보완, 발전 시키고 있다. 이제는 틀이 꽤 잡힌것 같아서한번 기록을 해둘려고 한다.  본문먼저 들어가기에 앞서,이 모듈은 Json을 쉽게 입출력 하기 위해Newtonsoft.Json 패키지를 사용하였다. 이 패키지에 대한 설명은 아래 글에 기록해뒀다. [Unity] JSON을 딕셔너리처럼 입출력하기Unity의 JsonUtility를 사용하다보면 커스텀 클래스를 쉽게 JSON으로 파싱할 수 있지만 원하는 변수 몇개만 JSON으로 파싱해주는 기능이나, 파싱 이후에 변수룰 추가, 삭제, 수정을 할 수 있게해주는 기trialdeveloper.tistory.com 먼저 Server..

[Unity] TCP서버 위치 동기화 데드 레커닝 구현
Unity/Network 2023. 1. 9. 20:22[Unity] TCP서버 위치 동기화 데드 레커닝 구현

개요최근 작업중인 프로젝트에서 실시간 pvp모드를 개발하고 있었다.프로토타입은 포톤을 이용해서 동기화를 진행한 후 플레이를 해봤고,이제 회사의 TCP서버로 이전해 달라는 지시가 내려와 작업을 진행하였다. 포톤의 경우에는 TransformView 컴포넌트가 있어서위치동기화의 경우 아주 쉽게 구현할 수 있는데 직접 위치 동기화를 구현할려면 아무리 정보를 모아서 한번에 보낸다 해도매 프레임 패킷을 보내는거는 무리가 있다. 그래서 데드레커닝 기법을 활용하여 위치 동기화를 구현한 사례를 적는다.  본문마우스로 이동하는게임이었다면 꽤 간단한 문제였을것이다.예를들어 LOL이라면유저가 마우스로 목적지를 클릭하면 그때 한번만 출발지와 목적지를 동기화 하고양측 클라이언트는 결과가 같다는 보장이있는 길찾기 알고리즘을 사용하..

[Unity] TCP통신에서 패킷이 누락되는듯한 문제 수정
Unity/TroubleShooting 2022. 10. 18. 10:10[Unity] TCP통신에서 패킷이 누락되는듯한 문제 수정

개요 프로젝트에서 PVP구현을 위해 서버통신을 작업하던 중 위치 동기화같이 빠르게 주고받아야 하는 데이터의 패킷들이 일부 누락되는것 처럼 보이는 문제가 발생했다. (서버는 자바스크립트) 완벽해결은 아니지만 해결방법을 기록한다. 문제 위 설명대로 패킷이 누락되는것처럼 A클라이언트에서 보낸 패킷 일부가 B클라이언트에 도착하지 않았고, 서버쪽에서 디버그를 해봐도 서버에조차 패킷이 도착하지 않았다. 처음엔 통신문제인줄 알아서 여러시도를 해봤지만 전부 아니었고 답은 네이글 알고리즘 때문이었다. 네이글 알고리즘이란 간단히 이해한대로 적어보면 패킷이 만들어지는대로 보내지 않고 패킷을 버퍼에 보관하다가 ACK를 수신하면 나머지 패킷들을 한번에 전송해줘서 결론적으로는 통신량을 줄이는 방법이다. 해결 사실 명쾌한 해결은 ..

image