게임 개발 (19) 썸네일형 리스트형 [언리얼 개인 프로젝트-FlightFight/C++] #1. Pawn 설계 - (4) 추가 이펙트(Niagara System) 생동감을 위해 비행기에 이펙트를 추가한다.. 추가 이펙트 (Thruster Effect, Trail Effect)가속할 때 엔진에서 불이 나오는 Thruster Effect, 비행기가 지나갈 때 공기의 흐름을 보여주는 Trail Effect, 이렇게 총 2가지의 이펙트를 비행기에 추가해주려고 했다. - 1. Thruster EffectThruster Effect에서 나타나는 불꽃을 구현하기 위해 우선 무료 에셋을 다운로드하였다. 원래는 이런 에셋들은 ParticleSystem인 줄 알았는데, 이 에셋은 NiagaraSystem이었다. 그래서 둘의 차이를 찾아보니, 요약하자면 '나이아가라 시스템이 파티클 시스템의 상위호환이다.' 정도인 것 같다.※ Niagara System 사용하는 법1. 에디터에서 .. [언리얼 개인 프로젝트 - FlightFight/C++] #1. Pawn 설계 - (3) 총알 발사 비행기의 조작법 중, 마우스 좌클릭에 해당하는총알 발사를 해보자.언제, 어디서, 무엇을, 어떻게 작동시킬 것인지 생각해 보자.. 총알 구성 (무엇을)너무나 당연하지만, 우선 총알을 발사하려면 총알이 먼저 있어야 한다. 이 총알을 어떻게 표현할지에 대해 생각해 보다, 생각보다 복잡할 거 같지 않아 다른 분이 만들어 놓은 에셋을 쓰기보다는 '액터 블루프린트'를 사용해 직접 총알을 만들어 보기로 했다. 루트 컴포넌트는 Cube 모양을 길게 늘여서 만들고 원하는 색상을 나타내는 Material을 만들어서 입혀주었다. 그리고 그 총알을 충분히 감쌀 만큼의 크기를 가진 Cube 모양의 Box Collision을 입혀주고, 총알의 움직임을 담당해 주는 ProjectileMovement(발사체 이동 컴포넌트)를 추가.. [언리얼 개인 프로젝트-FlightFight/C++] #1. Pawn 설계 - (2) Pawn 조작법 비행기, 즉 Pawn의 조작법을 구현해 본다.. 조작법 (FloatingPawnMovement)비행기의 작동방식은 우리가 흔히 알고 있는 자동차의 작동방식과 다르다. Throttle이라는 장치도 있을뿐더러, 3개의 축을 기준으로 회전도 한다. 그래서 비행기의 실제 작동 방식과 비슷하게 조작법을 구현하려다가, 그렇게 하면 조작이 너무 어려워지고 난이도가 너무 높아져 게임을 즐길 수 없다고 판단하여, 최대한 간단한 작동 방식으로 구현하였다. Pawn의 움직임을 구현할 때는 FloatingPawnMovement라는 이동 컴포넌트를 사용하였다. 다음과 같이 FloatingPawnMovement 컴포넌트 내에 있는 속성들의 값을 설정해서 최고 속력, 가속 등 수치를 커스텀한다. 이제 화면 상단에 위치한 '편집 .. [언리얼 개인 프로젝트-FlightFight / C++] #1. Pawn 설계 - (1) Pawn 구성 드디어 프로젝트를 완성하였다.원래는 개발 계획을 파트 별로 세우고, 한 파트를 완료하면 정리글을 업로드할 생각이었다.하지만 한 챕터를 완료하고 그다음 챕터를 진행하다 보면그전 챕터에 해놨던 것들을 수정해야 하는 일이 너무 빈번하다 보니그럴 때마다 여기에 쓴 글까지 수정하기는 너무 힘들다고 생각했다.어찌어찌 프로젝트를 끝냈으니 이제라도 미뤄왔던 업로드를 해보려 한다.가장 기본이 되는플레이어가 조종하게 될 비행기를 필요에 맞게 구성해 본다. . 액터 생성(Pawn OR Character?) 우선 액터를 만들어야 하는데, 부모 클래스를 'Pawn'으로 해야 할지, "Character'로 해야 할 지에 대해 생각하는 것이 첫 번째였다. 따라서 어느 정도 정리해 본 결과이다.PawnCharacter이동 로직 정의.. [언리얼 개인 프로젝트-FlightFight / C++] #0. 프로젝트 기획 '이득우의 언리얼 C++ 게임개발의 정석'이란 책을 정독하며예제만 따라 했던 내가 정말 게임 개발 실력이 늘었을 것이라고 생각하지 않는다.그것을 확인해 볼 수 있고 가장 실력적으로 성장할 수 있는 방법은간단한 프로젝트라도 직접 만들어 보는 것이라고 생각하여,낮은 퀄리티라도 기획부터 퍼블리싱까지의 프로세스를 혼자 해보려고 한다.처음으로 게임 개발을 해보는 거라 어떻게 해야 할지 정말 감도 안 오지만끝까지 해보는 데 의의를 두고 한번 열심히 해보자! . 아이디어일단 무슨 게임을 개발해야 할지를 생각해야 했다. 아무래도 처음 하는 것이다 보니 이 프로젝트가 나의 자신감, 동기 부여에 매우 큰 영향을 줄 것이라 생각하여 가장 1차원적인 게임을 해보려고 했다. 생각해 낸 게임은 '3D 비행기 슈팅게임'이고, 할 .. [이득우의 언리얼 C++ 게임개발의 정석] #15. 게임의 완성 완전한 게임 제품으로 발전하려면게임의 시작, 게임의 종료, 미션 달성, 게임 데이터의 저장 및 로딩 등의 기능이 필요하다.이를 구현하기 위해 알아두면 좋은 언리얼 엔진의 기능을 학습한다.. 게임 데이터의 저장과 로딩여태 게임플레이의 기본적인 틀을 확장하여 플레이어의 데이터를 저장하고 이를 불러들이는 로직을 구현해 본다. ※ SaveGame이라는 언리얼 오브젝트를 상속받은 클래스를 설계하고, 이를 세이브게임 시스템에 넘겨주면 게임 데이터의 저장과 로딩을 간편하게 구현할 수 있다. (Saved 폴더에 있는 SaveGames라는 폴더에 데이터가 저장된다.) ※게임 세이브 기능에는 각 저장 파일에 접근할 수 있는 고유 이름인 '슬롯 이름'이 필요하다. 처음에는 세이브된 데이터가 없으니 '기본 세이브 데이터를 생.. [이득우의 언리얼 C++ 게임개발의 정석] #14. 게임플레이의 제작 여태까지 프로토타입을 만들었다면,앞으로 실제 게임으로 확장할 때 필요한 기능을 채워 넣어야 한다.플레이어 스테이트, 게임 스테이트에 대해 학습하고이들을 바탕으로 데이터를 체계적으로 관리하도록 게임 기능을 구현한다.. 캐릭터의 스테이트 설정플레이어 캐릭터, AI 캐릭터의 기능을 체계적으로 관리하기 위해 캐릭터에도 스테이트 머신 모델을 구현한다.PREINIT 스테이트 : 캐릭터 생성 전의 스테이트. 기본 캐릭터 에셋이 설정돼 있지만 캐릭터, UI를 숨긴다. 데미지를 입지 않는다.LOADING 스테이트 : 선택한 캐릭터 에셋을 로딩하는 스테이트. 게임이 시작된 시점이므로, 현재 조종하는 컨트롤러가 AI인지 플레이어인지 구분하고 플레이어인 경우 에셋 로딩이 완료될 때까지 조종하지 못하게 입력을 비활성화함.REA.. [이득우의 언리얼 C++ 게임개발의 정석] #13. 프로젝트의 설정과 무한 맵의 제작 현재 프로젝트의 소스를 효과적으로 관리할 수 있도록 프로젝트 구조를 변경하고게임 설정에 관련된 데이터를 별도의 모듈로 분리하는 한편,언리얼 엔진의 설정 시스템을 이용해 게임의 기본 데이터를 INI 파일로 관리하는 방법을 학습한다.또한, 레벨을 섹션이라는 단위로 개편하고 무한으로 증가하는 레벨을 설계한다.. 프로젝트의 정리와 모듈의 추가프로젝트 정리 : 확장자가 '.h'인 헤더 파일들은 Public 폴더로, '.cpp' 파일들은 Private 폴더로 옮긴다.모듈의 추가 : 지금까지 작업한 코드는 'ArenaBattle'이라는 '주 게임 모듈'에서 관리한다. 게임 세팅을 위한 별도의 게임 모듈(ArenaBattleSetting)을 생성해서 두 개의 모듈로 게임 프로젝트를 구성해 보자.※ 추가 모듈 제작을 위.. 이전 1 2 3 다음