SlideShare una empresa de Scribd logo
1 de 101
행동 기반 게임오브젝트
 (action based game object)




                                  박성준
                              (notorz@hotmail.com)
주제를 시작하기 전에..
대단하고 화려하고 멋진 설계
이런것을 소개하려는 것이 아닙니다.
소개하려는 것은..




     저는 이렇게 만들었습니다..
행동 기반 게임오브젝트란?


• 컴포넌트 기반 게임오브젝트의 일종

• 기존 컴포넌트를 컴포넌트, 컨트롤러, 액션으로 나누어 구현

• 컴포넌트끼리의 의존도↓, 코드의 재활용↑

• 여러 컴포넌트에 접근해야 하는 복잡한 처리도 간단하게 구현




                       일단 포장부터...
그 중에서도 가장 중요한 것은


행동 기반 게임오브젝트
  = 기본적으로 컴포넌트 기반
아주 조금 다를 뿐입니다.

                     행동 기반 게임오브젝트




기존의 컴포넌트 기반 게임오브젝트
처음 다닌 게임회사
             그리고 첫 게임
Rakion의 게임 오브젝트는..
 이미 서비스중인 게임인 만큼, 굉장히 많이 만들어져 있었고, 컴포넌트 기반 게임오브젝트의 거의 모
 든 강연에서 나온 계층구조 설계의 거의 모든 문제점들이 발생하고 있는 상황이었습니다.




KASA2008, 김성헌님의 C++ Component System   GDC2009, Game Object Component Architecture
게임 오브젝트여

   당신은 누구시길래..
게임 오브젝트란?

                                    캐릭터
• 플레이어, 몬스터 등 캐릭터
                               레벨         지형
• 캐릭터가 서있는 지형
• 바위, 나무, 건물 등 배경 오브젝트
                                    오브젝
                         발사체                    프랍
• 함정, 회복아이템 등 트리거                    트

• 미사일, 수류탄, 파편 등
• 카메라, 광원 등                카메라            트리거

                                    광원
게임 오브젝트란?




             캐릭터

        레벨         지형            오브젝트
                                               상호작용

             오브젝
  발사체                    프랍
              트
                              오브젝트

    카메라            트리거                  오브젝트

             광원




   게임 = 게임 오브젝트 사이의 상호작용
새로운 프로젝트 시작!
방을 만들고 들어가서 다른 유저들과 몬스터를 잡고 노는 MO Action RPG를 만들게 되었습니다. 총
도 쏘고 칼도 휘두르고 물약도 먹고 같이 공격해주거나 회복시켜주는 기계도 소환하고..
때가 왔다!




엑셀은 밟을 수 없어도 핸들만은 놓치지 않겠어!
그래서 게임오브젝트를..




엑셀은 밟을 수 없어도 핸들만은 놓치지 않겠어!
사람을 보고 만들었습니다
조종
모델
데이터
행동
사람 비슷한 것도..
조종
모델
데이터
행동
사람 안 비슷한 것도..
조종
모델
데이터
행동
당시 사용했던 구조
컨트롤러에서 게임오브젝트에 명령을 주고, 게임오브젝트가 명령을 받으면 액션을 실행합니다. 액션
은 모델과 데이터, 게임오브젝트(위치, 회전 등)를 조작합니다.




모델
                                               조종

데이터

                                               행동
컨트롤
       러


      오브젝
       트
모델/
            액션
데이터
컨트롤
조건 검사
           러


          오브젝
           트
    모델/
                액션
   데이터
컨트롤
조건 검사
           러
                 액션 명령



          오브젝
           트
    모델/
                액션
   데이터
컨트롤
       조건 검사
                  러
                        액션 명령

       액션 명령
 다른
오브젝트             오브젝
                  트
           모델/
                       액션
          데이터
컨트롤
       조건 검사
                  러
                        액션 명령

       액션 명령
 다른
오브젝트             오브젝
                        명령에 맞는 액션 실행
                  트
           모델/
                       액션
          데이터
컨트롤
       조건 검사
                    러
                             액션 명령

       액션 명령
 다른
오브젝트              오브젝
                             명령에 맞는 액션 실행
                    트
           모델/
                            액션
          데이터    데이터 업데이트
                 / 기능 수행
오브젝트




엑티브
액터
오브젝트

       액션 명령

엑티브
액터
오브젝트

                           액션 명령

           엑티브
           액터


                 명령에 연결된 액션

서다   달리다   때리다   맞다   죽다
오브젝트

                           액션 명령

           엑티브
           액터


                 명령에 연결된 액션

서다   달리다   때리다   맞다   죽다
그래서 게임 오브젝트의 구성은..
플레이어 캐릭터
플레이어 캐릭터는 유저의 컨트롤(실제 입력, 네트워크)과 시나리오의 흐름에 영향을 받고, 검과 총 두 가지
의 무기를 사용하여 몬스터를 사냥합니다. 따라서 무기를 체인지하면 행동패턴이 달라집니다.


        UserInputControl   ScenarioControl     RemoteControl


              Local인 경우                      Remote인 경우




        검 Actor                                        총 Actor


         활성화
플레이어 캐릭터
플레이어 캐릭터는 유저의 컨트롤(실제 입력, 네트워크)과 시나리오의 흐름에 영향을 받고, 검과 총 두 가지
의 무기를 사용하여 몬스터를 사냥합니다. 따라서 무기를 체인지하면 행동패턴이 달라집니다.


        UserInputControl   ScenarioControl     RemoteControl


              Local인 경우                      Remote인 경우




        검 Actor                                        총 Actor


                                                        활성화
회의 중

       좀비는 왜 느    그래도 좀비는
       린게 컨셉이     걸어서 다가오
       지? 무섭지 않    는게 매력이
          자나!       있다구!
회의 중

       그럼 뛰어다니     그럼 처음엔
       게 만들면 되     걷다가 특정
       지! 그런 좀비   조건이 만족되
       영화 많자나!      면 뛰자!
좀비 몬스터
처음에는 느리게 걸어 다니면서 몽둥이를 휘두르지만, 데미지를 받아 HP가 30% 이하가 되고 특정 조건이 만
족되면 다리가 떨어지면서 팔로 엄청 빠르게 이동을 하고 점프를 하여 입으로 물어뜯는 공격을 합니다.


             AIControl


                         몬스터기본공격 몬스터기본이동



                                       Actor

                                   공격      이동




데이터1 데이터2       Model1 Model2

                                변신 전
좀비 몬스터
처음에는 느리게 걸어 다니면서 몽둥이를 휘두르지만, 데미지를 받아 HP가 30% 이하가 되고 특정 조건이 만
족되면 다리가 떨어지면서 팔로 엄청 빠르게 이동을 하고 점프를 하여 입으로 물어뜯는 공격을 합니다.


             AIControl




                                       Actor

                                   공격      이동
                                                 좀비상체이동

                                                좀비물어뜯기공격



데이터1 데이터2       Model1 Model2

                                변신 후
하지만 저는 이때..
바깥세상은
   어떤 곳일
     까..




컴포넌트가 뭔지 몰랐습니다..
컴포넌트 기반으로
게임오브젝트를 만들면 좋데!

        오후 4시 30분에 여기에서 발표합니다. 많이 참석해주세요!!



            컴포넌트?!
하지만 이미 프로젝트는 마무리 단계..
다시 새로운 프로젝트 시작!
원작의 유명 대전 격투 게임을 RPG로 재탄생 시킨 사무라이쇼다운 온라인은 Full 3D타입의 쾌적하
고 전략성 있는 전투를 추구하며 원작의 방대한 세계관을 그대로 즐길 수 있는 게임입니다.
지금이다!!
컴포넌트! 나도 이 녀석으로
게임오브젝트를 만들어보자!
컴포넌트 기반 게임 오브젝트의 형태
게임 오브젝트는 기본적인 데이터만을 가지고 있고, 모든 데이터와 기능은 컴포넌트로 만들어서 게임오브젝
트에 붙이는 형태입니다. 오브젝트의 형태별로 필요한 기능만을 가질 수 있도록 설계된 방식입니다.




                             ModelComponent


      MotionTreeComponent                         HealthComponent

                                  오브젝
        TouchComponent                              AIComponent
                                   트

       MoveableComponent                          PhysicsComponent


                            TargetableComponent
하지만 역시 쓰던 것이 편하나 봅니다...
저는 이런 부분들이 불편했어요


잘 알진 못하지만..

• 컴포넌트가 다른 컴포넌트를 참조하고 수정하는 경우

• 하나의 일을 여러 컴포넌트가 복잡적으로 처리해야 하는 경우

• 사실 이렇게 페이지를 하나 쓸 만큼 나쁜 점이 많지 않아요..
그래서 합쳤습니다..
오브젝트에 액션 명령




                     오브젝트가 가지고 있는
                     기본적인 기능/데이터들



배경 투명으로 어떻게 만드나요..




                     오브젝트가 명령에 따라
                     취해야 하는 액션
컨트롤러
                     오브젝트에 액션 명령



                                   컴포넌트


                     오브젝트가 가지고 있는
                     기본적인 기능/데이터들



배경 투명으로 어떻게 만드나요..


                                     액션
                     오브젝트가 명령에 따라
                     취해야 하는 액션
컨트롤러
                      UserInputController

               AIController          RemoteController


                                                                  컴포넌트
    ModelComponent
                              오브젝            HealthComponent
                               트
MoveDataComponent                                 TargetableComponent


                                                  Drop                  액션
               Idle         ActionTable
                                              Struck
                Move
                            Attack        Touch
컨트롤
       러


      오브젝
       트
컴포넌
            액션
 트
컨트롤
조건 검사
             러


            오브젝
             트
   컴포넌
                  액션
        트
컨트롤
조건 검사
             러
                   액션 명령



            오브젝
             트
   컴포넌
                  액션
        트
컨트롤
       조건 검사
                    러
                          액션 명령

       액션 명령
 다른
오브젝트               오브젝
                    트
          컴포넌
                         액션
               트
컨트롤
       조건 검사
                    러
                          액션 명령

       액션 명령
 다른
오브젝트               오브젝
                          명령에 맞는 액션 실행
                    트
          컴포넌
                         액션
               트
컨트롤
       조건 검사
                      러
                               액션 명령

       액션 명령
 다른
오브젝트                오브젝
                               명령에 맞는 액션 실행
                      트
          컴포넌
                              액션
               트   데이터 업데이트
                   / 기능 수행
행동 기반 게임오브젝트 구조
컨트롤러에서 게임오브젝트에 명령을 주고, 게임오브젝트가 명령을 받으면 액션을 실행합니다. 액션
은 컴포넌트, 게임오브젝트(위치, 회전 등)를 조작합니다.
간단히 표현해보면..
컴포넌트

• 독립적인 하나의 기능

• 어떠한 일을 하기 위해 쓰이는 데이터

• 여러 게임 오브젝트에 붙어 각각의 고유한 기능을 수행

• 다른 컴포넌트나 게임오브젝트를 수정하지 않음
컴포넌트
공통




클라이언트



        컴포넌트 베이스




서버
컨트롤러

• 게임 오브젝트에 액션 명령

• 활성화 / 비활성화가 가능

• 컴포넌트나 게임오브젝트를 수정하지 않음

• 게임 오브젝트 자체에서 발생되는 액션을 명령
컨트롤러
공통




클라이언트




        컨트롤러 베이스
서버
액션

• 게임오브젝트가 해야 하는 어떠한 일

• 컴포넌트나 게임오브젝트를 실제로 수정함

• 액션 명령을 받으면 명령에 연결된 액션을 실행

• 게임오브젝트는 한번에 여러 개의 액션 실행 가능
액션
공통




클라이언트




서버
        액션 베이스
액션 명령

• 액션을 실행시키기 위한 명령

• 게임오브젝트는 액션 명령을 받고 연결된 액션을 실행

• 액션을 실행하는데 사용되는 데이터는 명령에 따라 달라
  짐

• 액션 명령은 ActionBase 를 직접 상속받은 객체의 RTTI
  를 이용
편의를 위해 매크로를 사용

                ActionBase 직접 상속



                 액션 명령 선언




                 액션 명령 정의



           ActionBase 직접 상속 X
매크로의 형태


          액션 명령 ID

          데이터




           ActionBase
           직접 상속만 허용
            RTTI를 사용
액션 테이블

• 게임 오브젝트가 할 수 있는 액션들의 모음

• 액션 명령에 액션을 연결하여 저장

• 게임 오브젝트는 여러 개의 액션 테이블을 가짐

• 액션 테이블에는 레벨이 존재하여 활성화된 액션 테이블
  중 레벨이 높은 것부터 액션 명령을 검사
액션 테이블의 형태

       레벨이 높은 액션 테이블부터 실행할 액션 검사



                                   액션 연결




활성화/비활성화
액션 레이어

• 게임오브젝트는 액션 레이어를 통해 액션을 실행

• 액션의 시작부터 끝까지를 관리

• 레이어 개념으로 액션을 실행하여 한번에 여러 개의 액
  션을 실행시킴
액션 레이어의 형태




                 액션 실행




  액션을 실행시킬 레이어
게임 오브젝트 구성 예시


플레이어 캐릭터의 이동을 간단하게 만들어 봅시다
UserInputController




ModelComponent
                                 오브젝트


              ActionTable                         ActionLayer



          Idle - CharacterIdle
입력 X
     실행 중 액션 X              UserInputController
     Idle 명령



ModelComponent
                                 오브젝트


              ActionTable                         ActionLayer



          Idle - CharacterIdle
입력 X
     실행 중 액션 X              UserInputController
     Idle 명령



ModelComponent
                                 오브젝트
 Idle 명령에
 연결된 액션 검색

              ActionTable                         ActionLayer



          Idle - CharacterIdle
입력 X
     실행 중 액션 X              UserInputController
     Idle 명령



ModelComponent
                                 오브젝트
 Idle 명령에
 연결된 액션 검색

              ActionTable                         ActionLayer
                             CharacterIdle 실행

          Idle - CharacterIdle
입력 X
     실행 중 액션 X              UserInputController
     Idle 명령



ModelComponent
                                 오브젝트
 Idle 명령에
 연결된 액션 검색

              ActionTable                         ActionLayer
                             CharacterIdle 실행

          Idle - CharacterIdle                    CharacterIdle

                                              Idle 애니메이션 재생
UserInputController




ModelComponent
                                 오브젝트


              ActionTable                         ActionLayer



          Idle - CharacterIdle                    CharacterIdle
UserInputController




ModelComponent                                        MoveDataComponent

                                오브젝트


                ActionTable                         ActionLayer



 Idle - CharacterIdle                               CharacterIdle


 MoveToPosition - CharacterMoveToPosition
이동할 위치 클릭
                              UserInputController    MoveToPosition 명령




ModelComponent                                        MoveDataComponent

                                오브젝트


                ActionTable                         ActionLayer



 Idle - CharacterIdle                               CharacterIdle


 MoveToPosition - CharacterMoveToPosition
이동할 위치 클릭
                                 UserInputController    MoveToPosition 명령




   ModelComponent                                        MoveDataComponent

                                   오브젝트
MoveToPosition 명령에
연결된 액션 검색

                   ActionTable                         ActionLayer



    Idle - CharacterIdle                               CharacterIdle


    MoveToPosition - CharacterMoveToPosition
이동할 위치 클릭
                                 UserInputController    MoveToPosition 명령




   ModelComponent                                        MoveDataComponent

                                   오브젝트
MoveToPosition 명령에
연결된 액션 검색

                   ActionTable                         ActionLayer
                            CharacterMoveToPosition
                                     실행
    Idle - CharacterIdle                               CharacterIdle


    MoveToPosition - CharacterMoveToPosition
이동할 위치 클릭
                                 UserInputController    MoveToPosition 명령




   ModelComponent                                        MoveDataComponent

                                   오브젝트
MoveToPosition 명령에
연결된 액션 검색

                   ActionTable                         ActionLayer
                            CharacterMoveToPosition
                                     실행
    Idle - CharacterIdle                               CharacterIdle

                                                              CharacterMoveToPosition
    MoveToPosition - CharacterMoveToPosition
이동할 위치 클릭
                                 UserInputController    MoveToPosition 명령




   ModelComponent                                       MoveDataComponent

                                   오브젝트
MoveToPosition 명령에
연결된 액션 검색

                   ActionTable                         ActionLayer
                            CharacterMoveToPosition
                                     실행
    Idle - CharacterIdle
                                                             CharacterMoveToPosition
    MoveToPosition - CharacterMoveToPosition
이동할 위치 클릭
                                 UserInputController    MoveToPosition 명령




   ModelComponent                                       MoveDataComponent

                                   오브젝트
MoveToPosition 명령에
                                                             위치 값 설정
연결된 액션 검색
                                                                             이동속도
                   ActionTable                         ActionLayer            참조
                            CharacterMoveToPosition
                                     실행
    Idle - CharacterIdle
                                                             CharacterMoveToPosition
    MoveToPosition - CharacterMoveToPosition
UserInputController




ModelComponent                                       MoveDataComponent

                                오브젝트


                ActionTable                         ActionLayer



 Idle - CharacterIdle

 MoveToPosition - CharacterMoveToPosition
어쨌든..
게임오브젝트 구성을 쉽게!!
Q&A
감사합니다




              박성준
        notorz@hotmail.com

Más contenido relacionado

La actualidad más candente

기획자의 포트폴리오는 어떻게 써야 할까
기획자의 포트폴리오는 어떻게 써야 할까기획자의 포트폴리오는 어떻게 써야 할까
기획자의 포트폴리오는 어떻게 써야 할까Han Je Sung
 
위대한 게임개발팀의 공통점
위대한 게임개발팀의 공통점위대한 게임개발팀의 공통점
위대한 게임개발팀의 공통점Ryan Park
 
스토리텔링과 비주얼 내러티브: 놀 치프틴은 어떻게 형님이 되었나
스토리텔링과 비주얼 내러티브: 놀 치프틴은 어떻게 형님이 되었나스토리텔링과 비주얼 내러티브: 놀 치프틴은 어떻게 형님이 되었나
스토리텔링과 비주얼 내러티브: 놀 치프틴은 어떻게 형님이 되었나Lee Sangkyoon (Kay)
 
KGC 2013 - 5일만에 레벨 디자인하기
KGC 2013 - 5일만에 레벨 디자인하기KGC 2013 - 5일만에 레벨 디자인하기
KGC 2013 - 5일만에 레벨 디자인하기용태 이
 
쩌는 게임 기획서, 이렇게 쓴다(How to write great design documents) from GDC 2008 (Korean)
쩌는 게임 기획서, 이렇게 쓴다(How to write great design documents) from GDC 2008 (Korean)쩌는 게임 기획서, 이렇게 쓴다(How to write great design documents) from GDC 2008 (Korean)
쩌는 게임 기획서, 이렇게 쓴다(How to write great design documents) from GDC 2008 (Korean)Kay Kim
 
게임 개발에 자주 사용되는 디자인 패턴
게임 개발에 자주 사용되는 디자인 패턴게임 개발에 자주 사용되는 디자인 패턴
게임 개발에 자주 사용되는 디자인 패턴예림 임
 
NDC 2018 레벨 디자인 튜토리얼 Level Design Tutorial
NDC 2018 레벨 디자인 튜토리얼 Level Design TutorialNDC 2018 레벨 디자인 튜토리얼 Level Design Tutorial
NDC 2018 레벨 디자인 튜토리얼 Level Design Tutorial용태 이
 
김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019
김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019
김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019devCAT Studio, NEXON
 
전형규, 좋은 이름, 나쁜 이름, 이상한 이름, NDC2018
전형규, 좋은 이름, 나쁜 이름, 이상한 이름, NDC2018전형규, 좋은 이름, 나쁜 이름, 이상한 이름, NDC2018
전형규, 좋은 이름, 나쁜 이름, 이상한 이름, NDC2018devCAT Studio, NEXON
 
[NDC 2010] 그럴듯한 랜덤 생성 컨텐츠 만들기
[NDC 2010] 그럴듯한 랜덤 생성 컨텐츠 만들기[NDC 2010] 그럴듯한 랜덤 생성 컨텐츠 만들기
[NDC 2010] 그럴듯한 랜덤 생성 컨텐츠 만들기Yongha Kim
 
액션 게임 디자인
액션 게임 디자인액션 게임 디자인
액션 게임 디자인ByungChun2
 
오승준, 사회적 기술이 프로그래머 인생을 바꿔주는 이유, NDC2011
오승준, 사회적 기술이 프로그래머 인생을 바꿔주는 이유, NDC2011오승준, 사회적 기술이 프로그래머 인생을 바꿔주는 이유, NDC2011
오승준, 사회적 기술이 프로그래머 인생을 바꿔주는 이유, NDC2011devCAT Studio, NEXON
 
[NDC_16] 캐릭터 한 달에 하나씩 업데이트 하기 : '최강의 군단' 스킬 개발 툴 포스트 모템과 차기작 '건파이트 맨션' 툴 프리뷰
[NDC_16] 캐릭터 한 달에 하나씩 업데이트 하기 : '최강의 군단' 스킬 개발 툴 포스트 모템과 차기작 '건파이트 맨션' 툴 프리뷰[NDC_16] 캐릭터 한 달에 하나씩 업데이트 하기 : '최강의 군단' 스킬 개발 툴 포스트 모템과 차기작 '건파이트 맨션' 툴 프리뷰
[NDC_16] 캐릭터 한 달에 하나씩 업데이트 하기 : '최강의 군단' 스킬 개발 툴 포스트 모템과 차기작 '건파이트 맨션' 툴 프리뷰승민 백
 
슈팅 게임에서 레벨 디자인 하기
슈팅 게임에서 레벨 디자인 하기슈팅 게임에서 레벨 디자인 하기
슈팅 게임에서 레벨 디자인 하기용태 이
 
레벨 디자인의 구성
레벨 디자인의 구성레벨 디자인의 구성
레벨 디자인의 구성준태 김
 
NDC 2012 이은석 - 게임회사 취업특강 (커리어세션)
NDC 2012 이은석 - 게임회사 취업특강 (커리어세션)NDC 2012 이은석 - 게임회사 취업특강 (커리어세션)
NDC 2012 이은석 - 게임회사 취업특강 (커리어세션)Eunseok Yi
 
게임제작개론 : #8 게임 제작 프로세스
게임제작개론 : #8 게임 제작 프로세스게임제작개론 : #8 게임 제작 프로세스
게임제작개론 : #8 게임 제작 프로세스Seungmo Koo
 
[IGC 2017] 넥슨코리아 심재근 - 시스템 기획자에 대한 기본 지식과 준비과정
[IGC 2017] 넥슨코리아 심재근 - 시스템 기획자에 대한 기본 지식과 준비과정[IGC 2017] 넥슨코리아 심재근 - 시스템 기획자에 대한 기본 지식과 준비과정
[IGC 2017] 넥슨코리아 심재근 - 시스템 기획자에 대한 기본 지식과 준비과정강 민우
 
NDC2019 - 게임플레이 프로그래머의 역할
NDC2019 - 게임플레이 프로그래머의 역할NDC2019 - 게임플레이 프로그래머의 역할
NDC2019 - 게임플레이 프로그래머의 역할Hoyoung Choi
 
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018devCAT Studio, NEXON
 

La actualidad más candente (20)

기획자의 포트폴리오는 어떻게 써야 할까
기획자의 포트폴리오는 어떻게 써야 할까기획자의 포트폴리오는 어떻게 써야 할까
기획자의 포트폴리오는 어떻게 써야 할까
 
위대한 게임개발팀의 공통점
위대한 게임개발팀의 공통점위대한 게임개발팀의 공통점
위대한 게임개발팀의 공통점
 
스토리텔링과 비주얼 내러티브: 놀 치프틴은 어떻게 형님이 되었나
스토리텔링과 비주얼 내러티브: 놀 치프틴은 어떻게 형님이 되었나스토리텔링과 비주얼 내러티브: 놀 치프틴은 어떻게 형님이 되었나
스토리텔링과 비주얼 내러티브: 놀 치프틴은 어떻게 형님이 되었나
 
KGC 2013 - 5일만에 레벨 디자인하기
KGC 2013 - 5일만에 레벨 디자인하기KGC 2013 - 5일만에 레벨 디자인하기
KGC 2013 - 5일만에 레벨 디자인하기
 
쩌는 게임 기획서, 이렇게 쓴다(How to write great design documents) from GDC 2008 (Korean)
쩌는 게임 기획서, 이렇게 쓴다(How to write great design documents) from GDC 2008 (Korean)쩌는 게임 기획서, 이렇게 쓴다(How to write great design documents) from GDC 2008 (Korean)
쩌는 게임 기획서, 이렇게 쓴다(How to write great design documents) from GDC 2008 (Korean)
 
게임 개발에 자주 사용되는 디자인 패턴
게임 개발에 자주 사용되는 디자인 패턴게임 개발에 자주 사용되는 디자인 패턴
게임 개발에 자주 사용되는 디자인 패턴
 
NDC 2018 레벨 디자인 튜토리얼 Level Design Tutorial
NDC 2018 레벨 디자인 튜토리얼 Level Design TutorialNDC 2018 레벨 디자인 튜토리얼 Level Design Tutorial
NDC 2018 레벨 디자인 튜토리얼 Level Design Tutorial
 
김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019
김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019
김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019
 
전형규, 좋은 이름, 나쁜 이름, 이상한 이름, NDC2018
전형규, 좋은 이름, 나쁜 이름, 이상한 이름, NDC2018전형규, 좋은 이름, 나쁜 이름, 이상한 이름, NDC2018
전형규, 좋은 이름, 나쁜 이름, 이상한 이름, NDC2018
 
[NDC 2010] 그럴듯한 랜덤 생성 컨텐츠 만들기
[NDC 2010] 그럴듯한 랜덤 생성 컨텐츠 만들기[NDC 2010] 그럴듯한 랜덤 생성 컨텐츠 만들기
[NDC 2010] 그럴듯한 랜덤 생성 컨텐츠 만들기
 
액션 게임 디자인
액션 게임 디자인액션 게임 디자인
액션 게임 디자인
 
오승준, 사회적 기술이 프로그래머 인생을 바꿔주는 이유, NDC2011
오승준, 사회적 기술이 프로그래머 인생을 바꿔주는 이유, NDC2011오승준, 사회적 기술이 프로그래머 인생을 바꿔주는 이유, NDC2011
오승준, 사회적 기술이 프로그래머 인생을 바꿔주는 이유, NDC2011
 
[NDC_16] 캐릭터 한 달에 하나씩 업데이트 하기 : '최강의 군단' 스킬 개발 툴 포스트 모템과 차기작 '건파이트 맨션' 툴 프리뷰
[NDC_16] 캐릭터 한 달에 하나씩 업데이트 하기 : '최강의 군단' 스킬 개발 툴 포스트 모템과 차기작 '건파이트 맨션' 툴 프리뷰[NDC_16] 캐릭터 한 달에 하나씩 업데이트 하기 : '최강의 군단' 스킬 개발 툴 포스트 모템과 차기작 '건파이트 맨션' 툴 프리뷰
[NDC_16] 캐릭터 한 달에 하나씩 업데이트 하기 : '최강의 군단' 스킬 개발 툴 포스트 모템과 차기작 '건파이트 맨션' 툴 프리뷰
 
슈팅 게임에서 레벨 디자인 하기
슈팅 게임에서 레벨 디자인 하기슈팅 게임에서 레벨 디자인 하기
슈팅 게임에서 레벨 디자인 하기
 
레벨 디자인의 구성
레벨 디자인의 구성레벨 디자인의 구성
레벨 디자인의 구성
 
NDC 2012 이은석 - 게임회사 취업특강 (커리어세션)
NDC 2012 이은석 - 게임회사 취업특강 (커리어세션)NDC 2012 이은석 - 게임회사 취업특강 (커리어세션)
NDC 2012 이은석 - 게임회사 취업특강 (커리어세션)
 
게임제작개론 : #8 게임 제작 프로세스
게임제작개론 : #8 게임 제작 프로세스게임제작개론 : #8 게임 제작 프로세스
게임제작개론 : #8 게임 제작 프로세스
 
[IGC 2017] 넥슨코리아 심재근 - 시스템 기획자에 대한 기본 지식과 준비과정
[IGC 2017] 넥슨코리아 심재근 - 시스템 기획자에 대한 기본 지식과 준비과정[IGC 2017] 넥슨코리아 심재근 - 시스템 기획자에 대한 기본 지식과 준비과정
[IGC 2017] 넥슨코리아 심재근 - 시스템 기획자에 대한 기본 지식과 준비과정
 
NDC2019 - 게임플레이 프로그래머의 역할
NDC2019 - 게임플레이 프로그래머의 역할NDC2019 - 게임플레이 프로그래머의 역할
NDC2019 - 게임플레이 프로그래머의 역할
 
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
 

Destacado

Kgc2012 온라인 게임을 위한 게임 오브젝트 설계
Kgc2012 온라인 게임을 위한 게임 오브젝트 설계Kgc2012 온라인 게임을 위한 게임 오브젝트 설계
Kgc2012 온라인 게임을 위한 게임 오브젝트 설계kgun86
 
Kasa 유연한 컨텐츠 개발을 위한 온라인 게임 아키텍처
Kasa 유연한 컨텐츠 개발을 위한 온라인 게임 아키텍처Kasa 유연한 컨텐츠 개발을 위한 온라인 게임 아키텍처
Kasa 유연한 컨텐츠 개발을 위한 온라인 게임 아키텍처kgun86
 
Ndc2010 김주복, v3. 마비노기2아키텍처리뷰
Ndc2010   김주복, v3. 마비노기2아키텍처리뷰Ndc2010   김주복, v3. 마비노기2아키텍처리뷰
Ndc2010 김주복, v3. 마비노기2아키텍처리뷰Jubok Kim
 
Kgc2012 유연한 컨텐츠 개발을 위한 온라인 게임 아키텍처
Kgc2012 유연한 컨텐츠 개발을 위한 온라인 게임 아키텍처Kgc2012 유연한 컨텐츠 개발을 위한 온라인 게임 아키텍처
Kgc2012 유연한 컨텐츠 개발을 위한 온라인 게임 아키텍처kgun86
 
빅데이터미래전략세미나 공공부문의 성공적 빅데이터 도입방안 Sas코리아이진권본부장
빅데이터미래전략세미나 공공부문의 성공적 빅데이터 도입방안 Sas코리아이진권본부장빅데이터미래전략세미나 공공부문의 성공적 빅데이터 도입방안 Sas코리아이진권본부장
빅데이터미래전략세미나 공공부문의 성공적 빅데이터 도입방안 Sas코리아이진권본부장Seungyeob Yang
 
NDC2012 - 완벽한 MMO 클라이언트 설계에의 도전, Part2
NDC2012 - 완벽한 MMO 클라이언트 설계에의 도전, Part2NDC2012 - 완벽한 MMO 클라이언트 설계에의 도전, Part2
NDC2012 - 완벽한 MMO 클라이언트 설계에의 도전, Part2Jubok Kim
 
Mental models_행동 기반 사용자 그룹 분류
Mental models_행동 기반 사용자 그룹 분류Mental models_행동 기반 사용자 그룹 분류
Mental models_행동 기반 사용자 그룹 분류Hee Sung Park
 
책자 국세청 2014_세무조사가이드북
책자 국세청 2014_세무조사가이드북책자 국세청 2014_세무조사가이드북
책자 국세청 2014_세무조사가이드북jy lee
 
5장 소비자 행동
5장 소비자 행동5장 소비자 행동
5장 소비자 행동Minsuk Chang
 
취미로 엔진 만들기
취미로 엔진 만들기취미로 엔진 만들기
취미로 엔진 만들기Jiho Choi
 
게임서버프로그래밍 #1 - IOCP
게임서버프로그래밍 #1 - IOCP게임서버프로그래밍 #1 - IOCP
게임서버프로그래밍 #1 - IOCPSeungmo Koo
 
C#을 사용한 빠른 툴 개발
C#을 사용한 빠른 툴 개발C#을 사용한 빠른 툴 개발
C#을 사용한 빠른 툴 개발흥배 최
 
iFunEngine: 30분 만에 게임 서버 만들기
iFunEngine: 30분 만에 게임 서버 만들기iFunEngine: 30분 만에 게임 서버 만들기
iFunEngine: 30분 만에 게임 서버 만들기iFunFactory Inc.
 
임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013devCAT Studio, NEXON
 
서비스중인 게임 DB 설계 (쿠키런 편)
서비스중인 게임 DB 설계 (쿠키런 편)서비스중인 게임 DB 설계 (쿠키런 편)
서비스중인 게임 DB 설계 (쿠키런 편)_ce
 
Introduction to Machine Learning and Deep Learning
Introduction to Machine Learning and Deep LearningIntroduction to Machine Learning and Deep Learning
Introduction to Machine Learning and Deep LearningTerry Taewoong Um
 
기계학습(Machine learning) 입문하기
기계학습(Machine learning) 입문하기기계학습(Machine learning) 입문하기
기계학습(Machine learning) 입문하기Terry Taewoong Um
 
C#으로 게임 엔진 만들기(1)
C#으로 게임 엔진 만들기(1)C#으로 게임 엔진 만들기(1)
C#으로 게임 엔진 만들기(1)지환 김
 
Self-introduction of Zhaojinbiao
Self-introduction of Zhaojinbiao Self-introduction of Zhaojinbiao
Self-introduction of Zhaojinbiao zhaojinbiao
 
Pink hairball kirk weisler
Pink hairball kirk weislerPink hairball kirk weisler
Pink hairball kirk weislerkirkweisler
 

Destacado (20)

Kgc2012 온라인 게임을 위한 게임 오브젝트 설계
Kgc2012 온라인 게임을 위한 게임 오브젝트 설계Kgc2012 온라인 게임을 위한 게임 오브젝트 설계
Kgc2012 온라인 게임을 위한 게임 오브젝트 설계
 
Kasa 유연한 컨텐츠 개발을 위한 온라인 게임 아키텍처
Kasa 유연한 컨텐츠 개발을 위한 온라인 게임 아키텍처Kasa 유연한 컨텐츠 개발을 위한 온라인 게임 아키텍처
Kasa 유연한 컨텐츠 개발을 위한 온라인 게임 아키텍처
 
Ndc2010 김주복, v3. 마비노기2아키텍처리뷰
Ndc2010   김주복, v3. 마비노기2아키텍처리뷰Ndc2010   김주복, v3. 마비노기2아키텍처리뷰
Ndc2010 김주복, v3. 마비노기2아키텍처리뷰
 
Kgc2012 유연한 컨텐츠 개발을 위한 온라인 게임 아키텍처
Kgc2012 유연한 컨텐츠 개발을 위한 온라인 게임 아키텍처Kgc2012 유연한 컨텐츠 개발을 위한 온라인 게임 아키텍처
Kgc2012 유연한 컨텐츠 개발을 위한 온라인 게임 아키텍처
 
빅데이터미래전략세미나 공공부문의 성공적 빅데이터 도입방안 Sas코리아이진권본부장
빅데이터미래전략세미나 공공부문의 성공적 빅데이터 도입방안 Sas코리아이진권본부장빅데이터미래전략세미나 공공부문의 성공적 빅데이터 도입방안 Sas코리아이진권본부장
빅데이터미래전략세미나 공공부문의 성공적 빅데이터 도입방안 Sas코리아이진권본부장
 
NDC2012 - 완벽한 MMO 클라이언트 설계에의 도전, Part2
NDC2012 - 완벽한 MMO 클라이언트 설계에의 도전, Part2NDC2012 - 완벽한 MMO 클라이언트 설계에의 도전, Part2
NDC2012 - 완벽한 MMO 클라이언트 설계에의 도전, Part2
 
Mental models_행동 기반 사용자 그룹 분류
Mental models_행동 기반 사용자 그룹 분류Mental models_행동 기반 사용자 그룹 분류
Mental models_행동 기반 사용자 그룹 분류
 
책자 국세청 2014_세무조사가이드북
책자 국세청 2014_세무조사가이드북책자 국세청 2014_세무조사가이드북
책자 국세청 2014_세무조사가이드북
 
5장 소비자 행동
5장 소비자 행동5장 소비자 행동
5장 소비자 행동
 
취미로 엔진 만들기
취미로 엔진 만들기취미로 엔진 만들기
취미로 엔진 만들기
 
게임서버프로그래밍 #1 - IOCP
게임서버프로그래밍 #1 - IOCP게임서버프로그래밍 #1 - IOCP
게임서버프로그래밍 #1 - IOCP
 
C#을 사용한 빠른 툴 개발
C#을 사용한 빠른 툴 개발C#을 사용한 빠른 툴 개발
C#을 사용한 빠른 툴 개발
 
iFunEngine: 30분 만에 게임 서버 만들기
iFunEngine: 30분 만에 게임 서버 만들기iFunEngine: 30분 만에 게임 서버 만들기
iFunEngine: 30분 만에 게임 서버 만들기
 
임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013
 
서비스중인 게임 DB 설계 (쿠키런 편)
서비스중인 게임 DB 설계 (쿠키런 편)서비스중인 게임 DB 설계 (쿠키런 편)
서비스중인 게임 DB 설계 (쿠키런 편)
 
Introduction to Machine Learning and Deep Learning
Introduction to Machine Learning and Deep LearningIntroduction to Machine Learning and Deep Learning
Introduction to Machine Learning and Deep Learning
 
기계학습(Machine learning) 입문하기
기계학습(Machine learning) 입문하기기계학습(Machine learning) 입문하기
기계학습(Machine learning) 입문하기
 
C#으로 게임 엔진 만들기(1)
C#으로 게임 엔진 만들기(1)C#으로 게임 엔진 만들기(1)
C#으로 게임 엔진 만들기(1)
 
Self-introduction of Zhaojinbiao
Self-introduction of Zhaojinbiao Self-introduction of Zhaojinbiao
Self-introduction of Zhaojinbiao
 
Pink hairball kirk weisler
Pink hairball kirk weislerPink hairball kirk weisler
Pink hairball kirk weisler
 

Similar a 행동 기반 게임오브젝트

NDC 2014 Beyond Code: <야생의 땅:듀랑고>의 좌충우돌 개발 과정 - 프로그래머가 챙겨주는 또 다른 개발자 사용 설명서
NDC 2014 Beyond Code: <야생의 땅:듀랑고>의 좌충우돌 개발 과정 - 프로그래머가 챙겨주는 또 다른 개발자 사용 설명서NDC 2014 Beyond Code: <야생의 땅:듀랑고>의 좌충우돌 개발 과정 - 프로그래머가 챙겨주는 또 다른 개발자 사용 설명서
NDC 2014 Beyond Code: <야생의 땅:듀랑고>의 좌충우돌 개발 과정 - 프로그래머가 챙겨주는 또 다른 개발자 사용 설명서영준 박
 
HCI2010 - 온라인 게임과 넥스트 젠 애니메이션
HCI2010 - 온라인 게임과 넥스트 젠 애니메이션HCI2010 - 온라인 게임과 넥스트 젠 애니메이션
HCI2010 - 온라인 게임과 넥스트 젠 애니메이션Jubok Kim
 
Project anarchy로 3d 게임 만들기 part_3_움직여라 움직여
Project anarchy로 3d 게임 만들기 part_3_움직여라 움직여Project anarchy로 3d 게임 만들기 part_3_움직여라 움직여
Project anarchy로 3d 게임 만들기 part_3_움직여라 움직여Dong Chan Shin
 
NDC 2011 영웅전 런칭팀 박영준
NDC 2011 영웅전 런칭팀 박영준NDC 2011 영웅전 런칭팀 박영준
NDC 2011 영웅전 런칭팀 박영준영준 박
 
유니티 - 트랜스폼, 리지드바디, 찾기, 생성하기, 충돌, 트리거
유니티 - 트랜스폼, 리지드바디, 찾기, 생성하기, 충돌, 트리거유니티 - 트랜스폼, 리지드바디, 찾기, 생성하기, 충돌, 트리거
유니티 - 트랜스폼, 리지드바디, 찾기, 생성하기, 충돌, 트리거주형 고
 
Port polio게임소개
Port polio게임소개Port polio게임소개
Port polio게임소개Seo YoungHoon
 
Du room system_portfolio
Du room system_portfolioDu room system_portfolio
Du room system_portfolio진영 최
 
Port polio게임 소개
Port polio게임 소개Port polio게임 소개
Port polio게임 소개Seo YoungHoon
 
2 D게임 프로그래밍 발표 자료
2 D게임 프로그래밍 발표 자료2 D게임 프로그래밍 발표 자료
2 D게임 프로그래밍 발표 자료Lee Jungmin
 
Unity cookbook 9
Unity cookbook 9Unity cookbook 9
Unity cookbook 9Jihun Soh
 
레이더즈 기술 사례
레이더즈 기술 사례레이더즈 기술 사례
레이더즈 기술 사례기룡 남
 
Project Anarchy(Vision Engine)으로 게임 툴 만들기! part2
Project Anarchy(Vision Engine)으로 게임 툴 만들기! part2Project Anarchy(Vision Engine)으로 게임 툴 만들기! part2
Project Anarchy(Vision Engine)으로 게임 툴 만들기! part2진상 문
 
[데브루키] 유니티와 Play maker를 이용한 쉽고 빠른 게임 개발
[데브루키] 유니티와 Play maker를 이용한 쉽고 빠른 게임 개발[데브루키] 유니티와 Play maker를 이용한 쉽고 빠른 게임 개발
[데브루키] 유니티와 Play maker를 이용한 쉽고 빠른 게임 개발MinGeun Park
 
01 액션스크립트기초
01 액션스크립트기초01 액션스크립트기초
01 액션스크립트기초Ansan University
 
MMOG Server-Side 충돌 및 이동처리 설계와 구현
MMOG Server-Side 충돌 및 이동처리 설계와 구현MMOG Server-Side 충돌 및 이동처리 설계와 구현
MMOG Server-Side 충돌 및 이동처리 설계와 구현YEONG-CHEON YOU
 
유니티 UI - 텍스트, 버튼, 이미지, 씬 이동
유니티 UI - 텍스트, 버튼, 이미지, 씬 이동유니티 UI - 텍스트, 버튼, 이미지, 씬 이동
유니티 UI - 텍스트, 버튼, 이미지, 씬 이동주형 고
 
Aug 17th, 2023: Case Studies - Examining Gamification through Virtual/Augment...
Aug 17th, 2023: Case Studies - Examining Gamification through Virtual/Augment...Aug 17th, 2023: Case Studies - Examining Gamification through Virtual/Augment...
Aug 17th, 2023: Case Studies - Examining Gamification through Virtual/Augment...ssuser4b1f48
 
NDC 2010 이은석 - 마비노기 영웅전 포스트모템 2부
NDC 2010 이은석 - 마비노기 영웅전 포스트모템 2부NDC 2010 이은석 - 마비노기 영웅전 포스트모템 2부
NDC 2010 이은석 - 마비노기 영웅전 포스트모템 2부Eunseok Yi
 
2D RPG 개발 이론 + 티뮤리티 개발 포스트모템
2D RPG 개발 이론 + 티뮤리티 개발 포스트모템2D RPG 개발 이론 + 티뮤리티 개발 포스트모템
2D RPG 개발 이론 + 티뮤리티 개발 포스트모템WooSung Jeon
 
상속 관련 이것저것
상속 관련 이것저것상속 관련 이것저것
상속 관련 이것저것EG Lim
 

Similar a 행동 기반 게임오브젝트 (20)

NDC 2014 Beyond Code: <야생의 땅:듀랑고>의 좌충우돌 개발 과정 - 프로그래머가 챙겨주는 또 다른 개발자 사용 설명서
NDC 2014 Beyond Code: <야생의 땅:듀랑고>의 좌충우돌 개발 과정 - 프로그래머가 챙겨주는 또 다른 개발자 사용 설명서NDC 2014 Beyond Code: <야생의 땅:듀랑고>의 좌충우돌 개발 과정 - 프로그래머가 챙겨주는 또 다른 개발자 사용 설명서
NDC 2014 Beyond Code: <야생의 땅:듀랑고>의 좌충우돌 개발 과정 - 프로그래머가 챙겨주는 또 다른 개발자 사용 설명서
 
HCI2010 - 온라인 게임과 넥스트 젠 애니메이션
HCI2010 - 온라인 게임과 넥스트 젠 애니메이션HCI2010 - 온라인 게임과 넥스트 젠 애니메이션
HCI2010 - 온라인 게임과 넥스트 젠 애니메이션
 
Project anarchy로 3d 게임 만들기 part_3_움직여라 움직여
Project anarchy로 3d 게임 만들기 part_3_움직여라 움직여Project anarchy로 3d 게임 만들기 part_3_움직여라 움직여
Project anarchy로 3d 게임 만들기 part_3_움직여라 움직여
 
NDC 2011 영웅전 런칭팀 박영준
NDC 2011 영웅전 런칭팀 박영준NDC 2011 영웅전 런칭팀 박영준
NDC 2011 영웅전 런칭팀 박영준
 
유니티 - 트랜스폼, 리지드바디, 찾기, 생성하기, 충돌, 트리거
유니티 - 트랜스폼, 리지드바디, 찾기, 생성하기, 충돌, 트리거유니티 - 트랜스폼, 리지드바디, 찾기, 생성하기, 충돌, 트리거
유니티 - 트랜스폼, 리지드바디, 찾기, 생성하기, 충돌, 트리거
 
Port polio게임소개
Port polio게임소개Port polio게임소개
Port polio게임소개
 
Du room system_portfolio
Du room system_portfolioDu room system_portfolio
Du room system_portfolio
 
Port polio게임 소개
Port polio게임 소개Port polio게임 소개
Port polio게임 소개
 
2 D게임 프로그래밍 발표 자료
2 D게임 프로그래밍 발표 자료2 D게임 프로그래밍 발표 자료
2 D게임 프로그래밍 발표 자료
 
Unity cookbook 9
Unity cookbook 9Unity cookbook 9
Unity cookbook 9
 
레이더즈 기술 사례
레이더즈 기술 사례레이더즈 기술 사례
레이더즈 기술 사례
 
Project Anarchy(Vision Engine)으로 게임 툴 만들기! part2
Project Anarchy(Vision Engine)으로 게임 툴 만들기! part2Project Anarchy(Vision Engine)으로 게임 툴 만들기! part2
Project Anarchy(Vision Engine)으로 게임 툴 만들기! part2
 
[데브루키] 유니티와 Play maker를 이용한 쉽고 빠른 게임 개발
[데브루키] 유니티와 Play maker를 이용한 쉽고 빠른 게임 개발[데브루키] 유니티와 Play maker를 이용한 쉽고 빠른 게임 개발
[데브루키] 유니티와 Play maker를 이용한 쉽고 빠른 게임 개발
 
01 액션스크립트기초
01 액션스크립트기초01 액션스크립트기초
01 액션스크립트기초
 
MMOG Server-Side 충돌 및 이동처리 설계와 구현
MMOG Server-Side 충돌 및 이동처리 설계와 구현MMOG Server-Side 충돌 및 이동처리 설계와 구현
MMOG Server-Side 충돌 및 이동처리 설계와 구현
 
유니티 UI - 텍스트, 버튼, 이미지, 씬 이동
유니티 UI - 텍스트, 버튼, 이미지, 씬 이동유니티 UI - 텍스트, 버튼, 이미지, 씬 이동
유니티 UI - 텍스트, 버튼, 이미지, 씬 이동
 
Aug 17th, 2023: Case Studies - Examining Gamification through Virtual/Augment...
Aug 17th, 2023: Case Studies - Examining Gamification through Virtual/Augment...Aug 17th, 2023: Case Studies - Examining Gamification through Virtual/Augment...
Aug 17th, 2023: Case Studies - Examining Gamification through Virtual/Augment...
 
NDC 2010 이은석 - 마비노기 영웅전 포스트모템 2부
NDC 2010 이은석 - 마비노기 영웅전 포스트모템 2부NDC 2010 이은석 - 마비노기 영웅전 포스트모템 2부
NDC 2010 이은석 - 마비노기 영웅전 포스트모템 2부
 
2D RPG 개발 이론 + 티뮤리티 개발 포스트모템
2D RPG 개발 이론 + 티뮤리티 개발 포스트모템2D RPG 개발 이론 + 티뮤리티 개발 포스트모템
2D RPG 개발 이론 + 티뮤리티 개발 포스트모템
 
상속 관련 이것저것
상속 관련 이것저것상속 관련 이것저것
상속 관련 이것저것
 

행동 기반 게임오브젝트

  • 1. 행동 기반 게임오브젝트 (action based game object) 박성준 (notorz@hotmail.com)
  • 5. 소개하려는 것은.. 저는 이렇게 만들었습니다..
  • 6.
  • 7. 행동 기반 게임오브젝트란? • 컴포넌트 기반 게임오브젝트의 일종 • 기존 컴포넌트를 컴포넌트, 컨트롤러, 액션으로 나누어 구현 • 컴포넌트끼리의 의존도↓, 코드의 재활용↑ • 여러 컴포넌트에 접근해야 하는 복잡한 처리도 간단하게 구현 일단 포장부터...
  • 8. 그 중에서도 가장 중요한 것은 행동 기반 게임오브젝트 = 기본적으로 컴포넌트 기반
  • 9. 아주 조금 다를 뿐입니다. 행동 기반 게임오브젝트 기존의 컴포넌트 기반 게임오브젝트
  • 10.
  • 11. 처음 다닌 게임회사 그리고 첫 게임
  • 12. Rakion의 게임 오브젝트는.. 이미 서비스중인 게임인 만큼, 굉장히 많이 만들어져 있었고, 컴포넌트 기반 게임오브젝트의 거의 모 든 강연에서 나온 계층구조 설계의 거의 모든 문제점들이 발생하고 있는 상황이었습니다. KASA2008, 김성헌님의 C++ Component System GDC2009, Game Object Component Architecture
  • 13. 게임 오브젝트여 당신은 누구시길래..
  • 14. 게임 오브젝트란? 캐릭터 • 플레이어, 몬스터 등 캐릭터 레벨 지형 • 캐릭터가 서있는 지형 • 바위, 나무, 건물 등 배경 오브젝트 오브젝 발사체 프랍 • 함정, 회복아이템 등 트리거 트 • 미사일, 수류탄, 파편 등 • 카메라, 광원 등 카메라 트리거 광원
  • 15. 게임 오브젝트란? 캐릭터 레벨 지형 오브젝트 상호작용 오브젝 발사체 프랍 트 오브젝트 카메라 트리거 오브젝트 광원 게임 = 게임 오브젝트 사이의 상호작용
  • 16.
  • 17. 새로운 프로젝트 시작! 방을 만들고 들어가서 다른 유저들과 몬스터를 잡고 노는 MO Action RPG를 만들게 되었습니다. 총 도 쏘고 칼도 휘두르고 물약도 먹고 같이 공격해주거나 회복시켜주는 기계도 소환하고..
  • 18. 때가 왔다! 엑셀은 밟을 수 없어도 핸들만은 놓치지 않겠어!
  • 19. 그래서 게임오브젝트를.. 엑셀은 밟을 수 없어도 핸들만은 놓치지 않겠어!
  • 26. 당시 사용했던 구조 컨트롤러에서 게임오브젝트에 명령을 주고, 게임오브젝트가 명령을 받으면 액션을 실행합니다. 액션 은 모델과 데이터, 게임오브젝트(위치, 회전 등)를 조작합니다. 모델 조종 데이터 행동
  • 27. 컨트롤 러 오브젝 트 모델/ 액션 데이터
  • 28. 컨트롤 조건 검사 러 오브젝 트 모델/ 액션 데이터
  • 29. 컨트롤 조건 검사 러 액션 명령 오브젝 트 모델/ 액션 데이터
  • 30. 컨트롤 조건 검사 러 액션 명령 액션 명령 다른 오브젝트 오브젝 트 모델/ 액션 데이터
  • 31. 컨트롤 조건 검사 러 액션 명령 액션 명령 다른 오브젝트 오브젝 명령에 맞는 액션 실행 트 모델/ 액션 데이터
  • 32. 컨트롤 조건 검사 러 액션 명령 액션 명령 다른 오브젝트 오브젝 명령에 맞는 액션 실행 트 모델/ 액션 데이터 데이터 업데이트 / 기능 수행
  • 34. 오브젝트 액션 명령 엑티브 액터
  • 35. 오브젝트 액션 명령 엑티브 액터 명령에 연결된 액션 서다 달리다 때리다 맞다 죽다
  • 36. 오브젝트 액션 명령 엑티브 액터 명령에 연결된 액션 서다 달리다 때리다 맞다 죽다
  • 38. 플레이어 캐릭터 플레이어 캐릭터는 유저의 컨트롤(실제 입력, 네트워크)과 시나리오의 흐름에 영향을 받고, 검과 총 두 가지 의 무기를 사용하여 몬스터를 사냥합니다. 따라서 무기를 체인지하면 행동패턴이 달라집니다. UserInputControl ScenarioControl RemoteControl Local인 경우 Remote인 경우 검 Actor 총 Actor 활성화
  • 39. 플레이어 캐릭터 플레이어 캐릭터는 유저의 컨트롤(실제 입력, 네트워크)과 시나리오의 흐름에 영향을 받고, 검과 총 두 가지 의 무기를 사용하여 몬스터를 사냥합니다. 따라서 무기를 체인지하면 행동패턴이 달라집니다. UserInputControl ScenarioControl RemoteControl Local인 경우 Remote인 경우 검 Actor 총 Actor 활성화
  • 40. 회의 중 좀비는 왜 느 그래도 좀비는 린게 컨셉이 걸어서 다가오 지? 무섭지 않 는게 매력이 자나! 있다구!
  • 41. 회의 중 그럼 뛰어다니 그럼 처음엔 게 만들면 되 걷다가 특정 지! 그런 좀비 조건이 만족되 영화 많자나! 면 뛰자!
  • 42. 좀비 몬스터 처음에는 느리게 걸어 다니면서 몽둥이를 휘두르지만, 데미지를 받아 HP가 30% 이하가 되고 특정 조건이 만 족되면 다리가 떨어지면서 팔로 엄청 빠르게 이동을 하고 점프를 하여 입으로 물어뜯는 공격을 합니다. AIControl 몬스터기본공격 몬스터기본이동 Actor 공격 이동 데이터1 데이터2 Model1 Model2 변신 전
  • 43. 좀비 몬스터 처음에는 느리게 걸어 다니면서 몽둥이를 휘두르지만, 데미지를 받아 HP가 30% 이하가 되고 특정 조건이 만 족되면 다리가 떨어지면서 팔로 엄청 빠르게 이동을 하고 점프를 하여 입으로 물어뜯는 공격을 합니다. AIControl Actor 공격 이동 좀비상체이동 좀비물어뜯기공격 데이터1 데이터2 Model1 Model2 변신 후
  • 45. 바깥세상은 어떤 곳일 까.. 컴포넌트가 뭔지 몰랐습니다..
  • 46. 컴포넌트 기반으로 게임오브젝트를 만들면 좋데! 오후 4시 30분에 여기에서 발표합니다. 많이 참석해주세요!! 컴포넌트?!
  • 47. 하지만 이미 프로젝트는 마무리 단계..
  • 48.
  • 49. 다시 새로운 프로젝트 시작! 원작의 유명 대전 격투 게임을 RPG로 재탄생 시킨 사무라이쇼다운 온라인은 Full 3D타입의 쾌적하 고 전략성 있는 전투를 추구하며 원작의 방대한 세계관을 그대로 즐길 수 있는 게임입니다.
  • 50. 지금이다!! 컴포넌트! 나도 이 녀석으로 게임오브젝트를 만들어보자!
  • 51. 컴포넌트 기반 게임 오브젝트의 형태 게임 오브젝트는 기본적인 데이터만을 가지고 있고, 모든 데이터와 기능은 컴포넌트로 만들어서 게임오브젝 트에 붙이는 형태입니다. 오브젝트의 형태별로 필요한 기능만을 가질 수 있도록 설계된 방식입니다. ModelComponent MotionTreeComponent HealthComponent 오브젝 TouchComponent AIComponent 트 MoveableComponent PhysicsComponent TargetableComponent
  • 52. 하지만 역시 쓰던 것이 편하나 봅니다...
  • 53. 저는 이런 부분들이 불편했어요 잘 알진 못하지만.. • 컴포넌트가 다른 컴포넌트를 참조하고 수정하는 경우 • 하나의 일을 여러 컴포넌트가 복잡적으로 처리해야 하는 경우 • 사실 이렇게 페이지를 하나 쓸 만큼 나쁜 점이 많지 않아요..
  • 55.
  • 56. 오브젝트에 액션 명령 오브젝트가 가지고 있는 기본적인 기능/데이터들 배경 투명으로 어떻게 만드나요.. 오브젝트가 명령에 따라 취해야 하는 액션
  • 57. 컨트롤러 오브젝트에 액션 명령 컴포넌트 오브젝트가 가지고 있는 기본적인 기능/데이터들 배경 투명으로 어떻게 만드나요.. 액션 오브젝트가 명령에 따라 취해야 하는 액션
  • 58. 컨트롤러 UserInputController AIController RemoteController 컴포넌트 ModelComponent 오브젝 HealthComponent 트 MoveDataComponent TargetableComponent Drop 액션 Idle ActionTable Struck Move Attack Touch
  • 59. 컨트롤 러 오브젝 트 컴포넌 액션 트
  • 60. 컨트롤 조건 검사 러 오브젝 트 컴포넌 액션 트
  • 61. 컨트롤 조건 검사 러 액션 명령 오브젝 트 컴포넌 액션 트
  • 62. 컨트롤 조건 검사 러 액션 명령 액션 명령 다른 오브젝트 오브젝 트 컴포넌 액션 트
  • 63. 컨트롤 조건 검사 러 액션 명령 액션 명령 다른 오브젝트 오브젝 명령에 맞는 액션 실행 트 컴포넌 액션 트
  • 64. 컨트롤 조건 검사 러 액션 명령 액션 명령 다른 오브젝트 오브젝 명령에 맞는 액션 실행 트 컴포넌 액션 트 데이터 업데이트 / 기능 수행
  • 65. 행동 기반 게임오브젝트 구조 컨트롤러에서 게임오브젝트에 명령을 주고, 게임오브젝트가 명령을 받으면 액션을 실행합니다. 액션 은 컴포넌트, 게임오브젝트(위치, 회전 등)를 조작합니다.
  • 67. 컴포넌트 • 독립적인 하나의 기능 • 어떠한 일을 하기 위해 쓰이는 데이터 • 여러 게임 오브젝트에 붙어 각각의 고유한 기능을 수행 • 다른 컴포넌트나 게임오브젝트를 수정하지 않음
  • 69. 공통 클라이언트 컴포넌트 베이스 서버
  • 70. 컨트롤러 • 게임 오브젝트에 액션 명령 • 활성화 / 비활성화가 가능 • 컴포넌트나 게임오브젝트를 수정하지 않음 • 게임 오브젝트 자체에서 발생되는 액션을 명령
  • 72. 공통 클라이언트 컨트롤러 베이스 서버
  • 73. 액션 • 게임오브젝트가 해야 하는 어떠한 일 • 컴포넌트나 게임오브젝트를 실제로 수정함 • 액션 명령을 받으면 명령에 연결된 액션을 실행 • 게임오브젝트는 한번에 여러 개의 액션 실행 가능
  • 75. 공통 클라이언트 서버 액션 베이스
  • 76. 액션 명령 • 액션을 실행시키기 위한 명령 • 게임오브젝트는 액션 명령을 받고 연결된 액션을 실행 • 액션을 실행하는데 사용되는 데이터는 명령에 따라 달라 짐 • 액션 명령은 ActionBase 를 직접 상속받은 객체의 RTTI 를 이용
  • 77. 편의를 위해 매크로를 사용 ActionBase 직접 상속 액션 명령 선언 액션 명령 정의 ActionBase 직접 상속 X
  • 78. 매크로의 형태 액션 명령 ID 데이터 ActionBase 직접 상속만 허용 RTTI를 사용
  • 79. 액션 테이블 • 게임 오브젝트가 할 수 있는 액션들의 모음 • 액션 명령에 액션을 연결하여 저장 • 게임 오브젝트는 여러 개의 액션 테이블을 가짐 • 액션 테이블에는 레벨이 존재하여 활성화된 액션 테이블 중 레벨이 높은 것부터 액션 명령을 검사
  • 80. 액션 테이블의 형태 레벨이 높은 액션 테이블부터 실행할 액션 검사 액션 연결 활성화/비활성화
  • 81. 액션 레이어 • 게임오브젝트는 액션 레이어를 통해 액션을 실행 • 액션의 시작부터 끝까지를 관리 • 레이어 개념으로 액션을 실행하여 한번에 여러 개의 액 션을 실행시킴
  • 82. 액션 레이어의 형태 액션 실행 액션을 실행시킬 레이어
  • 83. 게임 오브젝트 구성 예시 플레이어 캐릭터의 이동을 간단하게 만들어 봅시다
  • 84. UserInputController ModelComponent 오브젝트 ActionTable ActionLayer Idle - CharacterIdle
  • 85. 입력 X 실행 중 액션 X UserInputController Idle 명령 ModelComponent 오브젝트 ActionTable ActionLayer Idle - CharacterIdle
  • 86. 입력 X 실행 중 액션 X UserInputController Idle 명령 ModelComponent 오브젝트 Idle 명령에 연결된 액션 검색 ActionTable ActionLayer Idle - CharacterIdle
  • 87. 입력 X 실행 중 액션 X UserInputController Idle 명령 ModelComponent 오브젝트 Idle 명령에 연결된 액션 검색 ActionTable ActionLayer CharacterIdle 실행 Idle - CharacterIdle
  • 88. 입력 X 실행 중 액션 X UserInputController Idle 명령 ModelComponent 오브젝트 Idle 명령에 연결된 액션 검색 ActionTable ActionLayer CharacterIdle 실행 Idle - CharacterIdle CharacterIdle Idle 애니메이션 재생
  • 89. UserInputController ModelComponent 오브젝트 ActionTable ActionLayer Idle - CharacterIdle CharacterIdle
  • 90. UserInputController ModelComponent MoveDataComponent 오브젝트 ActionTable ActionLayer Idle - CharacterIdle CharacterIdle MoveToPosition - CharacterMoveToPosition
  • 91. 이동할 위치 클릭 UserInputController MoveToPosition 명령 ModelComponent MoveDataComponent 오브젝트 ActionTable ActionLayer Idle - CharacterIdle CharacterIdle MoveToPosition - CharacterMoveToPosition
  • 92. 이동할 위치 클릭 UserInputController MoveToPosition 명령 ModelComponent MoveDataComponent 오브젝트 MoveToPosition 명령에 연결된 액션 검색 ActionTable ActionLayer Idle - CharacterIdle CharacterIdle MoveToPosition - CharacterMoveToPosition
  • 93. 이동할 위치 클릭 UserInputController MoveToPosition 명령 ModelComponent MoveDataComponent 오브젝트 MoveToPosition 명령에 연결된 액션 검색 ActionTable ActionLayer CharacterMoveToPosition 실행 Idle - CharacterIdle CharacterIdle MoveToPosition - CharacterMoveToPosition
  • 94. 이동할 위치 클릭 UserInputController MoveToPosition 명령 ModelComponent MoveDataComponent 오브젝트 MoveToPosition 명령에 연결된 액션 검색 ActionTable ActionLayer CharacterMoveToPosition 실행 Idle - CharacterIdle CharacterIdle CharacterMoveToPosition MoveToPosition - CharacterMoveToPosition
  • 95. 이동할 위치 클릭 UserInputController MoveToPosition 명령 ModelComponent MoveDataComponent 오브젝트 MoveToPosition 명령에 연결된 액션 검색 ActionTable ActionLayer CharacterMoveToPosition 실행 Idle - CharacterIdle CharacterMoveToPosition MoveToPosition - CharacterMoveToPosition
  • 96. 이동할 위치 클릭 UserInputController MoveToPosition 명령 ModelComponent MoveDataComponent 오브젝트 MoveToPosition 명령에 위치 값 설정 연결된 액션 검색 이동속도 ActionTable ActionLayer 참조 CharacterMoveToPosition 실행 Idle - CharacterIdle CharacterMoveToPosition MoveToPosition - CharacterMoveToPosition
  • 97. UserInputController ModelComponent MoveDataComponent 오브젝트 ActionTable ActionLayer Idle - CharacterIdle MoveToPosition - CharacterMoveToPosition
  • 100. Q&A
  • 101. 감사합니다 박성준 notorz@hotmail.com