[Gpg1권 박민근] 1.0 1.4 요약 정리

  • 518 views
Uploaded on

 

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
518
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
1
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. 데브루키 – GPG 스터디박민근2010.03.271.0 데이터 주도적 설계의 마법1.1 객체 지향적 프로그래밍과 설계 기법1.3 자동적인 단일체 유틸리티
  • 2. 1.0 데이터 주도적 설계의 마법
  • 3. 기본 Data Driven Design 게임 데이터는 당연히 코드 외부에서 로드 되어야 한다. 개발중에는 XML과 같은 텍스트 파일로 작 업하고, 실제 배포시에는 이진 파일을 사용 한다. 개발중에는 텍스트 파일을 사용해야 편집/ 수정이 가능하다.
  • 4. 최소한의 원칙 상수들을 하드코딩해서는 안된다!!
  • 5. 하드코딩을 아예 없애라 “아예 없애라” – 농담이 아님 기획자와 디자이너가 프로그래머 자리에 오 지 않도록 만들어라 게임을 데이터를 최대한 추상화 시켜라!
  • 6. 게임의 흐름은 스크립트로 제어할것 연출, 이벤트의 발생 조건, 원인 – 결과 로직, 퀘스트 등은 스크립트로 제어 적절한 스크립트 언어를 선택하라. 이왕이 면 컴파일 가능한 스크립트 언어로
  • 7. 스크립트 남용의 해악 게임 디자이너가 스크립트 작성자가 게임 프로 그래밍을 하도록 해서는 안된다 – 스크립트의 비율이 프로그래밍보다 많아지면 안된다 과유불급 스크립트는 C++보다 디버깅이 어렵다
  • 8. 데이터의 중복을 피해라 여러곳에 사용되는 데이터를 하나로 모아라 데이터에 상속 구조를 적용해 보아라.
  • 9. 데이터를 만들어 내는 도구를 작성할 것 텍스트 파일이 작성하기에 너무 큰경우, 툴 을 만드는 것이 훨씬 효율적이다.
  • 10. 좋은 예제 워크래프트 3 – 맵툴 스타크래프트 – 유즈맵 WoW – 플러그인, UI
  • 11. 1.1 객체 지향적 프로그래밍과 설계 기법
  • 12. 코딩 스타일 헝가리언 표기법 제일 중요한것은 팀내에 코딩 규약을 반드 시 정해야 하고, 그 규약에 통일된 코딩을 해 야만 한다!
  • 13. 클래스 설계 통일된 매서드의 명명 규칙을 사용한다. 생성자와 소멸자에서 생성/소멸 메소드를 호출하는 구조로 작성하면 유연성이 높아진 다.
  • 14. 클래스 계통 구조의 설계 포함과 상속을 사용할 곳을 정확히 구별해 야 한다. Is – a 관계가 성립되지 않는 다면, 무조건 포 함을 사용해야 한다. 포함을 사용할곳에 단지 편의를 위해서 상 속을 사용하면 안된다!! 상속보다는 포함이 낫다 (래핑)
  • 15. 설계 패턴들 싱글톤 패턴 퍼사드 패턴 상태 패턴 (FSM) 팩토리 패턴
  • 16. 1.3 자동적인 단일체 유틸리티
  • 17. 싱글톤의 정의 클래스의 인스턴스가 단 하나만 존재하는 것을 보장 전역 객체 처럼 사용 할 수 있음 매니저 클래스들, 리소스 관리 클래스등, 사운 드 관리, 게임 프레임워크 등 전반적으로 사용
  • 18. 싱글톤의 장점 코드의 가독성 관점에서 명료하다 전역 객체처럼 간단히 사용할 수 있다 객체의 생성, 접근, 해제 시점을 제어 할 수 있다.
  • 19. 일반 전역 객체와의 차이 전역 객체 – 생성, 해제, 접근 시점을 제어할 수 없다. 가독성이 떨어진다. 위험하다. 싱글톤 패턴은 위 문제를 해결할 수 있다.  원하는 시기에 생성/해제 할 수 있으며, 접근 함 수를 통해서 접근 시점을 제어할 수 있다.
  • 20. 전통적인 해결책SingleTon& GetSingleTon(){ static T SingleTon; return T;}생성 시점은 제어할 수 있지만,해제 시점은 제어할 수 없다.
  • 21. 더 나은 방식class CTextureMgr{ static CTextureMgr* m_Instance;public: CTextureMgr() {m_Instance = this;} ~CTextureMgr() {m_Instance = NULL;} static CTextureMgr& GetInstance() {return *m_Instance;}}// 사용CTextureMgr::GetInstance().Method();하지만, 모든 싱글톤 클래스에 추가 코드가 들어가야 한다.
  • 22. 좀더 나은 방식template<typename T>class ISingleTon{ static T* m_instance;public: ISingleTon() { int offset = (int)(T*)1 - (int)(ISingleTon<T>*)(T*)1; m_instance = (T*)((int)this + offset); } ~ISingleTon() {m_instance = NULL;} static T& GetSingleton() {return *m_instance;}}템플릿을 상속 받아 하위 클래스에서 자동으로 싱글톤이 생성되게 한다.다중 상속 구조가 되는 경우가 있기 때문에 Offset을 계산해서 할당한다.