목록전체 글 (352)
나만의 작은 도서관

주의사항: 해당 글은 일기와 같은 기록용으로, 다듬지 않은 날것 그대로인 글입니다. 이번 TIL은 아래 영상을 시청하고 정리한 글입니다.https://youtu.be/HSRo7TAV4T4?si=BrW2TNlgXAYGMmVK 어떻게 보정을 해야 할까: 정확하게 때리기 Q. 상대가 움직이면 잘 맞는데, 가만히 서 있으면 잘 안 맞아요.원인을 파악해 보니, 각 클라이언트에서 보이는 캐릭터 위치가 살짝씩 달라서 발생한 문제였다.디버깅을 해보니 스킬을 사용한 시전자, 피격자의 위치가 각 클라와 서버가 전부 다르게 가지고 있었다! 이러한 결과가 나타난 배경프라시아 전기라는 게임은 바닥에 폴리를 깔고, 각 캐릭터가 폴리 위를 자유롭게 돌아다닐 수 있도록 하는 방식의 게임이다.처음에는 스킬처럼 서버의 허가를 받고 이동..

주의사항: 해당 글은 일기와 같은 기록용으로, 다듬지 않은 날것 그대로인 글입니다. 이번 TIL은 아래 영상을 시청하고 정리한 글입니다.https://youtu.be/HSRo7 TAV4 T4? si=BrW2 TNlgXAYGMmVK정보의 전달에는 “지연 시간”이 존재한다.네트워크 지연 시간은 흔히 “핑(Ping)”이라고 부르는 것, 개발자들은 “레이턴시(Latency)” 또는 “트립 타입(Trip Time)”이라고 부르는 것을 의미한다. (이하 지연 시간이라 칭함)지연 시간은 호스트가 서버를 거쳐 다른 호스트로 데이터가 전송되면서 걸리는 시간이다. 지연 시간은 네트워크 종류에 따라 다른데, 알려진 바에 따르면 각 네트워크 종류에 따른 지연 시간은 다음과 같다.유선 네트워크(PC): 평균 10ms, 많아야 ..
주의사항: 해당 글은 일기와 같은 기록용으로, 다듬지 않은 날것 그대로인 글입니다. Job과 JobQueue의 운영 방식Job이란?Job은 서버에서 인게임 로직을 래핑 한 함수 객체(functor)로, 여러 가지 장점에 의해 사용한다.Job과 JobQueue를 이용한 인게임 로직 처리의 장점은 여러 가지 있다.Job과 JobQueue를 사용하는 방식의 장점우선, 네트워크 이벤트와 인게임 로직 처리의 시점을 분리할 수 있다는 것인데, 분리가 가능해지면서 Job을 생성한 스레드가 Job을 처리하지 않고, 다른 스레드한테 떠넘길 수 있다는 선택지가 생기게 된다.이러한 방식을 디자인 패턴에서 “커맨드 패턴”이라고 부르는데, 적용 시 일감을 생성하는 생성자(Producer)와 소비자(Consumer) 역할을 구분..
주의사항: 해당 글은 일기와 같은 기록용으로, 다듬지 않은 날것 그대로인 글입니다. Atomic객체의 exchange 패턴Atomic 객체는 원자적 연산을 지원하는 함수들이 존재한다. 대표적으로 자주 사용하는 load나 store도 있겠지만, 값을 교체하는 exchange도 꽤 자주 사용된다. 오늘은 이 exchange에 대해 사용하는 패턴을 좀 더 자세하게 알아보았다.그전에… 왜 락을 걸지 않고 Atomic을 사용하는가?락은 필요할 때만 걸어두는 거지, 안 걸 수 있으면 최대한 걸지 않는 것이 좋다. 오버헤드 관점에선 Atomic도, Mutex를 이용한 락도 꽤 먹어주지만, 락은 코드 흐름 자체를 막아버리기 때문에 데드락 발생 가능성이 존재한다.반면, Atomic은 락을 사용하지 않아 데드락 발생에 대..
주의사항: 해당 글은 일기와 같은 기록용으로, 다듬지 않은 날것 그대로인 글입니다. T()는 기본 타입에도 적용할 수 있는 문법인가?ServerCore 부분에 작성되어 있던 LockQueue를 다시 보고 있던 와중, Pop() 함수의 리턴값이 T()인 것을 발견했다.클래스는 생성자가 있으므로, T가 클래스 타입이면 T()와 같이 적어도 문제가 없겠지만, int와 float와 같은 기본 타입에 ()를 붙여 반환하는 것이 가능한 지 의문이 들었다.생성자도 없는 기본 타입을 저장하는 LockQueue라면 문제없이 돌아갈까?기본 타입에서도 T()는 유효하다.찾아보니 C++에서 int, float와 같은 기본 타입들은 모두 값 초기화(value initalization)를 지원하며, T()와 같은 방식으로 초기화..

주의사항: 해당 글은 일기와 같은 기록용으로, 다듬지 않은 날것 그대로인 글입니다. [언리얼] Actor, Pawn, Character, Controller언리얼에서 블루프린트 클래스를 새로 만들려고 하면 창 하나가 뜨는데, 창에 뜬 목록들을 보면 위와 같이 유니티에선 없었던 Actor, Pawn과 같은 애들이 있다. 오늘은 이 애들의 용도가 뭔지, 어떤 상황에서 사용하는지 알아보기로 했다.Actor, Pawn, Character는 상속 관계에 있는 클래스들이다.Actor, Pawn, Character 이 셋은 상속 관계로 묶여있는 애들이다. 즉, 이 셋 중에서 Actor가 가장 Base가 되는 클래스이며, Actor → Pawn → Character 순으로 상속 관계를 가진다.위 셋은 무엇을 위한 클래..