본문 바로가기

게임 프로그래밍117

게임개발 중급(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.
게임개발 중급(86) - Monster Killer(48) Monster Killer 중간 점검오늘은 킬러모드를 어느정도 정리한 뒤에 게임의 방향성과 더불어 다음 모드를 어떻게 설계해야 할지 점검하는 시간을 갖도록 하겠습니다. 킬러모드를 비롯한 모든 모드의 구현 방향성을 정리해보겠습니다. 모드 구현 계획[킬러모드 : Killer Mode]게임을 처음 기획할 때부터 개발하기 시작한 가장 기본이 되는 모드입니다. 처음엔 단순하고 짧게 즐기는 모바일 게임의 컨셉에 맞게 단순하게 기획되었으나, ID로 로그인하여 접속하는 PC 웹게임으로 기획이 바뀌면서 좀 더 체계적인 시스템을 갖춘 모드로 변경이 되었습니다. 킬러모드의 현재 기조는 여전히 게임의 가장 기본이 되는 플레이 모드로, 키워드로 표현하자면 (노가다, 돈 벌이 수단, 반복 수행 등)이 있습니다. 한 마디로 게임을.. 2024. 7. 15.
게임개발 중급(85) - Monster Killer(47) Monster Killer 데미지 계산기존에 데미지를 계산할 때, 무기 공격력과 부위 별 데미지를 합산하는 과정을 거쳤는데, 그 과정이 조금 엉켜있어서 약간의 분리하는 과정을 진행해주었습니다. 아직 완벽하게 개선된 것은 아니지만, 일단 모든 데이터를 관리하는 GameManager에서 damage의 기본값을 가져와 설정해주고, 강화 수치는 currentDamage, 몬스터 부위 별 데미지는 PartsDamage로 나뉘어서 순서대로 합산 시키는 방식을 사용하도록 했습니다. 기존에는 데미지가 한가지의 변수로 합쳐지는 방식이라 어떤 데미지가 어디서 사용되는지 구별하기 어려웠지만, 3개로 나뉘어 구별하기 편하게 구성하였습니다.  현재 능력치 설정이 공격력 강화 수치가 100인 상태로 킬러모드에 입장하여 몬스터를 .. 2024. 7. 15.
게임개발 중급(84) - Monster Killer(46) Monster Killer 데이터 연동 첫번째는, 데이터 연동입니다. 기존에 여기저기 찢어져서 구현되어 있던 각종 데이터에 대한 정보와 UI들을 업그레이드 버튼, 디스플레이 컴포넌트를 통해 문제 없이 연동하였습니다. 기본적으로 모든 데이터는 GameManager에 정의되어 있는 값을 초기화 하고, 플레이어가 게임을 플레이하면서 강화되는 수치가 지속적으로 저장됩니다. 위 이미지는 게임을 처음 시작하여 초기화된 플레이어 데이터 값 입니다.  킬러모드에서 몬스터를 처치해 골드를 벌 수 있는데, 기존에는 해당 모드에서도 강화가 가능했지만, 기능을 수정하면서 모드 안에서는 강화를 하지 않고 오직 메인화면의 업그레이드 페이지를 통해서 강화를 진행할 수 있도록 바꿨습니다.  골드를 벌고, 제한 시간이 끝나거나, 플레.. 2024. 7. 9.
게임개발 중급(83) - Monster Killer(45) Monster Killer 안녕하세요 오늘부터는 개발 내용을 주로 이야기하도록 하겠습니다. 이제 상단에 시작하는 인사말은 특이사항이 있는게 아니라면 스킵하도록 하겠습니다. 구조 개선가장 첫번째로는, 너무 오랜만에 프로젝트를 다시 찾아와보니 구조가 상당히 엉망이었다는 것을 알아챌 수 있었습니다. 이 또한 제가 성장했다는 증거겠죠? 간략하게 말씀드리면 기존에 게임의 구조는 정말 러프하게 구현되어 있었고, 객체지향과는 거리가 먼 형태를 띄고 있었습니다. 그 중 특히 심한 것은 플레이어와 몬스터 간의 상호작용, 각종 업그레이드 수단 등이 대부분 UI에 기능이 결합되어 있는 상태였습니다. 한 가지 예시로 플레이어가 형태는 없더라도 하나의 객체로서 플레이어와 관련된 내용을 묶어야 하는데, 플레이어의 공격은 무기쪽에.. 2024. 7. 6.
게임개발 중급(82) - Monster Killer(44) Monster Killer 안녕하세요. 오랜만에 이 글을 다시 쓰게 되었습니다. 거의 1년만에 이 Monster Killer를 다시 들고 왔는데 그 이유는 그동안 1인 개발로 만들던 이 게임을 학교 졸업작품으로 개발하게 되었습니다. 그 말은 즉슨 더 이상 혼자 개발하는 것이 아닌 팀원을 꾸려서 개발한다는 것입니다. 개요 스마일게이트 UNSEEN 2기 수료 후기스마일게이트 UNSEEN 2기 수료 후기 UNSEEN 2기 합격 후기UNSEEN 2기 합격 후기 2022년도에 해커톤을 마치고, 23년도에는 학교에서 졸업작품을 만들며 시간을 보냈습니다. 졸업작품으로도 게임을 만jypgamepro.tistory.com 우선 어떻게 된 것인지 설명을 드리면, 그동안 저는 다른 카테고리에 있는 글에서 말했듯이 학교 생활.. 2024. 7. 5.
게임개발 중급(81) - Monster Killer(43) Monster Killer 지난시간 까지는 빌드하는 방법과 그 과정에서 필요한 최적화 및 실제 스토어 등록을 하기위해 필요한 절차에 대해서 알아보았습니다. 이번부터는 다시 게임을 만들어 나가는 과정을 보여드리겠습니다. 타임아웃 및 사망 저번에 형태만 만들어놓고 기능연결을 하지 않았던 것을 만들어 주었습니다. 주어진 시간이 전부 지나거나 체력이 전부 닳았다면 게임오버가 되도록 해주었습니다. 해당 이미지는 타임아웃된 모습입니다. 현재 시간이 전부 지나가면 위 그림처럼 시간이 이상하게 표현되는 현상이 있지만 추후에 고칠 예정입니다. 추가로 게임오버 페이지도 조금 바뀌었습니다. 기존에는 게임오버 글씨와 함께 홈버튼만 있었지만, 게임을 진행하면서 획득한 재화를 보여주는 Result페이지를 만들어 골드를 임시로 넣.. 2023. 9. 4.