woshidan's blog

そんなことよりコードにダイブ。

Cocos2d-xの勉強会のスライドを一通り辿ってみたときの話

この記事は〇〇勉強してみた Advent Calendar 2017の19日目の記事です。

はじめに

現在お仕事で開発しているライブラリはiOS/AndroidだけでなくCocos2d-xやUnityなどのプラットフォームに対し、クロスプラットフォーム展開をしており、その一環としてCocos2d-x用SDKのメンテナンスを担当したことがありました*1

それがきっかけで上長から「(Cocos2d-xの)勉強会とかもうちょっと行ってみたら? まとまった時間は取れるかどうかわからないけど」という話になり、日々30分強をもぎとり*2、過去の勉強会のスライドを30個眺めてみたときの話をします。

なぜ過去の勉強会のスライドを眺めていったかというと、インターネット上に東京から出かけられる範囲で開催予定の勉強会が見つからなかったからです*3

やってみた感想として

自分には普段からあまり馴染みのない分野について調べる場合、説明の文章を読むだけで頭がヒートアップしてなかなか進まないことが非常に多いです。そのため、慣れない分野に取り組むとき、普段は2時間くらいを単位として時間を確保して取り組むことが基本だったのですが、今回はお仕事の都合で30分強しか枠が取れないので果たしてどうなるかなという感じでした。

結論として、自信を持ってコードを書いていける強度の知識はあまり身についておらず、実装関連も細切れの時間だとなかなか取り組むことができずで中途半端な感じでした。

その代わりに馴染みのような感覚ができました。以前はCocos2d-xの関連issueを読むとき、かなり多くの文章が初めて読む文章だったのですが、これだけ読んでみると、どれもなくなんとなく知ってるものを詳しく調べるの枠に入ってきます。

後半にあたった資料は前半にあたった資料より時間あたりに(がっつり学習したほどではないにせよ)得られるものが多かったです。

なんとなく知ってるというのはそのまま実装に使えるわけではありませんが、調査とか調査とか調査とかばっかりしていると、なんとなく知ってるものは調べるに当たってゆるやかでも時間の計算ができるので非常にありがたいです。精神に効きます。

また、これまで学習・即・仕事、みたいな一直線でかつかつの学習計画をとることが多かったため、日頃からなんとなくアンテナを張っておけ、という話がどの程度有用なのかよくわかりませんでしたが、なるほどこういう感覚を作るためのものなのだなぁ、と体感できて面白かったです。

最近はリモートワークで通勤なしとはいえ全部の分野に毎日2時間かけるわけにはいかないため、今回得た感覚を生かして、トレンドを把握したい分野、直近で専門的に取り組みたい分野、などを分けてQiitaやTwitterをもっと利用していきたいなと思いました。

言われなくてもわかるやろという話ですが、めっぽう体感派なのですみません...。

得たゆるふわ知識

最後にゆるふわなのであんまり参考にならないのですが、自分が特に印象に残った範囲をつらつら箇条書きにして締めたいと思います。

現場からは以上です。

  • アプリ界隈と用語が異なる
    • サーバ連携 = 通信 / オブジェクト = UI Componentなど。発表者の周りの用語かもしれませんが意外だった。検索するときに戸惑いそう...
  • 物理エンジンの作り方で
    • Chipmunk シェイプを作成は設定項目が多いので専用エディタがある、物理構造の一部を固定 => joint/衝突判定用のリスナ b2ContactListener
    • Box2D AngryBirdとかで使われた.
  • 画像を読み込むときは
    • I/Oを減らすためにTexture Atlas(キャラチップやマップチップのような画像)を利用
    • CCSpriteBatchNodeはアセットの用意が複雑だが圧倒的に速い
    • ラベルの表示は文字をそのままCCLabelTTFで実装するとフォントサイズをOS/機種ごとに変更する必要があってつらいので、CCLabelBMFontクラスで画像化するとよい
  • Cocos2d-x 3.0系以降ではC++11を想定して良いこと
  • リソースなどの調整をするたびにエディタを触って組み込んでビルドするのは大変なのでサーバーに画像などを置きアプリのリソース確認の際にはサーバからリソースを取得して確認を行うという話があったこと
    • それがCocos2d-xのIDEにも組み込まれていたこと(Cocos Code IDEとHot Updating)
  • UIの部品は基本的なボタンが含まれるCCMenuItemの仲間とその他に別れ、後者の方が取得できるイベントが多いが前者の方がイベントリスナなどの設定がまとめてできること
  • アニメーションは、キーフレームに合わせて効果音の設定をし、キーフレームを組み合わせてタイムラインを作って書き出すこと
  • アニメーションなどをGUIで生成するツールは現在開発が活発ではなく不安が残ること
  • 普通のゲームでは毎フレーム呼ばれるupdate()関数で諸々のグラフィックの更新を少しずつするらしいこと
    • cocos2d-xではrunActionを使って書いていくのがCocos流

参考

得たゆるふわ知識、の節で書いた範囲のものについて

*1:そのときはAndroidの方の知識で頑張りました

*2:進捗は一応出してたからいいですよね!

*3:2017年11月当時、これはこれで面白いなと思いました。