본문 바로가기

분류 전체보기

(573)          글쓰기    
[13장 데이터 구조및 흐름제어] 세트와 맵 세트 세트는 또 다른 타입의 컨테이너이다. 세트는 우리나라 말로 집합이다. 보통 엘리먼트의 값은 중복값이 없으며 인덱스가 없다. 집합에 관련된 연산자가 마련되어 있다. SET는 다음과 같은 노드들을 갖고 있다. ADD : 세트에 요소를 추가 ADD ITEMS: 세트에 배열의 요소를 세트에 추가 CONTAINS: 세트에 엘리먼트가 있다면 True를 반환 LENGTH: 세트의 요소수를 반환 TO ARRAY: 세트를 배열에 복사한다. 비용이 많이 든다 CLEAR: 모든 요소를 제거한다 REMOVE: 세트의 엘리먼트를 제거한경우 True 반대의 경우 False를 리턴한다. REMOVE ITEMS: 세트에서 배열에 있는 지정된 요소들을 제거한다. UNION: 두개의 세트를 합쳐친 새로운 세트를 만든다 DIFFER..
[13장 데이터 구조및 흐름제어] 오브젝트레퍼런스 배열예제 이번에는 게임중 적을 스폰시 임의의 위치를 랜덤으로 발생시킬수도 있지만, 보통 여러 후보지를 미리 설정해 놓고 그중 하나를 랜덤으로 선택해서 사용하는 것이 더 편할 수 있다. 무작위 발생시 다른 오브젝트와의 충돌까지 계산해야 하므로. 후보지의 위치를 Vector로 저장할 수도 있지만 여기서는 오브젝트레퍼런스를 사용해 후보지위치에 접근할 것 같다. 1. 시간 콘텐츠가 포함된 삼인칭 템플릿을 기반으로 프로젝트를 생성한다. 블로거는 기존의 프로젝트를 그대로 사용하였다. 2. Content폴더에 BookUE5폴더를 만든다. 3. BookUE5폴더로 들어가 추가버튼을 클릭하고 블루프린트 클래스를 만든다. 부모는 액터로 하고 이름은 BP_RandomSpawner로 지정하고 에디터를 연다. 4. 마이블루프린트 변수+..
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..