분류 전체보기

https://www.youtube.com/watch?v=11Ilw4NcZM8&list=PLy-g2fnSzUTDsS7kCzmFYn4BJK6nCs0_r&index=8 게임핵 Deterministic 방식은 상대가 주는 Input Set에 의존하는 방식이기 때문에 해킹에 취약하다 Deterministic 방식은 딜레이가 없을 수가 없다 딜레이 때문에 FPS의 헤드샷 같은 정밀한 판정이 필요한 플레이를 구현하기 어렵다 정밀한 플레이는 클라이언트에서 판단하게 하는 경우가 있다 이를 이용해서 핵을 만들 수 있다 Ex) 에임핵 딜레이를 보정하기 위해서 심판은 동작에 대해 오차범위를 둔다(Tolerance) 오차범위를 넘어서는 행동을 해킹이라고 판단한다 오차범위 안에서 이득을 보는 핵은 잡히지 않을 수 있다 검증 변..
· 기본
라우터 논리적으로 분리된 망, 혹은 물리적으로 분리된 망 사이를 지나가야 하는 패킷들에게 경로를 뽑아 자기가 아는 최상의 경로를 찾아낸 뒤 다른 망으로 패킷을 보내주는 역할을 하는 기계 상위 통신망과 하위 통신망 사이를 중계해주는 기계 게이트웨이 이 지점을 기준으로 다른 두개의 장소로 나뉘며, 이 지점에서 출입통제가 가능한 곳 AP(Access Point) 무선랜 서비스를 제공하는 소형 무선 단말기 인터넷 공유기 AP 기능이 있는 소용량 라우터 인터넷에 접속하려면 ISP(Internet Service Provider)에서 할당받은 공인 IP가 필요하다. 모뎀에서 나오는 랜선이 하나 뿐이었으니 받을 수 있는 공인IP는 물론이고 접속할 수 있는 기기도 기본 하나뿐이다. 물리적으로 연결된 계층에서 사설 IP를..
https://www.youtube.com/watch?v=CfzYq3GTlX8 P2P Peer to Peer 1 : 1 Host 방식 한 클라이언트를 방장으로 정해서 다른 클라이언트들은 방장과 연결하는 방식 방장이 아닌 클라이언트는 관리해야하는 연결의 수가 적다 방장이 중재자 역할을 할 수 있다 방장이 나갔을 때 처리가 까다롭다 - 방 폭파 or 다른 방장 선출 Fully Connection 모든 클라이언트가 각자 연결하는 방식 누구 하나가 나가도 크게 문제가 되지 않는다 각자 관리해야하는 연결의 수가 많다 P2P의 문제점 인터넷을 접속하는데 공유기를 통한 접속이 일반화되었다 공유기로 인해서 클라이언트의 정확한 위치가 숨겨진다 이로 인해 클라이언트들은 서로의 위치를 알 수 없어서 P2P 연결이 힘들다 이..
Deterministic 같은 입력을 같은 시간에 들어가면 결과가 같다 서로 독립적으로 작동하는 클라이언트이지만 같은 입력을 같은 시간에 입력해서 각 유저가 같은 결과를 보도록 하는 방식 상태를 공유하는 것이 아니라 입력을 주고 받음 중간 상태를 만들기 위해서는 그때까지의 모든 입력이 있어야 한다 결국 중간 접속 처리하기가 힘듬 다른 컴퓨터에 같은 시간에 같은 입력을 넣는가가 문제 지연시간이 존재하기 때문에 같은 입력이 다른 시간에 들어가서 다른 결과가 나온다 - Desync 상태 Desync는 언제 어떻게 생길지 모르기 때문에 잡기가 매우 힘들다 Delay 지연시간만큼의 딜레이를 줘서 입력시간을 동기화하는 방식 쉽고 단순하게 구현 가능 유저가 기다려야 하는 시간이 생긴다 = 딜레이 지연시간이 커졌을 때..
Reliable UDP 신뢰성을 갖는 UDP TCP는 신뢰도를 보장하기 위해서 속도가 느리다 UDP는 속도가 빠르지만 신뢰도가 보장되지 않는다 게임 서버의 경우 네트워크 속도가 느려서 지연시간이 늘어나는 것과 특정 데이터가 누락되는 것 모두가 문제이다 이를 해결하기 위해 신뢰도를 보장하는 UDP를 소프트웨어적으로 만든 것이 Reliable UDP 개발 난이도가 있기 때문에 대형 게임사에서 주로 직접 개발 Unity나 Unreal 같은 툴에서 제공 실시간성이 중요한 게임은 UDP를 사용 - 격투, FPS, AOS 등 실시간성이 덜 중요한 게임은 TCP를 사용 - MMORPG, 보드게임
https://www.youtube.com/watch?v=lAhAdnsIN6I 네트워킹 데이터를 주고 받는 것 데이터 교환은 컴퓨터 내부에서 일어남 -> 일종의 네트워킹 Ex) CPU -> RAM -> HDD or SSD 하지만 보통의 경우 네트워킹은 먼 거리의 컴퓨터 간의 데이터 교환을 말한다 특징 지연시간(Latency) 먼 거리의 컴퓨터가 통신하기 때문에 데이터가 전송되는 시간이 존재 빛이 지구를 1바퀴 도는데 133ms(0.13초) Round Trip Time(RTT) 내가 동작을 지시하고 실제로 동작하는데까지 걸리는 시간 데이터 왕복 시간 RTT가 133ms인 경우 60프레임 기준 8프레임이 소모 빛보다 빠른 것은 없기 때문에 133ms의 한계를 넘을 수 없음 눈속임 등을 통해 최대한 유저가 못..
· 기본
대칭 키 암호화 = 비밀 키 암호화 암호화 키 = 복호화 키 = 비밀 키 암복호화의 속도가 빠름 비밀 키를 공유하는 과정에서 보안에 취약 비대칭 키 암호화 = 공개 키 암호화 암호화 키 ≠ 복호화 키 사용 방식에 따라 한쪽은 공개 키, 반대쪽은 비공개(개인) 키 기밀 내용 전달 B는 자신의 공개 키를 공개 A는 B의 공개 키로 데이터를 암호화하고 전달 B는 자신의 개인 키로 복호화 암호화 속도가 느려서 간단한 데이터 전달 용도로 많이 사용 Ex) TLS에서 두 당사자가 사용할 대칭 키를 전달 발행자 증명 및 변조 방지 A는 자신의 공개 키를 공개한다. A는 어떤 문서 혹은 해당 문서의 해시 정보를 자신의 개인 키로 암호화 한다. A는 암호화된 문서를 일반에 공개하면서, 이 문서를 자신이 만들었음을 선포한..
· 기본
Node.js 비동기 처리 지원 CPU를 많이 사용하는 작업보다 I/O이 잦은 환경에서 효율적 WEB 환경이 그렇다 -> 네트워크가 I/O이기 때문 Libuv Node.js가 사용하는 비동기 I/O 라이브러리 운영체제(Windows, Linux)의 커널을 추상화한 wrapping 라이브러리 -> 운영체제가 어떤 비동기 작업을 지원하는지 알고 있음 Node.js가 libuv에 비동기 작업 요청 libuv는 해당 작업을 커널에서 지원하는지 확인 지원할 때 libuv는 커널에 해당 작업을 비동기적으로 요청 커널이 응답하면 libuv는 응답을 Node.js에 전달 지원하지 않을 때 libuv는 기본적으로 4개의 쓰레드로 이루어진 쓰레드풀을 가짐(가변적) libuv는 해당 작업을 쓰레드풀에게 맡김 쓰레드가 작업이..