728x90

게임 72

나만무 슬레이어즈 11

나만무EC2 서버와 RDS DB 연결하기EC2는 public / RDS는 private 인스턴스로 생성했다. - 보안 상의 이유단순히 EC2 터미널에 접속해서 mysql 서버를 여는 건 성공했다.mysql -u [계정] -p -h [DB엔드포인트] → 이 명령어 쓰면 연결된다.문제 : 우리는 로컬에서 작업을 해야한다. 로컬 작성 → 깃허브 업로드 → EC2 실행1차 해결 : vs code에서 ssh 연결로 vs code에서 제공하는 UI로 테이블 작성 등이 가능해졌다.문제 발생 : 결국 node.js 코드에서 CRUD를 하려면 mysql.connection에 성공해야한다. 이걸 어떻게 하냐2차 해결 : 결국 RDS가 private에 있기 때문에 로컬 서버에서 연결하기는 불가능하다. gitHub Actio..

Study/Project 2024.05.08

24.05.07 나만무

나만무EC2 서버와 RDS DB 연결하기EC2는 public / RDS는 private 인스턴스로 생성했다. - 보안 상의 이유단순히 EC2 터미널에 접속해서 mysql 서버를 여는 건 성공했다.mysql -u [계정] -p -h [DB엔드포인트] → 이 명령어 쓰면 연결된다.문제 : 우리는 로컬에서 작업을 해야한다. 로컬 작성 → 깃허브 업로드 → EC2 실행1차 해결 : vs code에서 ssh 연결로 vs code에서 제공하는 UI로 테이블 작성 등이 가능해졌다.문제 발생 : 결국 node.js 코드에서 CRUD를 하려면 mysql.connection에 성공해야한다. 이걸 어떻게 하냐2차 해결 : 결국 RDS가 private에 있기 때문에 로컬 서버에서 연결하기는 불가능하다. gitHub Actio..

나만무 슬레이어즈 10

나만무위치동기화어제 위치 동기화가 안되던 문제를 아침에 다시 보았다.위치를 이상하게 받아오고 이상하게 보간 해주고 있었다.Player의 위치를 확인해주었다. Player의 경우 Player의 객체가 움직이는게 아니라 Sled라고 하는 객체의 위치를 받아오게 하고 있었는데, 이 움직임이 잘 들어가고 잘 바뀌는지 확인을 해주었다.Sled의 위치를 옴겨주었음에도 다시 원 값으로 돌아오는 현상을 발견할 수 있었다.팀원과 이야기를 해보니 collider의 위치가 변경되고, sled model은 그 collider에 붙어 있다는 것을 알 수 있었다.collider의 위치로 위치 동기화를 진행함에 따라 문제를 해결할 수 있었다.yield return null → continuereturn null을 하면 한 프레임을..

Study/Project 2024.05.08

24.05.06 나만무

나만무위치동기화어제 위치 동기화가 안되던 문제를 아침에 다시 보았다.위치를 이상하게 받아오고 이상하게 보간 해주고 있었다.Player의 위치를 확인해주었다. Player의 경우 Player의 객체가 움직이는게 아니라 Sled라고 하는 객체의 위치를 받아오게 하고 있었는데, 이 움직임이 잘 들어가고 잘 바뀌는지 확인을 해주었다.Sled의 위치를 옴겨주었음에도 다시 원 값으로 돌아오는 현상을 발견할 수 있었다.팀원과 이야기를 해보니 collider의 위치가 변경되고, sled model은 그 collider에 붙어 있다는 것을 알 수 있었다.collider의 위치로 위치 동기화를 진행함에 따라 문제를 해결할 수 있었다.yield return null → continuereturn null을 하면 한 프레임을..

나만무 슬레이어즈 9

나만무문제. 패킷이 잘려서 json parsing이 안되는 상황게임을 진행하다가 서버에서 SyntaxError : Unexpected token가 뜨는 상황이 발생했다.서버의 로그를 확인해보니 패킷이 잘려있는 문제를 확인했다.가설 1. 클라이언트 문제가설 2. 서버 문제가설을 토대로 생각을 해보니 서버 문제라는 것을 찾을 수 있었다.클라이언트와 서버 연결을 하고 있는 TCP의 경우 네이글 알고리즘(Nagle’s Algorithm)에서 작은 패킷들을 모아서 전송하기 때문에 패킷이 뭉쳐서 서버에 들어왔다.기존 서버의 패킷 처리 방식에서는 뭉쳐있는 패킷을 받을 경우, 맨 앞의 데이터만 처리하고 이외의 데이터는 버리도록 코드를 작성했다. 그리고 이러한 스트림에 패킷이 잘려서 들어온 경우 대응이 불가능했다.해결f..

Study/Project 2024.05.04

24.05.04 나만무

나만무문제. 패킷이 잘려서 json parsing이 안되는 상황게임을 진행하다가 서버에서 SyntaxError : Unexpected token가 뜨는 상황이 발생했다.서버의 로그를 확인해보니 패킷이 잘려있는 문제를 확인했다.가설 1. 클라이언트 문제가설 2. 서버 문제가설을 토대로 생각을 해보니 서버 문제라는 것을 찾을 수 있었다.클라이언트와 서버 연결을 하고 있는 TCP의 경우 네이글 알고리즘(Nagle’s Algorithm)에서 작은 패킷들을 모아서 전송하기 때문에 패킷이 뭉쳐서 서버에 들어왔다.기존 서버의 패킷 처리 방식에서는 뭉쳐있는 패킷을 받을 경우, 맨 앞의 데이터만 처리하고 이외의 데이터는 버리도록 코드를 작성했다. 그리고 이러한 스트림에 패킷이 잘려서 들어온 경우 대응이 불가능했다.해결f..

나만무 슬레이어즈 8

나만무보외와 보간을 구현보외 - extrapolation 방법으로 보외를 구현했다.이를 위해서 서버에서 클라이언트로 오는 패킷의 변화를 줬다.서버의 시간을 주는 것을 추가했다.클라이언트의 시간을 구해서 받아온 서버의 시간의 차를 구했다.node.js에서는 ms단위를 쓰기 때문에 유니티에서 쓰기 위해 초단위로 바꿔주었다.구해온 시간을 통해서 외삽 제한 시간을 구했다.경과 시간이 외삽 제한 시간보다 작은 경우 위치를 계산해서 Slerp로 외삽해주었다., 크다면 서버에서 보내온 마지막 위치와 현재 위치를 고려하여 외삽한다.private void ExtrapolatePosition(){ Quaternion lastServerRotation = Quaternion.LookRotation(lastServerA..

Study/Project 2024.05.04

24.05.03 나만무

나만무보외와 보간을 구현보외 - extrapolation 방법으로 보외를 구현했다.이를 위해서 서버에서 클라이언트로 오는 패킷의 변화를 줬다.서버의 시간을 주는 것을 추가했다.클라이언트의 시간을 구해서 받아온 서버의 시간의 차를 구했다.node.js에서는 ms단위를 쓰기 때문에 유니티에서 쓰기 위해 초단위로 바꿔주었다.구해온 시간을 통해서 외삽 제한 시간을 구했다.경과 시간이 외삽 제한 시간보다 작은 경우 위치를 계산해서 Slerp로 외삽해주었다., 크다면 서버에서 보내온 마지막 위치와 현재 위치를 고려하여 외삽한다.private void ExtrapolatePosition(){ Quaternion lastServerRotation = Quaternion.LookRotation(lastServerA..

나만무 슬레이어즈7

나만무중간발표클라이언트 - 서버 host 방식으로 시연을 하고 코치님에게 피드백을 받았다.호스트 방식은 반응성이 떨어질 수 있기 때문에 레이싱에는 적합하지 않다.기존처럼 하나의 서버를 두고, 키 입력(위치, 속도, 가속도(방향))을 동기화 해라때문에 클라이언트 - 서버 host 방식에서 기존의 클라이언트 - 서버 방식으로 재 변경하였다. 서버 쪽도 SendToHost() 등 호스트 방식을 위해서 추가했던 코드를 전부 삭제했다.클라이언트 측과 프로토콜 재정의 후, 형식에 맞게 함수와 패킷 구조등을 수정했다.Packet의 멤버 변수 id → from으로 변경했다.KeyPacket에서 key → position, velocity, acceleration, time을 전달하게 변경했다.서버 쪽에서 클라이언트의 ..

Study/Project 2024.05.03
728x90