본문 바로가기

네트워크4

게임 네트워킹의 이해5 - MMORPG 서버 구조 MMORPG 게임에서 서버를 멀티스레드로 만드는 방법싱글 프로세스 -> 멀티 스레드 구조로 구현멀티 프로세스 -> 싱글 스레드 구조, 멀티 스레드 구조로 구현요즘은 거의 대부분 멀티 코어이므로 코어의 성능을 다 쓰겠다 하면 멀티스레드 구조는 필수적이다.멀티 스레드 구조는 처음 구조를 짤 때 설계가 매우 중요하다.멀티스레드 만드는 방법1. 무식하게 한다.모든 working 스레드가 아무런 조건도 없이 그냥 모두 경쟁을 붙인다.스레드들끼리 공유자원에 막 접근해서 막 lock을 건다.lock을 많이 걸다보니 성능이 떨어지고 wait하는 시간이 길어지고 deadlock이 생길 확률이 올라간다.lock이 많이 생기다 보니 race condition이 발생한다.이러다 보니 타이밍 이슈가 생긴다. ( a가 먼저 들어.. 2024. 9. 10.
게임 네트워킹의 이해4 - 소켓 프로그래밍 소켓이란?랜선 소켓(콘센트)이 있고 그 소켓에 랜선을 연결해서 정보나 데이터를 주고받는 것소켓 프로그래밍이란?데이터 read / write 를 하는 IO Process다.read / write는 크게 두 가지 방식으로 동기와 비동기 방식이 있다.동기 방식데이터를 read()하면 데이터가 올 떄까지 다른 동작을 하지 않고 읽기 위해 대기한다.게임 서버에서는 여러 커넥션을 동시에 핸들링하기 때문에 하나의 데이터가 올 때까지 서버가 멈춰있으면 안된다.-> 그래서 read만 보내고 다른 작업을 처리하는 방식인 비동기 방식이 필요하다.비동기 방식read()를 요청했으면 데이터가 오든 안오든 요청만 걸어놓고 다른 일하러 간다.다른 일하러 갔다와서 read()의 응답이 왔으면 그걸 처리한다.비동기 방식은 크게 두 가.. 2024. 9. 8.
게임 네트워킹의 이해3 - 받은 데이터 활용 방식 네트워크를 통해 전송된 데이터의 활용 방식Deterministic 방식같은 인풋을 가지고 있으면 두 개의 다른 컴퓨터가 똑같은 게임 결과를 가지고 있다는 가정을 하는 것이다.플레이어 1이 입력한 인풋과 플레이어2가 입력한 인풋이 두 pc에 동일하게 적용되면 두 pc의 결과가 같다. ( sync가 맞다 )그런데 두 pc의 latency가 있는데 이 latency에 의해서 두 pc의 입력이 다르게 처리된다 하면 결과 상태가 달라지게 된다.이렇게 되면 sync가 안 맞게 되는데 이걸 막는 방법이 deterministic 방식의 가장 중요한 요소이다.이미 결정되어 있다!같은 입력이 같은 시간에 두 개의 pc에 들어가게 만들면 결과는 같다. (ex. 오락실의 두 대의 마주보고 있는 철권 게임기 )상태를 주고받는 .. 2024. 9. 8.
게임 네트워킹의 이해 - 1 네트워킹이란? 게임 서버 네트워크를 구축할 때 고려해야 할 사항 3가지지연시간연결이 불안정순서 비보장 2024. 9. 7.