전체 글
-
블루아카이브 루트슈터 팬게임 프로젝트(18) - 적 스폰 시스템 & 웨이브 게임모드(3)루트슈터 프로젝트 2024. 1. 20. 01:02
안녕하세요. 오늘은 웨이브, 남은 적 정보를 UI로 보여주고 웨이브 간 시간차를 설정해서 모든 적을 처치하면 5초 후 다음 웨이브가 시작되도록 하겠습니다. WaveWidget.h UCLASS() class PROJECTBLUELANDS_API UWaveWidget : public UUserWidget { GENERATED_BODY() public: UPROPERTY(BlueprintReadWrite, meta=(BindWidget)) TObjectPtr WaveRound; UPROPERTY(BlueprintReadWrite, meta=(BindWidget)) TObjectPtr EnemyLeft; void RefreshWidget(int Wave, int enemyLeft); }; 웨이브 정보들을 보여주..
-
블루아카이브 루트슈터 팬게임 프로젝트(18) - 적 스폰 시스템 & 웨이브 게임모드(2)루트슈터 프로젝트 2024. 1. 19. 01:55
안녕하세요. 오늘은 적 스폰 시스템을 좀 더 다듬어 보겠습니다. 그 이전에 적을 스폰하여 AI를 빙의시킬때 오류가 발생하는 경우가 있었는데요. AI를 프로그래밍 할 때 주의할 점이 있습니다. AEnemyAiController.cpp void AEnemyAiController::BeginPlay() { Super::BeginPlay(); playerPawn = UGameplayStatics::GetPlayerPawn(GetWorld(), 0); //SetFocus(playerPawn); if(AIBehavior && playerPawn) { RunBehaviorTree(AIBehavior); GetBlackboardComponent()->SetValueAsVector(TEXT("PlayerLocation"..
-
블루아카이브 루트슈터 팬게임 프로젝트(17) - 체력 컴포넌트 교체루트슈터 프로젝트 2024. 1. 17. 18:17
안녕하세요. 이틀동안 포스팅이 없었는데, 야간알바를 하느라 조금 쉬어서 개발이 진행되지 않았었습니다. 아무튼 이번에는 체력 컴포넌트를 교체하였습니다. 사실 교체 라는 단어보다는 삭제라는 단어가 더 어울립니다만.. 이제는 적과 플레이어에게 체력컴포넌트를 부여하지 않고 각 클래스에서 따로 체력을 관리하는 함수를 구현해두기로 했습니다. 그 이유는 1. 플레이어와 적은 서로 다른 체력 및 데미지 매커니즘을 가지도록 게임을 설계 하면서 컴포넌트 하나가 두 종류의 객체의 체력을 관리하는게 힘들어짐 2. 체력의 변동을 UI와 연동해야되는데 이를 체력 컴포넌트 하나가 조정하려면 컴포넌트가 너무 많은 헤더파일을 가져야함 큰 이유는 이 2개가 되겠네요. 지금와서는 차라리 체력 컴포넌트는 파괴 가능한 오브젝트에만 적용하고 ..
-
블루아카이브 루트슈터 팬게임 프로젝트(16) - 플레이어 캐릭터 모델링 교체 & 리타겟팅루트슈터 프로젝트 2024. 1. 14. 21:12
안녕하세요. 오늘은 더이상 미룰 수는 없을 것 같아서 캐릭터 모델링을 블루아카이브의 캐릭터로 교체하기로 했습니다. 누구를 할까 조금 고민했지만 역시 간판 히로인(?)인 시로코가 제일 적당할 것 같아서 Booth에서 모델링을 구매했습니다. https://mirin-setokuma.booth.pm/items/2840468 【3Dモデル】シロコ【VRC】 - みりん屋 - BOOTH VRChat向けに基本設定を行ったシロコの3Dモデルです。 ■同梱内容 ・シロコ:モデル ・銃:モデル ・バッグ:モデル ・各種テクスチャPSDファイル(Photoshopにて作成) ・上記内容を設定したUn mirin-setokuma.booth.pm 가격은 5000엔, 엔저라 다행이네요 제가 이번에 한 일의 순서는 다음과 같습니다 1. 구매한 모델링에서 ..
-
블루아카이브 루트슈터 팬게임 프로젝트(15) - 적 스폰 시스템 & 웨이브 게임모드(1)루트슈터 프로젝트 2024. 1. 14. 01:05
안녕하세요 이번에는 적 스폰 시스템을 구현해보았습니다. 중간에 치명적인 에러가 있어서 (블루프린트에서 메시가 사라지는 오류) 그걸 복구하느라 너무 많은 시간을 소모했네요. 얼추 완성했지만 AI가 적용되지 않는 오류가 있어서 계속 작업을 해야할 것 같습니다. 일단 적 스폰 작업을 하기에 앞서, 적의 레벨별 상세한 스탯을 데이터 테이블로 만들어 주었습니다. 적의 레벨별 체력, 데미지, 경험치 등등의 기본 정보들이 담겨있습니다. EnemySpawner.h UCLASS() class PROJECTBLUELANDS_API AEnemySpawner : public AActor { GENERATED_BODY() public: // Sets default values for this actor's properties ..
-
블루아카이브 루트슈터 팬게임 프로젝트(14) - 플레이어 레벨, 경험치 시스템루트슈터 프로젝트 2024. 1. 12. 15:00
안녕하세요 이번 포스팅은 플레이어의 레벨과 경험치 관리 시스템 및 UI에 대한 포스팅입니다. 루트슈터 장르는 RPG이기 때문에 FPS,TPS 슈터게임이지만 레벨이 존재합니다. 플레이어는 적을 계속 처치하면서 경험치를 얻고 레벨업을 할 수 있어야 합니다. 제 게임에서는 플레이어의 레벨에 따라 플레이어의 기본 체력이 상승하고, 다음 레벨까지 요구하는 경험치양이 계속 변동합니다. 그렇기 때문에 먼저 이를 데이터 테이블로 작성해줍니다. 이런식으로 만들어 줍니다. 다음 레벨로 갈때 필요한 경험치와 그 레벨에서 제공되는 체력(방어구로 얻어지는 스탯 제외), 누적 경험치를 데이터 테이블로 만들어 줬습니다. 누적 경험치는 지금 사용하고 있지는 않지만 혹시 몰라서 만들어 뒀습니다. ABluelandsGameModeBas..
-
블루아카이브 루트슈터 팬게임 프로젝트(13) - 체력, 잔탄 UI루트슈터 프로젝트 2024. 1. 11. 22:32
안녕하세요. 이번 시간에는 체력바와 현재 장비한 총기의 잔탄수를 확인할 수 있는 UI를 만들어 보았습니다. 비교적 간단하다고 할 수 있지만 계속 삽질하느라 시간이 다 가버렸네요. 결론은 체력바와 같은 간단한 UI는 그냥 블루프린트에서 처리시키는게 더 편하다는 것입니다. PlayerStatus.h UCLASS() class PROJECTBLUELANDS_API UPlayerStatus : public UUCustomUI { GENERATED_BODY() public: void Init() override; class UPlayerHPBar* hpBar; class UEXPBar* expBar; class UMagazineState* magBar; }; 먼저 플레이어 상태 (체력바, 경험치바, 잔탄수 UI)..
-
블루아카이브 루트슈터 팬게임 프로젝트(12) - 방어구 스탯 적용루트슈터 프로젝트 2024. 1. 10. 23:58
안녕하세요. 어제는 방어구 아이템을 새로 생성하고 인벤토리로 주워서 툴팁 옵션을 볼 수 있게 했는데요. 이번에는 그 방어구를 장착시키고 스탯을 실제로 플레이어에게 적용 시킬 수 있게 하겠습니다. PlayerCharacter.h UPROPERTY(EditDefaultsOnly) FItemData armorSlot[3]; //캐릭터 장착중인 방어구들 float playerStat[7] = {0, }; // 방어구로부터 얻은 플레이어 스탯 void InitPlayerStat(); //방어구를 읽어들여서 위의 playerStat에 적용 플레이어 캐릭터의 헤더파일에 장착된 아이템에 대한 정보를 가진 배열과 방어구의 스탯을 전부 합산해서 담을 실수형 배열, 그리고 방어구들을 읽어들여서 실수형 배열에 담는 역할을 하..