2022. 8. 4. 19:05ㆍ코딩 2막 <C#개념편>
우리가 팀프로젝트를 한 이유?
게임을 만드는 과정은 여러 사람들이 모여서 만드는 것
팀프로젝트를 통해 나를 증명할 수 있다
즉 내가 해야할 일들을 잘 처리 할 수 있는지 증명하는 자리
또 일 처리를 잘 하지 못한다면 그것을 시행착오, 문제해결의 경험으로 삼는다
단편적인 예시로 코딩규칙이 있다
일을 분업화하다보면 서로 부딪히는 것 중 하나가 바로 코딩이다
또 업무관리에 익숙해지기 위함이다!!
기획에서 개발단계를 거쳐 가공된 상태로 게임을 완성하는데 까지 정해진 프로세스를 수행하려면 일정을 관리해야 한다
시스템
"어떤 대상이 규칙적인 행동을 통해 정량적인 결과를 낼 수 있는 것"
개발자는 소비자의 니즈를 충족시키기 위한 트랜드에 맞는 게임시스템을 공부 할 필요가 있다
따라서 개발자에겐 게임경험량이 그만큼 중요하다
시스템 디자인의 항목
“모든 시스템 설계는 다음의 항목을 포함한다”
구조 / 규칙 / 시퀀스 / UI
ex) 인벤토리 시스템 – 인벤토리 창, 각 인벤토리 슬롯, 아이템, 확장아이템 등
시스템 구현 | 구조
시스템에 연관된 각 요소들이 어떤 속성과 행동으로 구성되어 있으며 요소 간은 서로 어떤 연관을 가지는가
객체 지향 설계 방식에 맞추어 게임 내 각종 요소들을 설계
자료형, 입력값 범위 등 제약 조건에 대한 명확한 정의가 중요
시스템 구현 | 규칙
게임 세계를 구성하는 규칙
게임 플레이의 각종 룰
게임의 각 요소, 요소간의 관계, 시퀀스에 적용되는 세부적인 규칙 등이 포함
각종 예외 상황에 대한 꼼꼼한 정의가 매우 중요
시스템 구현 | 시퀀스
시퀀스는 해당 시스템의 흐름에 대한 순서를 말한다
시스템이 어떤 플로우와 시퀀스로 구성되는가
페이지 및 씬 전환, 메모리 관리, 서버-클라이언트 간 데이터 처리 방식 -> 시퀀스 설계 구체화
시스템 구현 | UI
해당 시스템이 어떤 UI를 통해 정보를 입/출력 하는가
효과 검증
플레이 가능 버전 제작
프로토타이핑
시뮬레이션 문서
타 게임 사례 분석
객체 지향 설계
출발점 : 인간의 사고 방식에 착안하여 복잡한 설계구조를 객체라는 개념을 통해 간편화함
객체란?
객체는 주변을 이루고 있는 모든 것이다
객체는 기본적으로 구조(행동+속성)를 가지고 있다
속성과 행동을 추가할수록 모델은 실세계에 근접한다
클래스란?
클래스는 객체를 추상화 한 것이다
클래스를 보편자라고 하면, 객체는 실현자
객체 지향의 주요 개념
추상화
상속
다형성
캡슐화 (정보 은폐)
메세지 전송
연관
객체 지향 | 추상화
추상화는 필요로 하는 만큼의 속성과 행동만을 정의하는 것
게임 세계를 기획하는 것은 속성과 행동을 정의
'어떤 게임을 만드느냐'에 따라 어떤 객체에 '어떤 속성과 행동을 정의하느냐'가 결정
적당한 추상화는 컨텐츠 구현의 자유도를 높이고 최적화를 돕는다
모든 속성과 행동을 정의할 필요는 없다
객체 지향 | 상속
하위 개념의 클래스는 상위 개념의 클래스의 속성과 행동을 물려받는다
객체 지향 | 다형성
같은 행동이라도 다른 클래스가 하는 행동은 각기 다를 수 있다
서로 다른 클래스가 동일한 메세지에 대해 서로 다른 방법으로 응답할 수 있는 기능
객체 지향 | 캡슐화
그 객체만이 자신이 오퍼레이션이 어떻게 작동하는지를 알고 있으며 외부에서는 알 수 없다
캡슐화가 중요한 이유는 하나의 객체가 오류를 일으켜 해당 오퍼레이션을 고쳐야 하는 경우가 생기더라도
다른 객체는 자신의 오퍼레이션의 원리를 알리지 않는다
즉, 다른 객체를 고칠 필요가 없다
객체 지향 | 메세지 전송
객체 간에는 서로 메세지를 전송한다
객체 지향 | 연관
한 객체는 다른 객체와 관계를 맺을 수 있다
연관은 속성의 연관과 행동의 연관 두가지로 구분된다
하나의 객체는 다른 객체와 두 개 이상의 연관을 가질 수 있다
객체는 하나 이상의 다른 객체와 연관을 가질 수 있다
연관의 종류 - 다중성 연관 / 집합 연관 / 복합연관
*다중성 연관 : 선생 - 수업 같이 1:1연관 일수도 있지만 선생 - 학생 같이 1:다연관 일수도 있다
*집합 연관 : 한 객체는 여러 객체로 구성될 수 있다. 예를 들면 농구팀은 농구선수들로 구성된다
*복합 연관 : 컴포넌트가 복합체 안에서만 컴포넌트로 존재하는 것.
즉 집합 연관의 일종이지만 집합 연관보다 훨씬 밀접하고 강력한 관계이다.
예를 들면 프로 농구팀은 반드시 프로 리그에 포함되지만 프로 농구 선수는 반드시 프로 농구팀에 소속되는 것은 아니다.
UML
Unified Modeling Language | 소프트웨어 모델링을 위한 언어
앞에서 배운 클래스/객체를 효과적으로 표현 가능
클래스 다이어그램
상태와 시퀀스
"어떤 상태가 필요합니까?"
클래스 다이어그램 만으로 구조를 명확하게 정의하기 어렵다
대전 격투에서 캐릭터는 상황, 상태에 따라 많은 점이 바뀌기 때문에 클래스 정의만으로 규칙을 설명 할 수 없다
그래서 사용하는게 상태 다이어그램
상태 다이어그램
시간의 흐름에 따라 객체에는 변화가 발생 가능
시스템의 변화를 모델링 하는 한 수단
단일 객체를 대상으로 함
상태 다이어그램의 요소 - 상태 / 상태의 전이 및 조건 / 상태 내부의 하위 상태
공감해주셔서 감사합니다
'코딩 2막 <C#개념편>' 카테고리의 다른 글
[게임 디자인] 시스템 디자인의 기초 3 (4) | 2022.08.05 |
---|---|
[게임 디자인] 시스템 디자인의 기초 2 (0) | 2022.08.05 |
[C#, 유니티] 11. Coroutine (2) | 2022.07.19 |
[C#, 유니티] 사운드 리소스 공유사이트 (0) | 2022.07.11 |
[C#, 유니티] 10. FindObjectOfType (0) | 2022.07.11 |