본문 바로가기

2022

(6)
프로젝트 MC #02 - 말 이동 가능하게 구조 만들기 개요저번 글에서는 가볍게 프로젝트를 생성하고, 말들이 움직일 수 있는 보드를 만들어 보았습니다.그 다음 차례로, 말들을 움직일 수 있게 만들어 보겠습니다. ♟  구조 만들기일단 게임에 필요한 큰 요소들을 3가지로 잡았습니다.전체적인 흐름을 처리해주는 보드매니저, 보드의 한 타일, 그리고 말.처음에는 매니저가 보드 타일을 들고있고, 타일은 말을 들고있는 순으로 상하가 명확한 구조로 생각을 했었습니다. 보드 매니저에서 말의 모든 움직임도 모두 처리해주고, 타일과 말은 각각의 속성값들과 자잘한 메소드만 들고 있는 구조로요.2d 게임이었다면 위와 같은 구조에서, 타일 콜라이더만을 통해 터치를 처리해주면 상호작용에 문제가 없었겠지만 (모든 조작이 타일 터치를 통해서 처리, 말 선택 또한 해당 말이 위치한 타일을 ..
모바일 게임 반복 컨텐츠에서의 사용자 편의성 평소와 다름없이 블루 아카이브를 키고 숙제를 하다가, 반복 컨텐츠 완료 시의 분기 처리가 뭔가 세밀한 것 같다(...!)고 느끼고는 연구해보자고 마음을 먹고 키보드에 손을 올리게 되었습니다. 일반적인 반복 컨텐츠란 게임 내에서 플레이어가 캐릭터를 성장시킬 수 있는 자원을 얻는 것을 목표로 반복적으로 플레이하는 컨텐츠가 일반적인 반복 컨텐츠라고 정의내리고자 합니다. 그리고, 그 자원을 확률적으로 얻을 수 있게 함으로서 플레이 시간을 증가시키거나, 해당 컨텐츠의 진입 횟수를 입장권 등으로 조절해 플레이어의 성장 속도를 제한하는 것이 반복 컨텐츠의 목적이라고 생각합니다. 여기에 더해, 플레이할 때 변수가 없거나 거의 적고 (플레이어가 느끼기에), 동일한 플레이를 반복하는 것이 반복 컨텐츠의 특성이라고 볼 수 ..
버텍스 포지션 기반으로 그라데이션을 적용해주는 유니티 셰이더 (유니티 빌트인 렌더 파이프라인 - Vertex&Fragment 및 Surface 셰이더 사용) 개요 유령 캐릭터를 만들면서, 캐릭터를 조금 더 '유령답게' 만들어주기 위해서 유령의 끝 부분을 그라디언트를 적용해 투명하게 하거나, 색을 그라데이션으로 적용할 수 있게 셰이더를 작업해야 했습니다. 다만 중요한 점은 '가볍게' 만들기였습니다. 회사 분께 조언을 받았는데, 방법은 크게 두가지로 정리되었어요. 캐릭터를 정면 프로젝션한 별도 UV 채널을 추가해서, 해당 UV를 기반으로 그라데이션을 만드는 방법 버텍스 데이터의 y좌표값을 활용해서 버텍스 컬러에 그라데이션을 적용하는 방법 '가볍게'라는 중점에 맞게, 별도 UV채널을 사용해 연산하는 첫 번째 방식보다는, UV채널을 추가하지 않고, 버텍스 셰이더에서 연산..
Unity - 렌더 텍스처 이미지로 저장하기 사이드 프로젝트를 진행하던 와중에, 캐릭터들의 초상화를 각각 이미지로 저장해줘야 할 일이 생겼어요.캐릭터가 3D 오브젝트였고, 바리에이션이 존재하는 상황이라 유니티에서 렌더 텍스처를 사용해 초상화 이미지 파일을 생성하는 방향으로 결정했습니다.  일단 렌더 텍스처를 생성해 캐릭터를 렌더할 카메라와 연결해 줍니다.(Unity 매뉴얼 참고 - Project 창 우클릭 / Create / Render Texture → 렌더할 카메라의 Target Texture에 링크)  Create > Render Texture를 사용하여 새 렌더 텍스처를 생성한 후 Camera 컴포넌트의 타겟 " data-og-host="docs.unity3d.com" data-og-source-url="https://docs.unity3d..
프로젝트 MC #01 - 체스 보드 생성하기 최근에 개인적인 일정들이 마무리되어서, 개발 공부 겸으로 아이디어 중 하나였던 체스 베이스 게임을 하나 심심풀이로 만들어보기로 했습니다. 일단 체스 보드부터 시작해요. ··· [HideInInspector] public Vector3[,] board = new Vector3[6,6]; [SerializeField] private GameObject tileWhite; [SerializeField] private GameObject tileBlack; [SerializeField] private float tileSize = 1; void GenerateBoard() { bool isBlack = true; for(int i = 0; i < 6; i++) // j - Horizontal (A,B,C...)..
균열점 - V-llage 버튜버 방송 웹 게임 콘텐츠 ▷ 그래픽 리소스 편집, UI 작업 및 Figma 작업을 했습니다. (일러스트 이미지는 에셋을 보정해서 사용) 브이리지 버튜버 하푸, 로에 두 분의 합방 콘텐츠로, 균열점이라는 이름의 방탈출 장르의 웹 게임을 만들었습니다. 방송용 콘텐츠를 만드는건 처음이었는데, 웹으로 개발을 진행하셔서 유니티에서 UI 배치 작업하던 일이 피그마에 배치로 바뀐 점 말고는 크게 다른 점이 없더라고요. 방송으로 진행하시는 모습도 봤는데, 생각보다 엄청 빠르게 진행하셔서 놀랐었습니다 😮