베르의 개발톡 - 게임 서버 & 네트워크 개론

Поделиться
HTML-код
  • Опубликовано: 31 июл 2024
  • 2021/01/09에 스트리밍으로 진행했던 게임 서버 & 네크워크 개론 편집본입니다!
    급하게 기획해서 진행한 스트리밍 강좌라 그런지 아쉬운 점이 많네요.
    다음엔 좀 더 잘 준비해서 해보겠습니다.
    그리고 아쉬운 소식으로는 지난 1년간 저와 함께 열심히 90여편의 영상을 제작해왔던 마이크가 수명이 다해간다는 겁니다.
    그래서 강좌 중간에 사운드가 나간 부분이 많아서 다시 녹음해서 올린 부분이 조금 있습니다.
    거기에 무려 한 시간 짜리 영상이라 자막은 언제 제작할 수 있을지 눈 앞이 깜깜하네요 ㅜㅜ
    개발단에 가입하여 소소한 혜택과 함께 베르의 게임 개발 유튜브를 지원해주세요!
    / @wergia
    타임라인
    0:00 인트로
    1:00 게임 서버 방식 1 - P2P
    3:23 게임 서버 방식 2 - Host
    6:31 게임 서버 방식 3 - 데디케이트 서버
    8:04 데디케이트 서버를 잘못 만들면?
    11:23 장르별 게임 동기화 수준
    12:22 FPS/레이싱
    13:40 턴제 전략/TCG
    13:57 RTS
    19:50 게임 네트워크 구조의 변화
    27:24 서버 구축 방식의 발전
    27:31 전통적인 서버 구축
    34:08 IaaS(Infrastructure as a Service)
    35:20 Paas(Platform as a Service)
    38:31 서버리스 아키텍처
    40:30 BaaS(Backend as a Service)
    42:33 GBaaS(Game Backend as a Service)
    43:44 게임 서버의 궁극! 클라우드 게임
    50:06 아웃트로
    [유니티 어필리에이트 프로그램]
    아래의 링크를 통해 에셋을 구매하시거나 유니티를 구독하시면 수익의 일부가 베르에게 수수료로 지급되어 채널의 운영에 도움이 됩니다.
    - 유니티 에셋스토어 : prf.hn/l/vJl41D5
    - 유니티 플러스 : prf.hn/l/wLNyJZG
    - 유니티 프로 : prf.hn/l/qXOybmp
    [투네이션]
    toon.at/donate/63773521276146...
    [Patreon]
    / wergamedevchan
    [디스코드 채널]
    / discord
    #게임서버 #게임네트워크 #게임강좌

Комментарии • 54

  • @user-yb8vl4jt1b
    @user-yb8vl4jt1b 2 года назад +11

    오버워치는 RTS 장르 명문가 블리자드에서 만든
    락스탭 기반의 FPS 게임이죠.
    락스 탭 기반의 FPS가 어디에 또 있나 모르겠는데 오버워치는 초기 개발시 RPG로 개발되었고 중도에 선회한 프로젝트라고 알고 있습니다.
    덕분에 리플레이 기능을 만들기가 쉽죠.
    락스탭은 입력이 같으면 결과도 같다라는 원리에서 출발합니다.
    서버 및 클라이언트가 같은 인풋으로 같은 규칙에 연산을 수행하기 때문에 기상천외한 해킹은 좀 어렵습니다.
    일반적인 FPS는 내좌표를 바꿔서 전송하면 서버에서 방어할 방법은 이전 좌표와 차이를 보고 비정상이면 무시한다거나 쉽지 않은 싸움을 해야하는데 반해
    락스탭 기반은 앞으로간다. 라는 커맨드만 전송하기 때문에 좌표를 틀어버릴수가 없죠.
    연산 규칙을 이해 하고 헛점을 노려야하기 때문에 스타크래프트에 나름 다양한 핵이 있지만 폴가이즈같은 괴랄한 수준의 핵은 없는거죠.
    그리고 서버 입장에서 연산규칙의 헛점만 방어하면 되기 때문에 상대적으로 방어는 수월한 편입니다.
    (에임 핵은 에임의 커멘드를 핵으로 수정해도 정말 유저의 에임인지 프로그램에 의한 조작인지 판단하기 어렵기 때문에 방어가 힘듭니다.;;;
    클라이언트에서 외부 프로그램을 감지하는 경우가 많죠. 그 조차도 다른 디바이스에서 돌리면 답이 없습니다만.... 마우스에서 프로세스를 돌리는거 같은)
    어떤 게임을 만드느냐에 따라 이야기가 많이 달라지지만 일반적으로 설명하면 그렇습니다.
    다만 락스탭 기반으로 만들면 개발 난이도와 개발 기간이 좀 늘어납니다.
    오버워치가 새로운 캐릭터 하나 추가하는데 시간이 많이 걸렸는데 기존 규칙을 많이 위반하는 캐릭터가 나오면 힘들어 집니다.
    솜브라 나왔을때 신선하긴 했지만 꾀나 힘들었겟구나 싶었습니다.
    대표적 돌려막기 캐릭터로 오리사가 있었죠.
    초기에 RPG기반으로 만들어진 게임이다보니 문제가 여럿있겠지만 오버워치 게임 특성상 락스탭 기반 인것도 발목을 조금 잡았을거라 생각됩니다.
    게임 개발사 입장에서는 서비스 비용도 저렴하면서 해킹에도 안전한 서버를 만들고 싶겠지만 개발 기간이 늘어나는것도 문제인지라
    먼저 빠르게 개발하고 게임의 흥망을 본뒤 그다음에 해결한다는 선택도 많이 하는 편인것 같습니다. 저의 경험상으로는 그런듣 하네요.
    폴가이즈도 핵장난 아니었는데 정말 최소한에 방어도 안했던것 같더군요.
    최근에는 플랫폼간 통합 서비스도 하고 핵도 많이 줄어들었는걸로 알고 있습니다.

    • @wergia
      @wergia  2 года назад

      정말 유용한 내용이네요! 감사합니다!

    • @3.1.2.4.4
      @3.1.2.4.4 Год назад

      개씹소리야

  • @user-ry2yc6bf7l
    @user-ry2yc6bf7l 3 года назад +2

    와 드디어 올라왔네요 감사합니다

  • @hyeonyeongbae6937
    @hyeonyeongbae6937 2 года назад +1

    정말 유익하게 도움 많이 되었습니다. 좋은 강의 기획해주셔서 감사합니다!

  • @WisdomCleo
    @WisdomCleo 3 года назад +2

    정말 정말 감사합니다!!

  • @k.j.h4351
    @k.j.h4351 3 года назад +1

    네트워크 통신에 대해 무지해서 고생하고 있었는데, 도움이 많이 되는 내용이었습니다. 감사합니다.

  • @sanmaro91
    @sanmaro91 3 года назад +2

    큰그림이 머리에 그려지네요! 감사합니다.

    • @wergia
      @wergia  3 года назад

      빅 픽-챠!

  • @sharkkew1482
    @sharkkew1482 2 года назад +1

    설명 너무 잘해주시네요👍

  • @user-te1tp4lt9g
    @user-te1tp4lt9g 3 года назад +2

    유익한 정보 잘보고 갑니다.

  • @gorani_TV
    @gorani_TV 3 года назад +2

    첫 광고 축하합니다😁

  • @rjsdh15963
    @rjsdh15963 3 дня назад

    정말 쉽게 설명해주시네요 감사합니다!

  • @user-zn9oc9ut5s
    @user-zn9oc9ut5s Год назад

    잘보고 갑니다

  • @user-vy3xv9mz8h
    @user-vy3xv9mz8h 3 года назад +1

    굿

  • @user-pq8ps7dh6f
    @user-pq8ps7dh6f 3 года назад +2

    서버에 대한 정보가 부족한데, 서버에 대한 개념을 널리 알리는데 일조해 주셔서 감사합니다. :) (є(・Θ・。)э›› )

  • @user-rs9tv5ly5l
    @user-rs9tv5ly5l Год назад +1

    설명이 쑉쑉 둘어 옵니다 아주 좋아요?

  • @dogblack2532
    @dogblack2532 3 года назад +5

    이분은 천재이신가요?

    • @wergia
      @wergia  2 года назад

      아쉽게도 아닌 것 같습니다.

  • @_wadaha
    @_wadaha 2 года назад +1

    이집 맛집이네

    • @wergia
      @wergia  2 года назад

      재밌는 집은 아니라 다행이네요 ㅎㅎ

  • @user-pt1qf3ur4k
    @user-pt1qf3ur4k 2 года назад +1

    보통 서버비용같은 경우에는 일단 기댓값보다 여유롭게 구비하고 나중에 줄이는식으로 구동하나요?? 서버 견적 가늠이 너무 힘들어서 이렇게라도 해야 싶네요 ....

    • @wergia
      @wergia  2 года назад

      최근 트렌드는 AWS나 MS 애저 같은 서비스에서 제공되는 서버를 이용하고 서버 스케일은 서비스에서 제공되는 오토 스케일링으로 결정하는 쪽인 것으로 알고 있습니다.

  • @kkk-ne3pp
    @kkk-ne3pp 2 года назад +2

    그냥 인디게임 개발해서 테스트하는데 일반 데스크탑 라이젠 3900x , 64기가램, 그래픽카드 2070s, ssd 1tb 이정도 사양으로 서버 만들어서 테스트해도 할만할까요?? 아니면 전문적인 서버장비가 필요할까요

    • @wergia
      @wergia  2 года назад

      테스트 단위면 괜찮은 사양인 것 같습니다. 나중에 실 서비스에 들어가서 트래픽이 늘어나면 별도의 광대역 랜선까지 고려해야 합니다.
      게임 서버를 고려하시는 거라면 AWS같은 서비스는 어떠신가요?

  • @user-bx9fz9og8o
    @user-bx9fz9og8o 2 года назад +1

    베르님 그러면 p2p방식이나 호스트방식은 회사 서버를 직접 구축을 할 필요가 없는 건가요?개인이 서버이자 클라이언트면 제작자가 직접 서버를 열 필요가 없는 건지 궁금합니다!!
    그리고 어몽어스 같은 게임은 호스트방식인가요??

    • @wergia
      @wergia  2 года назад

      P2P 방식과 호스트 방식은 회사가 구축할 서버의 크기를 줄여주는 겁니다. 게임 네트워크에서 가장 큰 부분을 차지하는 실제 게임 로직을 처리하는 네트워크를 플레이어에게 떠넘기는 겁니다.
      그 대신 게임 회사는 각 플레이어가 만든 방을 서로에게 보여주는 서버를 유지해야합니다. 그래야 플레이어들끼리 서로 만든 방 목록을 보고 다른 사람이 호스트로 만든 방으로 접속할 수 있습니다.
      어몽어스 측 서버 방식은 제가 확인해보지 않아서 잘 모르겠지만 플레이 방식으로 보건데 P2P나 호스트 방식으로 충분히 구현이 가능합니다.

    • @user-bx9fz9og8o
      @user-bx9fz9og8o 2 года назад +1

      @@wergia 아 호스트들이 연 방을 보여주는 부분은 데디케이티드 서버로 구현해야하는군요.
      정말 도움됬습니다 감사합니다!!

    • @wergia
      @wergia  2 года назад +1

      @@user-bx9fz9og8o 방을 보여주는 쪽은 데디케이트 서버보다는 웹서버쪽에 가까울 듯합니다.

    • @whatIsHandle792
      @whatIsHandle792 Месяц назад

      @wergia 혹시 인원수도 고려하시고 p2p도 괜찮다고 말씀하신 게 맞나요? 제가 아무것도 몰라서 확인차 여쭤봅니다.

  • @user-rt1lh4cz6j
    @user-rt1lh4cz6j 2 года назад +1

    베르형! 나 유니티로 게임만드는 프로그래머 되고 싶어서 유니티 공부중인데.. 네트워크프로그래밍이랑 데이터베이스 이런거도 공부해야돼?? 물론 알면 좋은건 당연하지만.. 유니티만 파기에도 솔직히 난 벅차거든..ㅠㅠ 유니티 프로그래머로 회사에서 일하려면 네트워크프로그래밍 락???스핀락?? 구현?? 이런거랑 데이터베이스 sql인가?? 이런거도 구현 할 줄 알아야 되는지 궁금해 ㅠ 조금 봤는데 유니티로 씨샵 코드 하는거랑 너무 달라서 엄두가 안나더라고 ㅠㅠ

    • @wergia
      @wergia  2 года назад

      싱글 게임에 저장 기능도 없는 게임만 만드실게 아니라면 구현할 줄 알아야 합니다.
      그리고 유니티로만 개발할 줄 아는 것은 취업에 있어서도 상당한 제한이 될 것이기 때문에 유니티 외에도 다른 엔진이나 언어로 개발할 줄 알아야 합니다.

    • @user-zq4lo2cb2t
      @user-zq4lo2cb2t 3 месяца назад

      기본입니다

  • @user-dl9td8dg4p
    @user-dl9td8dg4p 2 года назад +1

    궁금한게있는데 게임 업데이트나 점검을 할 때 게임을 킬 수 없잖아요 이거는 서버를 닫은건가요? 아니면 서버는 킨 건데 접근을 못하게 한건가요?

    • @wergia
      @wergia  2 года назад

      클라이언트에서 서버에 접속 신호를 보내면 서버 쪽이 점검 중이면 점검 중 신호를 보내서 접속을 못하게 할 겁니다.

    • @user-dl9td8dg4p
      @user-dl9td8dg4p 2 года назад

      확인해봤는데 패치중이더라도 telnet curl -n 명령어에 열린거로 나오더라구요

  • @user-xv8zf5eh5o
    @user-xv8zf5eh5o 2 года назад +2

    진짜 궁금한점 스타시티즌이라는 게임에서 서버메싱이라는 개념의 싱글샤드 서버를 목표로 개발중인데 이게 현실적인건지 한번 다뤄주실수 없나요?
    다뤄주신다면 관련 링크 찾아서 오겠습니다.

    • @user-xv8zf5eh5o
      @user-xv8zf5eh5o 2 года назад

      ruclips.net/video/TSzUWl4r2rU/видео.html

  • @user-ev8sg8zm3v
    @user-ev8sg8zm3v 2 года назад +1

    일반 인디게임같은 경우는 p2p나 host 서버면 충분할까요? 데디케이트 서버는 돈이 후달려서..

    • @wergia
      @wergia  2 года назад

      보통은 충분하지만 게임 보안에 신경을 써야 합니다.

    • @user-ev8sg8zm3v
      @user-ev8sg8zm3v 2 года назад +1

      @@wergia답변 감사합니다 혹시 추후에 시간이 되신다면 p2p나 host 서버 보안에 대하여 알려주실수있나요?

    • @wergia
      @wergia  2 года назад

      @@user-ev8sg8zm3v 아쉽게도 보안 관련 지식이 부족해서 알려드리기가 어렵네요 ㅜ

  • @user-cd3ko2uo3x
    @user-cd3ko2uo3x Год назад +1

    안녕하세요. 아주 초보적인 질문이지만 물어볼 곳이 없어서 여쭤봅니다ㅠㅠ
    혹시 게임 앱의 경우 인터넷 연결이 되어 있어야만 서버에 저장이 가능한가요??
    만약 그렇다면, 폰이 와이파이나 데이터 연결이 안 되어 있는 상태로 게임을 플레이했을 경우에는 어떻게 되나요..?

    • @wergia
      @wergia  Год назад

      네트워크 필수인 게임이라면 당연히 인터넷 연결이 되어 있어야 합니다.
      온라인이 필수인 게임에서 와이파이에 연결이 안된 경우 게임이 실행되면 게임에서 인터넷에 연결하라는 창을 띄우고 게임 플레이가 불가능하게 만들겠죠.

    • @user-cd3ko2uo3x
      @user-cd3ko2uo3x Год назад

      @@wergia 답변 감사합니다!! 다른 유저들 과의 상호작용이 필요 없는 (즉, 네트워크가 필수가 아닌) 게임이어도 서버를 사용하는 앱은 인터넷 연결이 필수라는 의미인가요?

  • @lyuk0749
    @lyuk0749 2 года назад +1

    계속 로그인 서버만 따로 두는데 혹시 로비서버와 로그인서버를 나눠 관리하는 이유가 있나요?

    • @wergia
      @wergia  2 года назад +1

      사실 서버를 나누는 기준은 서버를 구현하는 개발자에 따라서 천차만별입니다.
      제가 설명한 부분에서의 기준은 기능에 따른 분류이면서도 어느 한 쪽 기능을 담당한 서버가 부하가 걸려서 터졌을 때 다른 기능 쪽 서버에 영향을 미치지 않기 위한 것입니다.
      그 외에도 로그인 서버는 사용자 계정과 비밀번호 등 민감한 정보를 다루는 서버이기 때문에 따로 분리해서 다루는 것일 수도 있습니다.
      더 많은 질문이나 베르의 게임 개발 유튜브와 관련된 활동을 위한 디스코드 채널도 있습니다. 아래의 링크를 통해 방문하실 수 있습니다.
      discord.gg/tqmRTy4pgk

    • @lyuk0749
      @lyuk0749 2 года назад

      @@wergia 답변해주셔서 감사합니다!

  • @user-fv1iw2bl6c
    @user-fv1iw2bl6c 3 года назад +3

    엇! 오늘 어몽어스 10 아니였나요?ㅠ

    • @wergia
      @wergia  3 года назад

      아쉽게도 작업이 조금씩 밀리네요. 본업이 있다보니..ㅜㅜ
      요즘 회사 프로젝트가 마무리 단계라 일이 바빠요 ㅜㅜ

  • @설사뿌디딕뿌뿌뿡
    @설사뿌디딕뿌뿌뿡 3 года назад +2

    아 그래서 케로로팡팡이 호스트인 사람이 총알 다 흡수하고 개오지게 총알먹혔구나 그럼 혹시 케로로팡팡이 소규모 fps게임인데 그럼 p2p 서버 로 프리서버 구축하는게 맞는건가요? 답변부탁드립니다..

    • @wergia
      @wergia  3 года назад

      음 제가 케로로팡팡을 직접 플레이해보지는 못해서 자세히 알 수 는 없지만 그런 문제가 발생한다면 p2p 네트워크일 가능성이 높습니다.

    • @설사뿌디딕뿌뿌뿡
      @설사뿌디딕뿌뿌뿡 3 года назад +1

      @@wergia 감사합니다 그럼 혹시
      간단하게 프리서버 구축 순서 설명좀 부탁드려도됄까요..ㅠㅠ

    • @wergia
      @wergia  3 года назад

      음 저도 프리서버를 구축해본적이 없어서죠. 다른 게임의 프리서버 같은 경우는 코드를 따와서 어떻게 한다고 들었는데 이 작업은 사실상 불법이라 제가 안다고 해도 알려드릴 수가 없네요.