View
345
Download
5
Category
Preview:
Citation preview
All Rights Reserved, Copyright© Devsisters corp.
ver.
GPG����������� ������������������ Study
1
0.01
2010.12.07 Devbiscuit
|
2
Data-Driven����������� ������������������ Design
|
3
데이터����������� ������������������ 드리븐
게임내����������� ������������������ 데이터를����������� ������������������ 텍스트����������� ������������������ 파일의����������� ������������������ 형태(����������� ������������������ 혹은����������� ������������������ XML����������� ������������������ )����������� ������������������ 따로����������� ������������������ 때어내����������� ������������������ 구현하는것
상수들을����������� ������������������ 하드����������� ������������������ 코딩하지����������� ������������������ 않는것!
로직과����������� ������������������ 데이터를����������� ������������������ 분리하여
로직은����������� ������������������ 코드에����������� ������������������ 데이터는����������� ������������������ 따로����������� ������������������ 파일로(����������� ������������������ 코드����������� ������������������ 외부����������� ������������������ )
데이터����������� ������������������ 제작����������� ������������������ 도구를����������� ������������������ 만들어����������� ������������������ 이용
|
4
게임의����������� ������������������ 흐름을����������� ������������������ 스크립트로����������� ������������������ 제어
게임����������� ������������������ 내부����������� ������������������ 행동����������� ������������������ 방식을����������� ������������������ 프로그램����������� ������������������ 코드����������� ������������������ 밖에서����������� ������������������ 구현
일련의����������� ������������������ 단계,����������� ������������������ 이벤트����������� ������������������ 처리에����������� ������������������ 쓰임
과도한����������� ������������������ 스크립트����������� ������������������ 화는����������� ������������������ 직무유기!
복잡한����������� ������������������ 로직은����������� ������������������ 코드로,����������� ������������������ 간단한����������� ������������������ 로직을����������� ������������������ 스크립트로
=>����������� ������������������ 요부분은����������� ������������������ 아직����������� ������������������ 적용����������� ������������������ 어렵지����������� ������������������ 않을까?
|
5
코드����������� ������������������ 중복하지����������� ������������������ 않는것과����������� ������������������ 마찬가지로����������� ������������������ 데이터의����������� ������������������ 중복도����������� ������������������ 똑같은����������� ������������������ 개념이����������� ������������������ 적용되야함
Once����������� ������������������ and����������� ������������������ Only����������� ������������������ Once동일한����������� ������������������ 의미의����������� ������������������ 데이터는����������� ������������������ 한번만����������� ������������������ 존재해야해!
데이터의����������� ������������������ 중복
전역적인����������� ������������������ 데이터����������� ������������������ 생성
상속을����������� ������������������ 이용
레이어링을����������� ������������������ 이용
=>����������� ������������������ 데이터를����������� ������������������ 객체단위로����������� ������������������ 분할때����������� ������������������ 캡슐화가����������� ������������������ 필요
|
6
장점
데이터����������� ������������������ 수정을����������� ������������������ 개발자외����������� ������������������
다른����������� ������������������ 사람����������� ������������������ (����������� ������������������ 프로그래밍을����������� ������������������ 모르는����������� ������������������ 사람����������� ������������������ )이����������� ������������������ 수정하기����������� ������������������ 쉽게끔
데이터����������� ������������������ 수정이����������� ������������������ 빌드를����������� ������������������ 통해����������� ������������������ 이루어질����������� ������������������ 필요없음
데이터를����������� ������������������ 때어내는����������� ������������������ 과정에서
게임을����������� ������������������ 추상화����������� ������������������ 함으로써����������� ������������������ 데이터의����������� ������������������ 변화에����������� ������������������ 유연하게����������� ������������������ 대처
|
7
단점
있을까?;
|
8
소셜게임내에서의����������� ������������������ 데이터����������� ������������������ 드리븐
꼭����������� ������������������ 필요하다!!
데이터����������� ������������������ 분석����������� ������������������ (����������� ������������������ 유저들의����������� ������������������ 행동����������� ������������������ 분석����������� ������������������ )����������� ������������������ 에����������� ������������������ 따른����������� ������������������ ����������� ������������������ 밸런싱����������� ������������������ 요소가����������� ������������������ 많음
분석된����������� ������������������ 데이터를����������� ������������������ 통해����������� ������������������ 유연성있게����������� ������������������ 요소가����������� ������������������ 추가되거나����������� ������������������ 수정되야함
‘데이터의����������� ������������������ 변화’,����������� ������������������ ‘데이터����������� ������������������ 엎기!’에기민한����������� ������������������ 대응
부분유료화����������� ������������������ 모델에서����������� ������������������ 밸런싱은����������� ������������������ 생명!
|
9
결론
우리도����������� ������������������ 해야하지����������� ������������������ 않을까요!?
어차피����������� ������������������ 빌드를����������� ������������������ 해야하는����������� ������������������ 이슈라도,����������� ������������������ 누구나����������� ������������������ 데이터����������� ������������������ 수정이����������� ������������������ 가능하게����������� ������������������ 합시다!
기본적으로����������� ������������������ UI����������� ������������������ 위치부터����������� ������������������ 세부����������� ������������������ 게임����������� ������������������ 데이터까지
DB와의����������� ������������������ 연계도����������� ������������������ 생각해야함
|
10
Object-Oriented����������� ������������������ Programmingand����������� ������������������ Design����������� ������������������ Techniques
|
11
Poorly����������� ������������������ designed����������� ������������������ C++����������� ������������������ programs����������� ������������������ can����������� ������������������ be����������� ������������������
worse����������� ������������������ than����������� ������������������ poorly����������� ������������������ written����������� ������������������ C����������� ������������������ programs.
|
12
클래스����������� ������������������ 설계����������� ������������������ 팁
생성자����������� ������������������ 이슈
대게����������� ������������������ Clear();����������� ������������������ 같이����������� ������������������ 값의����������� ������������������ 초기화만����������� ������������������ 해주는게����������� ������������������ 좋아
실패할만한것을����������� ������������������ 생성자에����������� ������������������ 넣을����������� ������������������ 경우����������� ������������������
실패이유����������� ������������������ 파악이����������� ������������������ 힘듬
|
13
Class����������� ������������������ Hierarchy����������� ������������������ Design
코드의����������� ������������������ 재사용성����������� ������������������ 입장에서����������� ������������������ 계층구조����������� ������������������ 설계는����������� ������������������ 매우����������� ������������������ 중요
클래스들이����������� ������������������ 서로����������� ������������������ 연동할����������� ������������������ 수����������� ������������������ 있도록����������� ������������������ 확장하는����������� ������������������ 방법은����������� ������������������ 기본적으로����������� ������������������ 두가지
Inheritance
말����������� ������������������ 그대로����������� ������������������ 상속관계,����������� ������������������ 객체간의����������� ������������������ 관계가����������� ������������������ is-a����������� ������������������ 관계를����������� ������������������ 가질����������� ������������������ 경우����������� ������������������ 상속을����������� ������������������ 이용
Layering
하나의����������� ������������������ 객체가����������� ������������������ 다른����������� ������������������ 어떤����������� ������������������ 객체를����������� ������������������ 자신의����������� ������������������ 멤버로����������� ������������������ 가지는것.
객체간의����������� ������������������ 관계가����������� ������������������ has-a����������� ������������������ 관계일����������� ������������������ 경우����������� ������������������ 레이어링을����������� ������������������ 이용
Class Corvette is-a type of class CarClass Corvette has-a type class Radio
|
14
Singleton����������� ������������������ Pattern
여러����������� ������������������ 클래스/모듈들이����������� ������������������ 전역적으로����������� ������������������ 접근����������� ������������������ 할����������� ������������������ 수����������� ������������������ 있는����������� ������������������
하나의����������� ������������������ 단일����������� ������������������ 전역����������� ������������������ 객체가����������� ������������������ 필요할때����������� ������������������ 사용
주로����������� ������������������ 관리자����������� ������������������ 클래스����������� ������������������ 에서����������� ������������������ 사용
장점하나의����������� ������������������ 메소드를����������� ������������������ 통해����������� ������������������ 객체����������� ������������������ 접근의����������� ������������������ 용이
전역����������� ������������������ 객체와����������� ������������������ 달리����������� ������������������ 인스턴스의����������� ������������������ 생성����������� ������������������ 시기,����������� ������������������ 방식을����������� ������������������ 좀더����������� ������������������ 디테일하게����������� ������������������ 컨트롤����������� ������������������ 가능
기반����������� ������������������ 클래스를����������� ������������������ 만든다면����������� ������������������ 상속을����������� ������������������ 통해����������� ������������������ 파생����������� ������������������ 클래스를����������� ������������������ 만들기����������� ������������������ 용이
|
15
Facade����������� ������������������ Pattern
일반적으로����������� ������������������ 관리자����������� ������������������ 클래스에����������� ������������������ 쓰인임.
관리자����������� ������������������ 클래스란����������� ������������������ 관련����������� ������������������ 클래스들의����������� ������������������ 커다란����������� ������������������ 컬렉션에����������� ������������������ 대해����������� ������������������ 단일한����������� ������������������ 인터페이스를����������� ������������������ 제공하는����������� ������������������
용도로����������� ������������������ 쓰이는����������� ������������������ 클래스를����������� ������������������ 말함.
보통����������� ������������������ Singleton을����������� ������������������ 이용하여����������� ������������������ 이용.
인터페이스의����������� ������������������ 단순화
서브시스템의����������� ������������������ 분리
|
16
객체간����������� ������������������ 상호����������� ������������������ 의존성을����������� ������������������ 줄이기����������� ������������������ 위해����������� ������������������ 사용
상호����������� ������������������ 의존성이����������� ������������������ 커질경우����������� ������������������ 서브����������� ������������������ 시스템����������� ������������������ 전체를����������� ������������������ 수정하거나����������� ������������������ 대체하는데����������� ������������������ 어려움
Whenever����������� ������������������ possible,����������� ������������������ avoid����������� ������������������ exposing����������� ������������������ internal����������� ������������������ subsystem����������� ������������������ classes����������� ������������������ to����������� ������������������ outside����������� ������������������ systems.
|
17
State����������� ������������������ Pattern
StateManager BaseState
State1 State2 State3
OnEnter()Update()OnExit()
Dynamically switchesbetween state and objects in real-time
실시간적으로����������� ������������������ 변하는����������� ������������������ 게임����������� ������������������ 상태를����������� ������������������ 관리/유지하는데����������� ������������������ 주로����������� ������������������ 이용.
소규모����������� ������������������ 게임은����������� ������������������ enum����������� ������������������ type을����������� ������������������ 이용하겠지만����������� ������������������ 이는����������� ������������������ 유지보수에����������� ������������������ 좋지����������� ������������������ 않아.
상태를����������� ������������������ 객체로����������� ������������������ 관리����������� ������������������ 함으로써����������� ������������������ 상태를����������� ������������������ 좀더����������� ������������������ 캡슐화����������� ������������������ 할����������� ������������������ 수����������� ������������������ 있고,
����������� ������������������ 상속을����������� ������������������ 통해����������� ������������������ 관리가����������� ������������������ 더����������� ������������������ 용이해진다
단순����������� ������������������ 게임����������� ������������������ 내����������� ������������������ 스테이트����������� ������������������ 뿐만아니라,����������� ������������������
게임����������� ������������������ 모드����������� ������������������ 같은����������� ������������������ 경우도����������� ������������������ 포함
|
18
Factory����������� ������������������ Pattern����������� ������������������ (����������� ������������������ Factory����������� ������������������ Method����������� ������������������ Pattern����������� ������������������ )
객체의����������� ������������������ 생성을����������� ������������������ 관리해주는����������� ������������������ 클래스
팩토리����������� ������������������ 메소드����������� ������������������ 패턴에서는����������� ������������������ 객체를����������� ������������������ 생성하기����������� ������������������ 위한����������� ������������������ 인터페이스를����������� ������������������ 정의하는데,
어떤����������� ������������������ 클래스의����������� ������������������ 인스턴스를����������� ������������������ 만들지는����������� ������������������ 서브클래스에서����������� ������������������ 결정함.����������� ������������������
즉����������� ������������������ 클래스의����������� ������������������ 인스턴스를����������� ������������������ 만드는����������� ������������������ 일을����������� ������������������ 서브����������� ������������������ 클래스에게����������� ������������������ 맡기는����������� ������������������ 것임.����������� ������������������
Mish
NormalMish
MoveUpMish
MoveWithTeamMish
MishFactory Create Mish Instance.Mish is interface of sub-classes.
메모리의����������� ������������������ 관리에����������� ������������������ 용의
생성����������� ������������������ 코드를����������� ������������������ 한쪽으로����������� ������������������ 모음으로써����������� ������������������ 코드����������� ������������������ 중복을����������� ������������������ 막아줘
소스����������� ������������������ 코드����������� ������������������ 유지보수에서도����������� ������������������ 한쪽����������� ������������������ 부분만����������� ������������������ 보면����������� ������������������ 됨
인터페이스를����������� ������������������ 바탕����������� ������������������ ->����������� ������������������ 유연성과����������� ������������������ 확장성에����������� ������������������ 유리
장점
Recommended