CocosSharpでClippingNodeでクリッピングされない問題

またまた問題にぶつかりましたよっと・・・
クリッピングしたいのに一切クリッピングされずに表示されてしまう。
むしろStencil(マスク用のSprite)がそのまま表示されているという謎の挙動。

昔からある既知の不具合の一つなんですかね。

Issueには上がっているものの修正されてはいないようです。
GameDrawPrimitives のアルファ処理がiOSやMacでは動作しないといった原因のようなのですが、Androidの実機でも同様の症状が出ました。

CocosSharpはまだちょっと早いかもしれませんね・・・

Windows Update で KATANA01 のタッチパネルの精度が改善

KATANA01 に Windows Update で 10586.36 が降ってきていたので、アップデートしたところ、
タッチパネル下部分の精度が非常に悪かったのが改善されました。

正直ソフトキーボードで文章を入力するのが苦痛なレベルで悪かったのが、まともに使えるレベルになりました。
まだもっさりとはしていますが、これは端末スペック上しかたがない部分ですので。。

ハードウェアの不具合ではなくてよかったよかった。

CocosSharpで独自フォントが表示されない問題

以前取得した Xamarin のライセンスを有効活用しようと、
Xamarin Studio と CocosSharp を使ってアプリを作ってみています。
1.7.0 はまだpre1バージョンだったので、あえて 1.6.2.0 にダウングレードして使い始めました。
(Official NuGet Gallery から取得できる CocosSharp PCL)

とりあえず各グラフィックス機能の使い方を確認しようと、
SpriteだったりLabelだったりをテストしていたところ、いきなり独自フォントが表示されない問題に躓きました。

var label = new CCLabel("hello world", "myfont.ttf", 30, CCLabelFormat.SystemFont);
AddChild(label);

たったこれだけのコード。。
参考にした CoinTime というサンプルプロジェクトを参考に、色々試して見るもうまくいかない。
https://developer.xamarin.com/samples/mobile/CoinTime/

何でだろうとさらに調査したところ、なんと普通に不具合だそうです。

1.7.0.0 pre2 でようやく修正されるって・・・どれだけ使われてないの・・・

自力でパッチを当てようと試みた結果

幸い CocosSharp はオープンソースプロダクトなので、自力でパッチを当てることが可能です。
(ただしうまくいくとは言ってない)

README を読みながらソースを git clone し、 git submodule update を実行。
Xamarin Studioでソリューションファイルを開く前に、下記のおまじないを実行します。

mono MonoGame/Protobuild.exe default.build

そして、CocosSharp.iOS.sln を開いてバグを修正し、プロジェクトをビルド。
できあがった CocosSharp.dll を元々あった CocosSharp.dll と差し替えて実行すると、先のコードのままで独自フォントが利用できるようになりました。

いきなりパッチ当てる必要が出てくるとは、幸先悪いなーという感じですが、とりあえずこれで先に進めそう。
Android版のdllも同じようにビルドして配置したところエラーが出たけど無視。
Android版なんてなかった。

KATANA01にUWPアプリをインストールしてみた

KATANA01買いました に続いて、
とりあえず自作アプリをインストールしてみるところまでやってみました。

USB接続でデバッグ実行する

KATANA01をUSB接続した状態で Visual Studio 2015 を起動して、Universal アプリのプロジェクトを作成、
MainPageに適当にテキストを配置してビルド。ビルドターゲットは ARM + Device にします。

vs_ss_hello

そしてデバッグ実行。

wp_ss_app1

動いたー。
これは簡単に動作しました。

色々調べていると、どうやらWiFi経由でデバッグ実行できるらしい。
ということを知ってしまったのが運の尽き。
ここからすごい勢いでドハマりするのであった。。
本当の地獄はここからだ!

WiFi経由でリモートデバッグする

USB接続を解除して、ビルドターゲットを ARM + リモートコンピューター (Remote Machine) にします。

vs_ss_target_remote

接続先を設定するダイアログが表示されます。
すると、自分のKATANA01が表示されているので選択し、デバッグ実行します。

vs_ss_remote_dialog

PINを要求されるので、デバイスポータルでログインしたときと同じように端末でPINを発行して入力。
が・・・ダメ・・・!

vs_ss_wp_pinerror

何度やってもWindowsやVisual Studio、端末を再起動してもダメ。
ペアリングをすべて解除してもダメ。
Windows 10 も最新の build 10586 にアップデートしてもダメ。
Visual Studio は Update 1。

ネットを検索してみると、同じような症状でハマっている人が多数。

レジストリをいじってみましたが、DEP6100, DEP6200が消えただけでデプロイに失敗するのは変わらず。
今のところWiFi経由でリモートデバッグは出来ていません。
もう少しこなれてからなんですかねー。

KATANA01買いました

発売日には届いたもののあまり触る時間が無く放置していましたが、
Windows 10 Mobile デバイスの KATANA01 を購入しました。

https://www.freetel.jp/product/smartphone/katana01/

Windows Phone の新しい実機を開発用に用意したいなーと思っていたところに
安価な端末が登場したのでこれはちょうど良いなと。

ざっと触ってみた所感

  • 動作が若干もっさり。昔のAndroid端末みたいな感じ。
  • 画面下部のタッチパネルの精度が相当おかしい。(座標がずれてる?)
  • ゲームは割とさくさく動く。(FF3が安定して30FPSぐらいでる)
  • CPU不足なのかEdgeもかなり重い。

普段使いにするにはちょっと厳しいという所。
まあ、開発用なので個人的には問題なし。

とりあえず開発機として設定

メニューから、開発用の設定をONにしていきます。

wp_ss_main wp_ss_config

wp_ss_update

wp_ss_dev1 wp_ss_dev2

これで開発用に使えます。

デバイスポータル

Windows 10 Mobileになって良くなったと思ったのは、こちらのデバイスポータル機能。
リモートからブラウザ越しにデバイスを管理する事ができるモノです。

ブラウザで端末のIPアドレスを指定してアクセスすると、PINを要求されます。
設定画面スクリーンショットの「ペアリング」ボタンをタップすると、PINが発行されるのでここに入力します。

wp_ss_dp_pin

出来る事としては、こんな所のようです。
素の状態でここまで出来るとはちょっと予想外。

  • アプリのインストール・管理

wp_ss_dp_apps

  • 各プロセスの情報やリソース使用状況の確認

wp_ss_dp_processes

  • リソースの使用状況メトリクスの確認

wp_ss_dp_stats

  • デバイスの情報確認

wp_ss_dp_devicemanager

  • ネットワーク設定の確認

wp_ss_dp_network1

wp_ss_dp_network2

イマドキな開発者向けツールという感じでよく出来てます。