48. 게임 오브젝트와 네트워크 통신
Server
NPC1 Player1 NPC2
Server Server
Server
Object Object
Object
Client Client Client Client Client Client
Object Object Object Object Object Object
NPC1 Player1 NPC2 NPC1 Player1 NPC2
Client Client
49. NPC1 Player1 NPC2
Server Server
Server
Object Object
Object
Server
Base
50. NPC1 Player1 NPC2
Server Server
Server
Object Object
Object
Server
Base
51. NPC1 Player1 NPC2
ID : 0 ID : 1 ID : 2
Server Server
Server
Object Object
Object
Server
Base
52. NPC1 Player1 NPC2
ID : 0 ID : 1 ID : 2
Server Server
Server
Object Object
Object
Server
Base
Client
Base
53. NPC1 Player1 NPC2
ID : 0 ID : 1 ID : 2
Server Server
Server
Object Object
Object
Server
Base
Client
Base
Client Client Client
Object Object Object
ID : 0 ID : 1 ID : 2
NPC1 Player1 NPC2
54. NPC1 Player1 NPC2
ID : 0 ID : 1 ID : 2
Server Server
Server
Object Object
Object
Server
Base
Client
Base
Client Client Client
Object Object Object
ID : 0 ID : 1 ID : 2
NPC1 Player1 NPC2
55. NPC1 Player1 NPC2
ID : 0 ID : 1 ID : 2
Server Server
Server
Object Object
Object
Server
Base
Client
Base
Client Client Client
Object Object Object
ID : 0 ID : 1 ID : 2
NPC1 Player1 NPC2
56. 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 Object
ID : 0 ID : 1 ID : 2 ID : 0 ID : 1 ID : 2
NPC1 Player1 NPC2 NPC1 Player1 NPC2
57. 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 Object
ID : 0 ID : 1 ID : 2 ID : 0 ID : 1 ID : 2
NPC1 Player1 NPC2 NPC1 Player1 NPC2
59. Action과 Message를 연결
Message가 ServerObject/ClientObject에 도착하면 연결된 Action 실행
Network
Action
Manager
생성
Server/ 함수
Client Action
Object
Network - OnRecv
60. 메시지ID + 데이터 타입
메시지에서 사용할 데이터 형식 메시지 타입
선언한 순서로
메시지ID 할당
버퍼에 데이터 넣기
버퍼에서 데이터 꺼내기
61. 액션 실행을 위한 네트워크로 받은
메시지를 받은 엔터티
함수포인터 메시지 버퍼
ServerObject와 연결 ClientObject와 연결
62.
63.
64. 액션과 네트워크 통신의 연결
메시지와 Action의 연결 선언
메시지와 Action의
데이터가 같아야만
컴파일이 된다
메시지와 Action의 연결 정의
77. Entity
Script Controller 정보
Controller
Manager lua_state에 입력
Entity별로
lua table과
lua thread 생성
Controller의 owner로 Controller Instance
EntityWrapper 생성 후 lua table 생성하여
Controller Instance Controller userdata와 연결
lua table에 “owner” Set
83. 어떻게?!
Game Animation Physics Rendering Audio
Loop
84. Set up
Thread1
Game Thread2
Thread0 Thread3
Loop
Process
Result
85. 현재 구조를 보면…
• Controller는 Owner가 가지고 있는 것만 접근
-> Owner의 Component / Controller
• 다른 Entity에는 DoAction으로 할 일 전달
• Entity별로 Controller들 업데이트
Entity별로 Action Queue 처리
Component별로 업데이트
86. 다시 정리해보면
• Entity는 다른 Entity에 직접 접근 X
• Component는 다른 Component에 직접 접근 X
• Entity별로 Controller들 업데이트
Entity별로 Action Queue 처리
Component별로 업데이트
88. Set up
Thread1 Thread2
Thread0 Thread3 Controller
Set up
Thread0 Thread2
Game Thread1 Thread3 Action
Loop
Set up
Thread1
Thread0 Thread2 Thread3 Component
Process
Result