#3 메뉴 및 다양한 타일+α 구현 [점프던전]

신지한·2024년 4월 17일
3

개발일지

목록 보기
8/9
post-thumbnail

📢 개발일지에 앞서서

본 게임개발일지는 본인이 게임개발에 참여한 게임에 대한 얘기이며
게임개발에 느낀점이나 시행착오 등을 기록하기위해 작성된 글입니다
공부해나가는 입장으로서 부족한점이 많아 이해해주시면 감사하겠습니다

🎮 점프맵 개발과정에 대해서..

점프맵 개발일지를 정말 오랜만에 작성하는거 같다
사실 개발은 계속 하고있었다! 일지작성을 계속해서 안했을뿐..!
일지를 꾸준히 작성하는건 정말 어려운 마음가짐인거같다..

점프맵 뿐만 아니라 개인개발 개발일지도 마찬가지로 일지들을 한동안 작성을 안했는데
요즘 게임개발 뿐만아니라 취업준비때문에 여러가지를 하느라 많이 바빠서 신경을 못썼던거 같다
현재 블로그 최신 글들을 보면 죄다 게임개발 공부거나 코테 공부에 관한 내용들이다

정보처리 기사도 준비중이다 머리가 이상한건 넘어가도록 하자.. 새로 찍어야지


언리얼 엔진도 처음배우기 때문에 신경을 많이 쓰고있고 유니티도 단순히 구현만 하는게 아니라 다양한 테크닉들을 좀 배우고싶단 욕심에 개발에 비중이 좀 준거같다

하지만 비록 부족한 실력으로 구현하는거지만 점프맵(프로젝트 개발)도 분명 나한테 도움이 될 것이다!
변명 늘어놓지말고 게임개발은 개발대로 열심히 하고 일지도 일지대로 다시한번 꾸준히 남겨보도록 하자


📚 현재 개발 진행 상황

마지막 점프맵 개발일지를 남긴지 시간이 좀 지났기에 구현내용에 최신화된 내용들이 많기때문에 하나하나 설명해보고자 한다

가장 크게 변한점은 Menu Scene이 생겼다는 점이다

📌 Menu Scene 구현

메뉴 Scene의 현재 구현된 전체적인 기능들을 녹화해보았다
GIF로 만드는 과정에서 프레임 드랍이 생겼는데 실제로보면 더 부드럽게 움직인다

게임 스테이지 클리어 여부는 싱글턴 패턴을 사용해 GameManager를 인스턴스화 해서
MainGame과 Menu에 클리어 진척도를 저장하는 리스트를 사용하여 메뉴 스테이지 이미지에 반영한다

그리고 Menu Scene에서 신경썼던 부분이 UI의 움직임을 어떻게하면 어색하지 않고
게임처럼 움직일까를 고민해봤던거 같다

관련 내용은 이전에 블로그로 작성했으니 다음 링크를 참고하면 될거같다
<참고링크 👉 부드럽게 가속하는 오브젝트 만들기>

추가로 Cancel버튼이 아닌 화면밖을 터치했을 때도 마찬가지로 UI창이 취소되도록 만들었는데
배경에 Button 컴포넌트를 추가하고 클릭시 취소하고
취소되는 순서는 LIFO(후입선출, Last In First Out) 형태가 되어야하기 때문에
Stack<GameObject> 구조를 사용해서 의도하는 순서대로 취소되도록 만들었다

📌 스테이지별 타일 구현

지금 개발중인 점프맵 게임에서는 스테이지별로 블럭의 컨셉이 다 존재한다 기본부터 얼음, 불, 모래 등등...
블럭 하나하나 구현을 어떻게 했는지에 대해 간략하게 설명해보려고 한다

1. 모래 블럭

  • Sand 스테이지에 있는 모래블럭은 플레이어가 밟게되면 일정시간 이후에 부서지고 위에있던 플레이어는 낙하하게 된다
    일정시간 이후에 모래블럭은 다시 생성된다

  • (현재 남아있는 구현 과제) 플레이어가 있는 위치에 모래블럭이 생성되면 collider가 이상하게 충돌되는 현상이 있어
    회의 후 플레이어가 있는 자리에 모래블럭이 생성하지 않도록 결정 -> 추후 구현

2. 얼음 블럭

  • Frozen 스테이지에 있는 얼음블럭은 플레이어가 위에서 이동시 다른 블럭과는 다르게 미끄러진다

3. 늪 블럭

  • Swamp 스테이지에 있는 늪블럭은 플레이어가 위에 착지시 블럭 밑까지 천천히 끌고 내려간다
    플레이어는 탈출하기 위해서 점프를 여러번 연타해야한다

4. 물 블럭 & 물살 블럭

  • Water 스테이지에 있는 물블럭은 안에서 플레이어가 자유롭게 떠다닐 수 있도록 구현되었다
    물살블럭은 물살의 방향에 맞게 플레이어가 반강제적으로 이동하게 된다
    물살블럭은 거스를 수 있으나 조금 힘들게 밸런스가 맞춰져있다

5. 구름 블럭

  • Cloud? 스테이지에 있는 구름블럭은 블럭을 밟을 시 트램펄린처럼 자동으로 튕겨나가게 된다

타일들을 어떻게 구현해야할지에 대해 생각을 많이해봤다
현재는 블럭들이 플레이어의 움직임을 제한하거나 조작하는게 많아 Player스크립트에서
Player가 접촉하는 타일을 인식하고 그 타일에 따라 Rigidbody에 있는 물리 값들을 조절하는 방식을 사용했다
우선 구현에 급급했던거 같다

다시 생각해보니 타일들을 하나의 클래스로 묶은다음 플레이어의 물리값을 조절하는건
GameManager를 통해 조작하는 방식이 제일 깔끔하지 않을까란 생각이 드는데 한번 시도해봐야겠다
다음은 현재 구현한 방법이다

Player 스크립트에서 위와 같이 물리값들을 조절한다 코드가 좀 지저분하다

이펙트가 있는 블럭들(ex. 부스러지는 이펙트가 있는 모래블럭, 불꽃이 나오는 용암블럭(미구현))은
이펙트를 프리팹으로 생성한 후에 Instantiate와 Destroy로 동적으로 오브젝트를 생성 및 삭제해서 구현했다
다음은 모래블럭 구현코드이다
코루틴을 사용하여 시간차를 두어 프리팹 생성 및 점점 어두워지는 효과도 구현했다

📚 블럭 관련해서 남아있는 구현 과제

  • 용암블럭이 현재 구현되어있지만 시간차로 플레이어가 피격당하도록 하는 부분이 구현되지 않았다
  • 앞서 말했던거처럼 깔끔하게 정리하기
  • 향후 맵에디터도 제작해야하는데 어떻게 해야할지 방향 생각해두기

📌 기타 기믹들 구현(몬스터, 쉴드, 코인, 별, 클리어 애니메이션)

1. 코인 & 별 & 클리어 애니메이션

  • 코인을 먹으면 회전하면서 위로 튀어오른다. 먹었을 때 파티클 효과도 위 방법과 마찬가지로 프리팹을 생성한다
  • 별을 먹으면 클리어 진척도가 올라간다(추후에 변경 가능). 마찬가지로 파티클 효과 생성
  • 클리어 게이트의 일정 범위안에 들어갈 시 플레이어는 자동으로 중앙으로 걸어가고 후에 클리어 애니메이션이 재생된다. 잠시뒤 클리어보드가 나오고 진척도만큼 별이 생성된다. 안에는 클리어 시간, 점수 등등의 정보가 들어갈 예정이다

2. 고슴도치(몬스터)

  • 고슴도치는 플레이가 근처에 가면 몸을 부풀려서 공격한다
    일정 범위의 위치를 계속해서 반복하고 몸을 부풀린 이후에는 잠깐의 텀이 생겨 지나갈 수 있다

3. 쉴드

  • 쉴드는 함정, 적 등의 피격에서 한번 플레이어를 보호해준다
    쉴드 효과를 받은 플레이어는 피격당하지 않으며 후에 잠시동안 무적시간이 있다(캐릭터가 깜빡거리는 동안)

해당 효과는 게임 시작 전 광고 시청시 쉴드를 지급한다

무료 게임으로 출시를 예정하는 만큼 광고나 인게임 결제 요소를 추가할 예정이다!

  • (현재 남아있는 구현 과제) 고슴도치의 피격 동작이 특정 상황에서 부자연스럽게 작동하는 경우가 있다
    어떤 경우에 그러는지 파악 후 세부조정을 할 예정이다

🤔 앞으로의 계획

이제 어느정도 게임의 구실을 갖췄다고 하지만 아직 구현해야할게 산더미같이 있다
한번 간단하게 정리해보면

📚 구현해야할 남은 목표들

  • 구글 플레이스토어 연동 및 데이터베이스 연동 -> 랭킹시스템 구현
  • 저장기능
  • 광고(애드몹 예상) 연동하기
  • 구현한 블럭 및 몬스터,함정들로 스테이지들 만들기
  • 밸런스 조정
  • 상점 구현 및 인앱결제 연동하기
  • 기타 정해야할것들(미션, 클리어 조건 등등..)
  • 가챠 시스템 만들기(스킨 뽑기)

당장 생각나는것들을 나열해봤는데 아마 이보다 더 있지않을까 싶다

간단한 게임이라 생각해서 금방금방 할줄알았는데
아무래도 개발을 나 혼자 맡다보니 개인사정에 의해서 지체되고 또 다른일이 생기면 또 지체되고...
아무래도 집중을 제대로 못한거같다

한탄해서 어쩌겠나 다 나한테 도움될 일들인데..!
앞으로 좀더 파이팅해서 개발하고 일지도 파이팅해서 남겨봐야겠다

profile
게임 개발자

2개의 댓글

comment-user-thumbnail
2024년 4월 18일

빨리 출시되면 좋겠어요. 완전 재밌을 거 같아요!!

1개의 답글

관련 채용 정보