분류 전체보기 (583)     블로그 내 검색 검색     글쓰기     관리자 썸네일형 리스트형 4부 고급 블루프린트 13장 데이터 구조및 흐름제어 다양한 컨테이너 타입 살펴보기 컨테이너는 그 인스턴스가 값또는 인스턴스의 모음을 저장할 수 있는 데이터구조타입이다. 컨테이너의 값은 동일한 타입이어야 한다. 컨테이너의 엘리먼트는 엘리먼트에 연결된 레이블을 사용해 나중에 다시 가져올 수 있다. 블루프린트에서 사용가능한 컨테이너는 배열, 세트, 맵이다. 변수를 컨테이너로 바꾸려면 변수 타입 옆에 있는 아이콘을 클릭하고 나타나는 컨테이너중 하나를 선택한다. 아무 프로젝트나 ContainerTest라는 블루프린트>Actor를 하나 만든다. 연습은 아래에서 할것이니까 이건 그냥 보기만 하자 마이 블루프린트 변수+를 클릭 이름을 ContainerExample 타입:인테저로 설정한다. 디테일판넬의 VariableType의 변수이름 옆 파란색 아이콘을 클릭하고 나타나.. [12.빌드및배포] 게임을 빌드로 패키지화 게임을 배포 가능한 형태의 게임으로 만드는 것은 패키징이라는 프로세스를 포함한다.패키징은 게임의 모든 코드와 에셋을 선택한 플랫폼에서 수행할 수 있도록 적절한 형식으로 세팅한다. 1. 툴바에서 플랫폼 버튼을 클릭하고 원하는 플랫폼 위로 마우스를 이동한 다음 패키지 프로젝트를 클릭한다. 2. 저장할 폴더를 선택하면 패키징 프로젝트가 시작한다. 시간이 좀 걸린다. 3. 툴바 플랫폼을 클릭 맨밑 Packaging Settings를 열면 프로젝트세팅의 Packaging 카테고리가 열린다. 프로젝트카테고리의 Build Configuration에서 모드를 선택할 수 있다. Shipping을 선택하면 디버깅 정보가 없는 최종 버전을 만들 수 있다. 프로젝트를 다른 시스템으로 이동하거나 전달할 경우 프로젝트를 압축할 .. [12.빌드및배포] 그래픽 세팅 최적화 그래픽 세팅 최적화 정리하려면 내용이 너무 많아 그냥 이런 메뉴만 있다는 것만 올렸습니다. 레벨에디터 우상 Settings를 눌러보면 Engine Scalability Settings에 퀄리티 세팅창이 나타난다. 게임세팅 - 게임이 로드되는 맵을 확인하는 페이 플래폼 설정 [11.게임스테이트와 마무리] 게임일시중지및 저장파일 재세팅 플레이어가 게임을 이어하거나 게임을 1라운드로 재세팅하거나 애플리케이션을 종료할 수 있는 옵션을 제공하는 PauseMenu를 만든다. 일시 중지 메뉴 만들기 PauseMenu는 LoseMenu와 같다. 그래서 우리는 LoseMenu를 템플릿으로 사용할 것이다. 다음 스크린샷은 PauseMenu에서 원하는 요소를 보여준다. 다음과 같이 만들겁니다. 1. UI폴더에서 LoseMenu를 우클릭하고 복제한다. 2. 새 블루프린트위젯 이름은 PauseMenu로 이름을 지정한다. 3. You Lost!가 표시된 텍스트를 Paused로 변경하고 칼라를 파란색으로 변경한다. X:-170 Y:-450으로 변경 Resume 버튼을 놓을 자리를 벌려준다. 4. 새로운 Button을 추가하고 이름은 ButtonResume 텍.. [11.게임스테이트와 마무리] 저장된 게임으로 라운드 기반 스케일링 생성 현재 게임의 난이도는 적의 수에 의존해서 밋밋하다. 좀더 다양한 기술을 채택해 재미를 더해 보겠다. 라운드는 저장되고 로딩으로 복구된다. Save Game 클래스를 사용해 게임 정보 저장 플레이어가 저장시의 라운드는 저장하지만 죽인 적의 개수를 저장하지 않는다 저장된 라운드의 시작부분에서 시작될것이다. 만드는 과정은 다음과 같다. 1. FirstPerson>Blueprint폴더에서 추가+를 눌러 블루프린트 클래스를 선택후 모든 클래스에서 부모클래스로 SaveGame을 선택하고 이름을 BP_SaveInfo으로 변경후 더블클릭해서 에디터를 연다. 2. 변수+를 눌러 이름을 Round 변수타입을 Integer로 한다. 컴파일후 기본값을 1로 세팅한다. 3. 컴파일 저장및 닫는다. 이걸로 BP_SaveInfo는.. [11.게임스테이트와 마무리] 플레이어 사방으로 위험 현실화 이장의 토픽은 플레이어 상태에 따라 다른 메뉴 표시 게임플레이 모디파이어로 높아가는 난이도 생성 저장되고 나중에 다시 로딩되는 게임 스테이트 지원 저장된 데이터를 기반으로 레벨을 선택해서 초기화 게임플레이 데이터를 표시하는 전환 화면 생성 플레이어 사방으로 위험 현실화 플레어어 체력이 고갈되면 패배화면이 나오고 체력과 탄약을 회복후 다시 시작할 수 있지만 이전 기록은 리셋된다. 패배화면 세팅 플레이어 체력이 고갈되면 패배화면이 표시된후, 마지막 라운드를 다시 시작하거나 게임을 종료할 수 있는 옵션을 제공한다. 작성한 승리 화면을 기억할 수도 있다. WinMenu 에셋을 템플릿으로 사용해 개발 시간을 절약할 수 있다. Loss Menu 1. 콘텐츠드러워에서 FirstPerson>UI폴더의 WinMenu를 .. [10.AI적업그레이드] 마지막 조정및 테스트 0. 레벨의 Patrol Point 1, 2를 제거한다. 무작위 배회지점을 사용하기 때문에 더 이상 필요없다. 1. BP_EnemyCharacter블루프린트를 연다. 2 이벤트그래프에서 Patrol포인트를 지정했던 EventBeginPlay및 연결된 모든 노드를 삭제한다. 3. 블루프린트 에디터를 컴파일, 저장및 닫는다. 4. FirstPersonCharacter블루프린트를 연다. 5. 내 블루프린트 패널에서 TargetGoal변수를 선택하고 기본값을 20으로 변경한다. 6. 컴파일 저장하고 닫다. 7. 배회하는 적을 테스트하기 위해서는 시뮬레이션 옵션을 사용하는 것이 좋다 메뉴 플레이 버튼 옆에있는 세개 의 점을 클릭하여 접근한다. 다시 돌아갈때는 Selected Viewport로 돌아가면 된다. 8... [10.AI적업그레이드] 비헤이비어 트리에 배회 추가 MoveToPatrol 시퀀스를 Wander시퀀스로 변환한다. 새로운 Wander sequnce는 비헤이비어 트리에서 다음 노드에 의해 표현된다. 1. BT_EnemyBehavior에셋을 열고 오른쪽 MoveToPatrol 노드를 선택해 디테일에서 Node Name을 MoveToPatrol에서 Wander로 변경한다. 2. MoveTo를 선택하고 Blackboard Key 풀다운메뉴에서 WanderPoint를 선택한다. 3. Wander에서 와이어를 끌어 BTTask FindWander Point를 추가한다. 4. 디테일 패널에서 Wander key를 WanderPoint로 세팅한다. 노드이름을 GetNextWanderPoint 로변경한다. 5. 저장하고 닫는다 [10.AI적업그레이드] 적의 배회(Wamdering) 행동 만들기 이전 Patrol1, Patrol2 두 지점을 지정하여 적이 배회하도록 만들었으나 이번에는 무작위 배회로 대체할 것이다. 커스텀 태스크으로 배회 지점 식별 배회할 다음 지점을 저장할 BB_EnemyBlackboard에 키를 만든다. 기존의 PatrolPoint 키와는 다르게 목적지는 게임내 Actor가 아닌 벡터좌표로 표시된다. 그 다음 적이 배회해야 하는 곳을 결정하는 태스크를 만든다. 1. BT_EnemyBehavior트리를 연다. 2. Blackboard탭을 클릭한다. 3. 새키 + 버튼을 클릭하고 벡터를 키타입으로 설정후 이름을 WanderPoint로 변경한다. 4. 저장후, BehaviorTree로 돌아간다. 5. 툴바에서 새태스크를 클릭하고 BTTask_BlueprintBase를 선택하고 저장.. [10.AI적업그레이드] 더 많은 적을 스폰하기 적을 파괴하게 했으니 적을 생기게도 해야한다. BP_EnemySpawner 블루프린트 만들기 우리는 레벨의 임의의 위치에 적을 스폰하는 블루프린트를 만들 것이다. 1. 콘텐트드로워를 열고 Add+를 눌러 블루프린트클래스>Actor를 클릭후 BP_EnemySpawner로 이름을 변경하고 더블클릭해서 에디터를 연다. 2. 변수+를 클릭해 다음과 같이 만든다. Detail InstanceEditable을 체크해준다. 아래 그림을 보면 타입옆에 눈을 떠 있다. InstanceEditable이라는 아이콘이다. SpawnTime : 스폰 사이의 시간, Float , 디폴트값 10.0 MaxEnemies : 적의 최대 스폰 수, Integer, 디폴트값 5 3. 내 블루프린트 마크로+를 클릭한후 이름을 SpawnEn.. [10.AI적업그레이드] 적을 파괴할 수 있게 하기 이전 장에서 Cylinder를 파괴할 수 있게 만든적이 있다 이와 비슷하게 적을 파괴할 수 있게 만들어 보겠다. 1. BP_EnemyCharacter블루프린트를 연다. 2. 변수+를 클릭해 이름을 EnemyHealth로 지정한다. 타입은 인테저 컴파일후 기본값은 3이다. 3. 이벤트그래프 빈공간 우클릭후 Hit 이벤트를 노드를 추가한다. Other출력핀에서 와이어를 끌어 FirstPersonProjectile형변환을 추가한다. 4. FirstPersonProjectile형변환 출력핀에서 Branch를 추가한다. Condition에서 큼(>)노드를 추가한다. 5. >노드의 상단핀에서 방금만든 GET EnemyHealth를 추가하고 아래입력값을 1로 한다 6. Branch출력핀에서 Decrement Int노.. [10.AI적업그레이드] 노이즈 이벤트 디버깅 열심히 노이즈 이벤트및 해석 처리를 했는데 잘 안된다. 뭔가 디버깅을 해봤다. 실행시 블루프린트에디터에서 움직임을 볼 수 있는건 BT_EnemyBehavior 에서이다. 일단 열고 영상감지와 청각감지를 분리하기 위해 Root밑 Selector와 영상감지쪽 Can see Player?를 ALT+클릭으로 끊었다. BT_EnemyBehavior 가 보이는 상태에서 플레이 해보면 MoveToPatrol Sequence가 끝나면 HasSound?로 오는데 아무리 총을쏴도 HasSound? 밑으로 내려 가지를 않는다. HasSound?밑으로 내려가려면 BlackBoard key중 HasSound가 True로 되어 있어야 한다. BlackBoard key중 HasSound가 True로 하는 기능은 BT_EnemyCo.. 이전 1 ··· 40 41 42 43 44 45 46 ··· 49 다음