본문 바로가기

게임120

게임개발 중급(96) - Monster Killer(58) Monster Killer 보스 세팅이제 마지막 컨텐츠인 보스 모드 입니다. 보스 모드는 다른 게 어려운게 아니라 10 마리의 보스를 다 특색있게 만들어야 한다는 것이 어렵습니다. 제가 유료로 에셋을 구매하여 게임을 만드는 것이라면 멋진 보스몬스터를 구하는 것은 그렇게 어렵지 않을 수도 있지만, 일단 저는 무료로 사용할 수 있는 리소스만 활용하기 때문에 쉽지 않을 것으로 보입니다. 보스 개념 정의보스를 세팅하려고 보니 한 가지 걸리는 것이 있었습니다. 바로 보스의 개념이 정립되어 있지 않았다는 것입니다. 무슨 말이냐면 이 게임의 이름은 "Monster Killer"인데 현재까지 등장하는 모든 몬스터는 '드래곤', '용'의 형태를 띄고 있습니다. 그래서 아예 드래곤으로 10마리를 전부 채울 지 아니면 딱히.. 2024. 9. 10.
게임개발 중급(95) - Monster Killer(57) Monster Killer 데이터 베이스 사용 및 연결이제 기존에 PlayerPrefs를 통해 게임 내에서만 관리하던 데이터를 데이터베이스를 통해 관리하도록 바꾸겠습니다. 사용하는 데이터베이스는 파이어베이스를 사용하게 되었습니다. GameManager가장 먼저, 데이터베이스와 연동을 시키기 위해서는 기존에 플레이어의 데이터를 관리, 사용하던 GameManager를 정리할 필요가 있습니다. GameManager는 싱글톤 인스턴스로 게임에서의 플레이어의 모든 데이터를 관장하는 역할을 하고 있으며, 데이터와 관련된 기능도 일부 담당하고 있습니다. 기존에 데이터와 관련 없는 함수가 작성되어 있다면 다른 곳으로 옮겨주고, 필요없는 내용을 걷어내는 과정을 거쳤습니다. 더 많은 데이터가 존재하지만, 일단 지금은 데이.. 2024. 9. 5.
게임개발 중급(94) - Monster Killer(56) Monster Killer 폴리싱 작업폴리싱은 기본적으로 연마한다는 뜻으로, 무언가를 닦는다는 표현으로도 사용됩니다. 게임 업계에서는 주로 꾸미는 단계를 폴리싱이라고 표현합니다. 오늘은 여태 만든 게임을 약간 꾸며주도록 하겠습니다. 이펙트 일단 가장 처음으로, 이전 글에서도 몇 번 보였던 마법진 이펙트 입니다. 가디언 모드에서 사용되고 단순히 이쁘게 꾸미는 용도도 있지만 기존에 기지의 역할을 하는 수정 오브젝트가 직관적으로 지켜야 할 오브젝트인지 티가 잘 나지 않았기 때문에 꾸미는 것과 동시에 해당 오브젝트가 중요한 오브젝트임을 유저에게 알려주기 위한 용도로 사용하게 되었습니다. 구역 제한 두번째는 구역을 제한하는 보이지 않는 벽을 만드는 것입니다. 게임을 만들다 보면 어디까지 플레이어가 접근할 수 있고.. 2024. 8. 31.
게임개발 중급(93) - Monster Killer(55) Monster Killer 가디언 모드 설정저번에 이어서 가디언 모드를 위해 설정한 특수 기능에 대해 알아보겠습니다. 가장 첫번째로 가디언 모드는 다른 모드와 다르게 끝까지 버티는 게 목표입니다. 그래서 시간이 전부 소모되어도 게임오버가 되지 않고 클리어가 됩니다. 그리고 그것이 유일한 클리어 조건입니다. 그렇기 때문에 각 스테이지에 따른 시간은 플레이어가 업그레이드 하는 시간과 별개로 고정적으로 설정되어 있습니다. 임의로 3분으로 설정되어 있으며, 점수도 고정적으로 클리어 시 지급됩니다. 그리고 시간만 버티면 무조건 클리어 하기 때문에 무조건 3스타를 받도록 설정하였습니다. 기지의 체력에 따라 다르게 설정할까도 생각해 봤지만 아직 그 부분은 고려대상이 아닌 것 같습니다. 두번째로는 기지의 체력입니다. .. 2024. 8. 22.
게임개발 중급(92) - Monster Killer(54) Monster Killer 보스모드원래는 저번에 이어서 보스 모드를 디벨롭 하려 했으나, 보스의 부위별 콜리전을 구현하는 과정에서 한가지 문제를 간과하고 있었습니다. 바로 이전에 사용한 몬스터들은 전부 각 부위 위치에 맞는 본이 존재하였기 때문에 해당 위치에 콜리전을 생성해주면 쉽게 만들 수 있었지만 이번 드래곤 오브젝트는 본이 존재하긴 했지만, 날개 부분의 콜리전이 존재하지 않습니다. 하지만 보스는 일반 몬스터보다 사이즈도 크고 부위도 조금 더 많기 때문에 (날개, 목, 꼬리 등) 조금 더 고민을 해봐야 할 것 같습니다. 아직 사용해야 할 보스가 9개나 더 있는데 그 모든 오브젝트가 모든 본을 가지고 있을 거란 보장이 없기 때문에 잠깐 보류하고 가디언 모드를 만들어보겠습니다. 가디언 모드가디언 모드는 .. 2024. 8. 13.
게임개발 중급(91) - Monster Killer(53) Monster Killer 보스 모드(Boss Mode)이제 보스 모드를 만들어 볼 것 입니다. 우선 기획은 스테이지에 입장 시 한 마리의 보스만 등장하고 다른 몬스터와 마찬가지로 부위 별로 공격할 수 있게끔 할 것입니다. 그리고 킬러 모드의 헌트 모드에서는 몬스터가 존재하기만 하면 자동으로 공격을 시전하고 플레이어의 위치와 상관없이 데미지가 들어오지만 보스는 좀 다르게 할 예정입니다. 맵 디자인가장 먼저 스테이지를 제작해 보겠습니다. 에셋스토어에서 무료로 이쁜 맵을 구하면 좋겠지만 역시나 맘에 드는 것을 찾기 힘들어 스케치팹을 통해 3D 맵을 선정하여 가져왔습니다. 보스 맵이기 때문에 웅장한 분위기를 조성하기 위해 멋있는 맵을 찾았습니다. 실제로 사용되는 공간은 가운데 원형으로 되어 있는 곳입니다. 현.. 2024. 8. 11.
게임개발 중급(90) - Monster Killer(52) Monster Killer 점수 합산이전에 만든 점수를 얻는 과정은 플레이어가 스테이지에 진입하면, 해당 스테이지 내부적으로 설정된 시간이 지남에 따라 점수가 같이 감소하고, 클리어 타임에 맞는 점수를 획득하도록 구현했습니다. 그 과정에서 최소 점수도 20점으로 설정을 해주었는데 아직 한 가지 문제가 더 있습니다. 바로 재도전 시 같은 스테이지에서 여러 번 점수를 얻는 경우입니다. 지금은 아무런 장치가 없기 때문에 만약 최초로 1스테이지에서 50점을 얻고 다시 1스테이지를 도전하여 20점을 얻었다면 총 70점이 합산될 것입니다. 하지만 같은 스테이지를 재도전할 때에는 최고 점수를 기준으로 반영되어야 하기 때문에 이런 장치를 추가해 줄 것입니다.  게임 매니저에서 최고 점수에 대한 함수를 만들고  기존에 .. 2024. 8. 9.
게임개발 중급(89) - Monster Killer(51) Monster Killer 스테이지 관리이전에 구현했던 헌트모드에 대한 스테이지 정보를 불러오는 기능을 모든 모드에서 사용할 수 있도록 확장했습니다. 킬러모드를 제외한 총 3개의 모드가 있는데 각 모드 별로 플레이에 필요한 정보가 다르기 때문에 각각의 모드에 대한 정보가 다르게 저장되어 사용되도록 만들 생각입니다. 게임 매니저에서 관리를 위해 정의해둔 각 스테이지 데이터를 Base를 만들고 그것을 상속받아 파생시킨 각 모드에 대한 데이터를 모두 만들어 줍니다.  그리고 이전에 스테이지 정보를 불러오기 위해 싱글톤으로 작성한 StageLoader에서 사용할 수 있도록 각 인덱스 별로 스테이지를 불러오는 GetStageData함수를 만들어 줍니다. 이제 각 모드는 모드에 맞게 설정된 인덱스 번호를 바탕으로 .. 2024. 8. 1.
게임개발 중급(88) - Monster Killer(50) Monster Killer 헌트 모드(Hunt Mode)저번 글에 이어서 헌트 모드 구현에 대해서 이야기 해보겠습니다. 이번에 살펴 볼 내용은 몬스터 스포너 입니다. 몬스터 스포너(Monster Spawner)using System.Collections;using System.Collections.Generic;using UnityEngine;public class MonsterSpawner : MonoBehaviour{ public GameObject monsterPrefab; // 소환할 몬스터의 프리팹 public Transform[] spawnPoints; // 몬스터가 소환될 위치들 public float spawnInterval = 5f; // 몬스터가 소환되는 주기 pu.. 2024. 7. 26.
게임개발 중급(87) - Monster Killer(49) Monster Killer 헌트모드(Hunt Mode)이 모드를 구현하기 위한 핵심은 두 가지로 나눠서 살펴볼 수 있습니다. 첫번째는 모든 모드에서 사용가능한 기본적인 모드 설정에 따른 레벨의 변화를 구현하는 것과, 두번째로 몬스터가 스폰될 수 있도록 하는 몬스터 스포너(오브젝트 풀)을 구현하는 것입니다. 이번 글에서는 첫번째에 대해서만 이야기 하도록 하겠습니다. 모드 구현일단 확장성이 높은 1~10 까지의 데이터를 가지고 레벨을 로드하기 위해 모드를 구현하기로 했습니다. 그래서 GameManager와 StageLoader를 사용하게 되었습니다. 위와 같은 방식으로 스테이지에 데이터를 담는 클래스를 만들고 해당 데이터를 가지고, 스테이지를 로드할 수 있도록 하는 스테이지 로더를 사용했습니다. 데이터 정보.. 2024. 7. 18.