[111217 아꿈사연말모임] 웹소켓과온라인게임

10,602 views

Published on

native client 개발자들에게는 아직 생소한 Node.js를 소개하고, 온라인 게임에서 Node.js를 어떻게 활용할 수 있을지에 대한 개인적인 생각을 정리해 보았습니다.

1 Comment
32 Likes
Statistics
Notes
  • 웹서버와 게임서버의 통신 부분은, 제가 몰랐던 부분이 많네요. (웹쪽을 잘 몰라서..) 피드백을 받으면서 생각들을 많이 정리하고 있습니다.
    지금도 많은 분들이 좋은 피드백을 해 주셨는데,
    더 좋은 의견이나 제안이 있다면 공유해 주세요~
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total views
10,602
On SlideShare
0
From Embeds
0
Number of Embeds
1,810
Actions
Shares
0
Downloads
1
Comments
1
Likes
32
Embeds 0
No embeds

No notes for slide

[111217 아꿈사연말모임] 웹소켓과온라인게임

  1. 1. 웹소켓과 온라인 게임Web Socket, JavaScript, Node.js, and Online Game. 아꿈사 http://cafe.naver.com/architect1 최성기 florist.sk@gmail.com
  2. 2. Note. 웹 실무자가 아닌 어느 개발자의 자료조사 내용 정리 정도로 봐주세요. 자바스크립트 JavaScript웹소켓Web Socket 온라인 게임 Online Game
  3. 3. 자바스크립트 JavaScript웹소켓Web Socket 온라인 게임 Online Game
  4. 4. 웹 소켓에 대해서는 지난 번에열심히 떠들어 놓은 자료가 존재.오늘은 PT 1장만 할애.세 가지만 정리하고 넘어가자. http://www.slideshare.net/hiscale/111015-html5-11. http 실시간 통신에 쓰일 차세대 기술.2. 불가능 -> 가능 (X), 복잡함 -> 심플함 (O)3. 이걸 온라인 게임에 써먹어 볼 수는 없을까?
  5. 5. 자바스크립트 JavaScript웹소켓Web Socket 온라인 게임 Online Game
  6. 6. 자바스크립트의 시작은 웹브라우저에 기생(?)하면서마우스 커서에 곰돌이 인형 따위를 따라다니게 만들어주는싸구려 이미지(...) 였지만 마우스 커서를 꾸며보아요 화면에 눈이 내리게 해주는 효과 철수와 영희 만난 지 600일째 되는 날 홈페이지에 현재시간 출력하기 해가 지면 배경색이 어두워져요! 링크 텍스트에 무지개 효과 넣기 …그 외 유치한 효과 다수.
  7. 7. http://www.slideshare.net/rhio.kim/track1-2-role-java-script
  8. 8. 지금은 아무도JavaScript를 무시할 수 없다. JSON AJAX d3.js Node.js JQuery Mobile App. WebGL Web Socket …그 외 놀라운 기능 다수.
  9. 9. 심지어 이제는게임 개발자의 밥줄마저 위협(?) 하는 존재가 되었다.
  10. 10. 얼마 전 H3의 자료를 보니자바스크립트의 변화된 입지에 대해 잘 설명된 자료가 있음. http://www.slideshare.net/rhio.kim/track1-2-role-java-scriptJS를 이용해 웹 Front-end 개발은이전에 비할 바 없는 풍성한 표현력을 갖게 되었고3D Graphics 표현도 가능해 졌으며이제는 Back-end, 즉 서버 어플리케이션도 개발할 수 있게 되었다.
  11. 11. 자바스크립트 JavaScript웹소켓Web Socket 온라인 게임 Online Game
  12. 12. 자바스크립트로 쏟아져 나오는다양한 분야 / 갖가지 기능의 프레임워크가 존재Node.js는 그 중에서서버 사이드 애플리케이션 제작을 위한프레임워크 중 하나.Ryan Dahl이라는 양반이 2009년 말에 발표.http://www.slideshare.net/rockdoli/nodejs-8492796
  13. 13. 웹 브라우저별 JavaScript 엔진 파이어폭스 : SpiderMonkey 크롬 : V8 사파리 : JavaScriptCore IE9 : Chakra 오페라 : CarakanV8은 구글 크롬에 탑재된C++로 제작된 JS 엔진.오픈소스로 공개되어 있다.http://code.google.com/p/v8/Node.js가 가져다 쓴 엔진.
  14. 14. Node.js는 자바스크립트로 몇 줄만 적으면웹서버가 되기도 하고var http=require(http);http.createServer(function(req,res){ res.writeHead(200,{Content-Type:text/plain}); res.end(Hello Worldn);}).listen(1337,"127.0.0.1");console.log(Server running at http://127.0.0.1:1337/);TCP 서버가 되기도 하는 물건이다.var net=require(net);var server=net.createServer(function(socket){ socket.write("Echo serverrn"); socket.pipe(socket);});server.listen(1337,"127.0.0.1");
  15. 15. 물론 간단히 웹소켓 서버가 될 수도 있다. var io = require(socket.io).listen(80); io.sockets.on(connection, function (socket) { socket.emit(news, { hello: world }); socket.on(my other event, function (data) { console.log(data); }); });Non-blocking IO 방식 인터페이스를 제공하는싱글스레드 개발환경여러 프로세스를 띄우고 클러스터 구성하면같은 포트를 공유하게 할 수도 있음.http://nodejs.org/docs/v0.6.0/api/cluster.html
  16. 16. 2009년 11월 8일 JSConf.eu 2009 행사에서 발표 후아직은 그리 넓게 알려지진 않았으나 꾸준히 상승세.
  17. 17. http://www.slideshare.net/rhio.kim/track1-2-role-java-script http://www.slideshare.net/rockdoli/nodejs-8492796 http://goo.gl/1qECP http://doortts.tistory.com/category/node.js%20따라배우기
  18. 18. 요약해 보면 Node.js는 V8 위에서 돌아가는 자바스크립트 런타임인데, 만들기 쉽고 확장하기 쉬운 네트워크 프로그램 개발환경v0.5x 버전부터 윈도우 버전은 IOCP를 사용,성능이 대폭 향상윈도우 설치방법을블로그에 정리해 두었습니다.http://devnote.tistory.com/213 http://nodejs.org/codeconf.pdf
  19. 19. 공식 홈페이지에는Node.js를 적용한 기업들의 코멘트가 있고,얼마전 KTH의 컨퍼런스 H3의 웹페이지 구축에도 쓰였음
  20. 20. 이 물건을 온라인 게임에 써먹어 볼 수는 없을까?
  21. 21. 자바스크립트 JavaScript웹소켓Web Socket 온라인 게임 Online Game 이후부터 내용이 상당히 주관적임.
  22. 22. 1. 일단 서버를 Node.js로 만드는 걸 생각할 수 있겠지만 이 팀은 서버도 JavaScript로 만드는 걸까? 이제 막 2년된 v0.6의 물건을 베이스로 게임서버를 짠다는 건 무척 실험적인 선택. 본인이 사장님이나 PD가 아니고서는... 매우 힘든 결정일 듯.
  23. 23. Node.js가 웹 개발자들에게 주는 의미:Front-end 개발과 Back-end 개발을하나의 통일된 언어로 개발할 수 있게 해주는 환경. http://www.slideshare.net/rhio.kim/track1-2-role-java-script
  24. 24. Node.js가게임 서버 개발자에게 주는 의미는..? 하나의 프로세스에서 TCP 소켓도 처리할 수 있고, 웹 소켓도 처리할 수 있는 물건. ...이라고 저 혼자 생각해 봤습니다;
  25. 25. 보통은 자체 게임 클라이언트가 서버에 접속해서게임을 플레이 하는 식이고
  26. 26. 게임 웹사이트에서 게임의 일부 정보들을 열람한다.캐릭터 정보, 경매장 상황, 친구 리스트, 길드 정보 등.
  27. 27. 웹서버에 정보를 연동할 때는 보통 DB를 거친다.게임서버와 웹서버가 직접 연결되긴 좀 불편하고 귀찮아..웹은 주로 정보를 읽기(read)만 한다. gpg study 포럼의 7년전 스레드 ‘웹서버로 요청 보내서 결과 받아오기’ 참고. http://www.gpgstudy.com/forum/viewtopic.php?t=3955
  28. 28. 웹에서의 게임 정보 연동은좀 불편하고 귀찮아서 그렇지어느 정도 수준까지는지금의 기술들로도 다 할 수 있는 작업.브라우저에서 게임의 캐릭터를 볼 수도 있고게임에 접속중인 친구와 채팅을 할 수도 있다.커뮤니티 활성화가 중요한 온라인게임은웹 브라우저 사용이 활발해짐에 따라웹 접근성도 중요한 서비스 고려사항이다.
  29. 29. 게임 클라이언트만 우선 빼고 다이어그램을 일렬로 폈습니다.웹서버에서는 주로 게임 데이터를 읽기만 하고연동 작업이 복잡하기도 해서 DB를 거쳐서 연결되는 구성을 했는데웹 브라우저가 데이터 읽기 이상의 인터랙션을 하고 싶다면,
  30. 30. 웹소켓 TCP소켓중간에 Node.js 를 미들웨어로 쓰면 어떨까?
  31. 31. 웹소켓 TCP소켓 웹소켓그러면 유저의 웹 브라우저와도 Node.js를 거쳐게임서버가 바로 통신할 수도 있게 되고
  32. 32. 웹소켓 TCP소켓 웹소켓 TCP소켓여기에 게임 클라이언트가 TCP로 붙으면웹 브라우저와 바로 연결돼 채팅을 할 수도 있겠지.
  33. 33. ODBC 애드온 웹소켓 TCP소켓 웹소켓 TCP소켓Node.js는 C/C++로 애드온을 만들어 붙일 수도 있으니많이 쓰이는 MS-SQL과 연동하는 ODBC 모듈을 직접 짤 수도 있고혹시 MongoDB같은 NOSQL을 쓴다면 바로 연결될 수도 있다.
  34. 34. 결국은 처음에 그렸던 전형적인 온라인 게임 서비스의 구성에서
  35. 35. ODBC 애드온 웹소켓 TCP소켓 웹소켓 TCP소켓모든 구성요소와 통신할 수 있는 위치의 미들웨어를Node.js로 구축할 수 있다는 말이 된다.
  36. 36. ODBC 애드온 웹소켓 TCP소켓 TCP소켓 웹소켓?지금 당장을 보고 하는 이야기는 아니지만..유저가 웹소켓을 지원하지 않는 브라우저를 사용해 불안하더라도
  37. 37. ODBC 애드온 웹소켓 TCP소켓 TCP소켓 웹소켓 or AJAXNode.js는 XmlHttpRequest를 이용한 AJAX 통신도 처리할 수 있다.
  38. 38. 부정적인 의견이 몇 가지 예상 되는데,1. 굳이 Node.js가 아니어도 다 할 수 있는 일이다.2. 그런 미들웨어 없이도 잘 살아왔는데 뭐 하러 붙이는가?3. Node.js가 중요한 서비스를 구축할 만큼 신뢰할 물건인가?
  39. 39. 부정적인 의견이 몇 가지 예상 되는데,1. 굳이 Node.js가 아니어도 다 할 수 있는 일이다.2. 그런 미들웨어 없이도 잘 살아왔는데 뭐 하러 붙이는가?3. Node.js가 중요한 서비스를 구축할 만큼 신뢰할 물건인가? 맞다. AJAX vs 웹소켓 의 경우와 비슷한데, 불가능 -> 가능이 아니라 복잡함 -> 단순함의 변화다. 전보다 더욱 쉽고 간단하고 빠르게 개발할 수 있는 환경을 얻는 것이다. 쉽고 빠르다는 것은 생산성이 높아지고 유지/보수가 쉬워진다는 말이다. (그래도 디버깅 환경은 Visual Studio가 좀 짱인 듯…)
  40. 40. 부정적인 의견이 몇 가지 예상 되는데,1. 굳이 Node.js가 아니어도 다 할 수 있는 일이다.2. 그런 미들웨어 없이도 잘 살아왔는데 뭐 하러 붙이는가?3. Node.js가 중요한 서비스를 구축할 만큼 신뢰할 물건인가? 기존의 서비스를 좀 더 손쉽게 제작할 수 있다는 점과, 현존하던 수준의 서비스 이상의 뭔가를 만들어 낼 수 있지 않을까... 마.. 그래 생각하고 있습니다... 예를 들어 크롬 브라우저용 컨텐츠를 만든다던지..
  41. 41. 부정적인 의견이 몇 가지 예상 되는데,1. 굳이 Node.js가 아니어도 다 할 수 있는 일이다.2. 그런 미들웨어 없이도 잘 살아왔는데 뭐 하러 붙이는가?3. Node.js가 중요한 서비스를 구축할 만큼 신뢰할 물건인가? 이건 저도 잘 모르겠네요. 지금은 취미 삼아 들여다 보는 정도라서.. 실제로 중요한 서비스를 얹으려고 한다면 보다 꼼꼼히 리서치 해야 한다. 다른 팀원들도 설득하려면 본인이 확신하는 것 이상의 객관적 자료가 필요 하겠지 아마?
  42. 42. 웹소켓과 Node.js를 주시하는 것은 가능성에 투자하는 것. 갑자기 딴 이야기 같지만 크롬 웹스토어의 게임들도 나날이 고퀄리티화 진행 중. 크롬을 게임서버에 바로 붙이면 게임 클라이언트 못지않은 렌더링 처리를 할 수 있을지도.PS3 Square Enix ‘mini ninja’ PS3 버전과 크롬 버전. http://goo.gl/Z6RCR 크롬
  43. 43. • 웹소켓이라는 기능을 갖게 된 자바스크립트는 요즘 다방면에서 고공 행진을 진행 중.• 그 중 Node.js라는 프레임웍은 서버 사이드를 자바스크립트로 만들 수 있게 해주는 물건.• Node.js는 웹소켓과 TCP소켓을 모두 처리할 수 있어서, 온라인 게임 서비스 구축에도 유용하게 쓰일 것으로 예상됨

×