Game

· Game/Unity
VContainerVContainer는 Unity를 위한 경량화된 DI(Dependency Injection) 컨테이너이다.DI는 객체 간의 의존성을 외부에서 주입하는 디자인 패턴으로, 코드의 결합도를 낮추고 유지보수성을 향상시키는데 도움을 준다.주요 특징가볍고 빠른 성능Unity의 컴포넌트 시스템과의 원활한 통합직관적인 API 제공코드의 모듈화와 테스트 용이성 향상https://vcontainer.hadashikick.jp/ About | VContainerVContainer - the fastest DI (Dependency Injection) for Unity Game Enginevcontainer.hadashikick.jp     기본 구성요소LifetimeScopeLifetimeScope는 VC..
· Game/Unity
Scirptable ObjectScriptableObject(SO)는 Unity에서 제공하는 데이터 컨테이너 클래스이다.MonoBehaviour와 달리 GameObject에 부착되지 않는 독립적인 데이터 에셋이다.즉, Prefab과 같이 에디터상에 유일하게 존재하는 것이다.또한, Scene과 독립적으로 존재하며 런타임에 변경된 내용을 정적으로 저장하여 가져갈 수 있다.Scene 전환 시에도 데이터가 유지되며 한 번 로드된 SO는 메모리에 캐싱되어 재사용할 수 있다.빌드 시 에셋으로 포함되어 배포되게 된다.  Unity 에디터에서 직접 데이터를 수정하고 저장할 수 있기 때문에 밸런싱같은 작업에서 사용하기 매우 좋다.      Data Container SOSO는 기본적으로 데이터 컨테이너이다.즉, 순수하게..
· Game/Unreal
MonsterURR은 다양한 몬스터가 존재한다.스테이지가 시작하면 미리 설정한 데이터에 의해 몬스터의 종류, 수, 간격 등의 정보가 초기화된다.해당 웨이브에 스폰된 몬스터가 모두 죽거나 목적지에 도착해 플레이어에게 피해를 입혀 월드에 존재하지 않으면 다음 웨이브가 실행된다.모든 웨이브의 몬스터를 처치하면 해당 스테이지를 클리어한다.     Monster 생성설정된 정보를 통해 GA를 실행하여 몬스터를 생성한다.몬스터를 스폰하면 타이머를 설정해 몬스터끼리의 간격을 설정한다.void UURRGA_SpawnMonster::StartSpawnMonster(){ FActorSpawnParameters params; params.SpawnCollisionHandlingOverride = ESpawnActorColl..
· Game/Unreal
Unit 클래스유닛을 초기에는 SkeletalMesh에 맞춰 애님 인스턴스를 지정하기 위해 분리하여 관리하였다.하지만, UAssetManager를 통해 Asset을 불러와 지정할 수 있기에 통합해도 된다고 생각했다.각 유닛에는 추가적으로 부착되는 SkeletalMeshComponent가 있어 이에 대한 조정이 필요했다.따라서, Rank에 따라 각 부위에 대한 AssetLoad를 요청하고 모든 Asset이 로딩되었다면 Callback을 주어 DeferredSpawn이 완료하게 되었다.UnitMeshHandle = UAssetManager::Get().GetStreamableManager().RequestAsyncLoad(UnitMeshes[UnitMeshIdx], FStreamableDelegate::Cr..
· Game/Unreal
UnitURR은 숫자별로 유닛이 달라진다.예를 들어, 1은 권총을 든 군인이고 2는 라이플을 든 군인이다.각 유닛은 공격력, 사거리, 공격 속도 등 다양한 스탯을 가지고 있으며 숫자가 높을수록 강해지도록 설계하였다.     Unit 생성플레이어는 보유하고 있는 코인을 소모하여 생성할 수 있다.GE를 통해 coin을 소모하며, GA를 통해 유닛을 생성한다.GE에서 coin을 소모할 때, cost라는 메타 어트리뷰트를 사용해 확장성을 열어두었다.또한, GA에서는 확률에 따라 스폰할 유닛의 단계와 위치를 정하고 해당 타일에 Spawn요청을 한다.     Unit 초기화유닛이 생성되면 스탯을 초기화해야 한다.유닛은 각 단계에 따라 스탯이 다르며 GE를 통해 초기화한다.초기화하는 시점은 ASC가 최기화되어야 하기..
· Game/Unreal
Board URR은 4 x 4의 타일을 통해 숫자(유닛)를 나타내며, 사용자 입력에 의해 해당 숫자들이 합쳐지는 형식이다. 숫자를 나타내는 타일 16개가 따로 존재하면 입력에 의해 합쳐지거나 움직이는 등의 동작이 쉽지 않을 것이다. 따라서, 타일들을 하나의 Pawn으로 묶어 관리하고 해당 클래스에서 사용자 입력을 받아 처리할 예정이다. Tile Tile은 유닛과 해당 유닛의 숫자를 나타내는 액터이다. 해당 액터에서 타일의 유닛의 포인터를 관리하여 Spawn, Destory 등을 처리한다. Board의 BeginPlay에서 총 16개의 Tile을 생성하여 이차원 배열을 통해 관리한다. 이차원 배열을 사용한 이유는 네 방향의 이동이 가능한데, 이 작업에서 간편하게 계산하기 위함이다. 또한, 유닛의 단계(1,..
· Game/Unreal
Level URR은 크게 보면 로비가 존재하고 로비에서 여러 스테이지를 골라 플레이할 수 있는 구조이다. 물론, 스테이지는 순차적으로 진행해야 한다. 로비는 크게 어려운 부분이 없으니 게임 로직부터 구현하기 위해 Stage를 우선적으로 구현할 예정이다. Stage Level Design LandScape를 통해 경사로와 언덕을 만들었고 페인팅을 통해 자연스럽게 연출하였다. 또한, 언덕의 경계선이 어색하지 않게 돌로 막아 놓았다. 주변에는 폴리지를 통해 숲 같은 느낌을 주었다. 유닛으로 사용하는 에셋이 군인들이라 풀, 자연 같은 분위기를 사용하였다. 하얀 타일위에 유닛들이 생성되고 타일에는 각 유닛의 단계(1, 2, 4...,1024)를 나타낼 것이다.
· Game/Unreal
URR Defence GAS를 적용한 Defence게임을 만들 예정이다. URR 프로젝트 기간 2024.04.07 프로젝트 인원 1명 UE 버전 UE 5.3 git https://github.com/minhvvan/URR IDE VisualStudio 게임 시스템 URR은 우르르라는 뜻이다. 우르르라는 이름을 지은 이유는 2048게임을 응용하기 때문이다. 2048게임은 1, 2, 4등 2의 제곱수가 적힌 타일을 하나의 방향으로 움직이고, 서로 같은 수가 만나면 합쳐진다. 이러한 원리를 통해 최종적으로 2048을 만들어내는 게임이다. 이런 콘셉트를 이용하여 디펜스게임을 만들면 재밌을 것 같다는 생각을 했다. 하나의 방향으로 모든 타일이 우르르 몰려가기 때문에 URR라고 이름을 지었다. 이 프로젝트의 핵심은..
· Game/Unreal
GAS GAS는 복잡한 기존 시스템을 몇 가지 구성요소로 분리하면서 자유도와 재활용성을 올리는 프레임 워크이다. GAS의 주요 구성요소는 다음과 같다. ASC (AbilitySystemComponent) 액터에 부착해 GAS 시스템을 동작시키는 컴포넌트이다. 컴퓨터로 따지자면 CPU 같은 존재이다. ASC에는 다양한 요소와 함수들이 내장되어 있다. 그중, 자주 사용되는 몇 가지 함수들은 다음과 같다. //ASC의 ActorInfo를 초기화하는 함수 virtual void InitAbilityActorInfo(AActor* InOwnerActor, AActor* InAvatarActor); //등록되어 있는 AttributeSet을 받아오는 함수 template const T*GetSet() const {..
· Game/Unreal
광역 공격 & Cost & Cooldown GAS에 대한 마지막 포스팅이다. 지금까지 언급한 GAS 클래스들을 이용하여 광역 공격 스킬을 구현하고 해당 스킬을 사용하는데 필요한 코스트와 해당 스킬에 쿨다운을 걸 수 있는 방법을 구현할 것이다. 기본적인 흐름은 다음과 같다. 캐릭터가 무기를 획득하면 스킬을 사용할 수 있는 GA를 부여한다. 마우스 우클릭 입력을 추가하고 해당 입력이 들어오면 앞서 부여했던 스킬 GA를 실행한다. GA에서는 스킬 애니메이션을 실행할 AT를 생성한 뒤 실행 요청을 한다. Montage를 통해 애니메이션이 실행되면 Event와 태그를 통해 공격 판정 GA를 실행한다. 공격 판정 GA는 스킬에 적중한 액터를 판별할 AT를 생성한 뒤 실행 요청을 한다. 판정 AT에서는 TA를 만들어..
hvv_an
'Game' 카테고리의 글 목록