(socket + C/C++기반의)실시간 게임서버 최적화 전략

Поділитися
Вставка
  • Опубліковано 20 вер 2024
  • 개인적인 사정으로 9월 23일(수)에서 9월 24일(목)로 옮겼습니다.

КОМЕНТАРІ • 45

  • @golbang2176
    @golbang2176 Рік тому +5

    뭘 해도 2년전 영천님을 넘어설 수는 없군여...잔짜 급이 다른 강의를 복습하면서 상기하는 듯 합니다.. 진짜 늘 감사합니다,,

    • @megayuchi
      @megayuchi  Рік тому

      도움이 되셨다니 기쁘네요.

  • @megayuchi
    @megayuchi  4 роки тому +7

    8:44 부터 시작입니다.

  • @user-qt1rr2km8h
    @user-qt1rr2km8h 7 місяців тому

    서버개발자 취준생인데 정말 좋은영상 감사합니다! 이런 내용을 무료로 볼수있다니..

    • @megayuchi
      @megayuchi  7 місяців тому

      도움이 됐으면 좋겠네요.

  • @user-bn6oe5fw1f
    @user-bn6oe5fw1f 10 місяців тому

    웹 서버 개발자지만 게임 서버 개발을 도전해보고자 하는 사람입니다. 모든걸 이해할 순 없었지만 어디에 주안점을 두고 개발을 해야되고 뭘 공부해야하는지 로드맵을 제시받은 느낌입니다. 정말 도움 많이됐습니다. 감사합니다.

    • @megayuchi
      @megayuchi  10 місяців тому

      도움이 되었다니 기쁘네요.

  • @projecttest3032
    @projecttest3032 2 роки тому +1

    좋은 발표자료 잘 들었습니다. 도움 많이 되었습니다. 정말 감사합니다.
    설명하신 패킷처리 과정 중에 하나 궁금한 점이 있습니다.
    방식 (1) IOCP를 통해 WorkerThread가 패킷 재조립 후 바로 처리하는 방식
    방식 (2) IOCP를 통해 WorkerThread가 패킷내용을 Write Buffer에 기록
    => 하나 이상의 패킷 재조립이 완료 되었을때 Write, Read Buffer 더블버퍼링을 적용 후 MainThread에 통지
    => Read Buffer에 갱신된 내용을 보고 MainThread에서 패킷 처리
    일단 이렇게 이해하였습니다.
    질문내용은 다음과 같습니다.
    1. 방식 (2)에서 여러개의 패킷이 한 프레임에서 처리되어야 할 때, 패킷들을 메인스레드 해당 프레임에서 하나씩 순서대로 처리하나요? 아니면 Collison Processing과 같은 사례처럼 스레드 풀을 사용하여 병렬로 처리되나요?
    2. 만약 병렬로 처리한다면 리소스에 대한 락을 방식 (1)과 비슷하게 걸고 사용해야 할 것 같은데 이해한 내용이 맞을까요?
    3. 만약 순차적으로 처리한다면 해당 프레임에서 모두 처리하지 못했을 경우 다음 프레임으로 넘어가는 로직인가요?
    궁금증에 남겨봅니다 ㅎㅎ

    • @megayuchi
      @megayuchi  2 роки тому +1

      1. 메인스레드가 하나씩 처리합니다. 2. 병렬로 처리하지 않기 때문에 락을 걸지 않습니다. 3.해당 프레임에서 모두 처리됩니다. 다음 프레임으로 넘기는 경우는 없습니다. 다 처리해야하만 front/back버퍼를 스위칭합니다.

    • @projecttest3032
      @projecttest3032 2 роки тому

      @@megayuchi 답변해주셔서 감사합니다 덕분에 궁금증이 풀렸습니다 ㅎㅎ

  • @user-ij4yf2xx8l
    @user-ij4yf2xx8l 4 роки тому +2

    게임 서버라곤 1도 몰랐는데 영상에서 많은 것들을 얻고 가네요. 올려주셔서 감사합니다!

  • @D0RASIMA
    @D0RASIMA 3 місяці тому

    이거 본다고 바로 따라하거나, 써먹을 수 도 없지만... 적어도 뭘 모르는지 알게됩니다 ㅋㅋㅋㅋㅋ 공짜로 강의 올려주셔서 감사합니다.

    • @megayuchi
      @megayuchi  3 місяці тому

      도움이 됐으면 좋겠네요.

  • @michaelkane1072
    @michaelkane1072 Рік тому

    개발자님의 지식의 축적이 느껴지는 값진 교육 영상이네요

  • @D0RASIMA
    @D0RASIMA 11 днів тому

    2:05:08 Copy on Write

  • @EuclideanAlgorithm
    @EuclideanAlgorithm 8 місяців тому

    멀티 플레이어 게임에서 실시간 위치를 나타낼때 개인적으로 어떤 방식을 사용하시는지 궁금합니다.
    1. UDP + 데드레커닝 사용
    2. TCP + 데드레커닝 사용
    3. TCP, 클라 nagle off, 서버 nagle on + 데드레커닝 사용
    4. TCP, 클라, 서버 모두 nagle off
    5. 혹은 기타 방법..
    경험적인 측면이 적어 영천님 의견을 듣고 싶습니다.

    • @megayuchi
      @megayuchi  8 місяців тому

      TCP + 데드레커닝 + 클라/서버 nagle off 입니다. 자세한 내용은 github.com/megayuchi/ppt 에서 'MMOG Server-Side 충돌 및 이동처리 설계와 구현' 항목을 참고하세요.

  • @신인재-d7n
    @신인재-d7n 3 роки тому +2

    잘 보고있습니다ㅎㅎ

  • @wshwang
    @wshwang 2 роки тому

    게임 개발을 실무로 해본 적은 없어서 제가 가져갈 수 있는게 많지 않은 것 같습니다. 그럼에도 불구하고 좋은 내용 감사드립니다.

  • @bumpsgoodman
    @bumpsgoodman 5 місяців тому

    도움이 많이 됐습니다. 감사합니다!

    • @megayuchi
      @megayuchi  5 місяців тому +1

      도움이 되셨다니 다행입니다.

  • @user-id6ts4mu4k
    @user-id6ts4mu4k 3 роки тому

    좋은걸 이제보네요. 블로그글을 본적이 있었는데 유튜브하시는지 몰랐네요.

    • @megayuchi
      @megayuchi  3 роки тому

      가끔 방송합니다. 한달에 두번 정도..

  • @ryanbae9563
    @ryanbae9563 2 роки тому

    정말 잘 정리된 정보 감사합니다!

    • @megayuchi
      @megayuchi  2 роки тому

      감사합니다. 도움이 되셨다니 다행입니다.

  • @ozzie7034
    @ozzie7034 6 місяців тому

    배워 가는 것이 많군요 잘 봤습니다

    • @megayuchi
      @megayuchi  6 місяців тому

      감사합니다.

  • @_________________________....
    @_________________________.... Рік тому +4

    15:01 수동/능동적인 서버
    21:14 voxel horizon 서버가 하는 일
    29:09 응답성 향상을 위한 주요기법
    37:22 비동기처리 - 싱글스레드
    42:18 비동기처리 - 멀티스레드
    44:31 Thread Pool
    49:20 사실 코드최적화에서 제일 중요한 건 simd가 아니다..
    1:03:54 서버 클라이언트 코드 공유 (그림)
    1:09:04 서버 작업 스케줄링 (그림)
    1:15:23 패킷수신 -> 메세지 처리
    1:21:43 이동(충돌) 처리 데모 : 어떤 면을 충돌검사해야하는가?
    1:22:59 서버에서의 충돌처리
    (동기적인처리 && 처리량 증가 == 스레드풀 처리)
    1:27:23 멀티스레드를 해도 30fps 못맞추는데 어떡함?
    1:30:56 SMG, 라이플에 대한 판정
    1:30:57 로켓런쳐에 대한 판정
    1:35:40 클라 서버 복셀지형을 편집하는 흐름 (그림)
    1:37:57 2D 비트맵 상에서 x,y축으로 한칸씩 성장
    1:40:13 복셀데이터 스트리밍 (데모)
    1:49:12 다수의 복셀 오브젝트들을 압축할 때 (그림)
    1:53:13 개인맵 로드/세이브 Async I/O Manager (그림)
    1:57:14 비동기 DB쿼리
    1:59:31 서버의 작업 스케줄링 정리 (그림)
    2:03:12 다수의 인스턴스맵 생성
    2:04:45 Copy on Write
    2:09:21 동기화 객체별 응답시간
    (Atomic operation, Custom spin lock, SRWLock, Critical Section, Mutex & Event)
    2:26:59 "Write 할때 IO 스레드가 Lock을 걸고 쓰는건가요?"

    • @_________________________....
      @_________________________.... Рік тому

      너무 감사히 잘봤습니다 명강의 그자체네요
      10년이 지나도 여전히 명강의일듯 합니다.
      제마음속 최고의 개발자.

    • @megayuchi
      @megayuchi  Рік тому

      감사합니다.

  • @jws1837
    @jws1837 Рік тому +1

    너무 감사합니다

  • @user-wj1me9qc4j
    @user-wj1me9qc4j 3 роки тому

    와 좋은자료 감사합니다! 목소리가 포프님 방송에 나왔던 분 같아요 그분도 stl쓰지말고 데이터 스트럭처는 c로 직접 짜서 쓰라고 하시던대

    • @megayuchi
      @megayuchi  3 роки тому

      그 분이 접니다.

    • @user-wj1me9qc4j
      @user-wj1me9qc4j 3 роки тому

      @@megayuchi 와우!! 그래픽스 프로그래머 이신줄 알았는대 서버쪽도 엄청난 전문가셨군요.. 게임서버 개발자 준비중인 취준생인대 모르는단어가 좀 있어서 이번영상을 다 이해하지는 못했지만 많이배웠습니다 좋은영상 감사합니다

    • @megayuchi
      @megayuchi  3 роки тому

      @@user-wj1me9qc4j 엔진 만들기 전에 원래 서버프로그래머였고 실제 코룸온라인등 서비스했던 게임들이 제 네트워크 코드를 사용했죠.

  • @이승우-z1b
    @이승우-z1b 7 місяців тому

    최곱니다❤

    • @megayuchi
      @megayuchi  7 місяців тому

      감사합니다.

  • @megayuchi
    @megayuchi  4 роки тому

    발표자료는 이쪽입니다.
    www.slideshare.net/dgtman/ss-228096175

  • @golbang2176
    @golbang2176 Рік тому

    감사합니다.

    • @megayuchi
      @megayuchi  Рік тому

      아이쿠 감사합니다.

  • @michel8207
    @michel8207 3 роки тому

    오.. 영천아 좋다.. 아예 DDraw부터 시작해서 엔진 개발 강의하고.. 책도 써 ㅋㅋㅋ 강의에 능력이 있네..