목록전체 글 (121)
하아찡

언리얼 버전 5.5.3서버언어 C++로 구성했습니다.실행화면현재 몬스터 움직임 로직몬스터 스포너 위치치를 기준으로 -1000 ~ +1000 사이의 값에서 랜덤한 좌표를 받아서 처리합니다. 나중에 몬스터별로 클래스가 생성됐을때 범위를 따로 지정해주면 될듯합니다. 움직이는 주기랑.SendBufferRef Monster::ServerMove(MonsterRef monster, unordered_map _levelMonsterSpawnLocation){ uint64 spawnerID = monster->SpawnerID; Protocol::S_MOVE pkt; Protocol::PosInfo* pos = pkt.mutable_posinfo(); pos->CopyFrom(monster->objectInfo->..

언리얼 버전 5.5.3서버언어 C++로 구성했습니다.서버 프로그램을 공부하는데 기분이 알쏭달쏭 합니다.뭔가 프로그래밍을 처음 문법을 다 배우고나서 뭔가 만들어봐야겠다 싶은 마음으로 프로그램을 만들라고 했지만 벽에 막혀버린 그런느낌을 또 한번 느끼네요... 몬스터 생성을위해 상당한 고민을 했습니다.. 거의 일주일정도 걸린거같습니다... 클라이언트와 서버를 동시에 작업을 하는데 제가 봤던 루키스님 강의에서 "클라이언트를 절대 믿지말라" 라는 말이 있어서 모든 데이터 처리는 서버에서 해야겠구나 라고 생각을 해봤는데 문제는 거기서부터 시작이 됐습니다. 현재 몬스터 생성을 하고싶은데 클라이언트에서 몬스터 스포너를 만들어서 해당 위치에다가 스폰을 하게 하면 되지 않을까? 그러면 서버에서도 굳이 몬스터 생성위치를 ..

언리얼 버전 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은 현재는 구상만 ..