モーリーのメモ

プログラミングやCG作成等、アプリ開発を中心に情報を収集中!

Version 1.3.1アップデート情報!:Cocos Creator

 Cocos CreatorのVersion 1.3.1がリリースされたので、その更新内容を確認しました。
 私は更新情報を読んで、それまで知らなかった機能や使い方を知ることがしばしばあるので、ざっとですが目を通しています。

使用環境

 私が使用している環境です。

  • Mac OS X El Capitan Version 10.11.6
  • Cocos Creator Version 1.3.1
  • ブラウザ:Google Chrome Version 54.0.2840.87 (64-bit)

v1.3.1 リリース情報

 下記のページのリリース情報を読んでみました。
discuss.cocos2d-x.org

Cocos Creator 1.3.1 がリリースされました!

 CocosCreatorのバージョンの1.3.1 をリリース出来ることにワクワクしています。Cocos Creatorは、ゲーム開発の全てのステップを処理する、新しい、統一された開発ツールです。
 
 このバージョンは、Webとネイティブの両方のプラットフォームで、信じられないほどの性能の向上を提供しています。このバージョンの6つの主要な機能と多数の小さな変更により、Creatorは、プロジェクトの多岐にわたるニーズを満たします。以下は、この更新のハイライトです。

  • Richテキストのサポート
  • Dragon Bonesケルトンアニメーションのサポート
  • Prefabの自動同期
  • アトラスへテクスチャを自動パッケージ
  • UIコントロール(PageView、Toggle、ToggleGroup、Slider)の追加
  • 新しいオーディオエンジン

重要な更新の説明

 Windowsバージョンは、現在64ビットアーキテクチャを使用しており、32ビットWindowsシステムはサポートしていません。これによりエディタは、多数の画像リソースの処理が可能となり、効率が少なくとも5倍向上するだけでなく、新興の画像フォーマットのWEBPをサポートします。

機能のハイライト

Richテキストのサポート

 RichTextにより、ついにあなたのゲーム内で、まともなチャットチャンネルや戦闘ログを持つことが出来ます。新しいRichTextコンポーネントは、文字列内のBBCodeタグに基づいて、異なるスタイルのテキストを自動的に生成出来ます。現在サポートされているタグは、size、color、b、i、u、img、onで、それぞれフォントのサイズ、フォントの色、太字、斜体、下線、イメージ、クリックイベントをカスタマイズするために使用されます。Richテキストにより、豊富なスタイルでテキストを表示するために、入力データの特定の文字列フォーマットで、一部のUI要素を簡単に使用できます。

Dragon Bonesケルトンアニメーションのサポート

 ユーザーの呼びかけに応じて、このバージョンで、DragonBones(非常に人気のあるスケルトンアニメーション編集ツール)のサポートを追加しました。Dragon BonesコンポーネントとSpineコンポーネントの働きは似ています。シーンで再生するためには、DragonBonesコンポーネントを持つノードを作成し、DragonBoneアニメーションデータと画像データをコンポーネントにドラッグしてエクスポートする必要があります。エディタで簡単に、デフォルトアニメーションのように、再生速度やサイクルタイム等のコンポーネントのプロパティをカスタマイズすることも出来ます。

Prefabの自動同期

 最初からPrefabアセットは、プロジェクトでリソースと要素を再利用出来るように設計されています。しかしCreatorの以前のバージョンは、一度シーンにドラッグされたPrefabは、Prefabアセットが更新されたても自動的に同期されません。これは今後のバージョン1.3で修正されています。Prefabアセットを作成する時、シーン内のPrefabインスタンスを自動で更新するかどうか手動で選択出来ます。
 f:id:mmorley:20161108213036p:plain
 上図は、シーン内のインスタンスが自動的に同期されていることを示しています。
 f:id:mmorley:20161108213046p:plain
 上図は新しくPrefabを作成したときのデフォルトの状態を示しています。Prefabのインスタンスはアセットの変更に自動的に同期しません。これは以前のバージョンのような古いふるまいです。
 
 この小さな機能の追加により、複数のUIメニューで構成されたメインメニューのシーンのような静的なシーンの管理が簡単になります。メニューごとにPrefabを作成し、特定の人によって管理することができます。Prefabを管理する人は、そのPrefabを修正と変更内容の保存が可能であり、他のチームのメンバーはPrefabアセットの更新を得さえすれば、シーン内でその更新が表示されます。そしてシーンのアセットは処理の間に全く変更されません。これは、複数の協力者による作業の効率を著しく向上させることでしょう!

UIコントロール(PageView、Toggle、ToggleGroup、Slider)の追加

 UIライブラリをさらに強化するために、このバージョンで、4つの新しいUIコントロール(PageView、Toggle、ToggleGroup、Slider)を追加しました。これらの新しいメンバーはCocos Studioからプロセスをインポートしているプロジェクトで使用されます。一度互換性の問題がないと確認したら、どんなCocos StudioプロジェクトでもCreatorにインポートすることが出来ます。
 
 RichText他UIコントロールの追加により、ついにユーザーはCocosCreatorで任意の2D UIインターフェースを作成できるようになります。マルチ解像度に適合したUIシステムと、v1.0からずっと高度に統合されたベースレンダリングコンポーネントのSpriteとLableとともに、重いUIコンテンツを伴うゲーム開発においてCocos Creatorは開発者にとっての大きな強みになります。

新しいオーディオエンジン

 リファクタリングされた新しいAudioEngineはまだcc.audioEngineと呼ばれていますが、内部実装は以下の問題を解決するために刷新されました:

  • 先読み処理の最適化され、一度読み込みが完了すると、すぐにオーディオの再生を開始できます。
  • オーディオの持続時間と現在の再生位置にアクセスするためのAPIが追加されました。
  • オーディオの再生が完了した後にコールバックするメソッドを追加しました。
  • Webプラットフォーム上でのオーディオの再生が最適化され、大きいサイズのオーディオは自動的に読み込みのためのオーディオモジュールに切り替わり、メモリのオーバーヘッドが抑えられます。

 
 オーディオエンジンがリファクタリングされた後、もはや音楽と効果音の再生の実装に違いはありません。古いAPIと動作は維持されますが、両方のタイプのオーディオのために同じインターフェイスを使用することが出来ます。

その他の重要な更新
  • CLIコマンドによるプロジェクトのビルド
  • マウントCLIオプションによって、プロジェクト間で共有のアセットライブラリを指定する機能を追加しました。
  • 安定性向上のためにJSバインディング APIリファクタリングしました。バインディングAPIは現在cocos2d-x 3.13と一致しています。
  • リソースのキャッシュと読み込みの機構を最適化しました。
  • キューとより良い進捗情報の独立した読み込みをサポートするために、cc.Loaderがリファクタリングされました。これらに循環依存関係が合った場合にアセットの読み込みが繰り返される問題を解決しました。コールバックが同時に起こる場合がある問題を解決しました。
  • Spineランタイムライブラリをアップグレードしました。Spineの3.xバージョンがサポートされ、モードの入り混じった画像の表示の問題を修正しました。三角形の描画コマンドをサポートしました。

v1.3.0とv1.3.1の完全な変更履歴

Editor

DocCreatorのマニュアルのドキュメントはオープンソース化されています。ドキュメントの英語版は中国語版に比べて、まだコンテンツが欠如しています。https://github.com/cocos-creator/creator-docs5に、修正、補完、翻訳のためにご参加下さい。
InstallerWindowsパッケージに、Visual Studio 2015インストールオプションを追加しました。
Buildパネル構築のためにAndroid API レベルの選択メニューを追加しました。全ての利用可能なAPIレベルは、ユーザが指定したSDKディレクトリに応じて表示されます。結果として生じるプロジェクトは、関連する全てのAPIレベルの設定に自動的に更新されます。
BuildCLIを使用してプロジェクトをビルドするためのコマンドとオプションを追加しました。
Buildバイナリテンプレート用のAndroid Studioのサポートを追加しました。
BuildWebプラットフォームで最初にゲームを起動した時に、ビルドパネルにある画面の向きの設定が有効にならない問題を修正しました。
BuildAndroidプラットフォーム用のキーストアのパスワードは、マスクされたパスワードの形式で表示されます。
BuildMacで、プロジェクトのアセットの量が大きくなった場合に、非常に多くのオープンファイルエラーが報告される問題を修正しました。
Buildプラグインスクリプトがリソースディレクトリにある場合に起こるビルドエラーを修正しました。
BuildAndroid Studioプロジェクトをビルドする時に生成されたアプリケーションの名前が正しくないのを修正しました。
Buildエンジンのパスにスペースが含まれている時に、ビルド処理は適切なエラーメッセージを出力します。
BuildiOSプラットフォーム向けのプロジェクトのビルドにXcode 8のサポートを追加しました。
Assetsアトラスの自動パッケージ化の機能を追加しました。バラバラのSpriteFrameアセットを格納するフォルダ内にAutoAtlasアセットを作成する必要があります。ビルド処理の間にフォルダ内のコンテンツはアトラスにパックされます。
AssetsアトラスにSpriteFrameリソース用のサムネイルアイコンの表示を追加しました。
Assetsアトラスのサムネイルアイコンの生成ロジックでSpriteFrameアセットを最適化しました。同時にインデックス付されたSpriteFrameアセットが多すぎる場合に、処理が固まる問題を解決します。
Assets大量のスクリプトをインポートする時に、コンパイルの動作が繰り返し起動する問題を修正しました。
AssetsAssetsパネルに検索機能を追加しました。UUIDでアセットを検索するにはu: xxxxxと入力します。
AssetsAssetsパネルで、右クリックメニューにFind Usageを追加しました。クリックされたアイテムを参照しているアセット(Scene、Prefab、Clip)のみで、ツリーをフィルタリングします。
Assetsカスタムアセットのインポートエラーに対するより明確な説明を提供します。
Properties配列とオブジェクトのプロパティで、ツールチップが表示されない問題を修正しました。
Propertiesノードのリセット動作が実施されないエラーを修正しました。
Properties属性タイプとバインドされたデータが一致しなかったときに、エラーメッセージとリセットボタンが正しく表示されない問題を修正しました。
Consoleクリアボタンはコンパイルエラーをクリアしません。
Editor一部のWindows 10システム上で、Creatorがクラッシュする問題を修正しました。
Editorコンパイルエラーがなくなった場合でも、コンパイルエラーメッセージが消えない問題を修正しました。
Editor無効な値を持つプロパティを復元するときに、アンドゥコマンドがシーンを変更しない問題を修正しました。
EditorProject Sttingsパネルの最初のシーン設定が、シミュレータ実行時に有効にならない問題を修正しました。
EditorWindowsで、アンドゥ/リドゥ操作がランダムに失敗する場合がある問題を修正しました。
EditorプラグインスクリプトがES6の構文を含んでいる場合、ビルド時にエラーを追加しました。
Editor外部リソースのパスを指定するために、コマンドライン引数--mountを追加しました。(複数のパスをマウントするために、複数の--mountパラメータを使用することが出来ます。パラメータの値は、絶対パスまたはプロジェクトのパスへの相対パスを使用できます。)外部リソースの変更を保存するかどうか指定するために--writableパラメータを使うことも出来ます。
Editor新しいグラフィック処理ライブラリを使用します。これにより特大のテクスチャ(8192x8192)をインポートする時にプロセスがクラッシュする問題を解決します。そして画像の処理速度を強化します。
Editorプロジェクトの全ての画像がAutoAtlasに入った時にビルドが失敗するバグを修正しました。
EditorSliced Spriteに加えた変更がエディタですぐにプレビュー出来ない問題を修正しました。
EditorCmd / Ctrl + Qでウインドウを閉じるとエラーが発生する問題を修正しました。
EditorネイティブまたはWebプラットフォームのビルドにプラグインスクリプトをパックすべきかどうか選択するオプションを追加しました。
Sceneシーンを保存する時に、Node Treeパネルでノードの折りたたみ状態がリセットされる問題を修正しました。
Sceneしばらくの間、パーティクルをプレビューし続けた後、シーンのビューをパンすると、エディタの動作が非常に遅くなる問題を修正しました。
Prefab様々な自動同期のPrefabの表示の問題を修正しました。
Prefabネストされた自動同期のPrefabのためにシーンが開けなくなる問題を修正しました。
Dashboard`open other projects' の操作をキャンセルする時に、エラーメッセージがポップアップ表示される問題を修正しました。
Node Tree新しく作成されたノードが正しくハイライト選択で表示されない問題を修正しました。
Node Libraryv1.2以降、新たに追加されたUI要素を追加しました。

Engine

Enginecc.loader.releaseは、アセットの配列のリリースをサポートしている間、キャッシュとそのアセットの依存関係(例えば、テクスチャ、オーディオ)を正しく削除します。また、キャッシュだけを削除するremoveItemと、依存しているアセット(それ自身を含む)の独自のリストを得るgetDependsRecursivelyを追加しました。
Engineネイティブプラットフォーム上で'setSiblingIndex'APIが動作しないことがある問題を修正しました。
EngineバイルWebプラットフォームで、シーンに最初に入るときやシーンを切り替えるときに、強制的な横長の画面の向きが失敗する場合があるバグを修正しました。
EngineWebプラットフォームでisScheduledが常にfalseを返す問題を修正しました。
Engineサブキューの更新時に、cc.loader.onProgressが正しくコールバックされないのを修正しました。
EngineAndroidプラットフォームにより得られたパラメータは、実際とは逆になる場合がある問題を修正しました。
Engineランダムなクラッシュにつながる、ネイティブプラットフォームのEventDispatcherバインディングエラーを修正しました。
Engine同時に非常に多くのリソースを読み込む時のエラーを回避するために、全てのプラットフォーム上で同時ダウンロードスレッドの最大数を制限します。
Engineグレイスケールシェーダーが動作していなかったバグを修正します。
EngineloadResでjsonアセットを読み込むときに、キャッシュされていないアセットをリリースする必要がないという警告を削除しました。
Engineアセットjsonをマージした後、Webプラットフォームに複数のリクエストを送信することが狩野だった問題を修正しました。
EnginesystemEventはEventTargetを継承し、システムイベントの登録または登録解除するcc.systemEvent.on / once / offの使用をサポートします。キーボードと加速度センサーのイベントを監視するためにeventListenerを使用するのに必要なことは、登録または登録解除のためにon / off使用することです。
Engineリファクタリングされたcc.Loaderは、独立したロードキューとより良い進捗情報をサポートします。循環依存がある時繰り返しアセットが読み込まれる問題を解決します。同時にコールバックが起きる可能性がある問題を解決します。
EngineLoaderは、コンテキストごとに別れたタスクの読み込みを提供します。これによりランタイムJSONオブジェクトが自動的にリリースされない問題を解決します。
EngineWechatデスクトップクライアント上でゲームが実行中に、ゲームがクリックイベントに応答できない問題を修正しました。
Engineタッチ位置のタイムアウト設定を追加しました。これによりWeChat x5コアで、画面外に複数回指をスライドした時にtouchcancelイベントが起きず、次のタッチの割り込みが失敗する問題が解決します。長い間、動かないタッチ位置を維持する必要がある場合は、手動でTOUCH_TIMEOUTのタイムアウト設定を変更して下さい。
JSB安定性の向上の為にJSバインディングAPIリファクタリングしました。バインディングAPIはcocos2d-x 3.13と一致しています。
Audioサウンドエンジンを新しいAudioEngineにアップグレードしました。これにより以前のバージョンの音の互換性の問題の一部が解決されます。
Audioオーディオメモリーの管理にc.Loaderを使用します。これによりローダーにオーディオリソースを完全に解放させます。
AudioAudioSourceコンポーネントがシーンの切り替え後に再生を続ける問題を修正しました。
Actioncc.flipXがネイティブプラットフォームでクラッシュの原因となるのを修正しました。

Components and modules

DBDragonBonesフォーマットでスケルトンアニメーションをサポートするために、dragonBonesコンポーネントを追加しました。
ComponentSliderコンポーネントを追加しました。
ComponentToggleとToggleGroupコントロールコンポーネントを追加しました。
RichTextRichTextコンポーネントのサポートを追加しました。bbcodeフォーマットのタグにより、色、フォントサイズ、太字、斜体、画像、そしてクリックイベントを現在サポートします。
PageViewPageViewコンポーネントを追加しました。
TiledMapObjectGroupの表示のサポートを追加しました。
TiledMapTilemapノードの削除を元に戻すと、シーンが正しく表示されない問題を修正しました。
TiledMaptmxファイルにtsxファイルを使用すると表示エラーが発生する可能性がある問題を修正しました。
TiledMapネイティブエンジンで、移動するタイル間の継ぎ目の問題を修正しました。
TiledMap不十分なパラメータを渡した時、TiledLayerのsetTileGIDインターフェースがエラーを発生する可能性があるバグを修正しました。
TiledMapキャンバスレンダリングモードにおいて、setVisible (false)を呼び出している、cc.TiledLayer.getTileAt ()によって取得したタイルノードが、エラーを報告する問題を修正しました。
Spine画像の透明部分が不透明に表示される時にオフにする必要がある、積算された画像を処理するために、スケルトコンポーネントに'premultipliedAlpha'を追加しました。画像の半透明の部分が暗い場合にこのオプションを有効にする必要があります。
SpineSpineのランタイムライブラリをアップグレードしました。Spineの3.xバージョンをサポートしており、画像のプリマルチプライモードの表示問題を修正し、三角形の描画コマンドをサポートしています。
ButtonScale Transitionを追加しました。ボタンのサイズを対象のノードのサイズに変更するためのボタンを追加しました。
Buttonボタンの相互作用がfalseに設定されているとき、対応する無効状態を設定しない場合、自動的に無効状態のためにグレーアウトされた通常状態のスプライトを使用します。
ScrollViewWindowsオペレーションシステムのスクロール方向に沿って、デスクトッププラットフォームのマウスホイールの動作を変更しました。
GraphicsユーザーがGGraphicsコンポーネントを追加した場合、自ノードのサイズをリセットする問題を修正しました。
Graphics未定義のプロパティのget / setの警告を修正しました。
Graphics描画の内容をクリアするためにキャンバスで2回クリアを呼び出す必要があるのを修正しました。
Animationアニメーションのイベントのコールバックで再生のコールが無効だった問題を修正しました。
Animation指定されたフレームからアニメーションを再生すると、前のフレームで、アニメーションイベントが発生する問題を修正しました。
CollideronCollisionEnterで変更されたノードのグループプロパティが正しく更新されない問題を修正しました。
Collider新しいCircle Colliderコンポーネントがノードに追加された時にエラーが発生する問題を修正しました。
WidgetScrollviewのサイズが変更された場合に、CCWidgetManagerが_widgetのエラーを報告するのを修正しました。
WidgetPropertiesパネルで、topとbottomのチェックボックスが消えてしまうバグを修正しました。
EditBoxEditBoxがmacOS 10.12 Sierra上で正常に動作しない問題を修正しました。
EditBoxPrefabでコンポーネントインスタンス化してから、プレースホルダを設定するとエラーが発生するバグを修正しました。
EditBoxsetFocusとstayOnTopプロパティを追加しました。stayOnTopがTrueのとき、Tabキーのフォーカスの動作を制御するためにtabIndexを設定出来ます。WechatのiframeでEditBoxを使用する時、stayOnTopプロパティをTrueに設定する必要があります。
EditBoxmaxLength属性の動作を変更しました。0に設定すると、ユーザーの入力を無効にします。-1に設定すると、入力文字の最大長を制限しません。
LabelResize Heightオーバーフローモードで、文字列が空に設定されている時、行の折り返しがもはや機能しない問題を修正しました。
Labelノードが非アクティブ状態の時、Labelコンポーネントを追加するとデバウンス機能がエラーを報告する問題を修正しました。
LabelTTFフォントが使用されている時、LabelOutlineコンポーネントが間違った色になる問題を修正しました。
VideoPlayerMETA_LOADED、CLICKEDandREADY_TO_PLAYイベントを追加しました。現在、ビデオコントロールが表示されていない場合、ビデオの一時停止の表示とビデオ再生の無効を切り替えます。同時にwebとjsbのビデオのふるまいを統一しました。
Componentライフサイクルのコールバック、resetInEditorを追加しました。これは、コンポーネントが最初に追加された時にだけ呼び出されます。(シーンがリロードされた場合は、このメソッドは呼び出されません。)また、このメソッドは、リセットの呼び出し後、のコンポーネントメニューで呼び出されます。
Componentcc.Component.EventHandlerにパラメータを追加しました。現在文字列のパラメータだけ渡すことが出来ます。

アップデート方法

 アップデート方法については、下記の記事のアップデート方法と同様です。
mmorley.hatenablog.com

動作確認(ビルドを確認)

 動作の確認のため、各プラットフォーム向けに、Hello Worldプロジェクトのビルドと実行を行いました。

対象プラットフォーム結果
Web MobileOK
Web DesktopOK
MacOK
iOSOK

cc.PhysicsDebugNodeが使えない!

 物理演算エンジンのChipmunkで、デバッグ用の表示を行うための『cc.PhysicsDebugNode』下記のコードをプレビュー実行するとエラーになりました。

this.debugNode = cc.PhysicsDebugNode.create(this.space);
//または
//this.debugNode = new cc.PhysicsDebugNode(this.space);

 v1.1.2だと実行できます。

あとがき

 v1.2以降使えなくなっている『cc.PhysicsDebugNode』は今回もだめでした。ということで諦めました。
 CreatorのロードマップだとPhysics Engineは今月になのですが、今回の変更履歴にないのでまだみたいですね。
 最近のアップデートには処理速度が向上した!と書いてありますが、確かに早くなってる気がしました。まだちょっとしか触ってないので、たまたまかもしれませんが。
 
 

広告を非表示にする