전체 글54 25.04.08 채팅시스템 구현 (상) 1ㅂ프로젝트 개요이 가이드에서는 언리얼 엔진 5.5.4 버전을 사용해 간단하지만 완벽하게 동작하는 채팅 시스템을 구현합니다. C++로 핵심 로직을 작성하고 블루프린트로 연결하는 방법을 단계별로 설명드리겠습니다. 그전에서버 모델과 동작 원리를 알아봐야합니다. 서버 유형 비교표서버 유형설명장점단점대표 게임P2P (Peer-to-Peer)모든 클라이언트가 서버 역할 동시 수행서버 유지비용 없음, 빠른 통신보안 취약, 호스트 나가면 게임 종료다크소울, 토렌트Listen Server한 클라이언트가 호스트 역할 수행간편한 설정, 추가 인프라 불필요호스트 성능에 전체 게임 영향마인크래프트, 어몽어스Dedicated Server전용 서버 프로그램 운영안정적 성능, 공정한 게임 환경별도 서버 운영 비용 발생배틀그라운드,.. 2025. 4. 8. 23.03.27 Unreal 엔진 코드 악취 24가지: 심층 분석과 리팩토링 전략 프로그래밍을 하다 보면 유지보수가 어렵고 가독성이 떨어지는 코드를 마주할 때가 있습니다. 이러한 문제를 "코드 악취"라고 부르며, Unreal 엔진 프로젝트에서도 흔히 발견됩니다. 이 글에서는 24가지 코드 악취의 예시와 이를 개선하는 방법을 소개합니다.1. 기이한 이름 (Mysterious Name)문제점: 변수나 함수의 이름이 모호해 의도를 파악하기 어려움.해결책: 역할이 명확한 이름 사용.cppCopy// 나쁜 예float AAA;void DoIt(int x);// 좋은 예float CurrentHealth;void AttackEnemy(int DamageAmount);2. 중복 코드 (Duplicated Code)문제점: 유사한 로직이 반복되어 수정이 어려움.해결책: 상속 또는 컴포넌트로 통합.c.. 2025. 3. 27. 25.03.19 Prediction and Reconciliation Client-Side Prediction (클라이언트 측 예측)Client-Side Prediction은 멀티플레이어 게임에서 네트워크 지연(렉)을 최소화하고, 플레이어의 조작감을 부드럽게 만드는 핵심 기술입니다. 이 기술은 클라이언트가 서버의 응답을 기다리지 않고, 먼저 자신의 캐릭터를 움직인 후 나중에 서버의 결과를 받아 수정하는 방식으로 동작합니다.Client-Side Prediction의 동작 원리클라이언트 입력 & 로컬 이동:플레이어가 이동 키를 누르면, 클라이언트는 즉시 캐릭터를 움직입니다. (예측 동작)동시에 서버에게 "이 방향으로 이 시간에 움직였다"는 정보를 전송합니다.서버 시뮬레이션:서버는 클라이언트의 이동 요청을 받아 검증합니다. (예: 캐릭터가 움직일 수 있는 상태인지 확인)서버는 .. 2025. 3. 19. 25.03.17 대용량 데이터 Replication 최적화하기 1️⃣ 대용량 데이터를 효율적으로 Replication하는 방법언리얼 엔진의 Replication 시스템은 작은 데이터(예: 캐릭터 상태)에 최적화되어 있습니다.대용량 데이터(예: 배열, 구조체)를 Replication할 때는 문제가 발생할 수 있습니다:네트워크 패킷 크기 제한 초과: 한 번에 너무 많은 데이터를 보내면 네트워크가 버티지 못합니다.대역폭 과다 사용: 패킷 손실이나 지연이 발생할 수 있습니다.연결 끊김: 최악의 경우 서버와 클라이언트 간 연결이 끊길 수 있습니다.2️⃣ FastArraySerializer대용량 배열을 효율적으로 Replication하기 위한 도구입니다.변경된 부분만 전송하여 네트워크 부하를 줄입니다.예: 인벤토리 시스템에서 아이템이 추가/삭제/수정될 때마다 변경 사항만 전송.. 2025. 3. 17. 23.03.17 Server-Client 모델과 인스턴스 실행 모드 1️⃣ Server-Client 모델언리얼 엔진은 멀티플레이어 게임에서 Server-Client 구조를 사용합니다.Server: 게임의 상태를 관리하고 모든 결정을 내리는 중심입니다.Client: Server로부터 정보를 받아 화면에 표시하고, 입력을 Server로 보냅니다.핵심 원칙: "Never Trust the Client"클라이언트는 절대적으로 신뢰할 수 없기 때문에, 모든 중요한 결정은 Server에서 이루어져야 합니다.예: 플레이어가 총을 쏘는 행동을 클라이언트에서 처리하면, 해커가 조작할 수 있습니다. 따라서 Server가 총알 발사를 검증하고 결과를 모든 클라이언트에게 알려야 합니다.2️⃣ 실행 모드언리얼 엔진은 다양한 실행 모드를 지원합니다. 각 모드의 특징은 다음과 같습니다:실행 모드정.. 2025. 3. 17. 25.03.14 언리얼 Replication 개념과 이벤트, 이벤트 디스패처 개념 1️⃣ Listen Server 환경에서 권한 체크가 중요한 이유Listen Server는 서버와 클라이언트가 한 컴퓨터에서 돌아가는 환경입니다.예를 들어, 친구와 게임을 할 때 내 컴퓨터가 서버 역할을 하면서 동시에 나도 게임을 플레이하는 상황이죠.이때 문제는, 서버에서만 실행되어야 하는 코드와 클라이언트에서만 실행되어야 하는 코드가 섞일 수 있다는 겁니다.예: 아이템을 생성하는 코드는 서버에서만 실행되어야 하는데, 클라이언트에서 실행되면 버그가 발생합니다.그래서 권한 체크가 필요합니다."이 코드는 서버에서만 실행해!" 또는 "이 코드는 클라이언트에서만 실행해!"라고 명확히 구분해주는 거예요.2️⃣ 이벤트와 Replication (동기화)멀티플레이어 게임에서는 서버와 클라이언트가 서로 정보를 주고받아야.. 2025. 3. 14. 이전 1 2 3 4 ··· 9 다음