본문 바로가기

언리얼

(62)
Collab Viewer 템플릿 분석: 레이저 포인터 레이저 포인터 Laser Pointer serviceapi.nmv.naver.com 레이저 포인터는 사물의 특정 부분을 가리키기 위해 만들어진 도구이다. 이번 파트에서는 레이저 포인터 기능에 대해 분석한다. ​ (쉽게 읽힐 수 있도록 작성해보려고 노력했는데 의도대로 안된 것 같습니다. 기회가 된다면 재작성해서 올려보도록 하겠습니다.) ​ 입력 매핑 ​ 레이저 포인터는 마우스 좌클릭으로 켠다. Project Settings 의 Input 카테고리에서 ShootLaser 이벤트에 마우스 좌클릭(Left Mouse Button)이 매핑된 것을 볼 수 있다. ​ ShootLaser 이벤트는 BP_BasePawn에 구현되어있다. BP_BasePawn은 이 템플릿에서 사용되는 모든 Pawn의 조상 클래스다. 버튼을..
Collab Viewer 템플릿 분석: 게임모드 1. 이름 ​ 2. 클래스 디폴트 Player Controller 클래스는 있고 Default Pawn Class는 없다. New Var 0 = dada 이건 뭘까. ​ ​​ 3. 변수 ​ DefaultSceneRoot는 기본 컴포넌트이다. PlayerIndex는 현재 서버에 접속한 인원수를 표시하는 데 사용된다. TempColorPLayer는 플레이어 접속 종료 로직에서 사용된다. 오타가 눈에 띈다. 위에도 나와있지만 NewVar_0 는 초기값 dada 인 String 변수인데, 아무래도 사용되는 것 같지 않다. ​ Color 배열은 각 플레이어에게 지정하는 색상표이다. 초기값이 다음과 같이 선언되어있다. ​ ​ 3.이벤트 ​ 게임모드의 인스턴스는 서버에만 생성되기 때문에 모든 이벤트 호출은 서버에서 ..
Collab Viewer 템플릿 분석: 시리즈 소개 Collab Viewer 템플릿 ​ ​ Collab Viewer는 건축물, 인테리어 혹은 자동차 디자인 등에 대해 멀티플레이 / VR환경에서 내용물을 검토하고 의견을 나눌 수 있는 기능을 제시하는 기본 템플릿이다. ​ ​ 이 템플릿은 프로젝트 생성시 Architecture 혹은 Automotive 카테고리를 선택하면 옵션으로 주어진다. ​ 대략 이정도의 블루프린트 클래스 / 인터페이스 / 컴포넌트 / Enum / 위젯블루프린트 클래스들이 서로 상호작용을 하는 콘텐츠이다. ​ 위 블루프린트 클래스들을 모두 포함하여 이 템플릿 프로젝트의 구조를 분석하는 것이 이 시리즈의 주제다. ​ Collab Viewer 템플릿의 사용법에 대한 공식문서는 아래 링크를 통해 확인할 수 있다. https://docs.unre..
Intro. 비현실 연구소 # 비현실 연구소란? It's an unreal lab 비현실 연구소(Unreal Lab, 언리얼랩)는 첫째, 언리얼 엔진의 다양한 기능을 실험 형식으로 연재하는 가상 공간입니다. 둘째, 게임을 만들면서 혹은 인터넷을 돌아다니다가 알게 된 사실을 정리하는 일지입니다. 셋째, 처음으로 시도하는 기술들에 대한 테스트 기록입니다. ​ 그냥 창고같은 곳이네 # 함께해요 혼자서 콘텐츠를 만들기 쉬워진 시대라고 합니다. 하지만 저는 이 길을 멀리, 오래 가려면 여러 사람과 함께 해야한다고 생각합니다. ​ 언리얼 엔진 배우고 싶은 원화가, 모델러님 공부는 하기 싫고 게임은 만들고 싶은 불량학생 (초중고대) 함께 언리얼 엔진을 연구하실 심심한 백수님 ​ 누구든 언리얼 엔진 학습에 관심이 있으시다면 연구소 포스팅에 적극..
38. 브러쉬유: 마지막편 ​ # 정리하기 2019년 10월 28일 첫 포스팅을 시작해서 3개월 만에 프로젝트 브러쉬유의 튜토리얼 시리즈를 마무리 하게 됐습니다. 포스팅을 진행하는 사이에 많은 일들이 있었습니다. 언리얼 엔진도 4.24로 버전업이 됐고 게임 기획도 변화가 있었죠. 이 시리즈의 첫번째 구독자이신 KONG92님이 도움을 주셔서 제가 만든 저세상 UI를 여러분에게 공개하지 않아도 됐었습니다. 개인적으로도 많이 배웠습니다. 처음 써본 엔진 기능들도 몇 가지 있었고, 그것을 설명하기 위해 열심히 코드와 문서를 찾아보고 공부했습니다. 이 시리즈를 통해 입문/초보자 여러분들도 얻어가시는 게 있었기를 바랍니다. ​ 이번 장에서는 프로젝트를 진행하면서 아쉬웠던 점을 간략하게 정리하고 마무리 하겠습니다. ​ (게임 출시에 대한 튜토..
37. 브러쉬유: 사소한 버그 잡기 # 이번 장에서는 디버깅(Debugging)을 합니다. 이번 장에서는 지금까지 작업한 것들 중에 문제가 있는 부분을 찾아내서 고쳐볼게요. ​ ​ # 첫번째, 여러번 터치 가능 얌생이 첫번째 문제는 색을 못맞췄을 때, 재빨리 다른 색을 조합해서 다시 터치를 할 수 있다는 것이에요. 틀려도 재빨리 바꾸면 된다. serviceapi.nmv.naver.com ​ 이 문제를 해결하기 위해 각 라운드에 터치를 딱 한번만 할 수 있게 만들겠습니다. ​ 1. Chameleon 액터 블루프린트를 열고 Do Once 노드를 만드세요. 이 노드는 처음 실행됐을 때 Completed로 딱 한번만 지나가게 해줘요. 그 뒤에는 Closed(닫힘) 상태가 되어 Reset을 해줄때까지 문을 열지 않아요. ​ 2. Event Begi..
36. 브러쉬유: 게임 데이터 저장/불러오기(2) # 이번 장에서 다룰 내용​ 이번 시간에 구현할 내용은 아래와 같습니다. 1. 세이브게임(SaveGame) 세팅 2. 데이터를 파일로 만들어서 저장 3. 저장된 데이터를 불러오기 ​ 새로운 개념이 나오는 만큼 집중해서 진행해주세요. # 세이브게임 세팅 다른 말로 '초기화' 1. GI(게임인스턴스)를 여세요. ​ 2. 변수를 아래처럼 5개 만드세요. (4개의 String 과 1개의 SG_BrushYou 타입 변수) 각 변수들이 저장할 데이터는 아래와 같아요. SaveSlotName: 디스크에 만들어질 파일의 이름(문자열) SaveGame: 저장할 데이터를 모아두는 SG_BrushYou객체 -String: Data 맵컨테이너에 접근할 때 사용할 Key(문자열) ​ ​ 3. Compile을 하고, SaveGa..
35. 브러쉬유: 게임 데이터 저장/불러오기(1) # 콤보 기록을 지키는 방법 열심히 게임을 해서 Max Combo 신기록을 달성했는데 그 기록이 날아가면 허무하겠죠. 게임을 다시 하고싶은 생각이 안들거예요. 그래서 데이터 저장을 해주어야 하는데요. 보통은 데이터를 파일로 만들어서 저장장치에 저장하는 방법을 사용해요. ​ ​ # 언리얼에서 사용하는 방법 SaveGame 클래스 save game의 뜻은 '게임을 저장하다'인데요. 언리얼 엔진에서는 이름이 'SaveGame'인 클래스를 제공해줍니다. 이번 장에서는 이 클래스를 사용해서 게임 내 데이터를 파일로 만들어서 안전하게 저장하는 방법을 알아보겠습니다. ​​ # SaveGame 클래스 만들기 Framework 폴더 1. Framework 폴더에 블루프린트 클래스 만들기를 시작하세요. ​ 2. 부모 클래..
34. 브러쉬유: 크레딧(Credits) 화면 만들기 # 이번 장에서는 이번 장에서는 쉬어가는 의미로 크래딧 화면을 간단하게 만들어 볼건데요. 디자인을 다 하고 로비 위젯의 버튼과 연결도 해보겠습니다. ​ 엔딩 크레딧이란? 엔딩 크레딧 - 나무위키 엔딩 크레딧은 대체로 작품이 끝나고 난 뒤에 나오는데, 엔딩 크레딧에 삽입된 쿠키 영상이나 연출은 후속작 떡밥이나 반전을 담고 있는 경우가 잦아 스포일러 여지가 매우 다분하다. 엔딩 크레 namu.wiki ​ # 들어갈 내용 디자인을 시작하기 전에 크레딧에 포함시킬 내용을 생각해볼까요? ​ 1. 게임을 만든 사람들의 직책(또는 각자 담당한 영역)과 이름 예) Lead Game Designer (또는 Design) 홍길동 Programmer (또는 Programming) 철수 UI/UX Designer 영희 ​ 2..
33. 브러쉬유: 옵션 기능 만들기(2) # 이번 장에서 할 일 옵션 창 UI 디자인 이번 시간에는 실제 옵션 창 UI 디자인을 완성하고 기능까지 구현해보겠습니다. ​ ​ # 아이콘 다운로드 받기 Flaticon 이번에는 플랫아이콘(or 플래티콘)사이트에서 다운받은 아이콘으로 UI를 꾸며보려고 하는데요. 물론 꼭 이곳에서 아이콘을 구해야 하는 것은 아니에요. 언리얼 엔진 마켓플레이스나 다른 사이트에서 구하시거나 혹은 직접 제작하셔도 좋습니다. 심지어 그냥 아이콘 없이 진행하셔도 문제 없습니다. Flaticon, the largest database of free vector icons Download all icons in SVG, PSD, PNG, EPS format or as webfonts www.flaticon.com 플랫아이콘에서 제공..
32. 브러쉬유: 옵션 기능 만들기(1) # 이번 장에서 할 작업 이번 장에서는 실제 UI를 만들기 전에 해놓아야 할 사전작업을 해볼게요. 크게는 아래 다섯가지인데요, 가독성이 떨어지니까 대충 읽어보시고 바로 작업으로 들어가보죠. ​ (GI 에서) 1. 옵션 값 저장할 변수를 만든다. 2. 오디오 액터를 저장할 변수를 만든다. 3. 옵션이 변경할때 호출될 함수를 만든다. ​ (레벨블루프린트에서) 4. 레벨블루프린트에서 GI에 오디오 액터를 전달한다. ​ (효과음 재생을 구현한 모든 블루프린트에서) 5. 효과음 재생시 조건(옵션 값)을 확인하는 부분을 추가한다. ​ ​ # 게임 인스턴스 사전 작업 옵션 저장소 다른 레벨로 이동할 때 저장한 옵션이 초기화되지 않아야겠죠. 그래서 게임 인스턴스에 먼저 옵션 값을 저장할 변수를 만들어줘야해요. 또 브금..
31. 브러쉬유: 사운드를 추가해서 게임을 흥겹게 만들기 # 이번 장에서는 배경음악과 효과음을 추가해볼게요. 그런데 음악도 이미지처럼 저작권을 잘 지켜서 사용해야해요. 크래딧에 저작자를 표기해야하는 조건으로 사용할 수 있거나 돈을 내지 않으면 사용할 수 없는 음악이 있습니다. ​ 이번 장에서 사용하는 음악이나 효과음은 따로 지정해 드리지 않습니다. 적절한 음원을 직접 찾아서 사용하셔야 해요. 언리얼 마켓플레이스나 기타 음원 사이트, 아래 링크 에서도 한번 찾아보세요. OpenGameArt.org opengameart.org Music and Sound Effects for Videos and Games • PlayOnLoop Discover our looping Royalty Free Background Music for use in Videos, YouTub..
30. 브러쉬유: 게임 인스턴스(Game Instance)와 데이터 저장 # 이번 장에서는 게임 인스턴스(Game Instance) 클래스의 등장 이번 장에서는 게임 인스턴스(Game Instance)라는 것을 만들거예요. 게임 인스턴스는 게임이 시작할 때 만들어져서 게임이 종료될 때 까지 프로그램 상에 존재하는 친구에요. (Open Level 등으로 Lobby ↔ GameLevel 레벨을 이동할 때 GM_Game, PC_Game, Chameleon, Master(위젯) 등은 모두 메모리에서 지워져요.) ​ 이번 장에서 우리는 프로그램이 종료될때 까지 살아있는 게임 인스턴스 안에 중요한 데이터들을 저장하고, 또 그것을 꺼내서 사용하는 로직을 구현할거예요. ​ 게임 인스턴스는 공식문서 페이지도 없고 딱 이거다 싶은 레퍼런스가 없네요. 그냥, 프로그램 종료할 때 까지 살아있기 때..
29. 브러쉬유: 로비화면 만들기 # 이번 장을 마치면 손님을 맞이할 수 있게 됩니다. 이번 장을 마치면 아래 영상처럼 Tap to start 글씨가 점멸하는 귀여운 메인화면을 갖게 될거예요. 브러쉬유 메인화면 serviceapi.nmv.naver.com # UI 디자인 by designer KONG92 지난 게임오버 UI 제작 과정을 따라오셨다면 준비물은 이미 콘텐츠 브라우저에 준비되어있어요. ​ 1. Blueprints > UI 폴더에 Lobby 위젯 블루프린트를 만드세요. ​ 2. Lobby 위젯 블루프린트의 디자이너 모드를 여세요. ​ 3. Image를 하나 올려놓고 화면에 꽉 차게 만드세요. (Anchors와 Offset 설정으로) ​ 4. Color and Opacity 값을 다음과 같이 설정하세요. (원하는 색으로 하셔도 돼..
28. 브러쉬유: 게임오버 UI 제작(2) # 이번 장에서 다루는 내용 지난 장에서 디자인 한 게임오버 UI에 구현되어야 할 기능은 아래와 같아요. 1. 방금 전 게임에서 달성한 최고 콤보 기록 표시 2. 과거부터 현재까지 달성한 최고 콤보 기록 표시 3. 게임 재시작 4. 시작화면(Lobby)으로 이동 5. 구글플레이/게임센터 리더보드(순위표) 확인 6. 옵션창 열기 ​ 이번 장에서는 위 6개 기능 중에서 1, 3, 4번을 구현합니다. ​ 6번 옵션버튼은 옵션창 UI를 완성한 다음에, 2번 Best 콤보 디스플레이는 게임 데이터의 세이브/로드 기능을 다루면서, 그리고 5번 리더보드(순위표)는 구글 플레이 서비스 연동하는 과정에서 구현할 예정이에요. ​ ​ # Max 콤보 표시 기능 Master 위젯에서 Max 콤보 표시 기능은 GameOver ..
27. 브러쉬유: 게임오버 UI 제작(1) # 들어가기 전에 라이선스 설명 및 디자이너 소개 앞으로 우리가 함께 제작할 게임오버 UI에는 우아한형제들에서 제공한 배달의민족 주아체가 적용되어 있습니다. 폰트 다운로드와 라이선스 전문은 아래 링크에서 확인하시기 바랍니다. 우아한형제들 좋은 음식을 먹고 싶은 곳에서~! 우아한 사람들이 모여 우와하게 일하는 '우아한형제들'입니다. www.woowahan.com ​ 게임오버 화면과 메인 화면 UI에 쓰인 아이콘 및 이미지들은 KONG92님이 제작해주셨습니다. KONG92님의 뜻에 따라 해당 이미지들은 누구나 자유롭게 사용, 수정, 재배포할 수 있습니다. (그에 따라 발생한 문제에 대해서 KONG92님은 어떠한 책임도 지지 않습니다.) ​​ # 이번 시리즈를 마치면 얻게 되는 것 앞으로 여러장에 걸쳐 게임이..