전체 글 936

게임 맵 - 최종) 드롭되는 아이템 애니메이션 수정 + 인게임 종료 버튼

- 개요몬스터에 드롭되는 아이템에 애니메이션과 사운드 효과를 추가하고인게임에서 게임을 종료할 수 있도록 기능을 추가한다 - C++ 사이드1) AuraEffectActor 클래스 CalculatedLocation 멤버변수와 CalculatedRotation 멤버변수에BlueprintReadWrite 어트리뷰트를 사용하도록 설정하여 값을 수정할 수 있도록 한다 2) AuraAttributeSet 클래스 ShowFloatingText 함수에 위와 같이 로직을 추가하여 SourceCharacter가 유효하지 않거나, TargetCharacter가 유효하지 않은 경우를 체크한다 - 블루프린트 사이드1) BP_Pickup_Base 블루프린트1 - 1) BeginPlay 이벤트 BeginPlay 이벤트를 위와 같이 ..

유니티 엔진의 구성 - 11) VideoPlayer 컴포넌트

- 개요유니티에서 제공하는 VideoPlayer 컴포넌트를 사용하여 비디오 파일을 GameObject에 연결하고 런타임 시점에 GameObject의 Texture에서 비디오 파일을 재생할 수 있다 - 비디오 파일 애셋의 설정 사용할 비디오 파일 애셋의 Transcode 옵션을 활성화하면 WebGL이나 Android 같은 원하는 플랫폼에 맞춰 비디오 파일에 대한 인코딩. 해상도, 비트레이트, 코덱 등을 조절할 수 있다또 필요한 경우에 Alpha 채널을 설정하여 webm과 같은 포맷의 동영상 파일의 투명도를 설정할 수 있다 - VideoPlayer 컴포넌트의 구성 VideoPlayer 컴포넌트는 위와 같이 구성되어 있다세부 옵션들은 다음과 같이 동작한다Source 옵션 : Video Clip과 URL의 2가..

게임 엔진의 워크플로우

- 개요워크플로우는 게임 엔진이 제공하는 실행의 흐름을 의미하는데, 씬을 완성하는 과정과 완성된 씬으로부터 화면을 그려내는 과정의 총 2가지 과정으로 구성된다 - 프로젝트에서의 워크플로우 프로젝트에서 사용하는 게임엔진의 워크플로우는 위와 같이 총 4가지로 구성되어 있다각각 다음과 같다1) 리소스 로딩 단계게임에서 사용하는 리소스를 로딩하는 과정불러들이는 데이터의 양이 크므로 게임을 시작하기 전에 미리 로딩하는 것이 중요게임이 시작되기 전에 한 번만 실행하고 LoadResource 함수를 호출하여 수행2) 씬 구축 단계게임 콘텐츠를 구성하는 씬을 설계하는 과정씬의 게임 오브젝트가 생성 + 게임 오브젝트의 Transform 설정 + 리소스 정보가 게임 오브젝트에 연결LoadScene2D 함수를 호출하여 수행..

리소스 저장소

- 개요모델링 행렬을 사용하여 게임 오브젝트의 로컬 공간 정보를 월드 공간 정보로 변환하고변환된 정보를 Transform 정보로 설정하여 게임 오브젝트들에 각각 부여한다따라서 게임 오브젝트들은 각자 Transform 정보를 포함하고 있다Transform 정보와 동일하게 리소스 정보도 게임 오브젝트별로 각각 포함한다고 가정한다면게임 오브젝트마다 용량이 큰 메시 정보를 들고 있게 되므로 메모리의 낭비가 발생한다따라서 리소스 정보는 여러 게임 오브젝트들이 함께 사용할 수 있는 공유 자원의 형태로 관리하는 것이 바람직하다이를 위해 게임 엔진에서는 씬과 무관하게 리소스를 저장하는 리소스 저장소를 제공한다 - 리소스 저장소 게임 엔진은 리소스 저장소를 효율적으로 관리하기 위해 리소스를 유형별로 분리하고 고유한 키를..

게임 맵 - 문제 수정) GameplayModMagnitudeCalculation 클래스의 동작 방식 개선

- 개요https://monstrosite.tistory.com/1072 게임 맵 - 4) 아이템 드롭- 개요적을 쓰러트리면 아이템을 드롭하는 시스템을 추가한다 - C++ 사이드1) LootTiers 클래스 적이 드롭하는 아이템으로 사용하는 LootItem 구조체를 추가한다멤버변수의 구성은 다음과 같다LootClassmonstrosite.tistory.com 이전 포스트에 첨부된 동영상을 확인해보면 레벨업을 하게 되면서체력과 마나가 완전히 회복되야 하지만 회복되지 않는 문제를 확인할 수 있다위와 같은 문제는 최대 체력과 최대 마나를 설정하는 MMC 클래스에서 발생한다 MMC 클래스는 스탯과 같은 가중치를 사용하여 어트리뷰트를 수정하는 GE의 수치를 동적으로 계산하는 역할을 수행한다이때 레벨업하게 되면 ..

게임 맵 - 4) 아이템 드롭

- 개요적을 쓰러트리면 아이템을 드롭하는 시스템을 추가한다 - C++ 사이드1) LootTiers 클래스 적이 드롭하는 아이템으로 사용하는 LootItem 구조체를 추가한다멤버변수의 구성은 다음과 같다LootClass 멤버변수 : 드롭할 아이템의 클래스ChanceToSpawn 멤버변수 : 아이템을 드롭할 확률MaxNumberToSpawn 멤버변수 : 최대로 드롭할 개수bLootLevelOverride 멤버변수 : 드롭할 아이템이 겹쳐질지 여부 드롭가능한 아이템을 모아놓은 데이터 애셋으로 사용할 LootTiers 클래스를 생성한다멤버변수의 구성은 다음과 같다LootItems 멤버변수 : 드롭할 아이템의 LootItem을 모아놓은 TArray GetLootItems 함수의 로직은 위와 같다LootItem..

인게임 구현 - 최종) 플레이어 턴 텍스트 수정 + 승리 애니메이션

- 개요플레이어의 턴에 따라 턴을 알려주는 텍스트를 수정하고 플레이어가 승리하면 승리 방식에 따라 애니메이션을 재생한다 - 클라이언트 사이드1) UI_WinLine 클래스 승리 방식에 따른 선을 그리기 위한 정보를 지니고 있는 LineConfig 클래스를 추가한다승리 방식마다 4개의 프로퍼티를 각각 설정하여 원하는 방식의 애니메이션을 연출할 수 있다멤버변수의 구성은 다음과 같다X 프로퍼티 : 선의 X 값Y 프로퍼티 : 선의 Y 값Height 프로퍼티 : 선의 높이값ZRotation 프로퍼티 : 선의 회전값 UI_WinLine 클래스의 멤버변수는 위와 같다_xColor 멤버변수 : X 유저의 승리시에 적용할 색깔_yColor 멤버변수 : Y 유저의 승리시에 적용할 색깔Image 멤버변수 : 애니메이션에서..

게임 맵 - 3) 몬스터 스포너와 맵 재시작 구현

- 개요특정 지점에 도달하면 몬스터를 스폰하는 시스템을 추가하고또 플레이어가 쓰러지면 해당 맵에서 재시작하는 기능을 추가한다 - C++ 사이드1) MVVM_LoadSlot 클래스 현재 맵의 애셋 이름을 지정하는 MapAssetName 멤버변수를 추가한다 2) MVVM_LoadScreen 클래스 NewSlotButtonPressed 함수를 위와 같이 수정하여 게임 데이터를 저장하는 데이터 슬롯의 MapAssetName을 설정한다 3) AuraEnemySpawnPoint 클래스 스포너에서 소환하는 몬스터의 위치를 지정하기 위한 AuraEnemySpawnPoint 클래스를 생성한다멤버변수의 구성은 다음과 같다EnemyClass 멤버변수 : 소환하는 몬스터의 클래스EnemyLevel 멤버변수 : 소환하는 몬스터..

게임 맵 - 2) 던전 구조물과 입구 추가

- 개요던전에 새로운 구조물들을 추가하고 또 다른 지역으로 입장할 수 있는 던전 입구를 추가한다 - C++ 사이드1) LoadScreenSaveGame 클래스 맵 애셋의 이름을 지정하는 MapAssetName 멤버변수를 추가한다 2) AuraGameModeBase 클래스 기존의 함수를 위와 같이 수정하고 새로운 함수를 추가한다 SaveWorldState 함수를 위와 같이 수정하여 인자로 받은 값이 빈 값이라면,SaveGame 인스턴스의 MapAssetName과 MapName을 임의로 설정한다 GetMapNameFromMapAssetName 함수의 로직은 위와 같다Maps 멤버변수를 순회하면서 인자로 받은 이름과 동일한 맵 애셋의 맵 이름을 반환한다 3) HighlightInterface 클래스 Set..

게임 맵 - 1) 커서 동작 수정

- 개요프로젝트에서 마우스 커서가 동작하는 방식을 개선한다 - C++ 사이드1) Aura 클래스 마우스 커서로 가리키는 대상에게 적용할 하이라이트 효과의 수치를 위와 같이 추가한다 2) HighlightInterface 클래스 BlueprintType 어트리뷰트를 추가하여 HighlightInterface를 블루프린트에서 변수로 사용할 수 있도록 설정한다 3) Checkpoint 클래스 CheckpointMesh 멤버변수에 BlueprintReadOnly 어트리뷰트를 추가하여 읽기 전용으로 설정한다 4) AuraPlayerController 클래스 마우스 커서의 타겟팅 상태를 의미하는 TargetingStatus 열거형을 추가한다멤버들은 다음과 같다TargetingEnemy : 적을 타겟팅하고 있는 상태..