- 관련게시물 : <스쿼트>개발일지(1) - UI 기능 프로토타입
- 관련게시물 : <스쿼트>개발일지(19) _ 이야기 4개 추가
- 관련게시물 : <스쿼트>개발일지(20) - 이야기 4개 추가 및 수정
- <스쿼트>개발일지(21) - 이야기 2개 추가 및 수정
0.추가된 캐릭터
1)휴버 로밍
보디빌더 로니콜먼을 모티브로한 캐릭터입니다.
플레이어에게 추가 필살기를 제공합니다.
2)페르니 로셉
보디빌더 씨범을 모티브로한 캐릭터입니다.
플레이어에게 추가 필살기를 제공합니다.
3)쿵쾅충
헬스장에서 덤벨을 시끄럽게 쿵쿵 내려놓는 사람들을 희화한 캐릭터입니다.
이 빌런의 에피소드를 제작하면서 카메라 흔들림 기능을 수정하게 되었습니다.(밑에 추가설명)
4)승부사
헬스장에서 주변 사람들보다 더 높은 무게를 치면서 우월감을 느끼는 사람들을 희화한 캐릭터입니다.
그래도 무게를 많이치는 고수같은 느낌을 주고 싶었는데, 어떻게 표현할까 고민하다가 후드를 푹 눌러쓴 모습으로 그려봤습니다.
1.카메라 흔들림 기능 수정
지금까진 간단하게 dotween으로 카메라 자체를 진동시켰는데, 이 기능의 문제점은 카메라가 캐릭터를 포커싱하는 함수와 충돌이 일어난다는 점이었습니다.
주인공이 이동중일 때 카메라를 진동시키면, 제자리에서 진동을 마치고나서야 다시 주인공을 포커싱하더라구요. 아무래도 dotween을 호출할 때의 위치만을 기준으로 진동하기 때문인듯...
그래서 간단하게 진동하는 기능을 다시 만들었는데, 이걸 만들고나니까 저번주 스트롱맨 에피소드까지 다시 좀 다듬고 싶더라구요.
*수정 전
기존엔 스트롱맨이 데드리프르를 하고 바벨을 내려놓을때 캐릭터 자체만 진동했지만,
*수정 후
이젠 카메라 자체가 흔들려서 정말 헬스장 전체가 흔들리는 느낌...
하지만 캐릭터와 대화중에도 계속 화면이 흔들리면 정말 정신이 없기 때문에, 대화가 시작될 때 캐릭터의 애니메이션을 멈추는 방식을 채택했습니다.
게임화면상에선 옆에 멈춰있는 캐릭터가 안보이기 때문에 플레이적으로도 자연스러운 것 같습니다.
2.쿵쾅충-승부사 에피소드
플레이어와의 상호작용 전까지, 쿵쾅충이 계속해서 바닥에 덤벨을 던져댑니다. 이 여파로, 플레이어가 헬스장에서 이동하는동안 계속해서 화면이 흔들거립니다.
덤벨의 포물선 움직임은 dotweenX,Y로 구현했으며, 바닥에 튕기는 횟수를 카운팅해서 0일때 카메라 진동, Max일때(던진 캐릭터 위치) 비활성시킵니다.
그리고 사실 이 덤벨도 상호작용이 가능한 오브젝트입니다.
플레이어가 덤벨을 가로채는 것도 재밌을 것 같아서 추가했습니다.
오브젝트 자체를 비활성시키면, 덤벨의 컴포넌트인 Usable(DialogueSystem에셋의 컴포넌트) 이벤트처리가 되지않아서 sprite만 비활성시킵니다.
...숨은 상호작용을 찾아내면 승부사도 같이 덤벨을 던져서 화면 흔들림이 2배가 됩니다!
3.메인스토리 8장
군중이 구경하는 모습과 그에 걸맞는 barking대사를 추가했습니다.
새로운 npc인 휴버와 페르니의 등장모습입니다.
이 에피소드는 플레이어에게 추가 필살기를 제공하려는 목적으로 만든 터라, 사실 내용이나 기능적으로 특별할 건 없습니다.
/////
도트 찍을 거 좀 늘어났다고 이야기를 2개밖에 못 만듦... 다음 달엔 탄막 조정하면서 필살기도 구현하려고 했는데 진짜 이번 달 안에 에피소드 다 끝낼 수 있을지 모르겠다.
그래도 쿵쾅충 에피소드는 나름 재밌게 만들어진 거 같고... 보디빌더들 초상화나 도트 캐릭터도 만족스러움!
- <스쿼트>개발일지(22) - 스토리 마무리
0.메인 - 주인공이 괴롭힘에 직면
이전 인카운터에서 주인공이 현실의 부조리를 어떤 마음가짐으로 대해야 하는지 플레이어가 선택을 해야했습니다.
다른 이야기들은 하나의 선택과 결과가 그 인카운터 안에서 끝나지만, 이 학교 이야기는 주인공이 시간을 거쳐 변했다는 걸 전달하기 위해서 이전 인카운터의 선택정보를 저장해놨다가 나중에 참조해서 분기가 갈립니다.
일단 유니티 playerRef로 저장해놓긴 했는데, 이 게임 스토리에서 유일한 선택지 저장정보라 굳이 db로 바꿀 일은 없을 것 같네요.
선택에 따라 이렇게 힘자랑 할 수도 있고
아니면 이렇게 몸을 자랑할 수도 있고
아니면 그냥 입을 털어댈 수도 있습니다.
1.헬스장 에피소드 - 컬렉터와 군인
에피소드 도입부
작은 원판만 잔뜩 가져다 쓰는 '컬렉터'와 케이블 머신으로 공중 묘기를 연습하는 '군인'이 등장합니다.
이 에피소드에선 두 npc와의 대화뿐만 아니라, 원판을 숨겨서 컬렉터를 방해할 수도 있습니다.
플레이어가 원판을 숨기는 위치(오브젝트)에 따라 상황이 다르게 흘러갑니다.
2.헬스장 에피소드 - 호크아이와 포세이돈
에피소드 도입부
사람들이 운동하는 모습을 계속 관찰하는 '호크아이'와 주변을 땀으로 전부 적셔버리는 '포세이돈'이 등장합니다.
이 에피소드에선 두 npc와의 대화뿐만 아니라, 호크아이를 계속 집요하게 쫒아다닐 수도 있습니다.
호크아이는 플레이어와 대화를 하는 횟수를 저장하여, 대화가 끝날 때마다 저장된 횟수 조건에 고정된 위치로 이동합니다.
3.헬스장 에피소드 - 복서와 탄마
에피소드 도입부
계속 슉슉거리며 허공에 주먹을 날리는 '복서'와 주변에 탄마 흔적을 남기는 '탄마'가 등장합니다.
4.헬스장 에피소드 - 삼각대와 초심자
에피소드 도입부
맵 곳곳에 삼각대를 설치하여 길을 어지럽게 만든 '관찰자'와 스쿼트를 배워보고 싶은 '초심자'가 등장합니다.
이 에피소드에선 삼각대 자체가 상호작용 트리거입니다. 플레이어가 움직이다 삼각대와 접촉하면 바로 강제로 관련 대화가 시작됩니다.
여기서 npc클래스에 새로운 함수를 추가하게 되었습니다.
지금까진 원하는 고정좌표로 이동하는 MoveTo(x,y)만 사용했다면, 이 에피소드 때문에 타겟이 어디있든지 근접하면 알아서 멈추는 CloseTo(x, y, distance)가 필요했습니다.
관찰자가 무너진 삼각대로 이동하며 플레이어와 거리를 이격하려면(완전히 붙을 수는 없으니까), 플레이어의 위치 혹은 삼각대의 위치에 따라 일일이 조건문으로 인카운터를 만들어줘야 했는데 그건 아무리 코딩초보인 제가 봐도 아닌 것 같아서... 다행히 CloseTo 함수로 해결했습니다.
5.헬스장 에피소드 - 단속반
에피소드 도입부
(용량문제로 짤 첨부x)
예전에 한창 유행했던 3대500 이하 언더아머 금지라는 밈을 캐릭터로 만들었습니다.
처음 만들었던 헬창들의 '주사' 에피소드가 분량이 좀 작아서 여기에 추가했습니다.
(단속원에 가까이가니까 다가오는 짤 _ 용량문제로 짤 첨부 x)
여기선 지정된 좌표를 순찰하는 PatrolNpc클래스와 주변 지역을 경계하는 빨간 테두리 watchArea클래스를 추가했습니다.
플레이어가 npc주변 빨간 테두리에 닿으면, 바로 강제로 관련 대화가 시작되며 npc가 다가옵니다.
여기선 앞에 만들어뒀던 CloseTo함수를 요긴하게 써먹었습니다.
이 캐릭터를 구현하며 하나 배운게 있는데, 하이어라키상 최상위 클래스에는 어지간하면 트리거나 콜라이더와 관련된 함수를 넣으면 안된다는 것...
watchArea 트리거 판정을 npc클래스도 같이 받아버려서 상호작용 셰이더(캐릭터 대화가능할 때 흰 테두리 나옴)를 그냥 대화가 시작되면서 이벤트로 꺼버리는 걸로 해소했습니다.
6. 중간지점. 되돌아보기 및 향후 계획
일지를 거의 1달만에 다시 씁니다. 좋게 말하면 생각할 시간을 좀 많이 가졌고, 단순히 말하면 게을러졌습니다.
슈팅게임 개발을 시작한 이유는 많은 게임 개발 유튜브 및 블로그에서 시작으로 고전적인 슈팅장르를 추천해줘서, 그저 쉽게 할 수 있다는 이유만으로 장르에 대한 이해나 애정도 없이 시작했었습니다. 이 게임을 개발하기 전까지 해봤던 고전슈팅 게임이라곤 1945 뿐인 것 같습니다...
그런데 기획 단계에서 들었던 생각이, 슈팅게임인데 바벨을 밀고 덤벨이 날아들어? 맥락이 너무 없지않나? 싶어서 간단하게 스토리를 넣어보자 했던게 이게 재밌나? 저게 재밌나? 고민하며 헬스장 에피소드를 만들었고 그러다보니 또 왜 갑자기 학생이 운동을 하지? 싶어서 뻔한 클리셰지만 학교폭력? 괴롭힘?을 주된 소재로 삼다보니 뭔가 이야기가 길어졌습니다.
더 재밌게 만들어보자고 슈팅게임에 비쥬얼 노벨을 추가했는데, 되돌아보니 슈팅게임 유저도 안하고 비쥬얼 노벨 유저도 안할 이상한 게임을 만들고 있다는 느낌이 들었습니다.
그래서 여러 고전 슈팅게임들을 찾아보며 뭐가 문제일까 짚어봤는데, 고전 슈팅게임들의 하나된 공통점이 보이더라구요. 아무리 오래걸려도 1시간이면 최종보스까지 전부 클리어가 된다...
지금 이 게임은 비쥬얼 노벨부분도 있고, 보스도 24개로 난이도 조절을 해놔서 절대 1시간 안으로 클리어가 불가능한 수준입니다. 애초에 슈팅게임에 대한 이해도 없는 상태로 기획을 시작했던게 문제였습니다.
쉬면서 이걸 우째야하나 고민을 좀 많이 했습니다. 만들어둔 걸 그냥 폐기하기는 아깝고. 그렇다고 재미없다고 느끼면서 계속 개발할 수도 없고...
결국 12+1(최종)로 보스 개수를 줄이면서 기존의 강화컨셉이었던 패턴을 좀 수정해서 일반 보스에 넣기로 했습니다. 너무 일반 보스패턴과 겹치는 컨셉의 패턴은... 다시 만들어서 추가해야겠죠.
보조패턴들도 24개 레벨에 맞춰서 난이도를 구분해뒀었는데 이건 그냥 다시 12개 레벨에 맞춰서 리스케일링 하면 될 것 같습니다.
그리고 이 13단계에 맞춰서 스토리 전개도 절반으로 줄였습니다. 다만 주인공의 두려움 극복이라는 중심이야기는 유지해야하기 때문에, 헬스장 에피소드만 로그라이트 처럼 임의로 선택되어 전개되는 방식으로 수정할 계획입니다.
다음주는 우선 당장 스토리 관련 코드부터 바꾸고, UI 재작업에 들어갈 예정입니다.
지금 UI가 아마 다이얼로그 에셋시스템?에 기본으로 들어가있는 UI로 기억하는데 에셋스토어 눈팅 좀 하면서 헬스장 느낌나는 UI좀 찾아봐야겠습니다.
- 스쿼트 개발일지(23) - UI일단락 및 타이틀 로고
0.전반적인 UI스타일 변경
0) 옵션
헬스장의 느낌이 조금이라도 잘 전달되지 않을까 싶어서 무쇠 느낌의 청남색으로 ui 컬러를 통일했습니다.
도트겜이어도 ui까지 도트일 필요는 없다고 생각은 하는데, 에셋스토어에 마음에드는 ui도 못찾았고 또 맘대로 조절하려면 아무래도 직접 만드는게 좋을 것 같아서 그냥 도트로 찍었습니다.
글씨나 이미지등 포인트가 필요한 부분은 대비색인 노란색이나 눈에 띄는 빨간색 톤으로 표현할 생각입니다.
1) 프로필
캐릭터의 스탯부분과 스킬부분을 시각적으로 구분지었습니다.
스킬 아이콘의 테두리도 청남계열로 새로 찍었고, 비활성 아이콘을 어둡게해서 차이가 더 뚜렷하게 보이도록 했습니다.
2) 대화 로그
현재 대화를 출력중인 캐릭터의 이름을 표시하는 태그를 추가했습니다.
에셋DialogueSystem의 subtitlePanel 자체에 onFocus 이벤트가 있어서 인물의 조명여부와 동일하게 태그의 활성도 결정됩니다.
1.운동 준비씬
0) 도전 단계 표시
현재 플레이어가 몇단계 보스(스쿼트)에 도전중인지 시각적으로 보여주는 장치입니다. 스쿼트 랙의 옆모습을 본따 그렸습니다.
이전에 실패및 성공한 단계가 한눈에 보이도록 색상과 원판의 위치에 차이를 두었습니다.
1) 운동 추가하기
플레이어가 추가하는 운동 및 그에 따른 스탯의 기대획득량을 확인할 수 있습니다.
운동카드에 포인터가 들어왔을 때 겉에 살짝 빨간 불빛이 들어오게 만들고 싶었는데, UI셰이더는 아직 쓰는 방법을 몰라서 그냥 뒤에 이미지를 하나 더 넣어서 활성화 시키는 걸로 대체... UI셰이더는 나중에 꼭 공부할 것.
2) 한도를 넘어선 추가
3개를 초과해서 운동을 추가하려면 스태미나(SP)가 소모됩니다. 이걸 시각적으로 확인시켜주기 위해서 상단 스탯에 UI이펙트가 생성되고 UI도 살짝 진동합니다.
2. 결과창 다듬기
추가 운동의 경우, 피격될 때마다 스탯의 기대획득량이 감소합니다.
예를 들어 POW 10이 기댓값인 덤벨프레스에 2번 피겨되고 클리어하면 POW 5밖에 획득이 안되는 정도.
이를 시각적으로 표현하기 위해 결과에 성적을 매기는 것 같은 느낌을 추가했습니다.
굿맆이면 perfect, good, ok, bad 총 4가지로 운동 성적을 매깁니다.
bad는 3번 피격되어야 나오기 때문에 일단 굿맆이면 보기 힘들 것 같긴 합니다.
밷맆이면 추가 운동을 얼마나 잘 피했는지 상관없이 전부 bad판정을 받습니다.
3. 타이틀 로고
게임 이름을 Just Squat, '무조건 스쿼트'로 결정했습니다.
스팀 마켓팅관련 영상에서 타이틀 로고(캡슐)은 돈을 아끼지 말라는 말에 바로 외주를 구했습니다.
결과는 완전 대만족... 도트 게임인걸 생각해서 글씨도 도트로 해주시고, 보스 캐릭터도 되게 역동적으로 잘 그려주심...
탄막슈팅인걸 감안해서 저 빨간색 과녁도 넣어주신 것 같은데 너무 마음에 듭니다.
4. 다음 계획
추가 운동 카드들 그림 완성하기 및 운동종류별 플래그 도트 찍기 - 스킬 아이콘처럼 실루엣만 그리는 거라 하루면 다 그리지 않을까 예상
캐릭터 특수기 구현 및 도트 - 특수기를 총 5개 만들어야해서 다음주까지 작업예상
댓글 영역
획득법
① NFT 발행
작성한 게시물을 NFT로 발행하면 일주일 동안 사용할 수 있습니다. (최초 1회)
② NFT 구매
다른 이용자의 NFT를 구매하면 한 달 동안 사용할 수 있습니다. (구매 시마다 갱신)
사용법
디시콘에서지갑연결시 바로 사용 가능합니다.