SlideShare une entreprise Scribd logo
1  sur  82
Télécharger pour lire hors ligne
Gam
   html5 with  e engine
JS+
cocos2d- html5 분석
                   ANBSoft
          게임공학기술연구소 송찬호
              yellow@anbgames.com
                twitter : copperwhale
d game eng ine or lib
J S+html5 an




 FlashJS
                             LimeJS
                     Jaws HTML5

                          From : jswiki/Game-Engines
Cocos2D
cocos2d

2D 게임 같은 인터렉티브 어플리케이션을 만들
기 위한 오픈 소스 프레임워크
cocos 2d 기본 컨셉

1.   CocosNode
2.   Director
3.   Scene
4.   Layer
5.   Sprite
6.   Action
본 컨셉 - CocosNode
   cocos2d 기

cocos2d의 모든 클래스가 CocosNode를 상속
하여 구현
● position, scale, visible 등 기본 속성
● 계층 구조를 위한 add, remove, reorder
● schedule 기능
기본 컨셉 - Director
  cocos2d

어플리케이션을 구성하는 여러 Scene들 가운
데 무엇이 활성화 되는지 흐름을 관리
- Scene
  cocos 2d 기본 컨셉

스테이지 나 타이틀 처럼 어플리케이션의 흐름
의 독립적인 한 부분을 정의하는 단위
- Layer
  cocos 2d 기본 컨셉

화면을 구성하는 단위로 하나 이상의 Layer를
정의하여 하나의 Scene을 구성
- Sprite
  cocos 2d 기본 컨셉

이동, 회전, 크기변환, 애니메이션 등을 적용할
수 있는 2D 이미지
- Action
   cocos 2d 기본 컨셉

CocosNode 객체(Scene, Layer, Sprite 해당
됨)에 position, rotation, scale 등과 같이 객체
의 속성을 시간에 따라 변경하는 것을 처리
co cos2d의 가족

cocos2d
  +cocos2d-iphone
   +cocos2d-android
   +cocos2d-javascript
   +cocosBuilder
 +cocos2d-x
   +cocos2d-html5      <- !!!
cocos2d-html5
coc os2d-html5

현재 버전은 2.0

●   files must load from HTTP server
●   Google Closure Compiler surpport
●   Unified Javascript API style
●   DOM Menu/UI
●   Updated API to Cocos2d-x V2.0
Closure Co mpiler - 1
  Google

Javascript를 최적화 해서 브라우져에서 다운로
드와 실행 속도를 향상
Closure Co mpiler - 2
  Google

"Advanced mode" 적용
● 게임 로직과 묶어서 하나의 파일로 패키징
   가능
● 코드 최소화(주석 및 비칸 제거 등)
● 사용하지 않는 코드 제거
● 코드 난독화
DOM M enu / UI

html DOM 방식으로 메뉴 구성 가능
● 정적인 메뉴를 구성시 매 프레임 다시 그리
  지 않아 속도향상
● 텍스트 출력 속도 향상
d Javascript API style
            Uni      fie

   cocos2d-iphone 및 cocos2d-x의 JS-Binding
   의 스크립트와 cocos2d-html5 코드가 같음



For example:
var sprite = cc.Sprite.spriteWithFile(s_grossini_dance_atlas, cc.RectMake(x, y, 85, 121)); //is changed to...
var sprite = cc.Sprite.create(s_grossini_dance_atlas, cc.RectMake(x, y, 85, 121));
cocos2d -html5 1/2
   cocos2d-x 와

cocos2d-x 기반 제작
비슷한 구조로 비교 분석이 쉽다.
● Cocos2d-html5-v2.0.zip 안의 cocos2d폴더
  와 cocos2d-2.0-x의 cocos2dx 폴더가 비슷
  한 구조로 구성 되어 있음
cocos2d -html5 2/2
cocos2d-x 와
라이 브러리 구성

cocos2d-x
● cocos2dx 폴더 내부의 cpp를 컴파일 .lib나 .
  a 등 라이버러리 생성
cocos2d-html5
● cocos2d 폴더 내부의 js 파일을 google
  closure compiler 로 라이브러리 js파일 생
  성
d-html5-v2 .0.min.js
Cocos2
Sample
Hello HTML5 World
HelloH TML5World
게 임의 구성

html 파일 + js 파일 로 구성
● html 파일은 canvas 정의 - id와 크기 지정
● js 파일은 어플리케이션 로직 및 엔진
파일 구성

index.html -    캔버스 정의 및 cocos2d.js 로딩

cocos2d.js -    엔진 초기화 및 게임 코드 파일 로딩

main.js -   엔진에 게임 객체 생성 및 전달

resource.js -   리소스 목록 정의

myApp.js -    'Hello World' 메시지 및 이미지 출력

build.xml -   google closure compiler를 이용한 통합 파일 생성을 위한
              ant 빌드 스크립트
l 파일 - in dex.html
    htm




                             Canvas 정의
x

                                JS 호출
파일 - coc os2d.js 1/2
JS
                      엔진 정보 설정




                   게임 로딩 정보 설정
파일 - coc os2d.js 2/2
JS


                   게임의 코드 파일 목록

              패키지 및 엔진 로딩 방법 정의
JS 파일 - m ain.js 1/3
                       게임 객체 정의




                       게암 객체 생성
JS 파일 - m ain.js 2/3

                        엔진 초기화



               디렉터 초기화 (AppDelegate)
JS 파일 - m ain.js 3/3




                       게임 초기화 완료




             게임의 시작 씬
JS 파일 - r esource.js


               리소스 과련 매직 넘버 정의

                       전체 리소스 목록
파일 - myA pp.js 1/2
  JS

                Hello World


화면 갱신 알림

                     엔진 로고


엔진 정보                         종료 버튼
파일 - myA pp.js 2/2
    JS

CircleSprite (화면 갱신 알림)
● 매 프레임 갱신되는 객체
● 기본 도형 그리는 함수로 그림
Helloworld (cc.Layer 확장)
● 종료 버튼 이미지 및 이벤트 정의
● 'Hello World' 문구, 화면 갱신 알림 및 엔진 로고 이미지 객체 생성 및 에이
  메이션 정의

HelloworldScene (cc.Scene 확장)
● Helloworld 레이어 생성 및 등록
Hello HTM L5 World




           hello HTML5 world
l 파일 - build.xml 1/2
xm
                          컴파일러 정의
                     (google closure compiler)



                      컴파일 결과 정의
l 파일 - build.xml 2/2
xm


                          엔진 소스 목록




                          게임 소스 목록
ant 빌드 1/2

                                                               ant 빌드 실패




     엔진 파일 목록에 존재하지 않는 파일이 있어 빌드 실패
       <file name="keypad_dispatcher/CCKeypadDelegate.js"/>
      <file name="keypad_dispatcher/CCKeypadDispatcher.js"/>
ant 빌드 2/2

                                                                     ant 빌드 성공




   !! 정상적인 결과 파일을 만들기 위해 build.xml 을 수정해야 합니다. !!
            <file name="keypad_dispatcher/CCKeypadDelegate.js"/>
          <file name="keypad_dispatcher/CCKeypadDispatcher.js"/>
                                     를
        <file name="touch_dispatcher/CCTouchDelegateProtocol.js"/>
             <file name="touch_dispatcher/CCTouchHandler.js"/>
            <file name="touch_dispatcher/CCTouchDispatcher.js"/>
         <file name="keyboard_dispatcher/CCKeyboardDelegate.js"/>
        <file name="keyboard_dispatcher/CCKeyboardDispatcher.js"/>
                             로 수정해야 합니다.
과 - myAp p-v0.1.js
빌드 결
cocos2d-html5
게임 시작 과정 분석
- cocos2d- x win32 1/3
b oot engine




                            run() 호출
- cocos2d- x win32 2/3
b oot engine




                        mainLoop() 호출
- cocos2d- x win32 3/3
     b oot engine

1. main.cpp
  a. CCApplication::sharedApplication()->run();
2. platform/CCApplication.cpp - run()
  b. applicationDidFinishLaunching()
  c. looping CCDirector::sharedSirector()->mainLoop()
- cocos2d- html5 1/8
b oot engine




                       cocos2d.js 로딩
- cocos2d- html5 2/8
b oot engine




                        DOM 로딩 완료

                       엔진 및 게임
                      스크립트 파일 정의


                        스크립트 로딩
                        (jsloader.js)
- cocos2d- html5 3/8
b oot engine
                        엔진 로딩 목록




                   main.js 로딩 목록 추가
- cocos2d- html5 4/8
b oot engine


                      리소스 로딩중 표시

                       로딩 완료 후 호출
- cocos2d- html5 5/8
b oot engine



                           run() 호출
- cocos2d- html5 6/8
b oot engine

               applicationDidFinishLaunching()
                             호출

                           mainLoop() 호출

                           mainLoop() 호출
- cocos2d- html5 7/8
   b oot engine

1. index.html
  a. cocos2d.js 로딩
2. cocos2d.js
  b. 즉시 실행 함수에서 DOM로딩 직후 jsloader.js 로딩
3. jsloader.js - (여러 js을 읽는 경우)
  c. 즉시 실행 함수에서 모든 엔진 코드 및 main.js 로딩
- cocos2d- html5 8/8
     b oot engine

4. main.js - ctor()
  a. cc.Loader.shareLoader().onload 이벤트로 cc.
      AppController.shareAppController().
      didFinishLaunchingWithOptions() 호출
5. AppControl.js - didFinishLaunchingWithOptions()
  b. cc.Application.sharedApplication().run();
6. CCApplication.js - run()
  c. applicationDidFinishLaunching()
  d. looping cc.Director.getInstance().mainLoop();
boot up 비교

cocos2d-x
● 플랫폼 별 다른 엔트리 포인트에서 CCApplication.cpp
  의 run() 호출
● 윈도의 경우 platform/win32/CCApplication.cpp 의
  run() 에서 mainLoop() 호출
cocos2d-html5
● 엔진 및 어플리케이션 코드 로딩
● 로딩 과정에서 즉시 실행 함수로 초기화
● 로딩 완료 이벤트 수신 후 platform/CCApplication.js
  의 run() 에서 mainLoop() 호출
2개의 main Loop() ??
      etc -




                           mainLoop() 호출
Looping
callback 등록                mainLoop() 호출
Looping
callback 등록
html5 - javascript
게임 개 발을 위한 기능들
패턴 1/2
     을 위한 Jav ascript 사용
  게임

모듈 패턴 -   네임스페이스 패턴, 즉시 실행 함수 등




상속 패턴 -   프로토타입 목록 및 객체 정보 복사를 이용
패턴 2/2
      을 위한 Jav ascript 사용
   게임

객체 상수 -    매직 넘버를 정의하기 위한 객체 정의 방법




                      ...
 JavaScript Patterns - 자바스크립트 코딩 기법과 핵심 패턴
Displa y - Canvas
Displa y - WebGL
lay - Canva s vs WebGL
   Disp

Canvas
● 모든 시스템에서 지원
● 상대적으로 느리지만 지속적으로 개선

WebGL
● gles 2.0 과 비슷한 사양
● Canvas에 비해 매우 빠르고 동작 한다면 호환성 이슈 적
  음
● WebGL tutorial - Opera 개발자(Erik Moller)
● WebGL Terrain Editor
performanc e test 1/2
     Display -




2012-3-19 internet-explorer-10-fast-and-native-has-gone-to-other-browsers
performanc e test 2/2
Display -




   2011-11-18 html5-2d-gaming-performance-analysis
D isplay - cocos2d-html5




                           canvas 생성
Input

addEventHandler
● 첫번째 인자로 원하는 이벤트를 지정
  ○ 'keyup', 'keydown'
  ○ 'mousedown', 'mouseup', 'mousemove'
  ○ 'touchstart', 'touchmove', 'touchend', 'touchcancel'
● 두번째 인자로 이벤트 처리 함수 지정
● 세번째 인자로 캡쳐 방식의 이벤트 처리
  ○ 일반적인 경우 부모 객체에게 이벤트 전달
  ○ 캡쳐 방식의 경우 부모객체에게 이벤트 전달을 하지
    않음
yboard coc os2d-html5
Input - ke




                          키 이벤트 등록
- mouse coc os2d-html5
Input


                    마우스 버튼 누름 이벤트




                     마우스 버튼 업 이벤트




                      마우스 이동 이벤트
Audio
io - codec in browser
Aud
Audio

현재
● 단순한 기능
● 메모리에 로딩된 사운드만 출력
● 브라우져 별 지원 코덱 다름
● 아이폰의 경우 전체 화면이 아닌 경우 출력되지 않음
미래
● 기능 확장을 위한 다양한 시도중
  ○ 스트리밍 처리에 대해 W3C 제안
  ○ 하위 수준의 API 개발
A udio - cocos2d-html5
N etwork - W eb socket
o rk - Web so cket client
    Netw

Web socket - client
● TCP 기반의 실시간 양방향 통신 가능
● 다수의 사용자와 통신 가능
● 사용하기 쉽다




안드로이드 계열에서는 지원하지 않음 ;;;
● iframe 나 Ajax 등 비동기 JS 계열의 기술을 이용
o rk - Web so cket server
    Netw

Web socket - server
● 기존 TCP 소켓 서버와 약간 다른 구현이 필요
● 다양한 언어를 위한 오픈 소스 서버 프레임 존재
  ○ jwebsocket
  ○ pywebsocket
  ○ phpwebsocket
  ○ web-socket-ruby
  ○ socket.io-node
  ○ ...
high p erformance

변수 선언 위치
성능 향상을 위한 코딩 패턴
...
● Extreme JavaScript Performance

참고자료
● JavaScript 자바스크립트 성능 최적화
multi browser

브라우져 마다 특성 다름...;;
● 시각적 결과
● 지원 기능
● 성능

● 개개의 브라우져에 대응하도록 소스 코드 튜닝
● 특정 브라우져만 지원, 해당 브라우져 설치 유도
- html5 & javascript
     debug

Firefox - Firebug
Chrome - Chrome developer tool
●   브레이크 포인터, 라인 단위 실행 등 디버깅 기능
●   변수값 표시
●   로그 출력
●   성능 프로파일링
●   호출 스텍 표시
●   리소스 로딩 모니터링
●   기타 등등
IDE - C onstruct 2




         Make HTML5 games with Construct 2
IDE - coc osBuilder
IDE - coc osBuilder




          CocosBuilder 3 Animation Editor
html5 - javascript
    그래서...
Q&A
살살요 ... ^^ 굽신~

Contenu connexe

Tendances

하이퍼레저 프로젝트 개요
하이퍼레저 프로젝트 개요하이퍼레저 프로젝트 개요
하이퍼레저 프로젝트 개요Seung-Woo Kang
 
GCGC- CGCII 서버 엔진에 적용된 기술 (4) - Executing System
GCGC- CGCII 서버 엔진에 적용된 기술 (4) - Executing SystemGCGC- CGCII 서버 엔진에 적용된 기술 (4) - Executing System
GCGC- CGCII 서버 엔진에 적용된 기술 (4) - Executing System상현 조
 
XECon2015 :: [1-3] 김덕홍 - Git Workflow with GitHub
XECon2015 :: [1-3] 김덕홍 - Git Workflow with GitHubXECon2015 :: [1-3] 김덕홍 - Git Workflow with GitHub
XECon2015 :: [1-3] 김덕홍 - Git Workflow with GitHubXpressEngine
 
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축Ji-Woong Choi
 
Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]
Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]
Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]David Lee
 
Docker 로 Linux 없이 Linux 환경에서 개발하기
Docker 로 Linux 없이 Linux 환경에서 개발하기Docker 로 Linux 없이 Linux 환경에서 개발하기
Docker 로 Linux 없이 Linux 환경에서 개발하기iFunFactory Inc.
 
Hyperledger Fabric practice (v2.0)
Hyperledger Fabric practice (v2.0) Hyperledger Fabric practice (v2.0)
Hyperledger Fabric practice (v2.0) wonyong hwang
 
XECon2015 :: [2-4] 오승현 - Chak 서비스 구축기 with XE3
XECon2015 :: [2-4] 오승현 - Chak 서비스 구축기 with XE3XECon2015 :: [2-4] 오승현 - Chak 서비스 구축기 with XE3
XECon2015 :: [2-4] 오승현 - Chak 서비스 구축기 with XE3XpressEngine
 
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 DockerXECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 DockerXpressEngine
 
안드로이드 와 디바이스 드라이버 적용 기법
안드로이드 와 디바이스 드라이버 적용 기법안드로이드 와 디바이스 드라이버 적용 기법
안드로이드 와 디바이스 드라이버 적용 기법chon2010
 
Docker 기반 개발환경 구축 - XE Open seminar #2
Docker 기반 개발환경 구축 - XE Open seminar #2Docker 기반 개발환경 구축 - XE Open seminar #2
Docker 기반 개발환경 구축 - XE Open seminar #2XpressEngine
 
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기Jaeseung Ha
 
Grunt 사용법 간단정리
Grunt 사용법 간단정리Grunt 사용법 간단정리
Grunt 사용법 간단정리SuHyun Jeon
 
Docker (Compose) 활용 - 개발 환경 구성하기
Docker (Compose) 활용 - 개발 환경 구성하기Docker (Compose) 활용 - 개발 환경 구성하기
Docker (Compose) 활용 - 개발 환경 구성하기raccoony
 
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기현철 조
 
Startup JavaScript 9 - Socket.IO 실시간 통신
Startup JavaScript 9 - Socket.IO 실시간 통신Startup JavaScript 9 - Socket.IO 실시간 통신
Startup JavaScript 9 - Socket.IO 실시간 통신Circulus
 
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!pyrasis
 
제 5회 Lisp 세미나 - 클로저 개발팀을 위한 지속적인 통합
제 5회 Lisp 세미나 - 클로저 개발팀을 위한 지속적인 통합제 5회 Lisp 세미나 - 클로저 개발팀을 위한 지속적인 통합
제 5회 Lisp 세미나 - 클로저 개발팀을 위한 지속적인 통합NAVER D2
 

Tendances (20)

하이퍼레저 프로젝트 개요
하이퍼레저 프로젝트 개요하이퍼레저 프로젝트 개요
하이퍼레저 프로젝트 개요
 
GCGC- CGCII 서버 엔진에 적용된 기술 (4) - Executing System
GCGC- CGCII 서버 엔진에 적용된 기술 (4) - Executing SystemGCGC- CGCII 서버 엔진에 적용된 기술 (4) - Executing System
GCGC- CGCII 서버 엔진에 적용된 기술 (4) - Executing System
 
XECon2015 :: [1-3] 김덕홍 - Git Workflow with GitHub
XECon2015 :: [1-3] 김덕홍 - Git Workflow with GitHubXECon2015 :: [1-3] 김덕홍 - Git Workflow with GitHub
XECon2015 :: [1-3] 김덕홍 - Git Workflow with GitHub
 
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
 
Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]
Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]
Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]
 
Docker 로 Linux 없이 Linux 환경에서 개발하기
Docker 로 Linux 없이 Linux 환경에서 개발하기Docker 로 Linux 없이 Linux 환경에서 개발하기
Docker 로 Linux 없이 Linux 환경에서 개발하기
 
Hyperledger Fabric practice (v2.0)
Hyperledger Fabric practice (v2.0) Hyperledger Fabric practice (v2.0)
Hyperledger Fabric practice (v2.0)
 
XECon2015 :: [2-4] 오승현 - Chak 서비스 구축기 with XE3
XECon2015 :: [2-4] 오승현 - Chak 서비스 구축기 with XE3XECon2015 :: [2-4] 오승현 - Chak 서비스 구축기 with XE3
XECon2015 :: [2-4] 오승현 - Chak 서비스 구축기 with XE3
 
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 DockerXECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
 
Manage book project
Manage book projectManage book project
Manage book project
 
Ffmpeg for android
Ffmpeg for androidFfmpeg for android
Ffmpeg for android
 
안드로이드 와 디바이스 드라이버 적용 기법
안드로이드 와 디바이스 드라이버 적용 기법안드로이드 와 디바이스 드라이버 적용 기법
안드로이드 와 디바이스 드라이버 적용 기법
 
Docker 기반 개발환경 구축 - XE Open seminar #2
Docker 기반 개발환경 구축 - XE Open seminar #2Docker 기반 개발환경 구축 - XE Open seminar #2
Docker 기반 개발환경 구축 - XE Open seminar #2
 
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
 
Grunt 사용법 간단정리
Grunt 사용법 간단정리Grunt 사용법 간단정리
Grunt 사용법 간단정리
 
Docker (Compose) 활용 - 개발 환경 구성하기
Docker (Compose) 활용 - 개발 환경 구성하기Docker (Compose) 활용 - 개발 환경 구성하기
Docker (Compose) 활용 - 개발 환경 구성하기
 
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
 
Startup JavaScript 9 - Socket.IO 실시간 통신
Startup JavaScript 9 - Socket.IO 실시간 통신Startup JavaScript 9 - Socket.IO 실시간 통신
Startup JavaScript 9 - Socket.IO 실시간 통신
 
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
 
제 5회 Lisp 세미나 - 클로저 개발팀을 위한 지속적인 통합
제 5회 Lisp 세미나 - 클로저 개발팀을 위한 지속적인 통합제 5회 Lisp 세미나 - 클로저 개발팀을 위한 지속적인 통합
제 5회 Lisp 세미나 - 클로저 개발팀을 위한 지속적인 통합
 

Similaire à Html5+js with game engine cocos2d-html5 분석 @KGC2012

Html5 게임 기술의 개요
Html5 게임 기술의 개요Html5 게임 기술의 개요
Html5 게임 기술의 개요Changhwan Yi
 
Windows에서 go+eclipse 개발환경 구축
Windows에서 go+eclipse 개발환경 구축Windows에서 go+eclipse 개발환경 구축
Windows에서 go+eclipse 개발환경 구축Jaehoon Kim
 
mago3D 기술 워크샵 자료(한국어)
mago3D  기술 워크샵 자료(한국어)mago3D  기술 워크샵 자료(한국어)
mago3D 기술 워크샵 자료(한국어)SANGHEE SHIN
 
mago3d workshop in FOSS4G Korea 2018
mago3d workshop in FOSS4G Korea 2018mago3d workshop in FOSS4G Korea 2018
mago3d workshop in FOSS4G Korea 2018Gaia3D,Inc.
 
동국대 앱창작터 1일차:Cocos2d-X 소개, 환경설정, 주요개념
동국대 앱창작터 1일차:Cocos2d-X 소개, 환경설정, 주요개념동국대 앱창작터 1일차:Cocos2d-X 소개, 환경설정, 주요개념
동국대 앱창작터 1일차:Cocos2d-X 소개, 환경설정, 주요개념Changhwan Yi
 
17. cocos2d 기초
17. cocos2d  기초17. cocos2d  기초
17. cocos2d 기초Sangon Lee
 
[NDC2014] 직접 만들어서 즐겨보자 - Cocos2d-x3.0으로 한 시간만에 횡스크롤 슈팅게임 만들기 (함동기)
[NDC2014] 직접 만들어서 즐겨보자 - Cocos2d-x3.0으로 한 시간만에 횡스크롤 슈팅게임 만들기 (함동기)[NDC2014] 직접 만들어서 즐겨보자 - Cocos2d-x3.0으로 한 시간만에 횡스크롤 슈팅게임 만들기 (함동기)
[NDC2014] 직접 만들어서 즐겨보자 - Cocos2d-x3.0으로 한 시간만에 횡스크롤 슈팅게임 만들기 (함동기)Donggi Hahm
 
Unity Auto Build iOS
Unity Auto Build iOSUnity Auto Build iOS
Unity Auto Build iOSGiseok Lee
 
Cocos2d x v3.0 무엇이 달라졌나? (20140426)
Cocos2d x v3.0 무엇이 달라졌나? (20140426)Cocos2d x v3.0 무엇이 달라졌나? (20140426)
Cocos2d x v3.0 무엇이 달라졌나? (20140426)SeongWan Kim
 
올챙이로 살펴보는 Eclipse개발
올챙이로 살펴보는 Eclipse개발올챙이로 살펴보는 Eclipse개발
올챙이로 살펴보는 Eclipse개발cho hyun jong
 
프론트엔드 개발자의 자바스크립트
프론트엔드 개발자의 자바스크립트 프론트엔드 개발자의 자바스크립트
프론트엔드 개발자의 자바스크립트 jeong seok yang
 
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안Jeongsang Baek
 
Meteor Korea DEV School 1st day
Meteor Korea DEV School 1st dayMeteor Korea DEV School 1st day
Meteor Korea DEV School 1st dayseung-hyun Park
 
모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정
모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정
모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정funmeate
 
Mongo db 시작하기
Mongo db 시작하기Mongo db 시작하기
Mongo db 시작하기OnGameServer
 
Backend Master | 3.1.1 Build - JS build tools
Backend Master | 3.1.1 Build - JS build toolsBackend Master | 3.1.1 Build - JS build tools
Backend Master | 3.1.1 Build - JS build toolsKyunghun Jeon
 
[조진현]Kgc2012 c++amp
[조진현]Kgc2012 c++amp[조진현]Kgc2012 c++amp
[조진현]Kgc2012 c++amp진현 조
 

Similaire à Html5+js with game engine cocos2d-html5 분석 @KGC2012 (20)

Html5 게임 기술의 개요
Html5 게임 기술의 개요Html5 게임 기술의 개요
Html5 게임 기술의 개요
 
Windows에서 go+eclipse 개발환경 구축
Windows에서 go+eclipse 개발환경 구축Windows에서 go+eclipse 개발환경 구축
Windows에서 go+eclipse 개발환경 구축
 
mago3D 기술 워크샵 자료(한국어)
mago3D  기술 워크샵 자료(한국어)mago3D  기술 워크샵 자료(한국어)
mago3D 기술 워크샵 자료(한국어)
 
mago3d workshop in FOSS4G Korea 2018
mago3d workshop in FOSS4G Korea 2018mago3d workshop in FOSS4G Korea 2018
mago3d workshop in FOSS4G Korea 2018
 
동국대 앱창작터 1일차:Cocos2d-X 소개, 환경설정, 주요개념
동국대 앱창작터 1일차:Cocos2d-X 소개, 환경설정, 주요개념동국대 앱창작터 1일차:Cocos2d-X 소개, 환경설정, 주요개념
동국대 앱창작터 1일차:Cocos2d-X 소개, 환경설정, 주요개념
 
17. cocos2d 기초
17. cocos2d  기초17. cocos2d  기초
17. cocos2d 기초
 
[NDC2014] 직접 만들어서 즐겨보자 - Cocos2d-x3.0으로 한 시간만에 횡스크롤 슈팅게임 만들기 (함동기)
[NDC2014] 직접 만들어서 즐겨보자 - Cocos2d-x3.0으로 한 시간만에 횡스크롤 슈팅게임 만들기 (함동기)[NDC2014] 직접 만들어서 즐겨보자 - Cocos2d-x3.0으로 한 시간만에 횡스크롤 슈팅게임 만들기 (함동기)
[NDC2014] 직접 만들어서 즐겨보자 - Cocos2d-x3.0으로 한 시간만에 횡스크롤 슈팅게임 만들기 (함동기)
 
Unity Auto Build iOS
Unity Auto Build iOSUnity Auto Build iOS
Unity Auto Build iOS
 
What's new in IE11
What's new in IE11What's new in IE11
What's new in IE11
 
Cocos2d x v3.0 무엇이 달라졌나? (20140426)
Cocos2d x v3.0 무엇이 달라졌나? (20140426)Cocos2d x v3.0 무엇이 달라졌나? (20140426)
Cocos2d x v3.0 무엇이 달라졌나? (20140426)
 
04 프로세스
04 프로세스04 프로세스
04 프로세스
 
올챙이로 살펴보는 Eclipse개발
올챙이로 살펴보는 Eclipse개발올챙이로 살펴보는 Eclipse개발
올챙이로 살펴보는 Eclipse개발
 
프론트엔드 개발자의 자바스크립트
프론트엔드 개발자의 자바스크립트 프론트엔드 개발자의 자바스크립트
프론트엔드 개발자의 자바스크립트
 
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안
 
2D games with iOS or Corona
2D games with iOS or Corona2D games with iOS or Corona
2D games with iOS or Corona
 
Meteor Korea DEV School 1st day
Meteor Korea DEV School 1st dayMeteor Korea DEV School 1st day
Meteor Korea DEV School 1st day
 
모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정
모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정
모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정
 
Mongo db 시작하기
Mongo db 시작하기Mongo db 시작하기
Mongo db 시작하기
 
Backend Master | 3.1.1 Build - JS build tools
Backend Master | 3.1.1 Build - JS build toolsBackend Master | 3.1.1 Build - JS build tools
Backend Master | 3.1.1 Build - JS build tools
 
[조진현]Kgc2012 c++amp
[조진현]Kgc2012 c++amp[조진현]Kgc2012 c++amp
[조진현]Kgc2012 c++amp
 

Plus de Chanho Song

스마트폰 해킹과 대응 @KGC2013
스마트폰 해킹과 대응 @KGC2013스마트폰 해킹과 대응 @KGC2013
스마트폰 해킹과 대응 @KGC2013Chanho Song
 
스마트폰 해킹과 대응 @KASA
스마트폰 해킹과 대응 @KASA스마트폰 해킹과 대응 @KASA
스마트폰 해킹과 대응 @KASAChanho Song
 
No silver bullet @KASA open seminar
No silver bullet @KASA open seminarNo silver bullet @KASA open seminar
No silver bullet @KASA open seminarChanho Song
 
No silver bullet
No silver bulletNo silver bullet
No silver bulletChanho Song
 
No silver bullet
No silver bulletNo silver bullet
No silver bulletChanho Song
 
No silver bullet
No silver bulletNo silver bullet
No silver bulletChanho Song
 
No silver bullet
No silver bulletNo silver bullet
No silver bulletChanho Song
 

Plus de Chanho Song (8)

Unicode @KASA
Unicode @KASAUnicode @KASA
Unicode @KASA
 
스마트폰 해킹과 대응 @KGC2013
스마트폰 해킹과 대응 @KGC2013스마트폰 해킹과 대응 @KGC2013
스마트폰 해킹과 대응 @KGC2013
 
스마트폰 해킹과 대응 @KASA
스마트폰 해킹과 대응 @KASA스마트폰 해킹과 대응 @KASA
스마트폰 해킹과 대응 @KASA
 
No silver bullet @KASA open seminar
No silver bullet @KASA open seminarNo silver bullet @KASA open seminar
No silver bullet @KASA open seminar
 
No silver bullet
No silver bulletNo silver bullet
No silver bullet
 
No silver bullet
No silver bulletNo silver bullet
No silver bullet
 
No silver bullet
No silver bulletNo silver bullet
No silver bullet
 
No silver bullet
No silver bulletNo silver bullet
No silver bullet
 

Html5+js with game engine cocos2d-html5 분석 @KGC2012

  • 1. Gam html5 with e engine JS+ cocos2d- html5 분석 ANBSoft 게임공학기술연구소 송찬호 yellow@anbgames.com twitter : copperwhale
  • 2. d game eng ine or lib J S+html5 an FlashJS LimeJS Jaws HTML5 From : jswiki/Game-Engines
  • 4. cocos2d 2D 게임 같은 인터렉티브 어플리케이션을 만들 기 위한 오픈 소스 프레임워크
  • 5. cocos 2d 기본 컨셉 1. CocosNode 2. Director 3. Scene 4. Layer 5. Sprite 6. Action
  • 6. 본 컨셉 - CocosNode cocos2d 기 cocos2d의 모든 클래스가 CocosNode를 상속 하여 구현 ● position, scale, visible 등 기본 속성 ● 계층 구조를 위한 add, remove, reorder ● schedule 기능
  • 7. 기본 컨셉 - Director cocos2d 어플리케이션을 구성하는 여러 Scene들 가운 데 무엇이 활성화 되는지 흐름을 관리
  • 8. - Scene cocos 2d 기본 컨셉 스테이지 나 타이틀 처럼 어플리케이션의 흐름 의 독립적인 한 부분을 정의하는 단위
  • 9. - Layer cocos 2d 기본 컨셉 화면을 구성하는 단위로 하나 이상의 Layer를 정의하여 하나의 Scene을 구성
  • 10. - Sprite cocos 2d 기본 컨셉 이동, 회전, 크기변환, 애니메이션 등을 적용할 수 있는 2D 이미지
  • 11. - Action cocos 2d 기본 컨셉 CocosNode 객체(Scene, Layer, Sprite 해당 됨)에 position, rotation, scale 등과 같이 객체 의 속성을 시간에 따라 변경하는 것을 처리
  • 12. co cos2d의 가족 cocos2d +cocos2d-iphone +cocos2d-android +cocos2d-javascript +cocosBuilder +cocos2d-x +cocos2d-html5 <- !!!
  • 14. coc os2d-html5 현재 버전은 2.0 ● files must load from HTTP server ● Google Closure Compiler surpport ● Unified Javascript API style ● DOM Menu/UI ● Updated API to Cocos2d-x V2.0
  • 15. Closure Co mpiler - 1 Google Javascript를 최적화 해서 브라우져에서 다운로 드와 실행 속도를 향상
  • 16. Closure Co mpiler - 2 Google "Advanced mode" 적용 ● 게임 로직과 묶어서 하나의 파일로 패키징 가능 ● 코드 최소화(주석 및 비칸 제거 등) ● 사용하지 않는 코드 제거 ● 코드 난독화
  • 17. DOM M enu / UI html DOM 방식으로 메뉴 구성 가능 ● 정적인 메뉴를 구성시 매 프레임 다시 그리 지 않아 속도향상 ● 텍스트 출력 속도 향상
  • 18. d Javascript API style Uni fie cocos2d-iphone 및 cocos2d-x의 JS-Binding 의 스크립트와 cocos2d-html5 코드가 같음 For example: var sprite = cc.Sprite.spriteWithFile(s_grossini_dance_atlas, cc.RectMake(x, y, 85, 121)); //is changed to... var sprite = cc.Sprite.create(s_grossini_dance_atlas, cc.RectMake(x, y, 85, 121));
  • 19. cocos2d -html5 1/2 cocos2d-x 와 cocos2d-x 기반 제작 비슷한 구조로 비교 분석이 쉽다. ● Cocos2d-html5-v2.0.zip 안의 cocos2d폴더 와 cocos2d-2.0-x의 cocos2dx 폴더가 비슷 한 구조로 구성 되어 있음
  • 21. 라이 브러리 구성 cocos2d-x ● cocos2dx 폴더 내부의 cpp를 컴파일 .lib나 . a 등 라이버러리 생성 cocos2d-html5 ● cocos2d 폴더 내부의 js 파일을 google closure compiler 로 라이브러리 js파일 생 성
  • 25. 게 임의 구성 html 파일 + js 파일 로 구성 ● html 파일은 canvas 정의 - id와 크기 지정 ● js 파일은 어플리케이션 로직 및 엔진
  • 26. 파일 구성 index.html - 캔버스 정의 및 cocos2d.js 로딩 cocos2d.js - 엔진 초기화 및 게임 코드 파일 로딩 main.js - 엔진에 게임 객체 생성 및 전달 resource.js - 리소스 목록 정의 myApp.js - 'Hello World' 메시지 및 이미지 출력 build.xml - google closure compiler를 이용한 통합 파일 생성을 위한 ant 빌드 스크립트
  • 27. l 파일 - in dex.html htm Canvas 정의 x JS 호출
  • 28. 파일 - coc os2d.js 1/2 JS 엔진 정보 설정 게임 로딩 정보 설정
  • 29. 파일 - coc os2d.js 2/2 JS 게임의 코드 파일 목록 패키지 및 엔진 로딩 방법 정의
  • 30. JS 파일 - m ain.js 1/3 게임 객체 정의 게암 객체 생성
  • 31. JS 파일 - m ain.js 2/3 엔진 초기화 디렉터 초기화 (AppDelegate)
  • 32. JS 파일 - m ain.js 3/3 게임 초기화 완료 게임의 시작 씬
  • 33. JS 파일 - r esource.js 리소스 과련 매직 넘버 정의 전체 리소스 목록
  • 34. 파일 - myA pp.js 1/2 JS Hello World 화면 갱신 알림 엔진 로고 엔진 정보 종료 버튼
  • 35. 파일 - myA pp.js 2/2 JS CircleSprite (화면 갱신 알림) ● 매 프레임 갱신되는 객체 ● 기본 도형 그리는 함수로 그림 Helloworld (cc.Layer 확장) ● 종료 버튼 이미지 및 이벤트 정의 ● 'Hello World' 문구, 화면 갱신 알림 및 엔진 로고 이미지 객체 생성 및 에이 메이션 정의 HelloworldScene (cc.Scene 확장) ● Helloworld 레이어 생성 및 등록
  • 36. Hello HTM L5 World hello HTML5 world
  • 37. l 파일 - build.xml 1/2 xm 컴파일러 정의 (google closure compiler) 컴파일 결과 정의
  • 38. l 파일 - build.xml 2/2 xm 엔진 소스 목록 게임 소스 목록
  • 39. ant 빌드 1/2 ant 빌드 실패 엔진 파일 목록에 존재하지 않는 파일이 있어 빌드 실패 <file name="keypad_dispatcher/CCKeypadDelegate.js"/> <file name="keypad_dispatcher/CCKeypadDispatcher.js"/>
  • 40. ant 빌드 2/2 ant 빌드 성공 !! 정상적인 결과 파일을 만들기 위해 build.xml 을 수정해야 합니다. !! <file name="keypad_dispatcher/CCKeypadDelegate.js"/> <file name="keypad_dispatcher/CCKeypadDispatcher.js"/> 를 <file name="touch_dispatcher/CCTouchDelegateProtocol.js"/> <file name="touch_dispatcher/CCTouchHandler.js"/> <file name="touch_dispatcher/CCTouchDispatcher.js"/> <file name="keyboard_dispatcher/CCKeyboardDelegate.js"/> <file name="keyboard_dispatcher/CCKeyboardDispatcher.js"/> 로 수정해야 합니다.
  • 41. 과 - myAp p-v0.1.js 빌드 결
  • 43. - cocos2d- x win32 1/3 b oot engine run() 호출
  • 44. - cocos2d- x win32 2/3 b oot engine mainLoop() 호출
  • 45. - cocos2d- x win32 3/3 b oot engine 1. main.cpp a. CCApplication::sharedApplication()->run(); 2. platform/CCApplication.cpp - run() b. applicationDidFinishLaunching() c. looping CCDirector::sharedSirector()->mainLoop()
  • 46. - cocos2d- html5 1/8 b oot engine cocos2d.js 로딩
  • 47. - cocos2d- html5 2/8 b oot engine DOM 로딩 완료 엔진 및 게임 스크립트 파일 정의 스크립트 로딩 (jsloader.js)
  • 48. - cocos2d- html5 3/8 b oot engine 엔진 로딩 목록 main.js 로딩 목록 추가
  • 49. - cocos2d- html5 4/8 b oot engine 리소스 로딩중 표시 로딩 완료 후 호출
  • 50. - cocos2d- html5 5/8 b oot engine run() 호출
  • 51. - cocos2d- html5 6/8 b oot engine applicationDidFinishLaunching() 호출 mainLoop() 호출 mainLoop() 호출
  • 52. - cocos2d- html5 7/8 b oot engine 1. index.html a. cocos2d.js 로딩 2. cocos2d.js b. 즉시 실행 함수에서 DOM로딩 직후 jsloader.js 로딩 3. jsloader.js - (여러 js을 읽는 경우) c. 즉시 실행 함수에서 모든 엔진 코드 및 main.js 로딩
  • 53. - cocos2d- html5 8/8 b oot engine 4. main.js - ctor() a. cc.Loader.shareLoader().onload 이벤트로 cc. AppController.shareAppController(). didFinishLaunchingWithOptions() 호출 5. AppControl.js - didFinishLaunchingWithOptions() b. cc.Application.sharedApplication().run(); 6. CCApplication.js - run() c. applicationDidFinishLaunching() d. looping cc.Director.getInstance().mainLoop();
  • 54. boot up 비교 cocos2d-x ● 플랫폼 별 다른 엔트리 포인트에서 CCApplication.cpp 의 run() 호출 ● 윈도의 경우 platform/win32/CCApplication.cpp 의 run() 에서 mainLoop() 호출 cocos2d-html5 ● 엔진 및 어플리케이션 코드 로딩 ● 로딩 과정에서 즉시 실행 함수로 초기화 ● 로딩 완료 이벤트 수신 후 platform/CCApplication.js 의 run() 에서 mainLoop() 호출
  • 55. 2개의 main Loop() ?? etc - mainLoop() 호출 Looping callback 등록 mainLoop() 호출 Looping callback 등록
  • 56. html5 - javascript 게임 개 발을 위한 기능들
  • 57. 패턴 1/2 을 위한 Jav ascript 사용 게임 모듈 패턴 - 네임스페이스 패턴, 즉시 실행 함수 등 상속 패턴 - 프로토타입 목록 및 객체 정보 복사를 이용
  • 58. 패턴 2/2 을 위한 Jav ascript 사용 게임 객체 상수 - 매직 넘버를 정의하기 위한 객체 정의 방법 ... JavaScript Patterns - 자바스크립트 코딩 기법과 핵심 패턴
  • 59. Displa y - Canvas
  • 60. Displa y - WebGL
  • 61. lay - Canva s vs WebGL Disp Canvas ● 모든 시스템에서 지원 ● 상대적으로 느리지만 지속적으로 개선 WebGL ● gles 2.0 과 비슷한 사양 ● Canvas에 비해 매우 빠르고 동작 한다면 호환성 이슈 적 음 ● WebGL tutorial - Opera 개발자(Erik Moller) ● WebGL Terrain Editor
  • 62. performanc e test 1/2 Display - 2012-3-19 internet-explorer-10-fast-and-native-has-gone-to-other-browsers
  • 63. performanc e test 2/2 Display - 2011-11-18 html5-2d-gaming-performance-analysis
  • 64. D isplay - cocos2d-html5 canvas 생성
  • 65. Input addEventHandler ● 첫번째 인자로 원하는 이벤트를 지정 ○ 'keyup', 'keydown' ○ 'mousedown', 'mouseup', 'mousemove' ○ 'touchstart', 'touchmove', 'touchend', 'touchcancel' ● 두번째 인자로 이벤트 처리 함수 지정 ● 세번째 인자로 캡쳐 방식의 이벤트 처리 ○ 일반적인 경우 부모 객체에게 이벤트 전달 ○ 캡쳐 방식의 경우 부모객체에게 이벤트 전달을 하지 않음
  • 66. yboard coc os2d-html5 Input - ke 키 이벤트 등록
  • 67. - mouse coc os2d-html5 Input 마우스 버튼 누름 이벤트 마우스 버튼 업 이벤트 마우스 이동 이벤트
  • 68. Audio
  • 69. io - codec in browser Aud
  • 70. Audio 현재 ● 단순한 기능 ● 메모리에 로딩된 사운드만 출력 ● 브라우져 별 지원 코덱 다름 ● 아이폰의 경우 전체 화면이 아닌 경우 출력되지 않음 미래 ● 기능 확장을 위한 다양한 시도중 ○ 스트리밍 처리에 대해 W3C 제안 ○ 하위 수준의 API 개발
  • 71. A udio - cocos2d-html5
  • 72. N etwork - W eb socket
  • 73. o rk - Web so cket client Netw Web socket - client ● TCP 기반의 실시간 양방향 통신 가능 ● 다수의 사용자와 통신 가능 ● 사용하기 쉽다 안드로이드 계열에서는 지원하지 않음 ;;; ● iframe 나 Ajax 등 비동기 JS 계열의 기술을 이용
  • 74. o rk - Web so cket server Netw Web socket - server ● 기존 TCP 소켓 서버와 약간 다른 구현이 필요 ● 다양한 언어를 위한 오픈 소스 서버 프레임 존재 ○ jwebsocket ○ pywebsocket ○ phpwebsocket ○ web-socket-ruby ○ socket.io-node ○ ...
  • 75. high p erformance 변수 선언 위치 성능 향상을 위한 코딩 패턴 ... ● Extreme JavaScript Performance 참고자료 ● JavaScript 자바스크립트 성능 최적화
  • 76. multi browser 브라우져 마다 특성 다름...;; ● 시각적 결과 ● 지원 기능 ● 성능 ● 개개의 브라우져에 대응하도록 소스 코드 튜닝 ● 특정 브라우져만 지원, 해당 브라우져 설치 유도
  • 77. - html5 & javascript debug Firefox - Firebug Chrome - Chrome developer tool ● 브레이크 포인터, 라인 단위 실행 등 디버깅 기능 ● 변수값 표시 ● 로그 출력 ● 성능 프로파일링 ● 호출 스텍 표시 ● 리소스 로딩 모니터링 ● 기타 등등
  • 78. IDE - C onstruct 2 Make HTML5 games with Construct 2
  • 79. IDE - coc osBuilder
  • 80. IDE - coc osBuilder CocosBuilder 3 Animation Editor
  • 81. html5 - javascript 그래서...