Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.

Cocos2d-x Console @Cocos Talks #3

2.640 visualizaciones

Publicado el

Cocos v2.2 と Cocos2d-x Console 機能の紹介
Cocos2d-x Talks #3

Publicado en: Móvil
  • Sé el primero en comentar

Cocos2d-x Console @Cocos Talks #3

  1. 1. Cocos2d-x Console Akihiro Matsuura @ Syuhari, Inc.
  2. 2. About me • 松浦 晃洋 • 株式会社シュハリ 代表取締役 • Cocos2d-x ゲーム開発 • 書籍、雑誌などの執筆 • Cocos2d-x エヴァンジェリスト
  3. 3. 開発のプロが教える Cocos2d-x逆引きガイドブック
  4. 4. Cocos2d-x Game Development Essentials Building Android Games 
 with Cocos2d-x 海外での出版に協力
  5. 5. Cocos2d-x 開発者の祭典! 4/2 北京 http://devcon.cocos.com/
  6. 6. 週刊アスキー でレポート http://weekly.ascii.jp/elem/ 000/000/325/325033/
  7. 7. Agenda • Cocos v2.2 • Console 機能
  8. 8. Cocos v2.2
  9. 9. • メリット • プロジェクトの新規作成が簡単 • Cocos2d-x がプレビルドされている • Build が早い! • デメリット • Cocos2d-x のソースがヘッダしか見れない • カスタマイズできない Cocos framework v3.5
  10. 10. Console 機能を利用する
  11. 11. What about Console • アプリケーションの情報を見られる • シーングラフ • テクスチャキャッシュ • Xcode や DDMS なしで端末のログを見られる • タッチ操作をシミュレートできる • コマンドを追加することができる
  12. 12. Console 実装方法 https://github.com/syuhari/Console
  13. 13. Start Console // Console クラスのインスタンスを取得 auto console = Director::getInstance()->getConsole(); // TCPポートを指定して接続を待ち受ける console->listenOnTCP(6010);
  14. 14. Connect your game $ telnet localhost 6010 Trying ::1... telnet: connect to address ::1: Connection refused Trying 127.0.0.1... Connected to localhost. Escape character is '^]'.
  15. 15. help command > help Available commands: allocator Display allocator diagnostics for all allocators config Print the Configuration object debugmsg Whether or not to forward the debug messages on the console. Ar director director commands, type -h or [director help] to list supported exit Close connection to the console fileutils Flush or print the FileUtils info. Args: [flush | ] fps Turn on / off the FPS. Args: [on | off] help Print this message projection Change or print the current projection. Args: [2d | 3d] resolution Change or print the window resolution. Args: [width height re scenegraph Print the scene graph texture Flush or print the TextureCache info. Args: [flush | ] touch simulate touch event via console, type -h or [touch help] to li upload upload file. Args: [filename base64_encoded_data] version print version string >
  16. 16. scenegraph command > scenegraph > <Scene | tag = -1> - <Node | Tag = -1 - <Layer | Tag = -1> -- <Node | Tag = 0 --- <Sprite | Tag = 5, TextureID = 4> Total Nodes: 5
  17. 17. texture command > texture > “/HelloWorld.png" rc=2 id=4 960 x 640 @ 32 bpp => 2400 KB "/cc_2x2_white_image" rc=1 id=3 2 x 2 @ 32 bpp => 0 KB "/cc_fps_images" rc=4 id=2 999 x 54 @ 16 bpp => 105 KB TextureCache dumpDebugInfo: 3 textures, for 2505 KB (2.45 MB)
  18. 18. Upload a file > upload filename base64 • 指定したファイル名で FileUtiles::getWritablePath のパスへフィル をアップロード • ファイルの内容は base64 でエンコードして指定
  19. 19. Upload a file by script #!/bin/sh if [ $# -lt 2 ]; then echo "IPアドレスとアップロードするファイルを指定してください" echo "usage : ./upload.sh ipaddress filename" exit 1 fi path=$2 filename=${path##*/} file=`cat $2 | base64` commandline() { sleep 1; echo "upload $filename $file" sleep 5; } commandline | telnet $1 6010
  20. 20. Custom Command
  21. 21. Dispatch Event cocos2d::Console::Command event = { "event", "dispatch custom event. Args:[event name]", [](int fd, const std::string& args) { Director::getInstance()-> getEventDispatcher()->dispatchCustomEvent(args); const char msg[] = "dispatched custom event!n"; send(fd, msg, sizeof(msg),0); }}; Director::getInstance()->getConsole()->addCommand(event);
  22. 22. Remove a file cocos2d::Console::Command del = { "remove", "remove a file. Args:[filename]", [](int fd, const std::string& args) { auto path = FileUtils::getInstance()-> getWritablePath() + args; int ret = remove(path.c_str()); if (ret==0) { const char msg[] = "removed file!n"; send(fd, msg, sizeof(msg),0); } else { const char msg[] = "could not remove filen"; send(fd, msg, sizeof(msg),0); } }}; Director::getInstance()->getConsole()->addCommand(del);
  23. 23. 注意点 Scheduler *sched = Director::getInstance()->getScheduler(); sched->performFunctionInCocosThread( [](){ // メインスレッドで行う処理 }); • コマンドはネットワークスレッドで実行される • UI などの操作をするときは注意が必要 • メインスレッドで実行したい処理は下記のように処理する
  24. 24. Demo
  25. 25. Summary • Cocos v2.2 はぜひ試してみて! • Console は便利!
 カスタマイズできるのがイイ!
  26. 26. Cocos2d-x で 開発したいエンジニア 大募集中! • @syuhari • facebook.com/syuhari

×