비전공자의 언리얼 개발시점 2 (2024.12.18)
본 게시물은 내일배움캠프: 언리얼 게임 개발을 수강한 비전공자의 TIL(Today I Learn)을 담고 있습니다.
Unreal Engine(*이하 언리얼 엔진)에서는 3D 맵 뿐만 아닌 비쥬얼 스크립팅 시스템이 가능하다. 비쥬얼 스크립팅은 복잡한 코드작업 없이 노드 기반으로 블록끼리 연결하여 프로그래밍을 가능하게 하는 것으로 간단한 로직을 기반으로 하는 게임을 만들 때 주로 사용된다. C++을 사용할 때도 종종 사용하는 경우가 있어 숙달해두는 편이 좋다.
기본적인 블루 프린트 화면이다. 빈칸에 우클릭을 누르면 모든 액션이 뜨고 Event의 두 종류가 있으며 BeginPlay는 게임을 시작할 때 한번, Tick은 매 프레임 마다 실행하게 할 수 있다. 노드 연결은 각 화살표를 드래그로 이어 연결할 수 있으며 만든 노드를 적용하려면 좌측 상단의 컴파일을 눌러줘야한다. 문서 작업할 때 Ctrl + S 로 저장하는 것 같이 주기적으로 컴파일 해줘야한다.
좌측 메뉴에는 변수라는 사항이 있으며 변수는 값을 저장, 변화시키거나 로직을 적용하는데 사용하는 값으로 이름과 타입을 결정해주어야한다. 이름은 보통 본인이 확실하게 확인할 수 있는 것으로 지어야하며 타입에는 부울, 바이트, 인티저, 인티저 64, 플로트, 네임, 스트링, 텍스트 등 여러가지가 있다.
부울: 참 거짓을 나타냄
바이트: 정수 8비트 수를 의미하며 0부터 255까지의 수를 표현한다
인티저: 정수를 뜻하며 소수점 부분을 가질 수 없고 -21억부터 21억까지 많은 수를 표현할 수 있다.
인티저 64: 인티저보다 더욱 큰 수를 표현할 수 있다.
플로트: 소수점을 표현할 수 있다.
네임: 게임 내 요소 식별이 가능하며 스트링과 비슷한 역할을 하지만 스트링과 스트링을 비교하는 것 보다 네임과 네임을 비교하는 것이 더욱 빠르다. 식별자의 역할을 한다.
스트링: 텍스트 조각으로 0 숫자 문자 집합을 뜻한다.
텍스트: 현지화 텍스트에 사용되며 사용자가 직접 눈으로 보게 된다.
문제 1. 총알 발사 및 재장전
(*총알이 부족할때 발사되지 않음)
(*총알이 가득 차있을 때 재장전되지 않음)
위에부터 Branch(참, 거짓)를 사용하여 R을 누를 시 총알이 30발 이상이면 "The magazine is full"이 출력되고 그렇지 않다면 총알을 30발로 다시 상승시키며 "Reload bullet remain bullet count {count}"로 출력한다.
아래 또한 위와 같이 Branch를 사용하여 좌클릭을 누를 때 총알이 0발 이하면 "Not enough magazines"가 출력되며 그렇지 않다면 총알이 하나씩 줄어들며 "Fire Bullet"이 출력된다.
문제 2. 구구단 만들기
숫자 9를 넣으면 작동되는 구구단으로 B가 9보다 작으면 B의 수를 한개씩 늘리며 B의 값이 9가 될 경우 A의 값을 하나 늘리며 B의 값을 0으로 바꾼다. 이를 반복해 나가며 구구단을 완성한다.
문제 3. 가위바위보 만들기
ZXC로 가위바위보를 정하며 랜덤으로 상대의 수를 정한다. 상대의 가위, 바위, 보를 보며 플레이어의 가위, 바위, 보의 경우의 수를 하나하나 뽑아서 승패를 결정하였다.
이번에는 노드를 주로 사용하여 블루 프린트 설계를 시도했으며 비전공자로서 난이도가 점차 증가한다는 것을 실감한다.