728x90

레이싱 20

나만무 슬레이어즈 22

나만무폴리싱 위주timer 크기를 조정했다.속도계 배경 추가하고, 글씨 흰색으로 변경했다.리타이어 인원 - 게임 결과에 표시되도록 추가게임 도중에 클라이언트가 disconnect 되면 broadcast가 먹통되던 것 수정PlayerDisconnect() : socket이 속한 플레이어 리스트에서 플레이어 삭제하고, 다른 플레이어들에게 알린다종료 카운트다운이 끝난 직후 완주하면 골인 처리가 되는 상황gameRoomList에 state를 추가하고, 게임 진행 상황을 저장했다.GameStartCountDown 과 함께 state = true로 변경했다.GameEnd 와 함께 state = false로 변경했다.PlayerGoal : room.state == true 인 경우에만 Goal 처리가 가능하도록 조건..

Study/Project 2024.05.20

나만무 슬레이어즈 21

나만무 서버에서 안쓰는 함수들을 정리했다. 인게임 UI 글씨들이 배경과 같은 색이여서 가시성이 좋지 않아 검정색으로 수정했다. 속도가 100 이상일 때, Speed UI의 색상을 빨간색으로 변화 시키는 코드를 추가했다. 매칭이 두 번 안 눌리게 수정했다. 한글 폰트가 깨지는 문제.한글 폰트의 사이즈를 줄여 해결했다. 체크 포인트 너비가 얇아서 다른 사람이 길게 Position이 이동되면 체크포인트를 넘어가는 문제체크포인트의 너비를 1→7로 수정했다. 사운드 에셋을 찾고 있다.현재 불꽃의 땅 무스펠하임이 좋아보인다.

Study/Project 2024.05.18

24.05.17 나만무

나만무서버에서 안쓰는 함수들을 정리했다. 인게임 UI 글씨들이 배경과 같은 색이여서 가시성이 좋지 않아 검정색으로 수정했다. 속도가 100 이상일 때, Speed UI의 색상을 빨간색으로 변화 시키는 코드를 추가했다. 매칭이 두 번 안 눌리게 수정했다. 한글 폰트가 깨지는 문제.한글 폰트의 사이즈를 줄여 해결했다. 체크 포인트 너비가 얇아서 다른 사람이 길게 Position이 이동되면 체크포인트를 넘어가는 문제체크포인트의 너비를 1→7로 수정했다. 사운드 에셋을 찾고 있다.현재 불꽃의 땅 무스펠하임이 좋아보인다.

나만무 슬레이어즈 20

나만무GameEnd UI - 시간 출력 관련TimeSpan.FromMilliseconds 을 이용해 ms → mm:ss:ms 형식으로 변환했다Packet id → nickname 으로 수정 완료클라이언트에서 불필요한 패킷을 수정하는 과정에서 서버와의 연결하는 패킷의 수정을 해야했다.InGame내에서 더이상 id를 사용하지 않기 때문에 nickname으로 수정하는 과정을 거쳤다.DB Table 정리 → 사용하지 않는 Column 정리, name → nickname으로 변경했다.닉네임 변경하고 게임에 바로 접속했을 때, socket을 찾지 못했던 버그전의 닉네임으로 socket에 등록되어 있었기 때문에 발생한 버그였다.setname 했을 때 list의 key와 socket name을 변경해주었다.

Study/Project 2024.05.16

나만무 슬레이어즈 13

나만무서버 속도 확인서버에서 패킷을 받아오고 처리하는 속도가 느릴수도 있겠다라는 의견이 있어서, 속도가 느리면 최적화를 해야하기 때문에 속도를 확인하는 과정을 거쳤다.처음에는 Date.now 를 사용해서 ms로 계산을 했는데, 1ms에서 0ms가 나오는 것을 확인했다.좀 더 정확한 측정을 위해서 ns 단위로 측정을 했다. ns 단위로 측정을 해보니 평균 300000ns 정도가 나왔다. ms로 치면 0.3ms가 나오는 것을 확인할 수 있었다. 나중에 DB랑 통신을 하다보면 더 느려질 수 있겠지만 일단은 서버 최적화는 아직은 건들지 않아도 괜찮겠다 라고 생각을 했다.Winston 사용, Log저장winston이라고 하는 라이브러리를 사용해서 서버에 로그를 처리하는 부분을 바꿨다.그리고 exception이나 ..

Study/Project 2024.05.10

나만무 슬레이어즈 10

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

Study/Project 2024.05.08

24.05.04 나만무

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

24.05.03 나만무

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

나만무 슬레이어즈 2

나만무멀티접속 구현, 동기화 x멀티 접속까지는 구현에 성공했다.같은 씬 안에 들어온 다른 캐릭터가 구현이 됐지만, 현재 같은 플레이어 이동 스크립트를 가지고 있기 때문에, 내 캐릭터를 움직이면 이 멀티 캐릭터도 움직이는 문제가 발생했다.이 부분은 프리팹에서 스크립트를 제거해주고, 움직임을 동기화하는 방법으로 해결하면 될 것같다.

Study/Project 2024.04.30
728x90