목록2024/11 (19)
게임 개발 로그
'유니티로 배우는 게임 디자인 패턴' 책을 베이스로 하여 코드 구조를 바꿔 봤습니다. 옵저버 패턴이란? 옵저버 패턴이란 한 오브젝트가 주체 역할이고, 다른 오브젝트들이 관찰자 역할을 하여 일대다 관계를 형성하는 패턴이다. 이벤트 버스 패턴과 비슷한 면이 있으나 이벤트버스는 다대다 관계라는 점에서 차이가 있다. 옵저버 패턴의 장점역동성: 주체에 필요한 만큼의 객체를 관찰자로 추가할 수 있고, 동적으로 제거할 수도 있다.일대다: 객체 하나에 여러 이벤트를 처리할 수 있는 일대다 관계 이벤트 처리 시스템을 구현할 수 있다. 옵저버 패턴의 단점무질서: 관찰자가 알람을 받는 순서를 보장하지 않는다. 관찰자가 이벤트를 받는 것에 순서가 있다면 기본 형태의 옵저버 패턴은 적합하지 않다.누수: 주체는 ..
'유니티로 배우는 게임 디자인 패턴' 책을 베이스로 하여 코드 구조를 바꿔 봤습니다. 오브젝트 풀이란? 오브젝트 풀 패턴은 자주 사용하는 오브젝트를 위해 일부 메모리를 '예약'하는 방법을 말한다. 오브젝트의 생성/삭제를 반복하지 않고, 풀에서 꺼냈다가 다시 집어넣는 형식이다. 이것은 새로운 인스턴스를 생성하는 초기화 비용을 아끼고, 가비지 컬렉터의 부하를 줄여 렉을 줄이는 것에 도움이 된다. 클라이언트가 특정 오브젝트의 인스턴스를 오브젝트 풀에 요청하면, 풀에서 해당 인스턴스를 "제거"하고 클라이언트에게 넘겨준다. 만약 풀이 없다면 새로운 오브젝트를 생성해서 넘겨준다. 클라이언트에서 해당 인스턴스가 필요없어지면 오브젝트는 풀로 돌아가는데, 풀에 공간이 없다면 해당 오브젝트 인스턴스는 파괴된다. ..
0. 구현 화면 문제 및 해결 방법문제 0. 최상단 그릇 위치에 따른 PlateHpUI 위치 수정Plate.cs // isSelected, 최상단의 오브젝트에 Collision Event가 발생하면 UI 위치도 변경되도록 함. void OnCollisionEnter(Collision col) { StartCoroutine(IOffPlateKinematic()); if (isSelected) Managers.Instance.Event.Publish(EEventType.SetPlateHpPosition); } WashingArea.csvoid SetSelectPlateHpPosition(EventParam param)hp ui의 위치를 바..
TO DO LIST타이틀 씬press the any key ✔️영업 시작 버튼도 누를 수 있고 키도 누를 수 있도록 변경하기 ✔️시놉시스 폰트 배경 어두운 색으로로비 씬클릭 시 이펙트 ✔️ 인풋 매니저 만들기 ✔️ 튜토리얼 씬설거지 크기 줄이기 ✔️ 강조하는 곳 깜빡거리게 하기설거지 할 타이밍에만 배경 깜빡거리게 바꾸기, 대사 연속으로 나오게 하기 인 게임설거지 hp를 fill amount로 만들기설거지 가득 찼을 때 제출 안 되면 ui 팝업으로 가득 찼다고 알리기 0. 구현0-1. Managerspublic class Managers : MonoBehaviour{ static Managers s_instance; public static Managers Instance { get { Init(); re..
1. 설거지 그릇이 경로를 벗어나는 문제 해결. private void OnAddPlate(EventParam param){ if (plates.Count == 0 || selectPlate == null || selectPlate.CurHp == selectPlate.MaxHp) AddPlate(GetRandomCreateCount()); else PutInPlate(GetRandomCreateCount());}Add Plate가 되는 방법은 두 가지가 존재.(1) 위에서부터 그릇이 떨어진다. (2) 아래에서부터 그릇이 차오른다.→ 설거짓거리가 남지 않았을 경우 (2)번으로 처리해서 그릇이 날아가는 현상이 발생했음. → 따라서 plates.Count == 0 조건을 추가하여 남은 설거짓거리가..
1. Scene의 UI 모두 수정11/20 전달받은 애셋들을 모두 UI에 적용함. 2. TitleScene 제작 Text의 Alpha 값 설정 등을 통해 TitleScene 간단하게 제작함.
애셋 오류 수정URP 프로젝트용 애셋 사용 위해 URP 프로젝트로 변경을 했으나 대량의 오류 생성을 유도함.→ URP Remove를 통해 기존 프로젝트로 복구.싱글/멀티 모드에 따른 세이브 데이터 분리public class Path{ public const string SingleUserDataPath = "/Resources/Json/SingleUserData.json"; public const string MultiUserDataPath = "/Resources/Json/MultiUserData.json";}[Serializable]public class UserData{ public List rankData = new List();}public class UserDataDirector : MonoB..
1. 행동 트리란?행동 트리(Behavior Tree)는 기존의 FSM, HFSM의 확장성 문제를 보완하고, 보다 다양한 AI 패턴을 구현하는 데 최적화된 방법이다. 확장성과 유지보수가 용이하여 AI를 구현할 때 많이 사용된다. 이름에서 알 수 있듯이 행동 트리는 트리를 사용하여 동작을 코드화하는 방법이다. Behavior Tree는 AI Entity의 의사 결정 흐름을 제어하는 계층적 노드 트리라고 할 수 있다. 적에 대한 AI의 행동과 보스 전투 순서 등을 제어하는 데 사용할 수 있다. Tree를 이루는 Node들에 ‘행동’에 해당되는 코드 조각을 저장해 두어 DFS 순서에 따라 노드들을 실행시킨다. Behavior Tree에서 노드들은 방문 시 무조건 저장된 코드 블럭을 실행한다. 그리고 실행 시 ..
0. 구현 후기 구현한 것에 대해 정리하기에는 소규모의 프로젝트라 민망하지만 개인적으로 좋아하는 도트 게임 분위기를 표현한 것 같아서 뿌듯하다. 모두 무료 애셋으로 구현했는데 약 한 시간 가량 애셋 쇼핑을 한 보람이 있는 것 같기도. 효과음이나 배경음악 같은 것도 분위기에 어울리는 것 같아 만족스럽다. 내가 더욱 예쁘게, 보기 좋게 만들려고 노력하다 보니까 더욱 집중하게 되었고 만드는 과정 자체를 즐겼던 것 같다. 요즘 개발이 더욱 재밌게 느껴진다. 이대로 빠이팅.