루트슈터
-
블루아카이브 루트슈터 팬게임 프로젝트(9) - 인벤토리 확장루트슈터 프로젝트 2024. 1. 5. 21:22
안녕하세요. 이사가 정말 얼마 남지 않았기 때문에 방에 있는 짐들을 정리하느라 바쁘네요. 딱히 기간을 정해놓고 하는 프로젝트는 아니지만, 개발이 지체되는거 같아 마음이 조급해지는 기분입니다. 조금 더 여유를 갖고 진행해야겠네요. 그래서 오늘은 간단하게 인벤토리를 보완해봤습니다. 저번에 인벤토리를 구현할때 딱 12개의 슬롯만 넣어놨었는데요, 진짜로 인벤토리에 12칸만 달랑 있다면 정말 답답하겠죠. 그래서 이번에는 스크롤 기능을 넣어 인벤토리를 40칸으로 확장해보았습니다. 사실 루트슈터 장르를 하다보면 40칸도 그렇게 넉넉한 편이 아닌데요(디비전2에서는 100칸 정도 줬던것 같습니다.), 일단은 이정도로 넣어보고 더 필요하다 싶으면 60칸, 80칸으로 늘려볼 생각입니다. https://youtu.be/FtD..
-
블루아카이브 루트슈터 팬게임 프로젝트(8) - 적 체력바루트슈터 프로젝트 2024. 1. 4. 19:56
루트슈터 게임을 할 때 적에게 명중하면 적의 바로 머리 위에 적의 체력바와 레벨 등의 대략적인 정보가 보입니다. 이번에는 이것을 구현해보겠습니다. EnemyHPBarWidget.h UCLASS() class PROJECTBLUELANDS_API UEnemyHPBarWidget : public UUserWidget { GENERATED_BODY() public: UPROPERTY(BlueprintReadWrite, meta=(BindWidget)) TObjectPtr EnemyName; UPROPERTY(BlueprintReadWrite, meta=(BindWidget)) TObjectPtr EnemyLevel; UPROPERTY(BlueprintReadWrite, meta=(BindWidget)) TOb..
-
블루아카이브 루트슈터 팬게임 프로젝트(7) - 사격 매커니즘, 반동루트슈터 프로젝트 2024. 1. 3. 23:16
안녕하세요. 오늘 설명할 기능은 사격 매커니즘입니다. FPS, TPS는 모두 크로스헤어(조준점)가 카메라 정중앙에 있습니다. 하지만 캐릭터가 장비한 총기는 항상 중앙이 아닌 오른쪽이나 왼쪽에 있기 때문에 무작정 총구에 총알이 발사되게 설정한다면 왜곡이 생깁니다. 이렇기 때문에 총알 발사체를 설정하지 않고 레이캐스트 기능을 이용하여 사격 기능을 구현하는 경우가 많습니다. 하지만 저는 어떻게든 발사체로 구현하고 싶었고 한가지 방법을 생각했습니다. 바로 카메라에서 조준점 방향으로 레이캐스트를 쏘고 충돌지점으로 총알을 발사하게 하는 방법입니다. 이렇게 하면 발사체로 사격을 구현하면서 조준점으로 총알이 가도록 만들 수 있습니다. 바로 코드 설명 하겠습니다. Gun.cpp void AGun::Fire(FVector..
-
블루아카이브 루트슈터 팬게임 프로젝트(6) - 아이템 툴팁 기능루트슈터 프로젝트 2024. 1. 2. 14:55
안녕하세요. 어제 신정은 잘 쇠셨는지요? 저는 다음주에 이사를 가서 가기전에 버릴 짐들을 정리하고 야간알바를 하느라 개발 할 시간이 없었습니다. 아마도 이사가 끝나기 전까지는 여유가 많이 없을 것 같네요(핑계) 인벤토리에 있는 아이템에 마우스 커서를 올리면 그 아이템에 대한 스탯이 무엇인지 알려주는 기능이 있습니다. 이를 툴팁기능이라고 하는데요. RPG 게임에, 인벤토리가 있는 게임이라면 무조건 있어야 하는 UI입니다. 툴팁 기능 또한 언리얼에서 따로 제공해주는 기능이 있습니다. 언리얼은 정말 없는게 없네요 ㄷㄷ합니다 이번 기능은 껍데기방(https://husk321.tistory.com/432)님의 구현 코드를 참고하였습니다. 좋은 정보 감사합니다. UCLASS() class PROJECTBLUELAN..
-
블루아카이브 루트슈터 팬게임 프로젝트(5) - 드래그 앤 드롭 기능루트슈터 프로젝트 2024. 1. 1. 00:51
새해가 왔습니다. 여러분들 모두 행복하고 하는일마다 잘되기만 하는 2024년이 됐으면 좋겠습니다. 2023년의 마지막인 어제도 저는 하루종일 언리얼과 블렌더와 씨름하면서(..) 하루를 알차게 보냈습니다. 새해가 와도 저는 한동안 계속 이러고 있을것 같네요. 오늘 소개할 기능은 인벤토리의 드래그 앤 드롭 기능입니다. 인벤토리의 공간 정리라던가, 장비 장착및 해제를 위해서는 필수적인 기능입니다. 이 기능 또한 별빛상영관님의(https://starlight-showcase.tistory.com/41) 글을 참고하여 구현하였습니다. 이건 뭐 제가 혼자서 하는게 없군요(..) UCLASS() class PROJECTBLUELANDS_API UInventoryDragDrop : public UDragDropOper..
-
블루아카이브 루트슈터 팬게임 프로젝트(4) - 인벤토리 기능루트슈터 프로젝트 2023. 12. 31. 00:47
루트슈터 장르는 기본적으로 FPS지만, 디아블로식 아이템 파밍요소가 있기 때문에 인벤토리, 장비 기능이 필수입니다. 그냥 단순 슈터장르면 인벤토리 기능은 필요없는데.. 괜히 루트슈터 장르를 만들어 보겠다고 일거리가 늘어났습니다(?) 인벤토리 기능의 대부분(사실상 전부)은 별빛상영관님 https://starlight-showcase.tistory.com/36 의 게시글을 참고하여 구현하였습니다. 친절한 설명 감사합니다. 플레이어 캐릭터 클래스 헤더파일 먼저 플레이어의 헤더파일에 1편에서 만든 아이템 구조체 배열을 만들어줍니다. 원래 인벤토리 슬롯 개수같은건 이렇게 하드코딩으로 해놓으면 절대 안되는것을 알지만... 구현만 먼저 해놓자는 마인드로 이렇게 설정해놓았습니다. 이걸 또 나중에 바꿔주려고 엄청 삽질할..
-
블루아카이브 루트슈터 팬게임 프로젝트(3) - 아이템랜덤 옵션 생성기능루트슈터 프로젝트 2023. 12. 30. 00:24
핵앤슬래시, 루트슈터 장르의 꽃은 누가 뭐래도 다양한 옵션, 다양한 등급의 아이템 드랍 시스템일 것입니다. 이를 구현하는 방법에 대해서 고민을 했었습니다만, 이것에 대해 정답은 없는것 같아서 일단 제 생각대로 구현한 방법에 대해 소개하겠습니다. 먼저 제가 한 일은 무기의 기본 베이스 옵션을 DataTable로 만드는 일이었습니다. 제가 고안한 무기 스탯 산출방식은 기본 무기 베이스에 등급별로 추가옵션이 몇줄 붙어서 스탯이 변하는 방식입니다. 예를 들면 30데미지의 베이스 무기에 20% 무기데미지 증가 옵션이 붙으면 36이 되는 방식인거죠. Name 열은 사실 이름이 아니라 레벨입니다. 상대하는 적의 레벨이 높을수록 높은 데미지의 베이스 아이템이 나와야 하기 때문에 레벨이 높아질수록 베이스 데미지가 높아집..
-
블루아카이브 루트슈터 팬게임 프로젝트(2) - 아이템, 총기 클래스루트슈터 프로젝트 2023. 12. 28. 23:29
이 프로젝트를 시작하고 나서는 하루종일 책상에 앉아 언리얼만 만지작 거리고 있습니다. 즐겁기는 한데 건강에 이상이 오진 않을지 걱정되네요. 아무튼 요새는 하루에 계속 하나씩 기능을 추가하면서 진행하고 있습니다. 아직까지는 엄청나게 벽에 가로막힌 느낌은 들지 않아서 하루에 조금씩 진행이 되고 있는데 언젠간 크게 막힐거 같은 느낌이 들어 불안하네요. 오늘은 아이템 클래스와 총기 클래스에 대해 소개하겠습니다. 사실 지금 소개한것들은 개발한지 기간이 좀 됐고 지금은 인벤토리 기능을 구현중입니다. 계속해서 꾸준하게 소개해 가도록 하겠습니다. ItemBase.h 먼저 아이템들의 기본 베이스 클래스입니다. 아이템의 이름, 아이템 레벨, 타입, 희귀도는 모든 아이템이 가지고 있기 때문에 이곳에 넣어놓았습니다. 참고로 ..