반응형 게임서버6 [07주차] TEST & 시야처리 - TEST : Test의 필요성 1) 버그 없는 프로그램을 만들기 위해 2) MMORPG 게임 고유의 Test → 부하 테스트(Stress Test), 성능 측정 (동접) : Test의 단계 1) 작성자 테스트 / QA 테스트 2) 알파 테스트 (비 관계자를 동원, 같은 회사, 개발자의 가족/친구) 3) 클로즈드 베타 테스트 (불특정 다수 동원, 실제 부하 테스트의 시작) 4) 오픈 베타 테스트 (모든 사람 상대로 테스트) : Stree Test - 많은 인원이 동시에 접속해 테스트 진행, 적은 인원이었을 때 보이지 않은 버그들을 발견 가능 (멀티쓰레드!) - 서버 프로그램의 bottle-neck을 발견 가능 (DB, Network Overhead, Memory allocation Overhead, N.. 2024. 4. 23. [06주차] 멀티쓰레드 01 - 성능 향상 1) 프로그램 최적화 2) 멀티 코어 활용 → 멀티쓰레드 프로그래밍 필요 - 멀티쓰레드 : 하나의 프로그램이 여러 곳이 동시 다발적으로 실행됨 (병렬처리) - 병렬처리 : 하나의 작업을 여러 개의 context에서 동시에 수행 : context - CPU 실행 상태 (PC를 포함한 모든 레지스터 값) : 한 대의 컴퓨터 사용 → SMP(여러 개의 CPU), Multi-Core (여러 개의 Core) : CPU 한 개 속도는 너무 느리기에 사용하는 것 (프로그램 구조가 깔끔해지진 않음) : 발열 속도에 부딪친 클럭 속도 증가 - 프로세스와 쓰레드 1) 프로세스 : 실행 중인 프로그램 - 하나의 프로세스는 하나의 실행 파일에서 출발 2) 쓰레드 : 프로그램 실행 흐름 - 프로세스 실행 중 프로.. 2024. 4. 22. [04주차] I/O 모델 한국공학대학교 정내훈 교수님 4-1 게임 서버 프로그래밍 수업 중 일부입니다. - 게임 프로그램 특징 : 게임의 진행 속도는 CPU의 속도가 아니라 실제 시간. : REAL TIME → 내가 명령을 입력할 때까지 기다리지 않음!!!! (적어도 렌더링은 계속 됨) : INDEPENDENCE → 모든 객체가 독립적 행동 (게임 진행 정해져 있지 않음 + 플레이어 행동 안 기다림, non-blocking) - Non-blocking I/O : 기존 Blocking 소켓은 I/O 작업을 수행할 때 해당 작업이 완료될 때까지 대기 : Non-blocking → 작업 수행 시 작업이 완료되지 않아도 즉시 반환 : WSARecv() 호출을 즉시 완료하지 못하는 경우 1) 도착한 데이터 없으면, 2) WSAEWOULD.. 2024. 4. 22. [02주차] 환경 - MMO Game Server : 고사양 필요 (가성비를 따져 저 사양의 여러 대로 동접을 올리지는 않음) : 많은 사람을 받을 수 있다 → 동접 UP → 재미 UP → 사용자가 더 몰림 → 수입 UP : CPU - 싱글 코어로는 동접 1000도 힘들다. 멀티 코어 사용 필수 : Memory - 128GB 이상 필요 (월드 정보, NPC/Monster 정보, 플레이어 정보 등) : Network - 여러 개의 네트워크 포트 필요 : HW만 좋으면 되는가? → 하드웨어를 충분히 이용할 수 있는 프로그래밍이 필요 : 하드웨어 지식 필요 → 하드웨어가 성능에 어떤 영향을 미치는지, 하드웨어의 성능을 최대한 이끌어내는 프로그래밍 등 - CPU : X86 계열, 서버용 CPU가 따로 존재함(Intel Xeon,.. 2024. 4. 19. [01] 네트워크 프로그래밍과 소켓 윤성우의 「열혈 TCP/IP 소켓 프로그래밍」을 토대로 공부하여 작성되었음. 네트워크 프로그래밍 : 서로 다른 두 컴퓨터가 데이터를 주고 받을 수 있게 하는 것 ! : 물리적인 연결이 필요하나 "인터넷"이 존재 : 소프트웨어적인 연결은 운영체제에서 존재하는 소켓(Socket) 사용 TCP소켓은 전화망과 비슷하다 1. 소켓 생성 함수 (전화를 받으려면 전화기가 필요한 것처럼, 소켓을 사용하려면 소켓을 만들어야 함) #include int socket(int domain, int type, int protocol); // 성공 시 파일 디스크립터, 실패시 -1 반환 - 서버 - 2. bind함수 (전화번호 부여에 비유됨, IP와 포트번호 같은 소켓 주소 정보 할당함) #include int accept(in.. 2024. 3. 18. [01주차A] 게임 서버 - 동기화에 따른 구분 1) MO(Multiplayer Online) : 즉각적 반응을 요구하는 게임 (FPS, RTS) 동기화 구현 : 서버에서 1초에 20~30번 월드 상태를 모든 클라이언트에 전송 2) MMO(Massively Multiplayer Online) : 전략과 협동 플레이 위주 (RPG) 동기화 구현 : Event 발생 시에만 데이터 전송 - 서버와 클라이언트의 상호작용 1) 연결 : 최초로 클라이언트가 서버와 데이터를 주고받을 준비하는 과정 (TCP연결) 2) 요청-응답 : 클라는서버에게 메시지를 보내고, 서버는 이를 처리해 결과를 응답 3) 능동적 통보 : 클라 요청 없이 능동적으로 통보하는 경우 4) 연결 해제 - 게임 서버가 하는 일 1) 여러 사용자와 상호 작용 2) 클라이언트.. 2024. 3. 12. 이전 1 다음 728x90 반응형