-
Notifications
You must be signed in to change notification settings - Fork 10
/
0358.txt
454 lines (454 loc) · 20.5 KB
/
0358.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
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
예 안녕하세요 포프입니다
저는 되게 오랜만에 비디오를 녹화하는 것 같은데
이제 비디오를 계속
만들 목록을 보다 보니까
뭐라 그럴까
예전에는 굉장히 테크 얘기를 할 게 많았는데
요즘 들어 너무 잡소리가 많아지는 것 같아요
근데 잡소리가 많아질수록 뷰 수가 올라가
그래서 아
이게 원래 포프TV를 만든 목적은 아니었는데
그래서 고민하다가
예전에 이제
한참 게임 쪽에서 직군에 대해서
얘기를 계속 할 거라고 얘기를 했어요
근데 이제 그걸 보니까
아직도 남아 있는 직군이 많은 거야
그래서 또 하나 해야겠구나
그래서 하는 거에요
그래서 오늘은 그
프로그래머 직군 중에 네트워크
프로그래머에 대해서 말을 해 볼 거에요
이게 되게 재밌는 건데 사실은
뭐
뭐 책 광고도 같이 해야겠다
제가 만들었던, 제가 썼던
북미취업가이드 2판이 있잖아요
그럼 이제 그거 때문에 사람들이, 게임
프로그래머들이 해외로 취업을 많이 나와요
그러면 과연 이제
한국에서 게임을 만드는 방식과 캐나다 아니면 뭐
미국에서 게임을 만드는 방식을 비교해 봤을 때
한국에서 뛰어난 그래픽 전문
프로그래머가 해외보다 적고
엔진을 많이 쓰는 문화인 것 같기도 하고
아니면은 여전히 MMO 기반이었기 때문에 한동안
DX9, 윈도우XP에 묶여 있어서 그런 걸 수도 있어요
그랬고
그렇게 그래픽을 전문으로 하기보다는 이제
클라이언트 프로그래밍을 전반적으로 하고
그럼 이제 클라이언트 프로그래머들은
그냥 굉장히 많은 거를 다 했죠
뭐 UI도 하고 뭐도 하고 뭐도 하고
그래서 어떤 한 분야의 전문 분야라고 해서
취업을 하기가 좀 애매했어요 어떤 의미에서
할 순 있죠 할 순 있고
프로그래밍만 잘하면 취업은 되는데
그래도 이제 아 이게 내 분야다라고
이렇게 갈 수 있는 게 좀 적기 때문에
대부분 이제 제너럴리스트 프로그래머
한마디로 이것저것 다 하는 프로그래머로 들어가거나
뭐 툴스 프로그래머거나
아님 뭐 게임 플레이 프로그래머 이쪽으로 많이 했죠
그런데 재밌는 거는
네트워크 프로그래밍으로 가면은
굉장히 얘기가 달라져요
그게 역시 게임 개발 문화의 차이라고 봐야 되는데
이제 한국은 MMO 쪽을 주로 하면서 네트워킹
프로그래밍이 굉장히 많이 필요했거든요
그에 비해 이제 북미 쪽은
굉장히 콘솔 게임 위주로 갔고
멀티플레이어가 있더라도 굉장히 좀..
뭐라 그럴까
막 그
피어 투 피어 플레이?
한 네 명 들어와서 같이 하는 거?
뭐 요 정도로 거의 갔고
아니면 서버를 안 꽂고 하고
이런 걸 되게 많이 했기 때문에
생각보다 게임 팀에서 네트워킹
프로그래밍 숫자가 적었고
거기에 특화된 사람 수도 솔직히 적었었어요 계속
그래서 뭐
뭐 웬만한 회사 둘러보면은 한 뭐..
회사에서 게임 10개 정도 만들면 그 중에
제대로 네트워크 프로그래밍 돌리는 게 한
두 개 정도밖에 안 되지 않을까 싶을 정도로
그리고 그걸 하더라도 단순히 그냥
P2P 정도의 개념이기 때문에
뭐 이미 존재하는 네트워크
라이브러리로 할 수 있는 정도
그런데 이제 당연히 점점
네트워크 플레이가 많아지는 건 사실이고
그리고 점점 자기 서버를 넣는 경우도 있고
MMO는 어찌 보면은 약간은 죽은 느낌이지만
그에 비해 이제 P2P를 돌리더라도 서버에서
시뮬레이션을 하는 경우가 굉장히 많아지고 있거든요
이제, 치팅 방지라든가 기타 등등
서버에서 시뮬레이션 안 되면 어떤 꼴이 나는지는
디아블로1에서 다 봤기 때문에 예전에
그래서 한국에서 프로그래밍을 하던 사람들은
그니까 특히
한국에서는 그냥 서버 프로그래머라고 하는 것 같은데
이쪽 사람들이 오히려 여기 와서
좋은 직장을 가지는 경우를 봤어요
제가 아는 분들 중에 한 분도
캡콤 밴쿠버에 그렇게 들어갔고
그리고 가서 하는 말이
자기 한국에서 하던 것보다
별로 어려운 게 없는 것 같다고
그만큼 한국 쪽은 어찌 보면은
클라이언트 쪽보다는 서버 쪽이 좀 더 중요하게
여겨졌던 곳이 아니었을까 실제 프로그래머 쪽에선
그 생각이 들어요
근데 이제 한국에서 서버 프로그래머라고 하면은
반드시 게임 로직을 시뮬레이션 하는 거에 끝나진 않아요
거기 그 외에 굉장히 다양한 걸 하죠
뭐 유저 로그인이라든가
뭐 유저 관리부터 시작해서
뭐 DB 꼽고 뭐 하고 뭐 하고
이런 것까지 하는 경우도 많죠
그에 비해 이쪽은 그 정도까지는 안 가고
오히려 그냥 게임의 시뮬레이션을 돌리는 정도?
그 정도에 끝나는 경우도 꽤 많아요
물론 이제 게임따라 다르지만
그래서
아 네트워크 프로그래머가 뭐 하는지 말을 해야 되나?
네트워크 프로그래머가 뭐 하는 거냐면
한마디로 컴퓨터가 여러 대가 있잖아요
그러면 이제 제가 제 컴퓨터에서 오락을 하고
다른 사람은 다른 컴퓨터에서 오락을 하죠
그럼 이 둘이 통신을 해야 되잖아
그 통신을 네트워크를 타고 할 수밖에 없어요
그러면 이제
현재 우리가 존재하는 네트워크 시스템이 결과적으로는
뭐 이제 우리집에서 하는 게 아닌 이상
인터넷 타고 가야 되는 거잖아요
인터넷 타고 간다는 것 자체가
직접 연결이라기 보다는
TCP나 UDP 둘 다 이제 여러 군데
네트워크가 점프 점프 점프 점프해서 가는 거에요
그게 어떻게 전달이 될지는 보장이 없는 거죠
뭐 TCP는 전달되는 보장이 있고
UDP는 확인할 방법이 없고 이런 건 있지만
그 중간이 어떻게 가는지
내가 여기서 패킷을 쐈는데
이게 곧바로 무슨 뭐 KT에서 제공하는 무슨 망을 한 번
찍고 여기 다른 데를 찍고 세 번째에 거기를 가는지
아니면 전혀 엉뚱한 데 갔다가 열 번을 통해서
가는지는 제가 컨트롤이 불가능한 부분이에요
그래서 그
그냥 순수하게 네트워크 패킷이 가는 거
TCP, UDP 프로토콜 이런 거 따지지 않고
그러면은 그 패킷이 도착하는 순서에 대한 보장도없고
그래서 내 컴퓨터에서 모든 게
도는 것 만큼 타이밍도 빠르지도 않고
이게 패킷이 어떻게 가는지 보장도 없고 하기 때문에
논리적인 거 이상의 굉장히 많은 걸 신경을 써야 돼요
뭐
실제 그 도는 하드웨어를 이해하고
네트워크망을 이해하면은
어디서 실수가 생기고 어디서 딜레이가 생기고
그래서 그거에 맞춘 코딩을 할 수도 있고
뭐 이제
네트워크 패킷 받는 동안
멀티 스레딩 돌리는 것도 따로 있지만
결과적으론 그냥 두 컴퓨터가 대화할 때
쓰는 그런 프로토콜을 이해를 하고
그 프로토콜끼리 주고받을 때 어떤 문제가 생길 수 있고
그 문제가 생겼을 때 그거에 대한 대비를 어떻게 하냐
이런 거를 솔직히 많이 하는 사람이
이제 네트워크 프로그래머고
그 외에 아까 말했듯이
게임 로직을 클라이언트에서 돌리는 경우가 있지만
아니면 네트워크에서 돌리는 경우도 많아요
아니면은 중요한 건 네트워크에서 돌리고
파티클 이펙트 이런 거 보기에만 좋은 건
클라이언트에서 돌리는 경우도 있고
그래서 그런 코드를 짜는 사람들도 있죠
근데 결과적으로는
음 뭐라 그럴까..
뭐
그니까 뭐 MMO 같은 데서 충돌 판정도
서버에서 하는 경우도 있고 많이 봤어요
근데 결과적으론 게임 플레이 프로그래밍을
약간 하는 경우도 있고 서버 쪽에서
그게 아니면 순수하게 네트워크 패킷만
주고받는 걸 결정하는 경우도 있어요
근데 이제 네트워크 패킷만 주고받고
아니면 이제 서버에 DB 쓰고 이런 사람들은
생각보다 게임 개발 쪽을 잘 몰라요
그래서 그런 사람들은
그니까 그게 정말 우리가 흔히 말하는
순수 서버 프로그래머인데
어떤 서버 프로그래머는 이제..
제가 들은 거죠
좀 되게 큰 회사인데
벡터의 개념도 이해를 못 하는 거에요
그래서 벡터를 뭐 어떻게 더하고
뭐 하고 이걸 잘 못해서
그냥 모든 거를 integer로 만들어 갖고
이렇게 막 하던 경우도 있었고
그니까 좌표를 integer로 찍은 거죠
그래서 그런 부분에 문제는 생기긴 하지만
저는, 제 생각에는 이제
가면 갈수록 사람들이 점점 게임 로직을
서버 쪽에 넣고 있다고 생각을 해요
그래서 아까 말했던 SQL DB나 뭐 요런 부분이 아닌
실제 게임 로직을 서버에서 돌리는 것부터 시작을 해서
그건 게임 프로그래머가 할 일이긴 하지만
게임 플레이 프로그래머가
그 외에, 네트워크 주고받고
네트워크 환경에서 이 환경을 어떻게 조절하고
뭐 이런 것들 있어요
윈도우 사이즈 어떻게 하고
근데 이제 저는 되게 싫어하는 부분이에요
저를 아시는 분들은 알겠지만
저는 논리적이고 제가 컨트롤 가능한 걸 좋아하거든요
그래서 한동안 제가 맨날 했던 얘기가
컴퓨터 두 대가 서로 얘기하는 건
별로 마음에 들지 않는다고
상식적으로 그러면 안 된다고 그런 말을 했는데
뭐 그건 그냥 제가 컨트롤을 더 하고 싶어서 하는 얘기고
있어야 하는 부분이죠
네트워크 프로그래밍 당연히 중요하고
뭐 친구끼리 게임하는 거 되게 중요한 세상이니까
그래서 그런 경우에서 보면은
네트워크 프로그래밍이 중요하지만
저는 손은 대고 싶지 않다 이거에요
그래서
어찌 보면은 하드웨어로 굉장히
깊이 들어가는 직종 두 개가 게임 쪽에서
하나가 그래픽 프로그래머
저희는 그래픽 카드라는 엄청난
이 괴상하게 생긴 놈을 만져야 되고
하드웨어 맨날 봐야 되고
어셈블리 툭하면 봐야 되고 이런 거고
이제 네트워크 프로그래머
이 사람들도 역시 굉장히 프로그래밍에
그냥 코드 짜고 로직 짜는 수준이 아니라
이 밑에 프로토콜 어떻게 도는지
네트워크 패킷 어떻게 주고받는지
뭐 심지어는 이게 firewall에 막혔을 때 어떻게 뚫는지
막 이런 것까지 고민을 해야 되는 부분이기 때문에
그리고 네트워크 패킷을 주고받을 때
주로 바이너리 스트림을 주고받을 수밖에 없어요
그러면 이제
그 바이너리 스트림이라는 거 자체가 숫자로
적혀 있는, 바이트로 적혀 있는 그런 데이터잖아요
그래픽도 똑같잖아요
텍스쳐도 바이트로 적혀 있는 데이터에요
그럼 그 데이터를 보면서
이게 제대로 된 이미지인지
네트워크 프로그래머는
제대로 된 패킷인지를 봐야 되기 때문에
그쪽 단까지 내려가서 많이 봐야 되죠
그래서 그런 부분에서
어찌 보면은 이제
사람들이 흔히
개발자..
가 아니라 이제 뭐라 그러지
개발자라고 하면 욕 먹고
프로그래머들이 정말
아 게임 프로그래밍의 꽃이다라고 하는 부분이
보통 그래픽스 프로그래머라고 많이 들어요
그만큼 어려운 직종이고
그만큼 더 대우받는 직종이고
근데 그와 똑같이 제가 볼 때는 네트워크
프로그래밍도 게임의 꽃이라고 저는 생각을 해요
그래서 그 두 분야가 기술을 정말 좋아하는 사람들이
궁극적으로 갈려고 하는 부분이었던 것 같고
지금도 그런지는 모르겠지만
아마 그럴 거라고 생각을 해요
그래서 그 정도면 이제 네트워크 프로그래밍에
대한 개념은 대충 잡지 않았을까 생각을 해요
근데 이제
네트워크 프로그래밍이 미래가 어떻냐
뭐 이런 얘기도 있는데
미래가 나쁘진 않다고 생각해요
왜냐하면 게임 엔진이 나오고
그 게임 엔진이 많은 그래픽 렌더링
프로그래머의 일을 대신 해 주고 있잖아요
그래서 그래픽 프로그래머의 일이
좀 많이 줄어든 건 사실이지만
그래도 큰 회사에서는 여전히 많이 쓸 수밖에 없고
네트워크 프로그래밍은 미들웨어가 나온 것들이 있어요
그래서 단순하게 뭐 P2P를 한다거나
뭐 이런 여러 가지들이 있지만
결과적으로는 모든 게임의 로직을
단순하게 정형화시킬 수는 없거든요
그래픽보다 정형화가 더 어려운 부분이기 때문에
그런 프로토콜이라든가 패킷 디자인부터 시작해서
여러 가지 아직도 많이 하는 일들이 많고
그리고 무슨
순수하게 이제 뭐 게임 그런..
뭐라 그럴까
네트워킹 부분을 알아서 처리해 주는,
분산으로 처리해 주는 엔진 자체도
뚜렷이 나온 게 만만치가 않아요
뭐 RPC라든가, remote procedure call이라든가
뭐 그거 통해서 하는 보통
오브젝트를 같이 보내는 게 중요하니까
그런 게임 오브젝트, 클라이언트에 있는 거를
서버 쪽에 직렬화해서 보내 주고
거기서 돌리고 다시 반환하는
이런 부분들은 미들웨어가 있긴 있어요
뭐 라크넷도 있었고
허나 아직도 제가 볼 때는
그렇게 딱 집어넣는 것만으로 네트워크를
돌릴 수 있는 엔진이 많지가 않기 때문에
그 부분에 대해서는 여전히 좀 수요가 있다고 보고
현존하는 게임 엔진들도
뭐 언리얼이든가 유니티라든가
뭐 이런 것들이 네트워크에 들어간다는 거는
그냥 P2P로 총 쏘고 이 정도의 네트워크 패킷,
엔진에서 할 수 있는 정도 그 정도가 전부였지
그리고 그 엔진을 만든 회사들 자체가
한국 게임 시장에 맞춰 만든 거는 아니거든요
그냥 해외 게임 시장에서 총 쏘고
노는 거에 맞췄던 것뿐인데
문제는 해외 그런 게임 회사에서 이 엔진을 갖다가
그대로 쓰는 경우도 그렇게 많지 않았기 때문에
그 엔진에 게임 로직이 다 반영이
될 만큼 완성될 수도 없었어요
그니까 이거는
게임 엔진을 만들었고
쓰는 회사들이 있었고
특히 뭐
언리얼 토너먼트 같은 경우에 회사
그러나 그 외의 회사들은 자기 자체
새로운 거를 만들어서 계속 썼기 때문에
그 엔진이 그만큼 완성이..
그니까 네트워크 쪽으로 충분히
mature되지 못했다는 것도 있죠
그래서 아직도 저는 네트워크
프로그래머의 수요가 있다고 보고
어찌 보면은 그래픽 프로그래머보다
수요가 좀 더 높을 수도 있다고 봐요
그리고 네트워크 프로그래머가 만약에
게임 쪽에서 못 살아남더라도
현재 이제 웹 쪽이라든가 굉장히 많은 쪽에서
네트워킹을 많이 쓰고 있잖아요
그럼 그쪽에서
뭐 약간을 다르긴 한데
웹 서버 쪽으로 가고
프로토콜 주고받고
좀 더 뭔가 복잡한 그런 로직을 받기 시작을 한다면
그것도 역시 네트워크 프로그래머가
옮겨 갈 수 있는 쪽이기도 하죠
그래서
뭐 그렇고
이 얘기하다가 생각이 난 건데
이제
이런 네트워크..
이렇게
뭐라 그럴까
서퐅..
그니까 라이브러리를 만드는 회사 중에
좀 특이했던 회사가 이제
프라우드넷이라고 저는 생각을 해요 한국에서
그래서
뭐 기본적인 기술은 홀펀칭 기술이었다고 알고 있지만
굉장히 오래된 회사고
그래 봐야 뭐 50년 되진 않았겠지만
한 10년 되지 않았을까?
좀 된 회사고
이 회사는 네트워크 게임을 만드는 회사
MMO 같은 데 그런 데 가서 이제
자기네 직원들을 보내는 경우가 되게 많았던 것 같아요
그래서 그 게임에 맞게 자기네 기술을 customize해 주고
integration해 주고 게임 돌게 만들고 나오는 스타일
그니까 아까 말했듯이 네트워크 기술 하나를
꼽아서 쓸 수 있는 그런 거라기보다는
좀 서포트 개념으로
이거 갖다 쓰는데 우리가 서포트 엔지니어 넣어 줄 테니까 너네 게임 제대로 돌게 해 줄게라고 해 줘서
뭐 엔진도 팔고 서비스도 팔고 이랬겠죠
제가 예전에 KGC 놀러 갔을 때
그 배현직 사장님한테 프라우드넷
공짜 티셔츠를 받은 게 있어서
비디오를 만든 적도 있어요
저는 티셔츠 하나에 이렇게 비디오를 만드는데
그때 이제 했던 얘기가
유니티하고 히어로 엔진하고 언리얼 엔진의
나가는 방향 그니까 로드맵을 얘기했었는데
그게 아직 실현되진 않았고
걔네들이 했던 얘기가
클라이언트에서 돌리는 코드를 그대로
서버에서 돌리게 해 줄게라는 게 목적이었고
그러기 위해서 이제 유니티가 채용했던 애들이 있어요
그 제가 어느 회사 출신 애들인지 기억이 안 나는데
울티마 온라인이었나?
뭐 어쨌든 그런 회사 애들을 채용해서
그 부분을 만들려고 했는데
그 뒤로 제가 얘기를 들은 게 없어요
그게 벌써 2년, 3년 전인데
근데 제가 그때 했던 얘기가
아니 유니티가 그걸 할 거라면은
언리얼도 그런 비슷한 걸 만들어야 될 거고
히어로 엔진은 이미 지네가
그걸 하고 있다고 얘기를 했어요
그걸 제가 확인은 못 해 봤고
그래서
언리얼 같은 회사가 차라리
프라우드넷 같은 회사를 인수해서
그거를 완성을 시켜라라는 얘기를 했었거든요
필요할 때가 왔다고
유니티랑 어차피 대적해야 되고
언리얼이 미래에선 더 나아질 것 같은데
그럴려면 그런 좀 더 사용하기 편한 네트워크
라이브러리가 들어와야 된다고 생각을 했고
그래서 저는 이제
왜 프라우드넷을 안 팔까라는 걸
생각을 가끔 했었어요
저거 팔아야 되는 회사인데라는 생각
엔진이 시대가 더 오고 뭐 하고 했는데
근데 최근에 무슨 한국 뉴스 나온 거 보니까
검은사막 만들었던 그 회사인가?
어 제가 이름은 기억이 안 나요
되게 좋은 회사란 얘기는 많이 들었어요 그냥
애들 대우도 잘해 주고 봉급도 잘 준다고
그 회사에서 사 갔다 그러더라고요
그래서
아
뭐 언리얼은 아니었지만
대충 또 내 예측이 맞았구나라고
혼자 만족하고 있어요
그래서
오늘 하는 얘기는 이제
네트워크 프로그래머에 대해 설명을 했어요
우리나라에선 서버 프로그래머라고 얘기를 하지만
아마 예전에 말하던 단순히 서버 프로그래머보다는
조금 더 많은 게 네트워크 프로그래머일 것 같고
그 예전에 서버 프로그래머 하면은 말 그대로
패킷 받아서 뭐 DB 넣고 이런 거만
하는 사람도 많았기 때문에
근데 이제 게임 로직을 서버에서
돌릴 수 있는 그런 시대가 왔고
실제 리그 오브 레전드도 서버에서 돌려요
왜냐면 해킹을 막기 위해서
핑 타임 느리다고 맨날 난리난리치는
이유가 그거에요 사실은
그래서 그렇게 됐고
네트워크 프로그래머가
한국 게임 프로그래머가 해외에 나올 때
지금 이제
뭐랄까
수요가 엄청 많은 건 아닌데
점점 늘어나고 있다고 보고
그만큼 여기서 네트워크 프로그래밍을
잘하는 애들이 별로 없기 때문에
오히려 좀 경쟁력이 있지 않나라는 생각을 해요
왜냐하면은 예전에도 몇 번이나 비디오 만들었지만
제너럴리스트 프로그래머로 갈 수도 있지만
그거는 경쟁력이라고 하기보다는 그냥
응 너 대충 다 할 줄 알지? 시키는 대로 해
이 개념이 좀 강하고
네트워크 프로그래머는
아 넌 여기 전문가구나라는 느낌이 강하기 때문에
그런 전문가가 취직하는 게 더 쉽죠
그래서 그렇게 음
얘기를 마무리하고
그리고 오랜만에 한
그나마 테크 쪽하고 관련 있는 얘기는
여기서 끝내죠
예 포프였습니다