Unreal Engine
[서평] C++를 사용한 언리얼 엔진 개발
[서평] C++를 사용한 언리얼 엔진 개발
2023.08.29제목: C++를 사용한 언리얼 엔진 개발부제: 100여 개의 레시피를 통해 배우는 언리얼4 게임 개발 가이드저자: 존 도란 , 윌리엄 셰리프 , 스테판 화이틀 출판사: 에이콘출판 이 책은 언리얼 엔진을 C++ 코드로 개발할 때 필요한 내용을 포괄적으로 다룬다. 언리얼 엔진 관련 책 중 대다수가 블루프린트를 중심으로 구성되어 있는 반면, 이 책은 C++ 코드 예시와 함께 기본 설명이 잘 되어 있다. C++ 코드 예시와 함께 기본 설명이 잘 되어있는 책은 이 책과 '이득우의 언리얼 C++ 게임 개발의 정석' 정도가 있다. 다른 책들은 프로젝트 따라하기와 같은 부류의 책인데 프로젝트 연습은 온라인 강의를 듣는 것을 더 추천한다. 이 책은 전반적으로 게임 프로그래머에게 추천할만한 책이다. 언리얼 엔진을 처음..
[UE] Behavior Tree: 워프(Warp), EQS
[UE] Behavior Tree: 워프(Warp), EQS
2023.08.09궁수 AI를 만들어 Player를 향해 화살을 쏘아 날리는 것을 구현하였다. 게임의 재미를 더하기 위해 궁수 AI 회피를 추가할 것이다. 적이 궁수AI에 접근하여 일정거리에 도달하면 궁수 AI는 워프 스킬을 시전하여 달아날 것이다. EQS를 사용하여 적의 위치의 뒷공간 지정범위 내에서 랜덤으로 워프 이동할 것이다. 목차 Plugins Weapon Resource Icon128.pngweapon_thumbnail_icon.png Source Weapon SWeaponCheckBoxes.h .cppSWeaponDetailsView.h .cppSWeaponDoActionData.h .cppSWeaponEquipmentData.h .cppSWeaponHitData.h .cpp..
[UE] Behavior Tree: 활 조준 및 발사하기
[UE] Behavior Tree: 활 조준 및 발사하기
2023.08.08Player에 구현한 화살 발사를 궁수 AI에도 적용한다. SetFocus를 사용하여 적을 지속적으로 바라보게 만든다. 몽타주를 재생시켜 활의 시위를 당기고 화살 발사 준비를 마친 후 CSubAction_Bow 코드를 재사용하여 화살을 발사한다. CSubAction_Bow 코드 내에 AIController일 때도 Press()와 Released(), 즉 조준 후 발사가 가능하도록 코드를 추가한다. 목차 Plugins Weapon Resource Icon128.pngweapon_thumbnail_icon.png Source Weapon SWeaponCheckBoxes.h .cppSWeaponDetailsView.h .cppSWeaponDoActionData.h .cpp..
[UE] Behavior Tree: 활 Enemy 생성, Player 바라보기
[UE] Behavior Tree: 활 Enemy 생성, Player 바라보기
2023.08.07이번에는 궁수 AI를 만들것이다. 원거리에서 화살을 날리는 궁수 AI는 근거리 AI와 함께 게임에 배치하면 적 공격 패턴이 다양해져 게임에 재미를 더할 수 있다. Behavior Tree는 일전에 구현한 Melee와 크게 다르지 않다. 적을 인식하면 무기를 장착하고 활 시위를 당긴 후 화살을 날리게 만들 것이다. 목차 Plugins Weapon Resource Icon128.pngweapon_thumbnail_icon.png Source Weapon SWeaponCheckBoxes.h .cppSWeaponDetailsView.h .cppSWeaponDoActionData.h .cppSWeaponEquipmentData.h .cppSWeaponHitData.h .cppS..
[UE] Behavior Tree: 피격(Hitted)
[UE] Behavior Tree: 피격(Hitted)
2023.07.31적(Enemy)의 피격과 Behavior Tree가 연결되어 있지 않다. 적이 피격 되었을 때 Behavior Tree에 알리고 피격이 끝났을 때 Behavior를 WaitMode로 변경하는 코드를 추가하였다. 목차 Plugins Weapon Resource Icon128.pngweapon_thumbnail_icon.png Source Weapon SWeaponCheckBoxes.h .cppSWeaponDetailsView.h .cppSWeaponDoActionData.h .cppSWeaponEquipmentData.h .cppSWeaponHitData.h .cppSWeaponLeftArea.h .cppWeapon.Build.csWeaponAssetEditor.h ...
[UE] Behavior Tree: 무기 장착 및 공격
[UE] Behavior Tree: 무기 장착 및 공격
2023.07.27지난 시간에 구현한 Enemy 무기장착 시, Player쪽에서 무기 장착 몽타주가 재생되며 무기가 제대로 장착되지 않는 버그가 있었다. 이는 Weapon이 가지고 있는 정보들이 Player와 연관되어 있기 때문이었다. 이번 시간에 WeaponAsset의 일부 데이터를 WeaponData라는 새로운 클래스에 옮겨 분리시켜 줄 것이다. 이렇게 함으로써 무기 장착 시 무기가 Player쪽으로 불리는 문제를 방지시켜 줄 것이다. 목차 Plugins Weapon Resource Icon128.pngweapon_thumbnail_icon.png Source Weapon SWeaponCheckBoxes.h .cppSWeaponDetailsView.h .cppSWeaponDoAction..
[UE] Behavior Tree: 무기 장착(Equip)
[UE] Behavior Tree: 무기 장착(Equip)
2023.07.26현재 적 AI 순찰을 진행하다 Player가 시야 범위 내에 들어오면 접근한다. 이번 시간에는 Player에게 접근한 후 무기를 장착하는 것을 Behavior Tree를 통해 구현할 것이다. BTTask_Node를 새로 만들어 무기 장착 Task를 전담하게 할 것이다. 목차 Plugins Weapon Resource Icon128.pngweapon_thumbnail_icon.png Source Weapon SWeaponCheckBoxes.h .cppSWeaponDetailsView.h .cppSWeaponDoActionData.h .cppSWeaponEquipmentData.h .cppSWeaponHitData.h .cppSWeaponLeftArea.h .cppWeapo..
[UE] Behavior Tree: 순찰(Patrol)
[UE] Behavior Tree: 순찰(Patrol)
2023.07.25적의 상태에 따라 이동속도를 다르게 설정해보자. 적 Behavior Tree에 순찰 기능을 추가하고 Player가 접근하면 달려오도록 수정해보자. 목차 Plugins Weapon Resource Icon128.pngweapon_thumbnail_icon.png Source Weapon SWeaponCheckBoxes.h .cppSWeaponDetailsView.h .cppSWeaponDoActionData.h .cppSWeaponEquipmentData.h .cppSWeaponHitData.h .cppSWeaponLeftArea.h .cppWeapon.Build.csWeaponAssetEditor.h .cppWeaponAssetFactory.h .cppWeaponCo..
[UE] Behavior Tree 시작
[UE] Behavior Tree 시작
2023.07.24Behavior Tree를 사용하여 AI System을 만들고 적AI를 구현할 것이다. AIController를 만들어 Enemy의 하위 클래스인 Enemy_AI에 할당할 것이다. Enemy_AI는 Behavior Tree를 가지고 AIBehaviorComponent를 활용하여 AI의 상태를 변경시킨다. 목차 Plugins Weapon Resource Icon128.pngweapon_thumbnail_icon.png Source Weapon SWeaponCheckBoxes.h .cppSWeaponDetailsView.h .cppSWeaponDoActionData.h .cppSWeaponEquipmentData.h .cppSWeaponHitData.h .cppSWeapon..
[UE] Feet IK, 마우스 Zoom, Enemy AI
[UE] Feet IK, 마우스 Zoom, Enemy AI
2023.07.21마우스의 휠을 이용하면 화면의 Zoom In과 Out을 구현했다. 'DeltaTime' (전 프레임과 현재 프레임 사이의 시간 차이)와 'InterpSpeed' (보간 속도)를 사용하여 'TargetArmLength'를 부드럽게 변경했다. 마우스 휠의 변경 값을 'InValue'로 넣고 'Speed'를 곱한 값을 'CurrentValue'에 더하고, 이 값을 'Range.X'와 'Range.Y' 사이의 값으로 제한하여 사용하였다. 목차 Plugins Weapon Resource Icon128.pngweapon_thumbnail_icon.png Source Weapon SWeaponCheckBoxes.h .cppSWeaponDetailsView.h .cppSWeaponD..
[UE] 파쿠르: 벽 오르기
[UE] 파쿠르: 벽 오르기
2023.07.19파쿠르는 다음과 같은 과정을 통해 구현하였다. 먼저, 캐릭터 허리 높이 중앙에 있는 Arrow Component로 앞에 장애물 유무를 판단한다. 그 다음, Arrow Component 내 여러 개의 Line Trace로 장애물을 판단한다. Line Trace의 결과값을 바탕으로 어떤 파쿠르가 가능한지 판단한다. 마지막으로 Data Table에 기록된 몽타주를 찾아서 가져워 상황에 맞는 파쿠르 몽타주를 재생한다. 목차 Plugins Weapon Resource Icon128.pngweapon_thumbnail_icon.png Source Weapon SWeaponCheckBoxes.h .cppSWeaponDetailsView.h .cppSWeaponDoActionData.h..
[UE] 파쿠르 구현하기
[UE] 파쿠르 구현하기
2023.07.18파쿠르 시스템은 캐릭터가 벽이나 장애물과 부딪힐 때의 처리를 통해 구현할 수 있다. Unreal Engine에서는 충돌 처리를 위해 Collision Component와 Physics Engine을 사용할 수 있다. 이를 통해 캐릭터가 벽이나 장애물과 부딪힐 때 알맞은 반응을 하도록 설정할 수 있다. 오늘은 Foot IK를 C++ 코드로 구현할 것이다. 발에 가상 본을 만들고 이 가상 본을 사용하여 Trace로 바닥과 충돌을 검사한다. 양발의 높낮이 차이를 이 Trace 충돌값으로 알아내고 Foot IK 구현에 활용한다. 목차 Plugins Weapon Resource Icon128.pngweapon_thumbnail_icon.png Source Weapon SWeapo..