목록2025/02 (6)
하아찡

언리얼 버전 5.5.3서버언어 C++로 구성했습니다.기존에 맵이동 패킷을 클라에서 보내는 패킷한개와 서버에서 응답해주는 패킷한개를 만들어 총 2개를 만들었는데 문제점이 발생함. 클라이언트에서 맵 이동중에 이동하는 맵 패킷을 받다보니 잘못된 처리가 발생함.그래서 로직을 조금 변경해서 아래와같이 변경했습니다. 기본 로직은1. 클라이언트에서 맵이동 패킷을 보냄.2. 서버에서 맵에대한 데이터를 다보냄. 변경된 로직1. 클라이언트에서 이동할 맵Index값을 넘김2. 서버측에서 클라에서 전달해준 Index값을 가지고 맵 이름을 넘겨줌.3. 서버에서 보낸 맵 이름을 가지고 맵이동을 시킴.4. 클라이언트에서 맵이동이 완료된 이벤트를 활용해서 맵이동 완료됐다고 완료패킷을보냄.5. 서버에서 완료패킷을 받으면 해당 맵에 존..

언리얼 버전 5.5.3서버언어 C++로 구성했습니다.일단 클라이언트에서 맵이동해주는 액터를 하나 생성해줍니다.저는 LevelChangerBase 클래스를 하나 추가했습니다. LevelChangerBase.h#include "CoreMinimal.h"#include "GameFramework/Actor.h"#include "Components/BoxComponent.h"#include "LevelChangerBase.generated.h"/******************************************************** 클라이언트에서 Level 이동에 사용********************************************************/UCLASS(Blueprin..

언리얼 버전 5.5.3서버언어 C++로 구성했습니다.카테고리명이 이것저것 테스트입니다. 서버공부를 하는데있어서 만들어보고 싶었던 기능을 만들어보는중입니다.이사람은 이렇게 만들어봤구나 참고해주세요~ 일단 구성을 생각해봤을때 맵(Level)과 채널이 필요할듯 합니다.맵은 고유값으로 가지고있고 해당 맵값으로 접근하면 해당 채널값을 넘겨주는 방향으로 진행했습니다. 패킷은 Protobuf를 사용해서 구성은 아래와 같이했습니다.enum LevelType{ LEVEL_TYPE_NONE = 0; LEVEL_TYPE_BASE = 1; LEVEL_TYPE_TEST = 2;} 기본적인 맵 값 입니다. 해당 값을 가지고 각각 맵이 가지고있는 채널값을 넘겨줄 예정입니다. 그리고 유저가 해당 맵값과 채널값을 가지게 합니다.mes..

언리얼 버전 5.5.3서버언어 C++로 구성했습니다. 일단 채팅을 하기위한 채팅패킷 구조를 설계.id -> 게임 내부 개인 ID값입니다. DB 아이디값이 아님.msg -> 실제로 전달할 채팅 메세지type -> 채팅 타입. 예를들어 전체, 파티, 궛말 위와같이 패킷 구조를 가지고있습니다.id값이 DB에 저장하지않은 개인 ID값인 이유는 무엇인가?서버에 접속한 유저에게 서버가 각각 고유 ID값을 1씩 증가시켜서 발급시켜주고, 해당 발급받은 ID를 가지고 Object를 구분을 하기때문에 서버단에서 처리할땐 따로발급해준 id값을 패킷으로 전달해준다.즉, 해당 발급받은 ID는 서버도 가지고 있고 클라이언트도 자기 자신의 ID값을 가지고 있습니다. msg는 말그대로 메세지 전달값입니다. type은 현재는 구상만 ..

언리얼 버전 5.5.3서버언어 C++로 구성했습니다. 이전에 적어둔 문제점과 추가해야될점문제점1. 액터를 위치값을 건들다보니 애니메이션이 작동하지않음. -> 걷는 모션이 작동하지않음. 다른방법으로 수정해야함.2. 움직일때 마다 서버에 움직임 데이터를 보내다보니 너무 많은 데이터가 들어감. 약간의 보정처리를 해줘야할듯. 추가해야될점.1. 점프 처리를 아직하지않음. 구성은 어떻게 해야할지 고민중. 일단 생각한건 점프패킷을 하나 만들어서 점프할때 패킷을 보내도록 추가할듯함.2. 시선처리 -> 이것도 과도하게 데이터를 보낼거같으니 움직임 보정처리할때 비슷하게 처리하면 될듯함. 문제점 - 1원인기존 코드에서 SetActorLocation() 함수를 사용해서 캐릭터를 움직이게 처리를해둠. 해결해당 코드를 아래 코드..

언리얼 버전 5.5.3서버언어 C++로 구성했습니다. 아래 코드는 캐릭터 코드 중 움직임 처리하는 부분입니다.기존애 존재하는 Move 함수에 SendMove를 추가하여 움직인 데이터를 서버에 전송합니다.void AlllllllllqqqCharacter::SendMove(){ // 움직인 후 값받아옴 const FVector Location = Controller->GetPawn()->GetActorLocation(); const FRotator MoveRotation = Controller->GetControlRotation(); float Yaw = MoveRotation.Yaw; if (auto* GameInstance = Cast(GWorld->GetGameInstance())) { // 움직..