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