ちょっと話題の記事

[Cocos2d-x]第6回cocos2d-x勉強会レポート[TechBuzz]

2014.07.31

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

こんばんは!本日開催された

【#TechBuzz】第6回cocos2d-x勉強会: Lua-Bindingsゲーム開発 / cocos2d-xを使った開発で効率よく多職種連携したい話 / Cocos2d-x extensinosの活用(Facebook/Twitter連携など) / ネイティブ連携でPlugAirをcocos2d-xで使えるようにしてみよう 〜

こちらの勉強会についてのレポートを書きます。久しぶりに参加した勉強会で、少し興奮気味でした。

地方で活動していて中々勉強会に参加できない方や、自分のメモも兼ねて議事録調に書きます。

平日開催(結構短いスパンで頻繁に開催されています。)に関わらず、70人以上もの方が参加される勉強会ということでCocos2d-xの注目度の高さ・コミュニティの活発さが伺えます。

株式会社HatchUpさま 挨拶

発表

メインセッション

慶應義塾大学大学院政策・メディア研究科 桜井雄介さま cocos2d-x 3.0 Lua-Bindingsでゲーム開発

前情報

  • Cocos2d-x本家中国の開発者の中ではLua bindingsが7割を占める
  • 日本では株式会社gumiが主に利用

本題

  • Lua bindingsは実際に使えるのか?
    • 有名コンシューマゲーム[FF14・アイドルマスターなど]でもLua言語は採用されている
    • Luaは軽量スクリプト言語 C++とは正反対
  • Cocos2d-xでLuaはどう使われているのか
    • C++とLua比較
      • コードの記述量自体はそんなに変わらない
      • Cocos2d-x3.x系からC++11が使えるようになったのでコールバックなどもあまり変わらない
      • Luaでのクラス定義の柔軟さを紹介 継承ではなく拡張
      • よく利用されるonEnterやonExitメソッドのLuaでの書き方を紹介
      • よく利用されるupdate(スケジューラ)の書き方を紹介 C++と比較して、任意の箇所でコールバック処理を書けるのでLuaの方が柔軟に記述できる
  • EclipseベースのIDE、Cocos Code IDEの紹介
    • Luaの部分的型推論とコード補完
      • 型がないのに型推論が効くのでとても便利
    • ビルドとデバッグ
      • ブレークポイントとコンソールがLuaでも使える 変数の確認 コールスタックの確認など
    • リソースの動的更新
      • アプリ内にTCPサーバを2つ立ててランタイムに更新処理(デバッグ中にプログラムが変更でき、即時反映される)
    • Cocos2d-x3.0から3.2(現在)までで大幅に改良されている
  • Lua bindingsでの注意点
    • Luaだと使えないクラスがある
    • Luaのテーブルで代用ができる
    • 配列のインデックスが1から始まる
    • ガベージコレクションでメモリを管理(Cocos2d-xは参照カウンタ)
  • Lua bindingsの問題点
    • ドキュメントがない
    • Cocos Code IDEの使用がほぼ前提
    • デバッグが物足りない
    • スクリプト言語の静的な安全性のなさ(作る効率自体は上がるが将来的な保守性は下がる)
    • 思わぬバグに時間を取られる
  • Luaを使う利点
    • 関数型プログラミングのようなことができる
    • リスト、ハッシュマップ操作などがC++に比べて便利
    • C++と比較してコールバックメソッドの記述に縛られない

IMG_1953

実際にコードを編集しながらゲーム画面を確認している様子

まとめ

何はともあれ動的更新ができるデバッグが超便利!Lua bindingsで開発をするのであれば、Cocos Code IDEを使いましょうとのことでした。

実際にCocos Code IDEとSublime Textを用いて、ライブコーディングデバッグをお見せして下さいました。

Lua bindings自体は十分実用レベルであるようです。自作C++クラスとの連携とかをやろうとすると面倒なようでした。

Cocos2d-x3.0の時にCocos Code IDEの導入記事を書いておりますので、もしLua bindingsに興味を持たれた方がいらっしゃいましたら参考にして下さい。

10分でできるCocos Code IDEの導入手順

フリーランス 戸谷直之さま cocos2d-xを使った開発で効率よく多職種連携したい話

本題に入る前に

  • デザイナの定義とは
    • グラフィックデザイン
    • ゲームデザイン
    • レベルデザイン
    • ソフトウェアデザイン

本題

  • デザイナとプログラマのお互いの作業領域について
    • お互いに面倒
    • 自分の仕事がユーザの元でどういう体験になるか瞬時にプレビューされるべき
    • ソシャゲでよくあるフロー:グラフィッカ → マークアップ → エンジニア → ユーザ
    • 全てのアクターがユーザに直でコミットできたら良いよね
    • 実現するのは難しい。。。エンジニア「SDK入れて、NDK入れて・・・」デザイナ「」

そもそもアセットを変更しただけなのにソースをビルドするのがおかしい

ここで、Cocos Code IDEのネタが桜井氏とかぶる事故が発生。なんとスライドのデザインまでかぶる。

  • デザイナとプログラマの共同作業
    • リアルタイムデバッグのアセットだけ変えられる良さ
    • gitやCI環境、配布環境も含めた開発サイクルの紹介
    • resディレクトリをサブモジュールに
    • そのresディレクトリはデザイナがgit管理 全てのデザイナがgitを使うというのは敷居の高さがあるので、学習コストはしっかり払いましょう
    • Github for Macとかツールを使えば便利
    • 別にgitじゃなくてもいい
  • 継続的デリバリ

    IMG_1957

まとめ

  • デザイナ同士効率良く連携したい
  • それぞれの担当者がビルドをする環境を整えるのは大変
  • Cocos2d-xにはHot Updatingがある
  • Jenkins / Deploy Gateを組み合わせたらうまくいった

チームビルディングから開発体制を固めていく解説をして頂けました。

ゲームアプリでもCI環境を作るのはとても大事なことですね。リリース・運用をするのであればテストコードもしっかり書くべきだと思いました。

10分LT

熊谷 遼平さま 【Cocos2d-x extensinosの活用(Facebook/Twitter連携など)】

本題に入る前に

Cocos2d-xでリリースしている知育アプリの紹介

本題

  • Extentionsを効率的に使おう
      • Plugin-Xを使ってみてのメリット
        • 拡張機能の一元管理
        • プロトコルの共通インターフェース
      • デメリット
        • Cocos2d-xのバージョンアップ対応が面倒
        • コンパイルではハマりポイントが多々ある。
        • 仕組みの理解に時間がかかる
        • 少々使いづらい・・・
      • 拡張機能のフォルダ構成を紹介
      • どんなExtentionsを採用したか
        • LocalizedString(多言語化)
        • crypto(暗号化)
        • re2(Googleのライブラリ)
        • twitter(自作)
        • Facebook(自作)
        • NativeInterface(ブラウザ起動 / バージョン取得など)

    IMG_1958

    • 一度Extentionsを作成すれば使い回しが効く
      • ブラウザから戻ってきた時のコールバック処理なども作成している(後日githubで公開予定)

おまけ

  • クラウドソーシングのすすめ
    • 音声データなど依頼すると、アジアの方々から早い・品質が高い素材を受け取ることができた

まとめ

Extentionsはどんどん作っていった方が良さそうです。

開発 → リリースのサイクルを早く回すことは特にカジュアルゲームでは重要な事なので抑えておいた方が良いでしょう。

竹井 英行さま 【ネイティブ連携でPlugAirをcocos2d-xで使えるようにしてみよう】

Cocos2d-xはver3.x以降から触ったようです。(CCPrefixとか知らない...)

  • PlugAirについての紹介
    • ゲームアプリでもPlugAirを使いたい
    • イヤホンジャックから電源を給電してマイコンを動かす
    • cppファイルからロボットを操作
    • PlugAir APIはObjective-C(C++含む)で実装
    • delegate経由でPlugAir APIを実行
    • C++ → Objective C++ → Objective-Cの解説とデモ

IMG_1961

まとめ

ハードウェア + Cocos2d-xのネイティブ連携は私自身非常に興味深いです。

かわいいロボット型のイヤホンジャックを抜き差しする事でCocos2d-xアプリの挙動が変わるというデモを見せて頂けました。

「触る」というアクションで、ユーザにダイレクトに楽しさを伝えられるのがハードウェアの良いところですね。

総評

Cocos2d-xについて目新しい事はありませんでしたが、久しぶりに勉強会に参加できたのが良かったです。

Luaのドキュメントを日本語で書いてくれる人を会場で募っていたり、やはり勉強会に出ないとわからない面白さや温度感がありました。

オープンソースフレームワークの普及には、コミュニティの活動が欠かせません。Cocos2d-x勉強会に参加すれば、共感できる人とのコミュニケーションを取る機会が多いです。また、様々な背景から今のCocos2d-xでのアプリ開発に移って来た人がいるので、話題も尽きません。

もし参加したい方がいれば、社会人・学生問わずに思い切って参加してみるべきだと思います。