전체 글 41

UE4 게임 개발 EscapeGame - 22 : 피드백

지인들에게 플레이를 시켜보고 피드백을 받아봤습니다. 다행히 버그성 피드백은 없었고, 기획적인 피드백만 들어와서 기분이 좋았습니다. 1. 방향을 알려줬으면 좋겠다. -> 플레이어의 정면벡터를 받아와서 HUD에 나침반처럼 동서남북을 출력해주었습니다. 2. 아이템 사용을 키보드로 가능하게 했으면 좋겠다. -> 인벤토리 기능을 사용하려다보니 클릭으로만 아이템 사용이 가능했는데 키보드 입력을 받아서도 플레이어쪽 UseInventory 함수를 호출시켰습니다. 3. 아이템 사용 시간을 늘렸으면 좋겠다. -> 게임 난이도 및 2번 피드백과 연결되는데 클릭해서 인벤토리창을 끄는데 벌써 5초 중 2초가 지나있어서 불편하다는 의견이 많았습니다. 7초로 지속시간을 늘렸고, 키보드 사용까지 가능해졌으니 게임 난이도가 많이 하락..

UE4 게임 개발 EscapeGame - 21 : 패키징

1. 아이콘 선택 프로젝트 세팅 - 플랫폼 - Windows에 가보면 게임 아이콘을 설정할 수 있습니다. .ico 파일만 가능합니다. 무료 ico 파일 - icon-icons.com/ Free Icons PNG, ICO, ICNS and Vector file SVG Best free icons for personal and commercial use SVG - PNG Browse Newest Iconsets Christmas and chocolate Weather Solid - Daily forecast media (part 2) Mobile UI (part 2) Minimalist UI New year Christmas & new year Christmas We'll help you find free ..

UE4 게임 개발 EscapeGame - 20 : 게임 엔딩 제작

게임 엔딩을 두 가지 트리거로 만들었습니다. 1. 시네마틱 CineCameraActor를 생성해서 원하는 위치마다 키를 추가해주면서 카메라를 이동 및 회전시켜줍니다. 오디오, 페이드, 이벤트 등 다양하게 효과를 줄 수 있고, 시간 조절도 가능합니다. 블루프린트 트리거를 생성해서 OnComponentBeginOverlap 이벤트때 시네마틱을 플레이해주고 초기값 세팅도 가능합니다. 2. cpp 블루프린트에서 추가 작업을 해주고싶었는데 복잡하고 가독성이 떨어져서 추가 처리는 cpp로 해줬습니다. void ATriggerEnding::TriggerBeginOverlap( UPrimitiveComponent* OverlappedComponent, AActor* OtherActor, UPrimitiveCompone..

UE4 게임 개발 EscapeGame - 19 : SaveGame

1. SaveGame을 상속받은 cpp 클래스를 생성해주고, 저장하고싶은 데이터들을 멤버로 넣어줍니다. // MySaveGame.h #pragma once #include "GameInfo.h" #include "GameFramework/SaveGame.h" #include "MySaveGame.generated.h" UCLASS() class ESCAPEGAME_API UMySaveGame : public USaveGame { GENERATED_BODY() public: UMySaveGame(); public: // 게임 상태 UPROPERTY(VisibleAnywhere, Category = Basic) FVector SaveLocation; UPROPERTY(VisibleAnywhere, Categ..

UE4 게임 개발 EscapeGame - 18 : 각종 수정 사항

만들다가 처음 생각과 다르게 문제가 생겨서 수정했던 내용들 정리해봤습니다. 1. 좀비 이동 관련 UAIBlueprintHelperLibrary::SimpleMoveToLocation(pController, vTargetLoc); -> 이동하다가 다른 태스크 걸리면 빠져나옴 -> 타겟무브에 활용 pController->MoveToActor(pTarget, -1.f, false, true); -> 타겟까지 무조건 이동 -> 패트롤에 활용 위에서 패트롤에 활용한 무브함수는 방향이 무조건 타겟을 바라보게 되어있어서 굉장히 어색합니다. 따라서 자연스럽게 이동하려면 타겟무브와 동일한 함수 사용. 2. 좀비 피직스 관련 좀비 장애물과의 피직스 off -> 돌이 튕겨나가는 현상 있었음 3. Rotation 관련 Tri..

UE4 게임 개발 EscapeGame - 17 : 인벤토리

1. 아이템 구상 (No Pain Potion, Invisibility Cloak, Penetrate Stone) No Pain Potion - 장애물에 닿아도 죽지않음. Invisibility Cloak - Zombie Detect에 걸리지않음. Penetrate Stone - 벽 가까이에 가면 벽 너머를 볼 수 있음. 2. UI 생성 ListView를 이용하여 인벤토리 제작. 세가지 구성. 1. 각 아이템에 대한 정보를 담고있는 클래스 2. 각 아이템의 정보를 받아와서 한 칸을 차지하는 UI 3. 한칸한칸으로 구성된 전체 인벤토리 UI InventoryItem 블루프린트에서 User Object List Entry 설정을 해줘야합니다. 그래야 Inventory 위젯 블루프린트에서 InventoryIt..

UE4 게임 개발 EscapeGame - 16 : 게임다워지는 과정

세세한 작업들이 게임다워지는데 큰 기여를 합니다. 1. 사운드 앞서 8번에 정리해뒀던 재질기반사운드 장애물들 소리, 죽는 소리, bgm, 클릭 소리, 버튼 소리 등등 2. UI 2-1 마우스 플레이어컨트롤러에서 마우스 애셋을 지정해주고 사용합니다. UI로 사용할거면 Compression Settings를 UserInterface2D(RGBA)로 바꿔줘야합니다. 2-2 메뉴 처음에는 블루프린트로 작업해놓고 cpp로 바꿨습니다. cpp가 훨씬 가독성이 좋기도하고, 확장성이 좋아서 할 수 있는게 많아서 웬만하면 블루프린트 사용은 하지 않았습니다. 2-3 메인HUD 2-4 스타트레벨 게임 제목, Manual 2-5 확인 메세지 전부 cpp에서 작업해줬습니다.

UE4 게임 개발 EscapeGame - 15 : 미로 맵 제작

크게 Level1과 Level2로 제작했습니다. 이 기본 베이스 맵을 기반으로, Level1-1부터 Level2-3까지 총 6가지를 클리어하면 게임을 승리하게됩니다. 생각보다 게임 메인 컨텐츠인 장애물, 좀비 배치 그리고 설계가 상당히 시간이 걸렸습니다. 게임 기획은 아무나 하는게 아니라고 느꼈습니다. 프로그래밍 알고리즘이 떠오르지않으면 디버깅을 해보거나, 쉬고오면 해결이 되었지만 게임 기획 단계는 그렇지않았습니다. 앞으로 남은 작업들도 잘 마무리해보겠습니다. mazegenerator.net/ Maze Generator Create, download and print random mazes in varying styles and sizes. mazegenerator.net 위와 같은 미로를 만들어주는 사..

UE4 게임 개발 EscapeGame - 14 : 각종 효과음

소리를 넣어주니 훨씬 그럴듯해졌습니다. 1. 돌 떨어지는 소리, 굴러오는 소리, 땅이 꺼지는 소리 2. 좀비 -> 거리에 따라서 감쇄 효과 USoundWave를 활용하는 방법과, USoundCue와 AudioComponent를 활용하는 방법으로 나눠서 작업했습니다. 1. USoundWave 한번 재생해줘야하는 상황에서 활용했습니다. // ObstacleFloor.cpp // Sets default values AObstacleFloor::AObstacleFloor() { // Set this actor to call Tick() every frame. You can turn this off to improve performance if you don't need it. PrimaryActorTick.bC..

UE4 게임 개발 EscapeGame - 13 : BGM(Back Ground Music)

배경음악을 삽입해서 더욱 게임답게 만드는 과정을 진행했습니다. // MainGameMode.h class UAudioComponent* AudioComponent; class USoundCue* MainMusicCue; // MainGameMode.cpp // 생성자 static ConstructorHelpers::FObjectFinder MainMusicAsset(TEXT("SoundCue'/Game/GameContent/Sound/bgm/BackGroundMusic.BackGroundMusic'")); if (MainMusicAsset.Succeeded()) { MainMusicCue = MainMusicAsset.Object; } AudioComponent = CreateDefaultSubobjec..