18
All Rights Reserved, Copyright© Devsisters corp. ver. GPG Study 1 0.01 2010.12.07 Devbiscuit

Gpg study 01

  • Upload
    jingi

  • View
    344

  • Download
    5

Embed Size (px)

Citation preview

Page 1: Gpg study 01

All Rights Reserved, Copyright© Devsisters corp.

ver.

GPG����������� ������������������  Study

1

0.01

2010.12.07 Devbiscuit

Page 2: Gpg study 01

|

2

Data-Driven����������� ������������������  Design

Page 3: Gpg study 01

|

3

데이터����������� ������������������  드리븐

게임내����������� ������������������  데이터를����������� ������������������  텍스트����������� ������������������  파일의����������� ������������������  형태(����������� ������������������  혹은����������� ������������������  XML����������� ������������������  )����������� ������������������  따로����������� ������������������  때어내����������� ������������������  구현하는것

상수들을����������� ������������������  하드����������� ������������������  코딩하지����������� ������������������  않는것!

로직과����������� ������������������  데이터를����������� ������������������  분리하여

로직은����������� ������������������  코드에����������� ������������������  데이터는����������� ������������������  따로����������� ������������������  파일로(����������� ������������������  코드����������� ������������������  외부����������� ������������������  )

데이터����������� ������������������  제작����������� ������������������  도구를����������� ������������������  만들어����������� ������������������  이용

Page 4: Gpg study 01

|

4

게임의����������� ������������������  흐름을����������� ������������������  스크립트로����������� ������������������  제어

게임����������� ������������������  내부����������� ������������������  행동����������� ������������������  방식을����������� ������������������  프로그램����������� ������������������  코드����������� ������������������  밖에서����������� ������������������  구현

일련의����������� ������������������  단계,����������� ������������������  이벤트����������� ������������������  처리에����������� ������������������  쓰임

과도한����������� ������������������  스크립트����������� ������������������  화는����������� ������������������  직무유기!

복잡한����������� ������������������  로직은����������� ������������������  코드로,����������� ������������������  간단한����������� ������������������  로직을����������� ������������������  스크립트로

=>����������� ������������������  요부분은����������� ������������������  아직����������� ������������������  적용����������� ������������������  어렵지����������� ������������������  않을까?

Page 5: Gpg study 01

|

5

코드����������� ������������������  중복하지����������� ������������������  않는것과����������� ������������������  마찬가지로����������� ������������������  데이터의����������� ������������������  중복도����������� ������������������  똑같은����������� ������������������  개념이����������� ������������������  적용되야함

Once����������� ������������������  and����������� ������������������  Only����������� ������������������  Once동일한����������� ������������������  의미의����������� ������������������  데이터는����������� ������������������  한번만����������� ������������������  존재해야해!

데이터의����������� ������������������  중복

전역적인����������� ������������������  데이터����������� ������������������  생성

상속을����������� ������������������  이용

레이어링을����������� ������������������  이용

=>����������� ������������������  데이터를����������� ������������������  객체단위로����������� ������������������  분할때����������� ������������������  캡슐화가����������� ������������������  필요

Page 6: Gpg study 01

|

6

장점

데이터����������� ������������������  수정을����������� ������������������  개발자외����������� ������������������  

다른����������� ������������������  사람����������� ������������������  (����������� ������������������  프로그래밍을����������� ������������������  모르는����������� ������������������  사람����������� ������������������  )이����������� ������������������  수정하기����������� ������������������  쉽게끔

데이터����������� ������������������  수정이����������� ������������������  빌드를����������� ������������������  통해����������� ������������������  이루어질����������� ������������������  필요없음

데이터를����������� ������������������  때어내는����������� ������������������  과정에서

게임을����������� ������������������  추상화����������� ������������������  함으로써����������� ������������������  데이터의����������� ������������������  변화에����������� ������������������  유연하게����������� ������������������  대처

Page 7: Gpg study 01

|

7

단점

있을까?;

Page 8: Gpg study 01

|

8

소셜게임내에서의����������� ������������������  데이터����������� ������������������  드리븐

꼭����������� ������������������  필요하다!!

데이터����������� ������������������  분석����������� ������������������  (����������� ������������������  유저들의����������� ������������������  행동����������� ������������������  분석����������� ������������������  )����������� ������������������  에����������� ������������������  따른����������� ������������������  ����������� ������������������  밸런싱����������� ������������������  요소가����������� ������������������  많음

분석된����������� ������������������  데이터를����������� ������������������  통해����������� ������������������  유연성있게����������� ������������������  요소가����������� ������������������  추가되거나����������� ������������������  수정되야함

‘데이터의����������� ������������������  변화’,����������� ������������������  ‘데이터����������� ������������������  엎기!’에기민한����������� ������������������  대응

부분유료화����������� ������������������  모델에서����������� ������������������  밸런싱은����������� ������������������  생명!

Page 9: Gpg study 01

|

9

결론

우리도����������� ������������������  해야하지����������� ������������������  않을까요!?

어차피����������� ������������������  빌드를����������� ������������������  해야하는����������� ������������������  이슈라도,����������� ������������������  누구나����������� ������������������  데이터����������� ������������������  수정이����������� ������������������  가능하게����������� ������������������  합시다!

기본적으로����������� ������������������  UI����������� ������������������  위치부터����������� ������������������  세부����������� ������������������  게임����������� ������������������  데이터까지

DB와의����������� ������������������  연계도����������� ������������������  생각해야함

Page 10: Gpg study 01

|

10

Object-Oriented����������� ������������������  Programmingand����������� ������������������  Design����������� ������������������  Techniques

Page 11: Gpg study 01

|

11

Poorly����������� ������������������  designed����������� ������������������  C++����������� ������������������  programs����������� ������������������  can����������� ������������������  be����������� ������������������  

worse����������� ������������������  than����������� ������������������  poorly����������� ������������������  written����������� ������������������  C����������� ������������������  programs.

Page 12: Gpg study 01

|

12

클래스����������� ������������������  설계����������� ������������������  팁

생성자����������� ������������������  이슈

대게����������� ������������������  Clear();����������� ������������������  같이����������� ������������������  값의����������� ������������������  초기화만����������� ������������������  해주는게����������� ������������������  좋아

실패할만한것을����������� ������������������  생성자에����������� ������������������  넣을����������� ������������������  경우����������� ������������������  

실패이유����������� ������������������  파악이����������� ������������������  힘듬

Page 13: Gpg study 01

|

13

Class����������� ������������������  Hierarchy����������� ������������������  Design

코드의����������� ������������������  재사용성����������� ������������������  입장에서����������� ������������������  계층구조����������� ������������������  설계는����������� ������������������  매우����������� ������������������  중요

클래스들이����������� ������������������  서로����������� ������������������  연동할����������� ������������������  수����������� ������������������  있도록����������� ������������������  확장하는����������� ������������������  방법은����������� ������������������  기본적으로����������� ������������������  두가지

Inheritance

말����������� ������������������  그대로����������� ������������������  상속관계,����������� ������������������  객체간의����������� ������������������  관계가����������� ������������������  is-a����������� ������������������  관계를����������� ������������������  가질����������� ������������������  경우����������� ������������������  상속을����������� ������������������  이용

Layering

하나의����������� ������������������  객체가����������� ������������������  다른����������� ������������������  어떤����������� ������������������  객체를����������� ������������������  자신의����������� ������������������  멤버로����������� ������������������  가지는것.

객체간의����������� ������������������  관계가����������� ������������������  has-a����������� ������������������  관계일����������� ������������������  경우����������� ������������������  레이어링을����������� ������������������  이용

Class Corvette is-a type of class CarClass Corvette has-a type class Radio

Page 14: Gpg study 01

|

14

Singleton����������� ������������������  Pattern

여러����������� ������������������  클래스/모듈들이����������� ������������������  전역적으로����������� ������������������  접근����������� ������������������  할����������� ������������������  수����������� ������������������  있는����������� ������������������  

하나의����������� ������������������  단일����������� ������������������  전역����������� ������������������  객체가����������� ������������������  필요할때����������� ������������������  사용

주로����������� ������������������  관리자����������� ������������������  클래스����������� ������������������  에서����������� ������������������  사용

장점하나의����������� ������������������  메소드를����������� ������������������  통해����������� ������������������  객체����������� ������������������  접근의����������� ������������������  용이

전역����������� ������������������  객체와����������� ������������������  달리����������� ������������������  인스턴스의����������� ������������������  생성����������� ������������������  시기,����������� ������������������  방식을����������� ������������������  좀더����������� ������������������  디테일하게����������� ������������������  컨트롤����������� ������������������  가능

기반����������� ������������������  클래스를����������� ������������������  만든다면����������� ������������������  상속을����������� ������������������  통해����������� ������������������  파생����������� ������������������  클래스를����������� ������������������  만들기����������� ������������������  용이

Page 15: Gpg study 01

|

15

Facade����������� ������������������  Pattern

일반적으로����������� ������������������  관리자����������� ������������������  클래스에����������� ������������������  쓰인임.

관리자����������� ������������������  클래스란����������� ������������������  관련����������� ������������������  클래스들의����������� ������������������  커다란����������� ������������������  컬렉션에����������� ������������������  대해����������� ������������������  단일한����������� ������������������  인터페이스를����������� ������������������  제공하는����������� ������������������  

용도로����������� ������������������  쓰이는����������� ������������������  클래스를����������� ������������������  말함.

보통����������� ������������������  Singleton을����������� ������������������  이용하여����������� ������������������  이용.

인터페이스의����������� ������������������  단순화

서브시스템의����������� ������������������  분리

Page 16: Gpg study 01

|

16

객체간����������� ������������������  상호����������� ������������������  의존성을����������� ������������������  줄이기����������� ������������������  위해����������� ������������������  사용

상호����������� ������������������  의존성이����������� ������������������  커질경우����������� ������������������  서브����������� ������������������  시스템����������� ������������������  전체를����������� ������������������  수정하거나����������� ������������������  대체하는데����������� ������������������  어려움

Whenever����������� ������������������  possible,����������� ������������������  avoid����������� ������������������  exposing����������� ������������������  internal����������� ������������������  subsystem����������� ������������������  classes����������� ������������������  to����������� ������������������  outside����������� ������������������  systems.

Page 17: Gpg study 01

|

17

State����������� ������������������  Pattern

StateManager BaseState

State1 State2 State3

OnEnter()Update()OnExit()

Dynamically switchesbetween state and objects in real-time

실시간적으로����������� ������������������  변하는����������� ������������������  게임����������� ������������������  상태를����������� ������������������  관리/유지하는데����������� ������������������  주로����������� ������������������  이용.

소규모����������� ������������������  게임은����������� ������������������  enum����������� ������������������  type을����������� ������������������  이용하겠지만����������� ������������������  이는����������� ������������������  유지보수에����������� ������������������  좋지����������� ������������������  않아.

상태를����������� ������������������  객체로����������� ������������������  관리����������� ������������������  함으로써����������� ������������������  상태를����������� ������������������  좀더����������� ������������������  캡슐화����������� ������������������  할����������� ������������������  수����������� ������������������  있고,

����������� ������������������  상속을����������� ������������������  통해����������� ������������������  관리가����������� ������������������  더����������� ������������������  용이해진다

단순����������� ������������������  게임����������� ������������������  내����������� ������������������  스테이트����������� ������������������  뿐만아니라,����������� ������������������  

게임����������� ������������������  모드����������� ������������������  같은����������� ������������������  경우도����������� ������������������  포함

Page 18: Gpg study 01

|

18

Factory����������� ������������������  Pattern����������� ������������������  (����������� ������������������  Factory����������� ������������������  Method����������� ������������������  Pattern����������� ������������������  )

객체의����������� ������������������  생성을����������� ������������������  관리해주는����������� ������������������  클래스

팩토리����������� ������������������  메소드����������� ������������������  패턴에서는����������� ������������������  객체를����������� ������������������  생성하기����������� ������������������  위한����������� ������������������  인터페이스를����������� ������������������  정의하는데,

어떤����������� ������������������  클래스의����������� ������������������  인스턴스를����������� ������������������  만들지는����������� ������������������  서브클래스에서����������� ������������������  결정함.����������� ������������������  

즉����������� ������������������  클래스의����������� ������������������  인스턴스를����������� ������������������  만드는����������� ������������������  일을����������� ������������������  서브����������� ������������������  클래스에게����������� ������������������  맡기는����������� ������������������  것임.����������� ������������������  

Mish

NormalMish

MoveUpMish

MoveWithTeamMish

MishFactory Create Mish Instance.Mish is interface of sub-classes.

메모리의����������� ������������������  관리에����������� ������������������  용의

생성����������� ������������������  코드를����������� ������������������  한쪽으로����������� ������������������  모음으로써����������� ������������������  코드����������� ������������������  중복을����������� ������������������  막아줘

소스����������� ������������������  코드����������� ������������������  유지보수에서도����������� ������������������  한쪽����������� ������������������  부분만����������� ������������������  보면����������� ������������������  됨

인터페이스를����������� ������������������  바탕����������� ������������������  ->����������� ������������������  유연성과����������� ������������������  확장성에����������� ������������������  유리

장점