ved_Rony
article thumbnail
게임 서버 프로그래밍 교과서 - 5장) 게임 네트워킹
Game Dev/Game Server 2023. 9. 24. 13:42

UML 프로그램 구조를 나타내기 편하게 해준다. 주로 클래스 다이어 그램으로 프로그램 구조를 생각하려 했는 데, 전제 프로세스를 생각하려면 uml도 고려하는 게 좋다는 것을 다시금 깨닫게 된다. 시퀀스 다이어그램 & 액티비티 다이어그램 시퀀스 다이어그램 : 객체 간 메시징 흐름을 일목요연하게 표현 액티비티 다이어그램 : 자세하게 프로그램의 실행 방식을 그림으로 묘사 게임 플레이 네트워킹 이 책에서는 3가지로 크게 나타내고 있는 데, 서버에서 모든것을 처리 하기, 클라이언트에서 렌더링하기, 추측항법(prediction) 사용하기 이렇게 있다. 기대했던 부분인 만큼 설명 부족하여 조금 실망인 파트였다.. 모든 역할을 서버에서 하기 가장 고전적인 방식이다. 클라이언트에선 입/출력만 담당하면 되고, 서버에서 로..

article thumbnail
게임 서버 프로그래밍 교과서 - 4장) 게임 서버와 클라이언트
Game Dev/Game Server 2023. 9. 16. 17:34

온라인 게임에서 게임 서버 컴퓨터 네트워크 어딘가에 서버 프로그램이 실행된 상태로 있으면, 여러 사람이 그 서버에 접속해서 게임을 즐긴다.게임 서버를 게임 플레이어가 자유롭게 가져다 실행하는 것도 가능했지만, 일부 게임은 일반 대중에게 공개되지 않고 게임 사업자만 독점적으로 게임 서버를 실행해 놓기도 했다. 지금 온라인 게임은 사실 이러한 형태이다. 서버의 역할 싱글 플레이에서는 모든 입출력과 연산 처리가 컴퓨터 한 대 안에서 일어난다. 따라서 컴퓨터 네트워크 자체가 쓰일 일이 없다. 그러나 온라인 게임에서는 플레이어 한 명 이상이 게임을 즐기기 때문에 플레이어 세 명 이상이 한 공간에 있다면, 컴퓨터 네트워크를 통해 상대방 모습이 생생하게 전달되어야 한다. 대부분 온라인 게임에서는 클라이언트에서 게임 ..

article thumbnail
게임 서버 프로그래밍 교과서 - 3장) 소켓 프로그래밍
Game Dev/Game Server 2023. 9. 16. 17:33

네트워크에서 데이터를 주고 받을 때 소켓을 사용한다. 게임 프로그래밍에서 데이터를 주고 받는 방식의 차이가 있다. TCP로 통신하는 경우 클라이언트 개수만큼 소켓이 있어야 하므로 게임 서버에서 다루어야 하는 소켓 개수가 많다. 파일 핸들을 하는 동안 스레드가 대기하는 일이 없어야 한다. 이러한 특징으로 네트워크 프로그래밍에서 소켓은 보통 비동기 입출력 상태로 다룬다. 비동기 입출력 방식에는 크게논 블로킹 소켓 방식과Overlapped I/O 방식이 있다. 그리고 이 방식을 진보시킨 epoll과 IOCP(I/O Completion Port) 방식이 많이 활용된다 블로킹 소켓 디바이스에 처리 요청을 걸어 놓고 응답을 대기하는 함수를 호출할 때 스레드에서 발생하는 대기 현상을 블로킹이라 한다. 소켓뿐만 아니라..

article thumbnail
게임 서버 프로그래밍 교과서 - 2장) 컴퓨터 네트워크
Game Dev/Game Server 2023. 9. 16. 17:31

네트워크 구성 기기 단말기와 네트워크 기기로 구분된다. 단말기는 쉽게 생각해서 pc와 핸드폰 같은 통신 기기(클라이언트 or 서버)인데, 이를 하나의 노드라고 생각해보자. 네트워크 기기는 네트워크 스위치라는 것으로 다른 단말기들 사이를 연결해주는 다리 역할이다. 주로 이런 그림(LAN)이 하나의 단위라고 생각하자. 이런 그림이 여러개가 연결되어 있는 것을 광역망(WAN)이라 하고, 현재 우리의 네트워크 망은 저위의 그림 단위 하나하나가 복잡한 그림으로 연결되어 있는 형태(인터넷)이다. 마치, 하나의 분자구조가 얽히고 섥혀 하나의 세포를 구성하는 것 처럼 말이다. OSI모델 컴퓨터 네트워크 통신에 대한 국제 표준. 이 표준만 잘 지키면 어떤 기기든, 어떤 형태의 통신 선로를 사용하든 컴퓨터 간 통신을 할 ..

article thumbnail
게임 서버 프로그래밍 교과서 - 1장) 멀티 쓰레딩
Game Dev/Game Server 2023. 8. 20. 22:22

멀티 플레이어 게임을 개발을 하고 있다보니, 단순 게임의 로직을 개발을 하는 것으로는 부족하다는 것을 알았다. 일전에, 화상채팅으로 커리어 상담을 받았을 때, 단순 게임로직 개발은 당연히 할 줄 알아야 하고, 더 나아가서 본인의 강점을 키워야 한다고 했던게 생각이 났다. 그래서 이왕 해야하는 김에 네트워크와 서버에 관해서 강점을 키우고자 마음을 먹게 되었다. 어려운 만큼 돌아오는 것이 크리라 생각이 된다. 프로그램과 프로세스 프로그램은 디스크 메모리에 저장되어 있는 명령어와 데이터 덩어리이다. 이자체로는 무엇도 하지 않고, 단순히 메모리에 눌러 앉아 있는 것이다. 더블클릭을 하는 순간, 이 명령어와 데이터 덩어리가, ram 메모리에 로딩이 되며, 하나의 프로세스를 생성하며 명령어들이 돌아가게 된다. (프..

검색 태그