본문 바로가기

전체 글

(73)
[이득우의 언리얼 C++ 게임개발의 정석] #9. 충돌 설정과 대미지 전달 게임 콘텐츠는 액터와 액터 간의 상호작용을 기반으로 한다.좋은 게임 콘텐츠는 시각적인 요소뿐 아니라 기획의 의도대로 액터들이 상호작용할 수 있도록물리 엔진을 제대로 설정하는 것이 중요하다.물리 엔진을 설정하는 방법을 살펴보고, 기획한 대로 물리 시스템이 동작하는지 파악해 보자. . 콜리전 설정 - (콜리전 = 물리적 충돌 영역)※ 액터의 움직임을 사실적으로 표현하는 데 물리 엔진이 활용된다.→ 물리 엔진을 활용하려면 콜리전부터 학습해야 한다. -콜리전 제작 방법스태틱메시 에셋 : 스태틱메시 에셋에 콜리전 영역을 심는 방법.기본도형 컴포넌트 : 구체, 박스, 캡슐 등의 도형을 사용해 충돌 영역을 지정하는 방법. 스태틱메시와 별도로 충돌 영역을 제작하는 데 사용한다. / 스켈레탈 메시를 움직일 때 주로 사용..
[이득우의 언리얼 C++ 게임개발의 정석] #8. 애니메이션 시스템 활용 애니메이션 몽타주, 노티파이라는 기능을 활용하여연속으로 공격 명령을 내리면 콤보 공격을 순서대로 연계하는,만약 입력이 늦으면 다시 처음부터 공격을 시작하는 콤보 시스템을 구현해 보자. 애니메이션 몽타주위에서 말한 콤보 시스템은 지난 장에서 배운 스테이트 머신을 사용해서 모든 공격에 대해 스테이트를 생성하면 구현할 수 있다. 하지만 이렇게 되면 너무 복잡해진다.스테이트 머신의 확장 없이 특정 상황에서 원하는 애니메이션을 발동시키는 '애니메이션 몽타주'라는 기능이 있다. ※애니메이션 몽타주 : 여러 애니메이션 클립들의 일부를 떼어내고 붙여서 새로운 애니메이션을 생성하는 기법 '애님 몽타주' 생성 후, WarriorAttack1, 2, 3, 4를 드래그로 등록하고 각 모션이 끝나는 시각을 파악하여 '끝 시간'..
[이득우의 언리얼 C++ 게임개발의 정석] #7. 애니메이션 시스템의 설계 애니메이션 블루프린트의 기반을 이루는 '애님 인스턴스'클래스를 C++로 제작하고애님 인스턴스 클래스의 데이터를 기반으로 캐릭터가 애니메이션을 체계적으로 재생할 수 있도록스테이트 머신에 기반한 애니메이션 시스템 제작 방법. 애니메이션 블루프린트 = '애님 그래프' + '애님 인스턴스'애님 인스턴스 : 스켈레탈 메시를 소유하는 폰의 정보를 받아 애님 그래프가 참조할 데이터 제공.애님 그래프 : 애님 인스턴스의 변수 값에 따라 변화하는 애니메이션 시스템 설계하는 공간.※ C++로 애님 인스턴스를 제작 → 폰의 현재 속력을 애님 인스턴스에 저장 → 이 값에 따라 '애님 그래프'에서는 IDLE 혹은 RUN 애니메이션 재생하도록 해보자AnimInstance를 부모로 하는 ABAnimInstance라는 c++ 클래스..
[이득우의 언리얼 C++ 게임개발의 정석] #6. 캐릭터의 제작과 컨트롤 인간형 캐릭터를 효과적으로 제작하기 위해 언리얼 엔진이 제공하는 캐릭터 모델을 학습하고,이를 기반으로 움직이는 캐릭터를 제작한다.카메라를 자유자재로 설정하기 위해 컨트롤 회전에 대한 개념을 익힌다.. 캐릭터 모델캐릭터 에셋을 사용해 인간형 '폰'을 만들 수도 있지만, '캐릭터' 모델을 사용해서 만들 수도 있다. 'ABCharacter" 클래스 생성→ACharacter라는 클래스 상속받고 있음→ACharacter는 APawn 클래스를 상속받고 있음→둘 다 동일하게 Capsule 컴포넌트, SkeletalMesh 컴포넌트, CharacterMovement 컴포넌트를 사용함 ACharacter 클래스는 GetCapsuleComponent, GetMesh, GetCharacterMovement 함수를 제공한다...
[이득우의 언리얼 C++ 게임개발의 정석] #5. 폰의 제작과 조작 폰을 조작하기 위해 프로젝트의 입력을 설정하고,입력 값을 폰의 움직임으로 변환하는 폰 무브먼트 컴포넌트를 사용한다.애니메이션 블루프린트를 사용해 애니메이션을 불어넣는 법을 학습한다.. 폰의 구성 요소폰은 여러 가지 형태가 될 수 있지만, 여기서는 인간형 폰을 제작한다. ※인간형 폰을 제작하기 위해 고려할 요소들시각적 요소 : 스켈레탈 메시충돌 요소 : 캡슐 컴포넌트움직임 요소 : 폰 무브먼트 컴포넌트내비게이션 : 스스로 길 찾기 기능카메라 출력 : 폰을 화면에 전송마켓플레이스에서 임포트한 에셋을 추가하고 C++ 코드를 사용해 폰을 제작한다. 위의 요소를 바탕으로 5개의 컴포넌트를 사용한다.SkeletalMesh (시각적 요소) Capsule (충돌 요소) - 움직임을 담당할 예정이므로 루트 컴포넌트로 설..
[이득우의 언리얼 C++ 게임개발의 정석] #4. 게임플레이 프레임워크 게임이 시작되려면 게임의 규칙, 플레이어, 플레이어가 조종하는 액터가 있어야 한다.이는 각각 게임 모드, 플레이어 컨트롤러, 폰에 대응한다.이 3가지 액터를 직접 제작하고 학습해 보자.. 게임 모드직접 게임 모드와 폰을 제작&적용해 보자. (ABGameMode, ABPawn) - 1. 우리가 제작한 게임모드 적용하기GameModeBase 클래스를 부모로 하는, Pawn 클래스를 부모로 하는 새로운 C++ 클래스를 생성한다.→  툴바의 '창' - '월드 세팅' 윈도우를 열고, Game Mode 섹션에 있는 GameMode Override 항목에서 ABGameMode 선택. - 2. 우리가 제작한 폰 적용하기정의 파일에 생성자를 구현함(AABGameMode)→ 게임 모드의 DefaultPawn 속성에 우리가..
[이득우의 언리얼 C++ 게임개발의 정석] #3. 움직이는 액터의 제작 1. 프로그래밍 환경을 편리하게 만들어줄 매크로를 설정하고,이를 사용해 게임에서 액터가 어떻게 생성되고, 액터에서 어떤 이벤트가 발생하는지 확인해 본다.2. 로직을 구현해 움직임을 부여하기 / 로직 없이 무브먼트 컴포넌트로 움직임 부여하기 학습 . 로깅 환경의 설정움직이는 액터를 제작하려면 액터의 생성 과정을 알아야 함 → 중간중간 로그를 띄우게 하여 프로세스를 엿볼 수 있다. - 1. 출력 로그 윈도우 : 'UE_LOG' - (출력 로그에서 확인 가능)더보기UE_LOG(카테고리, 로깅 수준, 형식 문자열, 인자... )카테고리 : 로그를 분류하기 위해로깅 수준 : 에러(Error) = 빨간색, 경고(Warning) = 노란색, 메시지(Log) = 흰색→  에디터의 출력 로그 윈도우에는 필터 기능이 있어..
[이득우의 언리얼 C++ 게임개발의 정석] #2. 액터의 설계 . 언리얼 콘텐츠의 구성 요소 - 1. 월드 : 게임 콘텐츠를 구동하기 위해 필요한 필수적인 환경을 의미한다.                         ex) 공간, 시간, 물리 법칙, 렌더링... - 2. 액터 : 콘텐츠를 구성하는 최소 단위의 물체 / '배우'처럼 자신의 역할을 수행하는 오브젝트.※구성요소이름유형 : 액터의 역할 / 액터의 클래스 이름트랜스폼프로퍼티 : 액터에 설정된 속성 값.게임 로직 : 코드 - 3. 레벨 : 스테이지  - 4. 컴포넌트 : 액터가 가질 수 있는 다양한 기능들을 규격화한 것.스태틱메시 컴포넌트 : 애니메이션이 없는 모델링 에셋 / 시각적, 물리적 기능 제공.스켈레탈메시 컴포넌트 : 애니메이션이 있는 모델링 에셋 / 시각적, 물리적 기능과 애니메이션 제공.콜리전 컴..