
3일차 블루프린트에 대해 배우고 이벤트 함수, Branch, Sequence 등에 배우고 배운내용을 바탕으로 텍스트 슈팅 게임을 만들어 보기이다.
- 블루프린트 : 언리얼 엔진에서 제공하는 비주얼 스크립팅 시스템
- 복잡한 코드 작성없이, 노드 기반의 블럭을 연결해서 프로그래밍이 가능하게 하는 시스템
- 현업에서는 프로토타입 구현 혹은 아트 및 기획자 팀원들이 컨텐츠 구현시 사용한다고 한다.
- Unreal C++를 사용한다 해도 타 직군과의 협업에서는 블루프린트가 필요하다.
- 이벤트 함수 : 어떤 사건(Event)이 발생하면 호출 되는 함수
- BeginPlay : "게임 플레이의 시작"이라는 사건이 발생하면 호출되는 함수
- Tick : "매 게임 프레임"마다 호출되는 함수
- Print String : 문자열을 출력하는 함수
- 변수(Variable)
- 상수(값, Constat)를 저장할 수 있는 그릇
- 언리얼에서는 멤버변수를 "속성(Property)"이라고 많이 부름
- 종류
- 부울(Boolean) : 참/거짓 두 가지 상태만 가짐
- 바이트(Byte) : 정수, 가장 크기가 작음(0~255)
- 인티저(Integer) : 정수, 일반적인 정수(-21억~21억)
- 인티저64(Integer64) : 정수, 가장 크기가 큼
- 플로트(Float) : 실수, 정밀도가 더 우월함(double-precision)
- 이름(Name) : 문자열, 엔진 내부에서 사용, 불변인 경우
- 스트링(String) : 문자열, 일반적인 문자열(예. 플레이어명)
- 텍스트(Text) : 문자열, 퀘스트 설명같이 다국어 변환이 필요한 경우
- 비교 연산 노드
- == : 두 값이 같은지 비교
- != : 두 값이 다른지 비교
- < : 첫 번째 값이 두 번째 값보다 작은지 비교
- > : 첫 번째 값이 두 번째 값보다 큰지 비교
- <= : 첫 번째 값이 두 번째 값보다 작거나 같은지 비교
- >= : 첫 번째 값이 두 번째 값보다 크거나 같은지 비교
- 논리 연산 노드
- AND : 두 조건이 모두 참일 때만 결과가 True
- OR : 두 조건 중 하나라도 참이면 결과가 True
- NOT : 조건의 결과를 반대로 만든다
- XOR : 두 조건 중 하나만 참일 때 True
- 흐름제어(1)
- Branch : 조건이 참일 때 True 실행, 반대면 False 실행
- Sequence : 2개 이상의 여러 노드를 순서대로 진행 시킬 때 사용
- 흐름제어(2)
- While Loop : 조건(매개변수 Condition)이 값이 참이면 Loop Body가 계속 실행되며, 거짓으로 조건이 바뀔경우 Completed로 실행
- For Loop : 매개변수 For Index의 값부터 Last Index까지 Loop Body가 게속 실행되는 노드
- 배열 : 자료형 변수로 만듬, 비슷한 유형의 변수들을 보관
- For Each Loop : Array 자료형의 처음부터 끝까지 순회하는 반복 노드
- 매개변수 Selection에 어떤 값이 들어왔냐에 따라 실행 흐름을 분기함
- 열거형(Enum) : 정수형 상수에 이름을 부여해서 모아둔 것은 열거형이라 함
- 구조체(Structure) : 언어 스펙 상에 미리 구현되어 있는 Native Type(int, float, ...)이 아니라 프로그래머가 필요에 따라 자료형을 만들 수 있음.
과제로 텍스트 기반의 슈팅게임을 간단하게 - 사격, 장전, 무기선택, 재장전, 과열, 냉각 등의 액션을 텍스트로 구현 - 만들었다.
복잡하게 노드가 만들어지고 여기저기 노드를 있는 라인이 생겼다. 아직 노드에 대한 100퍼센트 이해가 되지는 않았지만 강의 내용을 복기하며 천천히 따라 만들어 보았다. 추가 과제인 무기 3가지를 만들어 적용하는 것은 처음 부터 어떤 함수를 이용해야 할지 막막했다. 처음 부터 따라 해보보고 답안 설명을 참고하였다. 텍스트 기반이기에 대부분의 상태나 액션이 텍스트로 출력되어야한다고 생각해서 냉각 온도, 과열 온도, 장탄 수 등을 텍스트로 출력 시켰다.
여러 노드들을 만들고 보니 정리하 필요해 상황별로 코멘트 기능을 이용해 정리하였다.
냉각 처리와 무기 선택 노드
온도와 재장전 상황은 함수세트로 만들어 장비별 구분하여 작동되게 하였다.
블루프린트부터 어려워지기 시작했다! C++ 강의도 듣기전에 어려움에 직면해서 처음엔 많이 당황 스러웠다. 강의 내용을 잘 따라해보고 혼자서도 연습을해서 충분하게 내 것으로 만들기(이해하기)를 해야겠다.
플레이어 캐릭터와 나만의 레벨 디자인 강의 수강, 캐릭터 이동 모션 수정 작업하기(기존 만들었던 캐릭터 동작이 어색함), C++ 강의 수강