목록Today I Learn (82)
나만의 작은 도서관
이번 주 한 마디: 어려움이 꽤 있었던 TCP 게임 서버제작 개인과제를 마무리하고 웹소켓을 이용한 타워 디펜스 팀 프로젝트를 팀장 역할로 진행하게되었다. 이번 주 배운 내용 net모듈 server.listen([port[, host[, backlog]]][, callback]) host 기본값CPU란?데디케이트 서버(dedicated Server)위치 동기화는 완벽할 수 없다.서버 주도 방식에서 서버의 FPS보다 클라이언트의 FPS가 낮은 경우 메모리(Memory)상태 동기화(state synchronization)Lockstep게임서버 멀티플레이어 동기화 방식 종류웹소켓에서 서버 주도 방식에서의 통신이번 주 한 일 ..
오늘 배운 내용 웹소켓에서 서버 주도 방식에서의 통신이전 과제에서는 웹소켓에서 클라이언트 주도 방식으로 데이터를 동기화 및 검증하였다. 이번에는 클라이언트 주도 방식 대신 서버 주도 방식으로 변경하고 멀티 플레이를 지원하도록 과제를 진행하게 되었다. 그래서 통신을 하는 방식도 많이 달라져 과제를 진행하기 전에 한 번 정리해보았다. 기본적인 통신 방법 리마인드 웹소켓은 기본적으로 7계층에서 수행된다. 또한 http와도 연관이 있어, 요청-응답 방식을 사용하고 있다. 웹소켓은 소켓을 통해 이벤트를 emit하면 해당 emit을 수신받은 호스트가 대응하는 이벤트를 수행한다. 따라서, 각 이벤트를 역할에 맞게 수행하도록 수신받는 호스트 소켓에 대응하..
오늘 배운 내용 LockstepLockstep 동기화 기법은 멀티플레이어 게임에서 사용되는 동기화 방식 중 하나입니다. 모든 플레이어들이 게임 상태를 동일하게 유지하는 것을 목표로 하며, 매 프레임마다 모든 플레이어의 입력값을 동기화하고 게임 상태를 업데이트합니다.Lockstep 동기화 기법은 다음과 같은 단계로 이루어집니다.1. 게임의 초기 상태를 모든 플레이어에게 전송합니다.2. 각 플레이어는 자신의 입력값을 서버로 전송합니다.3. 서버는 모든 플레이어의 입력값을 수집합니다.4. 서버는 모든 플레이어에게 입력값을 전달하고, 각 플레이어는 해당 입력값을 사용하여 게임 상태를 업데이트합니다.5. 다음 프레임으로 이동하여 2-4 과정을 반복합..
오늘 배운 내용 메모리(Memory)컴퓨터에 연산을 처리하는 CPU만 존재하게된다면, 제대로 된 사용이 불가능 할겁니다. 왜냐하면 처리를 해야할 데이터를 기억하는 장치가 존재하지 않기 때문이죠. 물론 CPU내부에 레지스터라는 메모리가 존재하기는 합니다만, 레지스터는 기억 장치에서 가져온 데이터를 임시로 저장하는 장치일 뿐 데이터를 영구적으로 저장하는 역할이 아닙니다. 따라서, 계산을 위한 여러 데이터들을 기억하는 "메모리"가 필요한 것입니다. 대표적으로 CPU가 접근하는 메모리 RAM이 있습니다. 자세한 내용은 아래 링크에 정리해두었다.https://pledge24.tistory.com/314 [컴퓨터 구조] #2. 메모리(Memory)메모..
오늘 배운 내용 데디케이트 서버(dedicated Server)데디케이트 서버(전용 서버)는 한 고객이나 애플리케이션에 전적으로 할당된 물리적인 서버를 의미합니다. 이는 공유 호스팅과는 다르게 한 서버의 모든 자원을 특정 사용자나 특정 목적을 위해 독점적으로 사용하는 방식입니다. 데디케이트 서버는 성능, 안정성, 보안성 측면에서 많은 이점을 제공합니다. 주요 특징독점적 자원 사용: CPU, 메모리, 디스크 등 모든 서버 자원이 특정 사용자에게만 할당됩니다.고성능: 다른 사용자의 활동에 의해 영향을 받지 않기 때문에 안정적이고 높은 성능을 유지할 수 있습니다.고급 보안: 데이터와 애플리케이션이 다른 사용자와 공유되지 않기 때문에 보안이 강화됩..
오늘 배운 내용 net모듈 server.listen([port[, host[, backlog]]][, callback]) host 기본값지금까지 listen을 하는 모든 코드에서 port만 넣어서 사용해왔다. 그렇다면 host는 어떻게 되는 것일까? 알고 보니, host는 설정을 하지 않았을 시, 기본값으로 0.0.0.0이 들어가는 것이었다! 그래서 AWS에서 host를 넣지 않았음에도 외부에서 접속할 수 있었던 것은 항상 0.0.0.0으로 listen을 하고 있었기 때문이다. // 지금까지 사용한 listen코드server.listen(3000, () => { console.log(`헬게이트 오픈!`);});// 이번에 사용한 liste..