-
Notifications
You must be signed in to change notification settings - Fork 10
/
0209.txt
230 lines (230 loc) · 15.9 KB
/
0209.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
음 오늘은 진짜 오랜만에 유니티 되어 서로 얘기를 하려구요
예 제가 뭐 이 튜토리얼을 하는건 아니고
예티 에 보면 이제 처음 사람들이 유니트 일까
굉장히 많은 사람들이 유니티를 처음엔 지대로 접하고 있고
유니티가 게임 엔진의 루프를 구성하는 방법에 대해 조금씩 뭐가 좀 좀
복잡하다
이상하다 이렇게 느끼시는 분들이 있어요 그래서
그냥 좀 이게 왜 이렇게 이런 일이 일어나는 설명 드리고 싶어요
사실 유니티에서 게임 오브젝트 라고 하는 것은
오브젝트 아니에요 그래서 이게 사실은 그냥 그 뭐랄까 이름표 라고 하죠
컨테이너 이름표 해요 그러니까 어디부터 얘기라면 좋냐 며 는 예전에
게임을 어떻게 만들었는지
예전에 일단 저희 게임만 때는 주로 이랬어요
op 개념에서 예를 들어서
사람 클래스를 만들어요 뭐 캐릭터
사람이라도 캐릭터 라고 하죠 캐릭터로 만들어요 그러면 이 클래스 에서 이
클래스 일부인 게 뭐냐면 사람도 캐릭터일 수가 있어요 그 플레이어 라고
하죠 플레이어도 있고 ai 도 있어요 그저 am mpc 같은경우 그럼
이게 둘다 캐릭터 상속을 받아요 그리고 이제 플레이어는
뭐 뭐 뭐라 그럴까
그 디직스 의 같은 1 물리 법칙이 들어간다고 얘기를 하죠 일단은 mbc
안들어가고 그러면은
어 그러면 나는 이 캐릭터가 피직스 가 필요하니까
그리고 다른 캐릭터들도 직사 필요할 수도 있잖아요 그러면 이 캐릭터에서
피직스 캐릭터를 만들고 그 피직스 를 받는 캐릭터에서 사람을 만드는
거에요 그쵸 플레이어를
그럼 mpc 는 만들 때는 91 물리아 법칙 느끼 싫으니까 그냥 캡처
상속을 받을래
그래서 이렇게 나왔어요 4 게임을 만들다 보니까 어느 순간 뭔가
119
물리를 집어 넣을 것 같애 그러면 op.3 솟구치는 어떻게 해요
보면은 음 아 mp3 없다가 이제 플레이어 하구 옆에 파루 옆에 그 아까
있죠
그 빅스 캐릭터 있던데 거기 가면 되겠구나
그 눈은 거에요
근데 이걸 하려면 은 후치 이걸로 물리법칙을 놓여있다 말겠다 라는 그
결정은 예전에는 프로그램은 목 이었죠 게임 기획자가 별로 많지 않았던
시절이 니까
요즘 게임 기획자 그런것들은 많이 바꾸고 싶잖아요 바꾸고 싶을 때마다
프로그래머가 클래스 구조를 바꿔야 코딩을 바꾸고 컴파일을 다시 해서 툴을
줘야 되는 거에요
얼마나 복잡해요 그래서 아 이거 를 왜
너무 프로그래머의 막히는 경우가 많다
그래서 2005년 쯤인가 게임 프로그램 제우스를 통해 소개된 그런 내용
중에
컴포넌트 기반 게임 오브젝트 하는 개념이 있어요
이게 뭐냐면 뭐 상속은 상승 아니라 ops 보면은 상속이 있고 아니면
컴포넌트 컴포지트 되는거죠
컴포지션 이 있다 라고 한데 그 컴패션 패턴인데
이 개념 뭐냐면 그 이런 사적 부적을 따 없는 거에요 아예 아예 없는
거예요 그래서 저는 내가 두다 라는 이름 태그만 있는거예요
그 id 라고 하죠 거냐 그 다음에 그걸 게임 오브젝트 라고 유이 채점
풀어요
내 아이디는 뭐야 어 게임 오브젝트 이름은 어 일어서 뭐 아까 말해
플레이어 그저 뭐야 이게 아는것은 플레이어가 전부에요
그러면 오옷 플레이어 인데 나는 리치가 있어야 돼 그러면 아 그래 미치는
나는 엔티티 컴포넌트 컴포넌트 하게 그냥 톱 이라고 생각하시면 되요
nt 컴포넌트 라는게 있어 이 컴포넌트는
그냥 xy 제트 위치하고 뭐 찬스 포메이션이 까 스케일이 라던가 가 확장
축소 회전 값을 정의하고 있는 플로네 9개가 전부에요
그러면 어떤 오브젝트들을 딱 뭐 원래 그 그 논문 이라고 해야 하는 그
기사에서 나왔던 내용은 이 컴포넌트가
내가 어떤 오브젝트에 속해 있는 줄 알아요
그러니까 까이 컨퍼런스 위쪽과 엔티티 이걸 만들면서 아다는
엔티티 idn gta 가 아니라 오브젝트 id 플레이어의 속해 있어 라고
딱 태가 달려 있는 거예요
그리고 이 게임 엔진의 는 이런 컴포넌트가 큰 무수하게 많은 거에요
물론 컴포넌트는 어떤 부모 4 불어도 상속 한번 받겠죠 그리고 이제 그냥
배열에 같이 박아놓고
여기 엔티티는 2 플레이어 원용 이해진 플레이어 토 용이해 있을
플레이어스 리어 이런식 하는거예요 그래서 엔티티 엄청 많아요
어나는 화면에 그림을 그려야 돼 그러면 이제 위의 t 에서는 메쉬 랜드로
컴포넌트가 있죠
내쉬 랜드로 컴포넌트 한게 뭐냐 며 씨가 갖고 있고요 못해 t 셔 테리어
같은걸 컬러 탈 수 있고
똑같은 개념을 똑같아요 그래 나 새로운 메시 걸 만들어서
나는 누구 메쉬 거 아 플레이어 온것 그걸 플레이온 이 있고 아까처럼
배열에 박해는 의 전부에요
거기다 아까 피직스 이겠죠 그럼 피직스 하나 만드는 거에요 나는 요런
오이 안일어 내가 하지 뭐
모미지 드 바디 피직스 다 그럼 유지 더 dex 가 있고 내가 딸을
가지고 있는게 누구냐
그리고 뭐 내가 만약에 헬스를 가지고 있는 거면 뭐
hp 컴포넌트 갈 수도 있고 내가 만약에
뭐라 그럴까
le 아이를 가져야 한다 그러면 내 ai 가 도망가는 거에요 그럼 뭐
런어웨이 컴포넌트 만들어서 ai 컴퍼넌트 로 바꿀 수 있고
그리고 얘는 그냥 아까 말지 오브젝트는 나는 누구요 라는 것만 있고 실제
쥬디 걸을 예전에 한번 학교다닐때 구현을 해서 거니 전 5년 정도의 그래
재밌어 보여서 제가 그때 씨를 갔었는데 그때 저는 오브젝트가 그냥 인테
중 하나였어요 id 해시 코드 1
그 전부 였어요 그리고 컴포넌트는 아까 말한대로 o 클래스 인데
이제 그런 식으로 안되어서 배열에 박았고 짝 돌리는거 고
재밌는거 는 이제 이제 여기서 재밌는게 들어오는 거예요 이게 왜 좋냐
이 컴포넌트가 미리 만들어놓고 거기에 대입할 수 있는 값들 있잖아요
프로퍼티 라던가 뭐 16대 처음 위치가 어디냐 xy 제트 이런거 그런거
만일 팀을 강하게 한다면은 프로그래머의 도움이 없이도
디자이너가 알아서 이걸 다 조합할 수 있는 거예요 어 난 이런 플레이어
너만 되고 않아 요번에 펠릭스를 놓고 싶어 피직스 있고 아 그래 얘는
이거 가져 이거 놓고 적어놓고
mpc 가 식스 가 없어 내 트위터 이렇게 타고 그런 갖다 놓으면 되는
거에요 그쵸
서로 연결해 주면 되는거 새로 만들어서 그래서 디자이너에게 게임을 쉽게
바꿀 수 있는 것을 주겠다고 만든 게이 거였고
저희가 스페이스마린 해서 실제로는 씨를 답장 코드 지만 거기서도 유닛
했었구요
거기서 저희 똑같은 방식으로 실제 모든 오브젝트 관리 했고요
그가 2005년도부터 는 되게 많은 회사가 그렇게 했어요 유니티는
이걸 한 이유가 말 그대로
그 디자이너들도 게임 할 수 있다 라는걸 하기 위해서 고
그리고 유니티는 이제 시샵 기반 이기 때문에 리플렉션 잘 됐거든요
프로퍼티 라는 것이 시간 아 글구 수가 있어요 어차피 잡을
그래서 그걸 유아용 연도 하기도 싫었고 그의 두 가지죠
그게 유니티 커프 로드 시스템이 생겨난 이유 해요
그점 부여 사실 디자이너들이 게임 제가 최석 저 디자이너 라고 말할 때는
게임 기획자들이 에요 제가 한국하고 쓰면 용과 달라서 가끔 헷갈리는데
그렇게 됐고 그래서 이제 이게 사실은
멀티 트레이딩 에도 굉장히 이용한 방법이긴 한데 그거 참다 이렇게
말씀드리고
이 컴플렉스 기반으로 가면서 생기는 문제가 뭐냐
컴포넌트의 통신이 어려워져 요 그 예전에는 예전에 게임 할때는 어떻게
님의 플레이 원의 모든게 들어 있잖아요
그냥 이 앱이 개념의 오브젝트에 그러니까 어 내가 맞았어 그러면 헬스를
바꾸면 되요 - 와
뭐 있어 그럼 이거 업데이트 하면 되요 근데 지금은
아까 말했던 플레이어에서 뭐 맞았다는 그런 모모 피직스 가 있다면 그
c6 컴포넌트는 내가 어떤 컴퍼넌트를 가지고 인 전혀 모르는 거야
2 플레이어 원이 알 수가 없는건 책상을
그래서 나온 개념이 뭐냐면 서로 직접 통신을 죽어도 하지 말아라
그대 시에 이벤트 기반으로 가자 그게 이제 뭐 이니 테드 거는
브로드캐스트 멧세지 라는 그런 함수 있죠 그 거에요
뭐냐면 내가 맞았어 그러면은
에 그저 제가 제 맞았어요 피직스 딱 맞았어요
꼭 내가 맞았어 근데 띡 쓰기 때문에 헬스를 몰라요 그러면 나는 플레이어
원인데
아 헬스 니까
10 뭐 블랙 가 1000원에 맞았소
그리고 총알이 데미지는 뭐 의미야 이런 식으로 해 동안 총 rio 대추도
컴포넌트를
그렇게 딱 브로드캐스트 메시지를 쓰면 은 그 단순하게 말씀드릴게요 뭐
필터링 메카니즘 있잖아
이재 개임 세상에 있는 모든 오브젝트들이 그 모든 컴포넌트 들이 그
매트를 듣고 있는 거예요 그 파라스 메세지를 파는데 5
플레이어 원이 맞아 때 그 예를 들어서 어떤 데이터가 가능하다 그랬죠
헬스 컴포넌트 많이 걸 든다고 해볼게요 hell's 컴포넌트 이 메세지를
아니라 들어요
맞았다 는 메세지를 어 헬스 컴포넌트 션은
없애기 받았어요 어 플레이어 감아서 때 그래 이 플레이가 넘버가 뭐야
플래그원 일에
근데 어 다른 플레이어 텐데 근무시 할래 무셔 넘어가는 거에요 근데 거기
만약에 hell's 컴포넌트가 플레이어 원에서 컨 헬스 컴포넌트가 있다
딱 듣고 5 나다 그러면 뭐 - 5를 감옥 가 맞아 가 많 거에요
내가 했는데 o 헬스가 연구 다비치 5
그런 경우죠 그러면은 전달 또 매일 쏘는 거야 어 헬스가 연구 다비치 아
아니면 뭐 다 죽어야 돼 그러면 뭐 죽여 줘 라는 것이 예수는 왜
플레이어와
그런데 플레이어 메인 클래스 갖다가 어 날 죽이네
그러면 그 죽이는건 뭐 그건 뭐 etf land tms 를 넘었다는
메소드 따른 컴퍼넌트 사면 되는거고
그래서 모든 것은 브로드캐스트 김 아니에요 이제 뭐 그래서
리 티가 브로드캐스트 기반으로 하는게 그 이유에요 그래서 말이야
유니티에서 컴포넌트로 직접 쌕스 하기 시작한다
뭐 잘못한 거야 뭐 어쨌다는 진짜 잘못된 거야 근데 이제
재밌는게 아까지 말씀드렸잖아요 볼트 캐스트 안다고 모든 물체 한테
이게 드려요 빠를 수가 없어요 10 뿔에서 이걸로 만들 때는 ot 말
대신 어떻게 하고 만 어떻게 하고 실제 완벽히 순서 op 로 가는 것보다
제가 만들었을 때는 한 속도 저하는
한 10% 이 싶어 정도의 미만이 어떤걸 기억을 해요 근데 이제
뭐라 그럴까 아무래도 시선 시프터 조금 느린 것도 있고 그리고
의미 젝트 얼마나 많아 시간에 따라 성능 달라지고
이벤트 필터링을 어떻게 따라서 달라지고 그래서 굉장히 최적화 많이
들어가야 되는 부분이죠
그런데 그런데 게임 쪽에서 그 10% 가 그려져야 되고 썼던 이유는
게임 기획자가 이걸 팔리 빨리 바꾸면서 뭐가 테스트할 수 있다는 것
자체가 굉장히 큰 메리트 에요
그러니까 어떤 제품을 만들던 간에 이 트레이시는 10번을 돌리면 두 번
들을 때 보았나요
그럼 여권을 반복할 수록 빨리 반복이 가능 할 수록 포터의 빨리 할수록
좋은 거거든요
그게 강하게 대만 거에요 청능사 상을 약간 문제 잡더라도 이걸 하겠다
똑같은 개념 올해 제 랜더링 해서 라이팅을 베이킹 하지 않는 이고 똑같은
거죠 아트에서 빨리빨리 바꿀 수 있고 볼 수 있고
그거 하는게 차례 베이킹 것 않았다 1시간 2시간 걸리는
그래서 그렇게 갔었고 dat 는 재밌는게
예 그니까 제가 시프 불러 만들 때는 어떤 오브젝트 한테만 벌써 캐스팅한
것도 있고 오브젝트를 쉽게 찾는 복도 있고 이런 여러 개가 있었거든요
그리고 아니면 모 씨 었으니까 함수 이름으로 그냥 브로드캐스트 라는게
아니라 그 이벤트 언제나 이벤트가 있고 고 end 넘으로 입수해서 뽑는
게 전부니까
리플렉션 에 의존하고 있지 않았기 때문에 좀 빠른거 수도 있죠
유니티는 그냥 함수 2 줌을 왜요 브로드캐스트 함수 이름 그리고 페라 m
그러면 그 함수 이름을 가지고 있는 컴포넌트가 다 듣고 아 이거구나
지우자 하자 죽이지 아마 이런거 하는거고
그래서 유니티는
좀 드려요 아직 그 부분이 그래서 굉장히 많은 꼼수가 사실이 있어야 되요
그래서 이제 대표적인게 만약에 제가 예전에 한번 타임 m 에디터로 만든
적이 있어요 화면에 트위터를 접한 라고 말하고 싶을 때
탈 메이터 네타 1 맵 풀어내는 게임 이었나 보다
그때 그래요 개념 상으로는 각 타일을 오브젝트를 만들어 상관 없거든요
만들어 보니까 10 코파 듯이 29 8 20 정도가 넘어가면 엄청 늘어
지는 거예요
2 브로드캐스팅 때문에 그래서 결과적으로는 타임 앤 메이저를 하나
만들어서 그 타일 메이저 가요 오브젝트 구요
그게 이제 차일드 도타 2를 다 지가 만드는 거죠 그런 이벤트는 얘
하나만 될 그리는 것도 연작을 있는 거야
그리고 그 이벤트를 받았고 그 아래를 다 뭐 그 그 다음에 이제 매뉴얼
하게 처리해 주는 거죠 그래서 그런
매니저 클래스 로 그룹을 줘야 될 때가 꽤 많아요 3 그 위에 니트 해석
그런것 좀 신경을 써 줘야 되고 그래서
갑자기 h 의 속도가 만 오브젝트 아마 좀 느려진 다라고 할 때는 두
가지 하나에요
이제 오브젝트가 그리는 메시가 너무 작아서 막 뭐 배 책을 잘 해줄 땐
유니티 아마 지금은 해주는거 되겠냐 내줬지만
예전에 젖에 경우에는 그 그림을 안그래도 업데이트 많은 범 정지 없거든요
그래서 그럼 보드 캐스트 메세지가 오늘 거기서 오는 단점이 있어요 그걸
필터링을 어떻게 해주면 아니라고 생각한 해줘야 되고 네 이제
유니티가 어렵다고 생각하시는 분들은 제가 볼때는 대부분이 컴포넌트
때문이거든요
이게 왜 생겼는지 알고 원칙상 으로 이게 어떻게 작동해야 되는지
물론 저희는 게임을 만들기 때문에 원칙으로 만 가지 않고 많은 해킹을
합니다
성능을 높이기 위해 그래도 원칙이 어떤 거고 그러니 스파게티 코드가
되는걸 잘 나가나요 컴포넌트의 서로 호출하고
이런거 좀 잘 막 어 나야 다 중에 코드 유지가 되게 편해져요 그래서
한번 꼭 말씀을 드리고 싶었고
이제 만약에 이게 궁금하신 분들은 찾아보세요 게임 프로그램이 재밌어요
어딘가 있어요 왜 이게 만들어졌고 어떻게 구조가 됐고
제 기억에 소스 코드 이거 전부터 어딘가에 나왔던 걸로 기억해요
3 혼이 올라 2006년 2005년 2004년 어디 거에요
음 뽑혔습니다 비디오 길어진 것 같아요