TIL

[TIL] 내일배움캠프 _Unity 최종 프로젝트 1주차: 기획 1, WBS, 싱글턴 패턴

Hwone 2023. 10. 23. 22:04

오늘은 드디어 최종 프로젝트 시작 !!! 

1주차 : 기획/SA 작성

정해야 할 일 

- 어떤 게임을 개발할 건지 주제 선정 

- 주요 메카닉 선정 

- 개발 플로우 잡기 

 

팀 편성이 되고 나서부터 3번의 회의에 걸쳐 어떤 게임을 개발하고 싶은지에 대해 꾸준히 소통을 해오고 있었기 때문에 이미 어떤 게임을 개발할 건지에 대한 주제는 잡혀있는 상태에서 팀회의가 진행되었다 그래서 오늘 회의에서 진행했던 내용은 전반적인 게임 시스템들의 틀을 잡아 전체적인 구조를 시각화하기 위해 UI 와이어프레임을 작성하였다 

 

그 후에는 시스템의 작동 흐름을 명확하게 보여주는 플로우 차트를 작성하였다 

주요 프로세스와 상호작용을 정의하고, 각 단계에서의 사용자 입력 및 시스템 반응을 고려하였다 

 

이렇게 만들고 나니까 게임의 전체적인 구조와 흐름이 확실하게 보이기 시작하여 세부적인 기획에 대한 내용들도 더 금방 생각할 수 있어 지금까지 정해진 기획의 내용들을 한번에 볼 수 있었고 프로세스의 논리적 오류를 최소화하고 최적의 흐름을 찾을 수 있었다 

 

그리고 내일은 WBS 작성, USECASE 작성, 기능 분담, 구조 설계를 해야한다 그래서 미리 WBS가 무엇인지 알아보았다 

WBS (Work Breakdown Structure)

: 프로젝트 목표를 달성하기 위해 필요한 활동과 업무를 세분화하는 작업 

 

목적 

- 효율적인 업무 수행 

- 일정 산정의 신뢰도 향상 

- 작업의 책임과 역할 명확화 

- 작업 진척 모니터링 

 

작성 방법 

1. 개요 : WBS 관리 코드, 버전, 작성 날짜 기재 

2. 구분 : 하위 항목(Task) 을 묶어주는 큰 그룹을 기재

3. 하위 항목(Task) : 가장 작은 단위로 쪼개진 세부 하위항목 명칭을 기재 

4. 작업자 : 하위 항목을 실제로 수행하게 될 담당자를 기재 

5. 기간 ( 시작일 및 종료일) : 하위 항목 (Task)  의 시작과 종료일자를 기재 

6. 일정 차트 (일정 마일스톤) : 프로젝트 수행의 전체 기간 대비 각 하위항목 (Task)  소요 기간을 색으로 표기 

7. 비고: 하위항목 (Task)  수행에 대한 예외 사항이나 제약 사항을 명시

 

주의사항 
- 업무 수행범위 명확하게 기재 

- 업무 우선순위 설정 

- 진행 과정에서 조율 가능하도록 설정 

- 수정 및 업데이트 필요 

 

디자인 패턴 - 싱글톤 패턴 

: 객체의 인스턴스가 오직 한 개만 생성되도록 하는 패턴을 의미 

특정 클래스의 인스턴스를 어플리케이션 내에서 한 번만 생성하고, 해당 인스턴스에 전역적으로 접근할 수 있도록 메커니즘을 제공한다 

 

싱글톤 패턴을 사용하는 주된 이유 

: 하나의 인스턴스를 공유하여 리소스를 절약하고, 전역 상태를 관리하기 위함이다 

 

유니티에서 싱글턴 패턴은 주로 게임 객체 관리, 게임 상태 관리, 리소스 로딩, 게임 설정 등 다양한 상황에서 사용된다 

//유니티에서의 Singleton (저번 팀 프로젝트에서 사용했던 Singleton 패턴)
using UnityEngine;

public class Singleton<T> : MonoBehaviour where T : MonoBehaviour
{
    private static T _instance; 
    public static T Instance
    {
    	get
        {	
            if(_instance == null)
            {
            	GameObject Go = new GameObject(typeof(T).Name); 
                _instance = go.AddComponent<T>(); 
                
                DontDestroyOnLoad(_instance); 
            }
            return _instance; 
        }
     }
}

 

특징 

1. 단일 인스턴스 : 싱글턴 클래스는 하나의 유일한 인스턴스만 가진다 

2. 전역 접근 : 어디서든 해당 인스턴스에 접근할 수 있도록 한다 

3. 지연 로딩 : 인스턴스가 필요한 시점에서 생성하도록 지원한다 

4. 스레드 안전성 : 멀티스레드 환경에서도 안전하게 인스턴스를 생성하고 접근할 수 있도록 설계할 수 있다 

 

장점 : 같은 인스턴스를 여러 객체에서 공유할 수 있기에 메모리 및 자원 사용을 줄일 수 있고 객체 생성 및 파괴에 따른 오버헤드를 줄여준다 특히 생성 비용이 높은 객체에 적용할 때 성능 향상을 가져올 수 있다 

 

단점 : 싱글턴은 전역적으로 접근 가능하므로 데이터 은닉을 어렵게 만들 수 있다 

또한 하나의 인스턴스가 여러곳에서 공유되기 때문에 상태 변경이 어려워질 수 있고, 의도치 않은 상태 변경으로 인한 버그가 발생할 수 있다