클래쉬로얄류샘플게임만들기 2 - 게임플레이제작
클래쉬로얄류샘플게임만들기 2 - 게임플레이제작 에픽게임즈코리아서동식
목차 기본용어 레벨은어떻게만드나요? 블루프린트가뭔가요? 유닛은어떻게생성하나요? 유닛이길을어떻게찾나요? 어떻게캐릭터들을효과적으로구성하나요? 유닛마다서로다른값을주려면? 유닛의팀을변경할때색을어떻게바꾸나요?
목차 머티리얼을어떻게마음대로바꾸나요? 게임속적군을찾는방법? AI 유닛들이스스로움직이게하려면? 캐릭터의애니메이션은어떻게설정하나요? 정보는어떻게표시하나요? 밸런스조절을쉽게하고싶어요 Q&A
샘플게임 Classic Roar 맵위치
기본용어 엔진에서사용하는기본적인용어들 참고 : 블루프린트레퍼런스읽는방법 Blueprint'/Game/SampleGame/Blueprints/Units/BPC_UnitBaseCharacter.BPC_UnitBaseCharacter' 타입 '/ 콘텐츠 / 경로 / 애셋이름. 애셋이름 '
기본용어 액터 (Actor), 폰 (Pawn), 캐릭터 (Character) 월드에놓일수있는객체, 플레이어가빙의할수있는액터, 길을찾고이동에편리한기능이들어있는폰 벡터 (Vector) 실수여러개를가진구조체, 위치등의값저장 트랜스폼 (Transform), 로테이션 (Rotation) 위치, 회전, 스케일값을모두갖는구조체, xyz 각축에대한회전값을갖는구조체 게임모드 (Game Mode) 게임을주관하는설정이나게임에서판정할사항들을미리설정해놓는블루프린트 애니메이션시퀀스 (Anim Sequence) 캐릭터등의애니메이션애셋
레벨은어떻게만드나요? 간단하게레벨을살펴봐요.
일반적게임플레이구성 게임모드 입력 플레이어컨트롤러 월드 AI 컨트롤러 적군유닛은 AI 컨트롤러가조종함. 아군유닛 적군유닛 플레이어컨트롤러가사용자로부터입력을받아서아군유닛을직접조종함.
게임플레이구성 제공된샘플게임 플레이어컨트롤러는아군유닛을생산만함. 게임모드 입력 플레이어컨트롤러 AI 컨트롤러 월드 AI 컨트롤러 아군유닛 적군유닛 AI 컨트롤러가각유닛을조종함.
유닛은어떻게생성하나요? 액터를월드에생성하는방법
월드에유닛생성하기 에디터에서블루프린트를끌어다놓기 블루프린트함수를이용해생성하기. Spawn Actor from class( 한글문서 ) 타워애셋위치 Blueprint'/Game/SampleGame/Blueprints/Units/BPC_UBC_CA _Tower.BPC_UBC_CA_Tower'
유닛이길을어떻게찾나요? 네비게이션메시활용
길찾기를아주쉽게! 네비게이션메시 지정한영역내에자동으로생성됨 캐릭터를올려놓으면알아서길을찾아감
네비게이션메시구성 영역지정 Nav Modifier Volume 포함할부분 제외할부분 Nav Mesh Bounds Volume 콜리전생성된네비게이션메시 참고 : 네비메시콘텐츠예제 참고 : Navmesh Bounds Volume 생성
네비게이션메시 엔진에서 P 키로토글
네비게이션메시 캐릭터가걸어다닐수있음. 대상 예제함수위치 CharacterMovement 컴포넌트가있으면이동. 위치또는목표액터 도착판정범위 겹치면정지? Blueprint'/Game/SampleGame/AI/DecoratorsAndTasks/BTT_M ovetolocation.btt_movetolocation'
네비게이션메시사용 목표 캐릭터 콜리전 네비게이션메시위에놓고목표를지정하여이동명령하면자동으로길찾음
어떻게캐릭터들을효과적으로구성하나요? 블루프린트의상속이해하기
상속 블루프린트상속구조 Blueprint Character BPC_UBC_CA_ Minion 스켈레탈메시, 몽타주 이동불가속성 상속 BPC_UBC_CA_ Tower BPC_UnitBase Character 상속 BPC_UBC_ CanAttack 상속 BPC_UBC_CA_ Tank 우리게임에필요한기본변수, 함수 공격가능한성질주변탐지, 각종액션
블루프린트상속 - 정리 부모의설정상태를그대로가져옴. 가져온뒤내용추가가능 함수 / 변수상속및변경가능 상속예제유닛들위치
블루프린트속함수상속 부모의함수를실행할수있고, 마음대로변경도가능!! 부모의함수를비워두면가상함수처럼사용가능!! Blueprint'/Game/SampleGame/Blueprints/Units/BPC_UnitBaseCharacter.BPC_UnitBaseCharacter' 타입 '/ 콘텐츠 / 경로 / 애셋이름. 애셋이름 '
상속된블루프린트함수실행 부모블루프린트 BP_Actor 상속된블루프린트 BP_Actor_Child A B A B B 오버라이딩필요한대로변경후실행가능 상속 ( 객체지향프로그래밍 ) ( 한글위키피디아 ) 블루프린트클래스 ( 한글문서 )
블루프린트속함수상속 부모의함수를실행가능하고, 마음대로변경도가능!! 부모의함수를비워두면가상함수처럼사용가능!! B B Blueprint'/Game/ SampleGame/Blueprints/Units/BPC_UBC_CA_Tank.BPC_UBC_CA_Tank'
블루프린트함수상속 부모함수 Blueprint'/Game/SampleGame/Blueprints/Units/BPC_UnitBase Character.BPC_UnitBaseCharacter' B 공격속성없이자신의체력, 생산비용만을업데이트함.
블루프린트함수상속 B B 검색을여러번하지않도록자손함수에서값넘겨받도록설정 쎈스!! 부모함수를실행해서자신의체력, 생산비용업데이트후이어서공격속성에필요한값들을업데이트. Blueprint'/Game/SampleGame/Blueprints/Units/BPC_UBC_Can Attack.BPC_UBC_CanAttack'
유닛마다서로다른값을주려면? 상속한변수이용
블루프린트속변수상속 변수에값을상속한뒤변경가능. 부모의변수기본값변경자손에게적용? 적용되는경우 변수를새로생성, 자손이변수를변경한적없음. 안되는경우 자손이상속받은변수를변경하여저장한경우.
유닛의팀을변경할때색을어떻게바꾸나요? 컨스트럭션스크립트활용하기
컨스트럭션스크립트 각클래스에지정된초기값을이용해오브젝트에적용시킴. 초기에필요한설정을할수있음.
컨스트럭션스크립트 레벨에놓인액터 디테일탭의값이바뀔때마다실행됨 스폰된액터 처음스폰시지정된값을가지고 1 회실행됨 초기값을어떻게동적으로변경? 컨스트럭션스크립트 ( 한글문서 )
컨스트럭션스크립트활용 Blueprint'/Game/SampleGame/Blueprints/Units/BPC_UBC_CA_Tank.BPC_UBC_CA_Tank 유닛의 Capsule Radius 를변경하면에너지바의크기가바뀜
컨스트럭션스크립트 - 활용 부모함수 Construction Script 를나중에호출하는방법도사용가능 Blueprint'/Game/SampleGame/Blueprints/Units/BPC_UBC_CA _Tower.BPC_UBC_CA_Tower'
컨스트럭션스크립트 - 활용 Blueprint'/Game/SampleGame/Blueprints/Units/BPC_UBC_CA _Tower.BPC_UBC_CA_Tower'
컨스트럭션스크립트 - 활용 팀을지정하였을때색을변경할수있음 Blueprint'/Game/SampleGame/Blueprints/Units/BPC_UBC_CA _Tower.BPC_UBC_CA_Tower'
머티리얼을어떻게마음대로바꾸나요? 다이나믹머티리얼인스턴스활용하기.
다이나믹머티리얼인스턴스 머티리얼을다이나믹머티리얼인스턴스로바꾸고파라미터입력 0 1 2 스켈레탈메시 파라미터 캐릭터 Blueprint'/Game/SampleGame/Blueprints/Units/BPC_UnitBaseCh aracter.bpc_unitbasecharacter' Set Team Color 참조
다이나믹머티리얼인스턴스 스켈레탈메시 / 스태틱메시등에적용된머티리얼은정적 해당머티리얼을다이나믹머티리얼인스턴스로만들어주고파라미터를입력하여실시간으로변경가능. Material'/Game/SampleGame/Materials/M_Dwarf_Grunt_Edit. M_Dwarf_Grunt_Edit' 참조
게임속적군을찾는방법? 레퍼런스사용하기
게임속오브젝트레퍼런스찾기
게임속오브젝트레퍼런스찾기 액터에달아준태그를이용하여전체검색가능
편리한인터페이스 상호간합의된의사전달방법 합의가되지않은경우무시됨. 지정한인터페이스로검색하기
편리한인터페이스 액터의 Class Settings / Interfaces 에인터페이스를추가 블루프린트인터페이스 ( 한글문서 )
적탐지방법 Get All Actors... 방식은많은부하를일으킴, Tick 등의뒤에사용비추천 구체등의콜리전안에들어온적을검출하는방법 Blueprint'/Game/SampleGame/Blueprints/Units/BPC_UBC_Can Attack.BPC_UBC_CanAttack' Find Units in Range 함수참조
지정레퍼런스받기 Get Game Instance Get Player Character Get Player Pawn Get Game Mode Get Player Camera Manager Get Player Controller... Get Owner Get Parent Actor Get Child Component
AI 유닛들이스스로움직이게하려면? 조류독감말고알파고그거
AI AI 컨트롤러 AI controller 가 Behavior Tree 를이용해행동하고변수들은 BlackBoard 에저장하고읽음. 길이막히면돌아가는 Detour Crowd AICon 을부모로설정하여편리하게길막힘해결. Blueprint'/Game/SampleGame/AI/AIC_UnitDefault.AIC_UnitDe fault' AIController 참조
AI - 구성요소서비스실행간격설정가능 Decorator 조건판단 성공하면아래로 Service 설정한간격마다실행 Task 지정한명령을수행 비헤이비어트리퀵스타트가이드 ( 한글문서 ) 비헤이비어트리노드참고서 ( 한글문서 ) BehaviorTree'/Game/SampleGame/AI/BT_UnitDefault.BT_Unit Default' 비헤이비어트리참조
AI - 실행 왼쪽에서오른쪽으로 Selector 자손이성공하면중지하고위로 Sequence 자손을순서대로실행 죽었을때실행됨 살아있는경우이부분이성공
캐릭터의애니메이션은어떻게설정하나요? 친절한애님몽타주사용하기.
페르소나 - 애님몽타주 애님 시퀀스 파티클 노티파이 애님몽타주 ( 한글문서 ) 애니메이션에디터 ( 한글문서 ) AnimMontage'/Game/SampleGame/Blueprints/Animations/A M_Minion_Attack.AM_Minion_Attack'
애니메이션 애님몽타주 파티클 노티파이 애님 시퀀스 슬롯 애님블루프린트 애님블루프린트의슬롯에전달하여애니메이션재생 AI Blueprint'/Game/SampleGame/Blueprints/Units/BPC_UnitBaseCharacter.BPC_UnitBaseCharacter' Play Montage if Not Playing 함수참조 AI 가판단한뒤 Play Anim Montage 를이용해실행 AnimBlueprint'/Game/SampleGame/Blueprints/Animations/AB _MinionBlueprint.AB_MinionBlueprint' 스켈레탈메시 캐릭터
정보는어떻게표시하나요? UMG 활용하기
정보표시 UMG 를활용하는방법 2D 위젯 단일디스플레이에서는사용가능 VR 환경에서는해상도이슈 3D 위젯 위젯을 2D 메시에랜더링하여사용 VR 환경에서도잘작동.
텍스쳐관리 하나의텍스쳐아틀라스를만들고일부를 Sprite 로잘라서사용 UMG 에서배칭처리하여드로우콜이줄어드는효과 동일한패널안에있을때배칭 PaperSprite'/Game/SampleGame/Textures/SPR_UI_FI_Archer.S PR_UI_FI_Archer' Texture2D'/Game/SampleGame/Textures/UI_Texture_01.UI_Te xture_01'
밸런스조절을쉽게하고싶어요. 친절한데이터테이블사용하기.
편리한데이터테이블 데이터테이블의열은구조체기준 구조체를이용해서 Csv 각세로줄 ( 열 ) 은지정된변수형으로받을수있음 블루프린트의구조체변수 ( 한글문서 ) 데이터주도형게임플레이요소 ( 한글문서 ) UserDefinedStruct'/Game/SampleGame/Data/STR_UnitData.ST R_UnitData'
편리한데이터테이블 간단히 csv 파일에서임포트 입력된열이없는경우메시지와함께빈데이터로채워줌 DataTable'/Game/SampleGame/Data/UnitData.UnitData'
편리한데이터테이블 구조체를사용하므로애셋레퍼런스도저장가능 배열도사용가능 애셋도지정가능
편리한데이터테이블 테이블지정하고행의이름을전달하면하나의구조체세트를반환받을수있음. 편리하게한데이터세트의값확보. 클래스의디스플레이명을이용하여데이터얻는예제 Blueprint'/Game/SampleGame/Blueprints/Units/BPC_UnitBase Character.BPC_UnitBaseCharacter' Set Basic Data 함수참조
감사합니다.