목록Today I Learn (82)
나만의 작은 도서관
이번 주 한 마디: 최종 프로젝트를 시작한 첫 주. 제공받은 클라이언트는 개판이었다.이번 주 배운 내용 2D 플랫포머-아틀라스와 애니메이션프로토버프 컴파일러유니티 EventSystem캐릭터 디스폰을 배열로 묶어서 하는 이유유니티: protoBuf를 잘못 파싱하면 빈 중괄호가 나온다.하이젠버그(Heisenbug)와 console.log()클라이언트가 패킷을 제대로 수신하지 못하고 오류해결(OnRecvCompleted Failed Google.ProtoBuf......)이번 주 한 일 최종 프로젝트packet description 제작 https://miro.com/app/board/uXjVKwr61VI=/ 캐릭터..
오늘의 Trouble Shooting Problem 1. 클라이언트가 패킷을 제대로 수신하지 못하고 오류 발생지금까지 우리 팀원들은 클라이언트가 패킷을 제대로 수신하지 못하는 문제에 대해서 끙끙 앓았다. 아무리 서버측 코드를 검증해봐도 문제가 전혀 없었기 때문. 다양한 추측과 의견들이 오갔지만 마땅한 원인을 알 수 없었다. 그러다 튜터님들에게 클라이언트 코드가 문제가 있는 것이 아닌가 하는 의견을 제시했고, 그렇게 튜터님들이 클라이언트 코드들을 뜯어본 결과 오늘 오류의 원인을 알 수 있었다. 발생한 오류 팀원에 따라 해당 오류가 발생하는 빈도조차 다르고, 100%도 아닌 확률적으로 발생하는 이 오류는 빠르게 패킷을 전송하는, 일명 버튼을 연타하여 많은 양의 패킷을 전송하는 ..
오늘 배운 내용 하이젠버그(Heisenbug)와 console.log하이젠버그(Heisenbug)는 버그를 디버깅을 하려고 하면 그 버그가 나타나지 않는 버그를 의미한다. Heisenbug는 불확정성의 원리를 발견한 물리학자 Heisenberg의 이름에서 나왔다. 하이젠버그는 디버깅을 하기 위해 디버거를 연결하거나 디버깅 코드를 삽입하면 이러한 행동이 시스템에 영향을 주어 버그가 나타나지 않는다. 하이젠버그는 잡기 매우 까다로운 버그이다. 버그가 타이밍과 관련되어 있거나 메모리가 다른 영역으로 침범한 버그일 경우 디버깅 코드를 삽입하면 버그가 재현 되지 않고 다른 현상이 나타날 수 있다. 실제로 겪은 하이젠버그...최종 프로젝트에서 ..
오늘 배운 내용 캐릭터 디스폰을 배열로 묶어서 하는 이유오늘 캐릭터 디스폰과 관련된 작업을 진행하던 중, 클라이언트 코드와 전송 패킷을 보고 의문점이 생겼다. '디스폰은 플레이어의 연결이 끊어졌을 때 발생하는 이벤트인데, 왜 배열로 전송이 될까? 디스폰은 해당 플레이어만 발생할텐데 항상 길이가 1인 배열인 구조로 전송할 필요가 있을까?'어찌보면 당연한 의문이었다. 디스폰은 접속이 끊어진 유저 한 명당 하나씩 발생하기 때문. 그런데 여기에는 한 가지 숨겨진 고려사항이 있다. 서버는 고유한 주기를 가지고 데이터를 갱신한다.서버 주도인 통신에서는 서버가 고유한 주기를 가지고 데이터를 갱신한다. 이 주기는 시스템 전체에서 하나만을 가지는 경우가 지..
오늘 배운 내용 프로토버프 컴파일러최종 프로젝트의 코드를 읽어보면서 이상한 방식으로 구현되어 있는 프로토버프 구조를 알게되었다. 그런데 알고보니 이 구조는 프로토버프 컴파일러를 통해 자동으로 만들어진 코드로, 명령어로 만들어진 코드였다.만약 코드가 자동으로 생성된 것인지 확인하고 싶다면, .proto 파일과 protoc 명령어를 사용하여 같은 클래스 파일을 다시 생성해 볼 수 있다 .proto파일syntax = "proto3";package Google.Protobuf.Protocol;// C_Leave 메시지 정의message C_Leave { // 메시지 필드 정의 int32 field1 = 1; string field2 = 2; ..
오늘 배운 내용 2D 플랫포머-아틀라스와 애니메이션아래의 링크에 따로 정리해두었다. https://pledge24.tistory.com/339 [Unity] 강의 따라하기 #2. 2D 플랫포머-아틀라스와 애니메이션Sprite AtlasSprite Atlas는 여러 개의 텍스처를 단일 텍스처로 결합해 놓은 에셋이다. 예를 들어, 캐릭터의 움직임을 표현하는 9개의 스프라이트가 존재한다면, 각각을 하나씩 불러와 sprite를 변경해주pledge24.tistory.com 오늘 한 일 더보기최종 프로젝트 packet description 제작https://miro.com/app/b..