Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Kgc2012 온라인 게임을 위한 게임 오브젝트 설계

16,065 views

Published on

  • If you need your papers to be written and if you are not that kind of person who likes to do researches and analyze something - you should definitely contact these guys! They are awesome ⇒⇒⇒WRITE-MY-PAPER.net ⇐⇐⇐
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Sex in your area is here: ❤❤❤ http://bit.ly/36cXjBY ❤❤❤
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Dating direct: ❶❶❶ http://bit.ly/36cXjBY ❶❶❶
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ..................................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, CookeBOOK Crime, eeBOOK Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ..................................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, CookeBOOK Crime, eeBOOK Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Kgc2012 온라인 게임을 위한 게임 오브젝트 설계

  1. 1. Korea Games Conference 박성준 KGC 2012 (notorz@hotmail.com)
  2. 2. 온라인 게임을 위한 게임 오브젝트 설계 액션으로 통하다 Korea Games Conference 박성준 KGC 2012 (notorz@hotmail.com)
  3. 3. 게임 + 오브젝트
  4. 4. 오브젝트?
  5. 5. 게임?
  6. 6. 게임 오브젝트! 캐릭터• 플레이어, 몬스터 등 캐릭터 레벨 지형• 바위, 나무, 건물 등 배경 오브젝트• 함정, 회복아이템 등 트리거 오브젝 발사체 프랍• 미사일, 수류탄, 파편 등 트• 카메라, 광원 등• 캐릭터가 서있는 지형 카메라 트리거 광원
  7. 7. 캐릭터 레벨 지형 오브젝트 상호작용 오브젝발사체 프랍 트 오브젝트 카메라 트리거 오브젝트 광원 게임 = 게임 오브젝트 사이의 상호작용
  8. 8. 온라인 게임
  9. 9. 게임 오브젝트 중심 개발 • 게임 오브젝트들 사이의 이벤트 • 이동 / 공격 / 피격 • 아이템 떨어뜨리기 / 줍기 • 등 게임 내적인 이벤트
  10. 10. 컴포넌트 + 게임 오브젝트
  11. 11. 컴포넌트 기반 설계 구조
  12. 12. 온라인 게임은컴포넌트 기반 설계를 해야 한다!
  13. 13. 알과 닭 객체를 계층 구조로 만든다고 가정해봅시다..
  14. 14. 슈퍼닭을 만듭시다! 슈퍼닭은 날아다닙니다!
  15. 15. 그렇다면 컴포넌트 기반 설계 방식이라면?!
  16. 16. 온라인 게임 + 컴포넌트 설계 = 행복한 개발
  17. 17. 컴포넌트 설계는 좋지만..• 의존적인 컴포넌트 구분!• 메시지 통신을 하지 말자!• 그렇지만 의존성은 피하자!• 스크립트 친화적 구현!
  18. 18. 의존적인 컴포넌트?
  19. 19. Controller• 의존적인 컴포넌트는 컨트롤러의 속성을 가진다• 다른 컴포넌트에 접근하는걸 고려하여 디자인• 컴포넌트와는 다르게 활성화/비활성화 존재
  20. 20. Owner Entity가 가진 다른 컴포넌트와 컨트롤러에 접근 가능! AAA Entity Component BBB BBB Controller Component AAA Controller
  21. 21. 메시지 통신을 하지 말자!
  22. 22. 분산되는 로직 처리 = 응집력이 떨어진다순서대로 로직 처리가 힘듦 = 작업 스트레스 증가
  23. 23. 1. 액션 단위로 로직 처리2. 액션객체가 컴포넌트들에 접근3. 게임 오브젝트는 액션들을 관리
  24. 24. 액션
  25. 25. 죄송합니다.. 시간에 쫓겨 급해서 Boost 전처리기 메타를 썼습니다..
  26. 26. 전처리기 메타 코드가만들어내는 코드
  27. 27. 액션의 구현 Action의 데이터 위에서 정의한 Action데이터로 virtual void Do( 데이터 ) = 0; 순수 가상 함수가 만들어진다 GetOwner()를 이용하여 Action이 실행된 Entity를 얻어올 수 있다
  28. 28. Owner Entity가 가진 다른 컴포넌트와 컨트롤러에 접근 가능! 생성 AAA DoAction Entity Action 호출 AAA BBB AAAComponent Component Controller 접근
  29. 29. 다른 객체에 접근을 위해.. Entity Handler DoAction 함수를 가진다 Entity 다른 Entity / 또는 외부에서 접근Controller와 Action의 Owner로 노출
  30. 30. 업데이트 순서 Entity:: Entity:: Component Update Update System::Controller Action Update
  31. 31. 게임 오브젝트와 네트워크 통신 Server NPC1 Player1 NPC2 Server Server Server Object Object ObjectClient Client Client Client Client ClientObject Object Object Object Object ObjectNPC1 Player1 NPC2 NPC1 Player1 NPC2 Client Client
  32. 32. NPC1 Player1 NPC2Server Server ServerObject Object Object Server Base
  33. 33. NPC1 Player1 NPC2Server Server ServerObject Object Object Server Base
  34. 34. NPC1 Player1 NPC2ID : 0 ID : 1 ID : 2 Server Server Server Object Object Object Server Base
  35. 35. NPC1 Player1 NPC2ID : 0 ID : 1 ID : 2 Server Server Server Object Object Object Server Base Client Base
  36. 36. NPC1 Player1 NPC2 ID : 0 ID : 1 ID : 2 Server Server Server Object Object Object Server Base Client Base Client Client Client Object Object ObjectID : 0 ID : 1 ID : 2 NPC1 Player1 NPC2
  37. 37. NPC1 Player1 NPC2 ID : 0 ID : 1 ID : 2 Server Server Server Object Object Object Server Base Client Base Client Client Client Object Object ObjectID : 0 ID : 1 ID : 2 NPC1 Player1 NPC2
  38. 38. NPC1 Player1 NPC2 ID : 0 ID : 1 ID : 2 Server Server Server Object Object Object Server Base Client Base Client Client Client Object Object ObjectID : 0 ID : 1 ID : 2 NPC1 Player1 NPC2
  39. 39. NPC1 Player1 NPC2 ID : 0 ID : 1 ID : 2 Server Server Server Object Object Object Server Base Client Client Base Base Client Client Client Client Client Client Object Object Object Object Object ObjectID : 0 ID : 1 ID : 2 ID : 0 ID : 1 ID : 2 NPC1 Player1 NPC2 NPC1 Player1 NPC2
  40. 40. NPC1 Player1 NPC2 ID : 0 ID : 1 ID : 2 Server Server Server Object Object Object Server Base Client Client Base Base Client Client Client Client Client Client Object Object Object Object Object ObjectID : 0 ID : 1 ID : 2 ID : 0 ID : 1 ID : 2 NPC1 Player1 NPC2 NPC1 Player1 NPC2
  41. 41. Entity가 받은 메시지는 어떻게?
  42. 42. Action과 Message를 연결Message가 ServerObject/ClientObject에 도착하면 연결된 Action 실행 Network Action Manager 생성 Server/ 함수 Client Action Object Network - OnRecv
  43. 43. 메시지ID + 데이터 타입 메시지에서 사용할 데이터 형식 메시지 타입 선언한 순서로 메시지ID 할당버퍼에 데이터 넣기버퍼에서 데이터 꺼내기
  44. 44. 액션 실행을 위한 네트워크로 받은 메시지를 받은 엔터티 함수포인터 메시지 버퍼 ServerObject와 연결 ClientObject와 연결
  45. 45. 액션과 네트워크 통신의 연결 메시지와 Action의 연결 선언 메시지와 Action의 데이터가 같아야만 컴파일이 된다 메시지와 Action의 연결 정의
  46. 46. 게임 오브젝트와 스크립트
  47. 47. lua_state 컨트롤러 컨트롤러 컨트롤러 컨트롤러 컨트롤러 컨트롤러 Component Controller 테이블 테이블 테이블 테이블 테이블 테이블 Table Table 컨트롤러 컨트롤러 컨트롤러 Instance 테이블 테이블 Lua 테이블 Table Thread
  48. 48. 컨트롤러와 스크립트의 연결
  49. 49. Entity Script Controller 정보Controller Manager lua_state에 입력 Entity별로 lua table과 lua thread 생성 Controller Instance lua table 생성하여 Controller userdata와 연결
  50. 50. C++ AAA Controller Class AAA AAA AAA AAA Controller Controller Controller Controller Instance Instance1 Instance2 Instance3 Instance4Lua AAA Controller table AAA AAA AAA AAA Controller Controller Controller Controller userdata Instance1 Instance1 Instance1 Instance1 meta table AAA AAA AAA AAA Controller Controller Controller Controller table Instance1 Instance2 Instance3 Instance4
  51. 51. 부모 클래스와 자식 클래스 모두 연결할 경우?
  52. 52. C++ AAA Controller AAA Controller 상속 Instance BBB Controller BBB Controller InstanceLua AAA Controller AAA meta table Controller Instance BBB Controller meta table BBB Controller AAA Instance Controller Instance BBB Controller Instance
  53. 53. 스크립트와 연결 스크립트 함수 실행C++ 함수 실행
  54. 54. 스크립트에서 컴포넌트 접근
  55. 55. EntityComponent Script Component 정보 Manager lua_state에 입력
  56. 56. C++ AAA Component Class AAA AAA AAA AAA Component Component Component Component Instance Instance1 Instance2 Instance3 Instance4Lua AAA table Component AAA AAA AAA AAA Component Component Component Component userdata Instance1 Instance2 Instance3 Instance4
  57. 57. EntityWrapper Entity
  58. 58. Entity Script Controller 정보 Controller Manager lua_state에 입력 Entity별로 lua table과 lua thread 생성Controller의 owner로 Controller InstanceEntityWrapper 생성 후 lua table 생성하여Controller Instance Controller userdata와 연결lua table에 “owner” Set
  59. 59. KGC 2011 에서…
  60. 60. 강연이 끝난 후..천재 꽃 미남 당신껀 멀티 쓰레슈퍼 프로그래머 딩이 안되자나?!트위터 :@BlindRendererKR프로필 :
  61. 61. 지금은 멀티쓰레딩도 가능합니다
  62. 62. 어떻게?!Game Animation Physics Rendering AudioLoop
  63. 63. Set up Thread1Game Thread2 Thread0 Thread3Loop Process Result
  64. 64. 현재 구조를 보면…• Controller는 Owner가 가지고 있는 것만 접근 -> Owner의 Component / Controller• 다른 Entity에는 DoAction으로 할 일 전달• Entity별로 Controller들 업데이트 Entity별로 Action Queue 처리 Component별로 업데이트
  65. 65. 다시 정리해보면• Entity는 다른 Entity에 직접 접근 X• Component는 다른 Component에 직접 접근 X• Entity별로 Controller들 업데이트 Entity별로 Action Queue 처리 Component별로 업데이트
  66. 66. 업데이트 순서 Entity:: Entity:: Component Update Update System::Controller Action Update
  67. 67. Set up Thread1 Thread2 Thread0 Thread3 Controller Set up Thread0 Thread2Game Thread1 Thread3 ActionLoop Set up Thread1 Thread0 Thread2 Thread3 Component Process Result
  68. 68. 감사합니다Special Thanks to :Dragonfly SS팀 일동/ 게임개발포에버 필진 일동 /민철님 / 퐆삼촌 / 조진현님 / 김정우님 / 오즈형 /레아형 / 민근형 / 티스형 / Hybrid님 / 창희님 /대마왕님 / banhae님 / 정균님 / 스티브 / 바레로 박사님 / 박성준김토마님 / Cagetu님 / 달땡땡님 / 퐁퐁퐁님 / 진짜님 / mail : notorz@hotmail.com박PD님 / 비토님 / 어제 같이 술 마신 분들 / 트친분들 twitter : @kgun86

×