반응형

게임 서버 구현 6

Part 4-6-4. 유니티 연동 : 유니티 연동 #4

유니티 연동 지난 시간에는 단순 채팅이 아니라, 실제로 플레이어가 움직이는 것과 같이 이동하는 메서드를 콘솔에서 구현하였다. 이 때에 이동하는 패킷을 만들기 위해 PDL 파일을 수정하고, 그에따라 클라이언트/서버에서 추가적으로 로직을 수정해 주었다. 이 떄 Enter, Leave, Move, Player List 등 다양한 메서드들 또한 같이 구현하는 시간을 가져보았다. 오늘은 유니티 연동의 마지막 강의로 콘솔을 이용해 구현하는 것이 아닌 실제로 유니티를 이용해 구현하는 시간을 가진다. 🐛 유니티 버그 잡기 유니티를 구동해서 실행하면, 아래 이미지와 같이 콘솔창에 여러 에러가 우리를 반겨줄 것이다. 하나씩 에러 메시지를 클릭해보며, 이를 수정해보자. 😥 📜 ClientPacketManager.cs Cli..

Part 4-6-3. 유니티 연동 : 유니티 연동 #3

유니티 연동 지난 시간에는 지금까지 구축해왔던 클라이언트-서버간 연결 프로젝트를 유니티에 연동하여, 유니티 내에 3D Obejct 실린더로 만든 임시 객체 Player를 3초마다 찾는 실습을 진행해보았다. 이 때 서브 쓰레드의 작동으로 인해 Player를 정상적으로 찾지 못하였다. 따라서 메인 쓰레드에서 함수가 실행되어 플레이어를 찾을 수 있도록 설정해주었다. 또한 과거 Command 패턴 학습방법을 이용해 큐를 생성하여 일감을 던져주는 형태로 마찬가지로 변경하여 정상적으로 Player를 메인 쓰레드에서 찾을 수 있도록 설정하였다. 🦀 채팅을 넘어, 움직임까지 이전 유니티 연동 시간에서는 단순히 게임을 실행하면, Player를 찾았다는 로그만 덜렁나타나서 이것만 가지고서는 MMO의 개념을 명확하게 보여줄..

Part 4-6-2. 유니티 연동 : 유니티 연동 #2

유니티 연동 지난 시간에는 유니티 연동 실습을 위해 프로젝트를 하나 새롭게 생성하고, 기존에 사용했던 스크립트들와 새롭게 생성한 NetworkManager를 통해 유니티에서 실제로 연동이 되는지 확인하는 시간을 가져 보았다. 오늘도 이어서 추가적으로 연동하는 법을 배워보도록 하자. 👢 비동기 처리로 인한 문제 📜 PacketHandler.cs 이전 시간에는 PacketHandler 스크립트 내부에 채팅 핸들러로 들어왔을 때 로그만 찍어줬다면 오늘은 이 부분을 수정하여 실질적인 액션을 취할 수 있도록 수정해보자. 따라서 유니티 내부에서 실린더 오브젝트를 새롭게 만들어주고 이름을 "Player"로 설정하도록 하자. using DummyClient; using ServerCore; using System; u..

Part 4-6-1. 유니티 연동 : 유니티 연동 #1

유니티 연동 지난 시간에는 우선 순위 큐를 이용하여 JobTimer Class를 새로 만들어 주었다. 이 후, Push와 Flush 메서드를 통해 일감들을 등록하고 관리하는 시간을 가졌다. 오늘은 여태까지 만든 이 모든 것들을 유니티를 통해 실제로 연동이 정상적으로 잘 되는지 확인해보며 학습하는 시간을 가져본다. 🙎‍♂️ 실습에 들어가기 앞서 먼저 좋은 소식과 나쁜 소식이 하나 있다. 좋은 소식은 네트워크 통신을 구현하기 위해 사용했던 스크립트들을 재 사용할 수 있다는 것이고, 나쁜 소식은 유니티의 정책상 C#에서도 허용되는 문법과 그렇지 않은 문법이 있어 GenPacket 스크립트에서 사용한 ReadOnlySpan, TryWriteBytes와 같은 것들을 사용하지 못한다는 것이다. 그러나 24.01.0..

Part 4-1-1. 서버 OT 및 환경 설정

게임 서버 개론 서버란? 서버 👉 다른 컴퓨터에서 연결이 가능하도록 대기 상태로 상시 실행 중인 프로그램 영업 중인 식당과 유사하다. 손님이 올 수 있도록 식당 열고 대기하다가 손님 오면 서비스 제공 ✈ 서버의 종류 1️⃣ Web Server 1️⃣ Web Server ex) HTTP 질의/응답 형태 1. 정보 요청/갱신이 드물다. 2. 한번만 질의 응담 받고 떠남 단순히 한번만 교류 간단한 요청과 그에 대한 응답을 할 때 많이 사용한다. 예를 들어 로그인, 랭킹 시스템 불러오기 같은 단발성으로 불러오고 말 것들은 웹서버를 사용하는 것이 좋을 것 같다. 3. 실시간 상호 교류가 필요하지 않다. 4. 식당에서 직원이 손님에게 먼저 접근하는 일이 없다. 즉, 서버가 먼저 클라에게 접근하는 일이 없다. 테이크..

반응형