ICONIA TAB A500、届いたよおおお!

Androidタブレットを持つのは初なわけで、このサイズになるとiPadと同じくAndroidはゲーム機脳が進むと思うんですよ。

Android3.0の画面動作はかなりスムーズ、ウィジェットまわりの配置も自由だし2.2の画面に今から戻るのはちょっとしんどいかも。Gmailやブラウザも快適な動作してくれるし。一部のブログやニュースサイトがご親切にスマートフォン用サイトを最初から出してくれるのとかも含めて。PC版でいいっての。

ただYoutubeの動画があんまり綺麗に動かなかったりとか、CityVilleのFlashを開くのはやっぱり無理だったりとか少しショック。SDカードの中身のファイルも再起動しないと認識してくれなかったりとか。
動画まわりの動作は特にヘンでPSP用にエンコードしたMP4やWMVとか再生できなかったりとか、どこの仕様がひっかかって動作がヤバイのか情報不足でよくわかりません。
話を聞くとAndroid3.1にしないと(Tegraのドライバ更新をしないと)ちょっと安定してないんだとか、このハード。

CityVille #4 地道な展開


いよいよ隣の島に橋がかかりはじめたLV61。細部の詰め込みなんかは小一時間かけて配置しなおしたけど基本的な構成はそのまんま。とりあえず、

道道道道道道道道道道
道店店店店店店店店店店
道店設設設園園設設設設
道店店店店店店店店店店
道道道道道道道道道道
*1

みたいな作りでなるべくスペース無駄にしない感じの配置に。まあシムシティみたく道を1マス飛びにおいてさらに隙間に木を配置するとか見た目無視のズタズタな街にするとかもあるけれど。


ふぉぉぉ。なんか船が道を走っとる!

*1:道 = 道路
店 = ビジネス施設 3x3サイズ
設 = 公共施設 3x3サイズ
園 = 公園とかPayout増やすやつ

C#の文字エンコードとNewBehaviourScript.csのテンプレートファイルあたり

マルチプラットフォームビルド万歳なUnityでAndroid版ではWindows、仕方なくiOS版ではMacOSで動作させてます。スクリプトファイル(.cs、.js)のコメントとか文字列とかUTF-8のファイルとして保存しないと日本語が文字化けを起こすのですが、困ったことにMacOS版はBOM付きUTF-8のファイルでないと常にUTF-8として判断してくれないケースがあってああもう、みたいな。
※でもドキュメントにはUTF-16を使ってね、と書いてあるんですよね。わけがわからないよ。

UTF-16LEでの保存形式でないとやっぱり正しく扱えないケースもでてきました。ぎゃふん。

まとめると

Windows : 左からBOM付きUTF-8UTF-8、システム規定(S-JIS)の場合

MacOS : 左からBOM付きUTF-8UTF-8、システム規定(ASCII?)の場合

こんな感じ。コメント行が化けるだけならまだしもstringの文字列指定のところも同様に化けて結果ゲーム画面に表示する文字も????になるですし。

C#スクリプトのテンプレートファイルの話

基本的にUTF-16LEで保存すれば良いだけなのですが、連携エディタとしてVisualStudioやUnitron使ってるとファイル1個1個に保存詳細の指定をすることになって、これがまた手間で手間で、という訳で最初からUTF-16のファイルとしてバーンと開いてくれて保存も良きに計らえ、と思い調べたら似たようなことができそうな方法がありました。Unityの中に新規C#スクリプトを作ったときの元になるファイルがあって、これを書き換えてしまおう手法

今回はC#用のものだけれど、JavaScriptも同様の場所にファイルがあるので置き換えればよさそうかも。次のファイルをC#スクリプトとして作られるファイルにしてしまえば最初から日本語が使える状況になって変換ミスも減りそうです。

Windows版のテンプレートファイルを置き換える場合 (適宜パス場所は修正を)

  • C:\Program Files (x86)\Unity\Editor\Data\Resources\ScriptTemplates (3.4の場合)
  • C:\Program Files (x86)\Unity\Editor\Data\Resources (3.3の場合)

のパスにNewBehaviourScript.csファイルがあって、これがエディタ内で新規にファイルを作る場合のテンプレートみたいです。こいつのファイルを上書きしてしまえば最初から日本語が自由に扱えて指定の変換忘れも無くなって万歳に。

MacOS版のテンプレートファイルを置き換える場合 (適宜パス場所は修正を)

  • /Application/unity/unity.app (右クリックしてパッケージの内容を表示を選択)
  • Contents/Resources/

の場所にNewBehaviourScript.csファイルがあって、これがエディタ内で新規にファイルを作る場合のテンプレートみたいです。こいつのファイルを上書きしてしまえば最初から日本語が自由に扱えて指定の変換忘れも無くなってMacOSでも僕と契約。

※ちなみunity.appの正体について柏木和宏さんが教えてくれたよ! 知識を借りられなければ入れ方が解らなかったところだよー。

おまけ、エディタの日本語化の話

同じ場所に UI_Strings_EN.txt というファイルがあってこれがエディタ内で表示される一部の文章が書かれているようで、こいつのファイルをBOM付きUTF-8で保存して翻訳してしまえばほらこんな感じに。

ファイル内で変更してもエディタ内では相変わらず英語のままの場所とか多々あって正直あまり使いどころ無い気がするけど。

3DS!3DS!

微妙に時期ずれていながらもとうとう手元に!自分と友人の分の二台。心配していた3D化で目が痛い、というようなことは自分にはさっぱり無縁なようで大変ありがたい。

で、結局買ったのはアニマルリゾートとゴーストリコンでいつものようなゲームかよ!てことですが、この2タイトルは大変評判が良いと聞いたので。
個人的には3D機能を半分くらいONにして、50cmくらい離してみると、ゴーストリコンジオラマ感が存分に楽しめる風味。

Apples!!

Unity Asset Storeでリンゴのモデルデータの販売を開始しました。

あまりにもどノーマルかつ無料品でもよくあるモデルデータですが、AndroidiPhoneゲーム向けに最適化した産地直送気味のツヤツヤなやつと、なんかに齧られたリンゴの2種類がはいってます。しかも一応ハイポリ(ミディアムポリ?)とローポリがあるので全部で4つのモデルを用途に分けて使い分けていただければと思います。ちなみにローポリ版はUnityのConvexタイプのMesh Colliderが使えますよ。

Unityのメニュー内の Windows > Asset Store(でオープン後)、Art Packages(See all) > Apples にてリンゴのアイコンを探してください。こちらは5ドルで販売しております。

Selected U3D Japanese Font

※Unity3.5の登場により、TrueTypeインポーターが自由な漢字を元にテクスチャを作成することができるようになりました。このフォントはそれより以前のバージョンの対応のために、テクスチャサイズと文字サイズのバランスをとることが主な目的として存在しました。現時点でその役目は終え、これからはオリジナルM+OUTLINEフォント等自由に組込みしてもらえればと思います。

今後Selected U3D Japanese Fontの更新はありません。今までご使用ありがとうございました。



Unity Asset Storeで配布しているSelected U3D Japanese Fontの部分修正版、ストアにリリースしていない版を置いています
※Selected U3D Japanese Fontの基盤となるフォントはM+OUTLINE FONTSを使用しています。ダウンロードの際には右側の青いアイコンをクリックしてください。(文字をクリックするとはてなダイアリーの動作で保存ファイル名が変わってしまいます)

  • u3dfont102.unitypackage 直 (2011/05/19)
    • 基盤をM+OUTLINEフォント TestFlight39に変更して、漢字27文字(剣槍斧鎖癒辱冒霊獄獣陣姫掌恥峰殻靴腰脚罰賢託勲巫崖鞍勘)を追加。
    • 現在Unity Asset Storeで配信中のものです。
  • u3dfont101.unitypackage 直 (2011/04/19)
    • 基盤をM+OUTLINEフォント TestFlight38に変更して、漢字6文字(剣槍斧鎖癒辱)を追加。
    • AssetStore未配信版です。


こんなふうに文字表示するためのものです。

何の文字が使えますか?

u3dfont101版では以下の文字を含ませています。全文字リストはパッケージの中に含めています。

  • ひらがな
  • カタカナ
  • アルファベット、数字、記号
  • 小学校6年生までの教育漢字(1006文字)
  • 都道府県表記、ゲーム用語に適した漢字 (111文字)

これはジョークソフトですか? はい、それは仕様です

スマートフォンでUnityを使いたいとき、端末のシステムフォントは使用できないという制限が今のところあって、その詳細はRadiumSoftwareさんのUnityで日本語フォントを使う(モバイル編)でまとめられているのだけれど、つまり表示する文字はあらかじめビットマップ画像としてテクスチャ化しないといけない。もしくはOSの機能を使うようなプラグインを作るとか。

で、今までモバイル系やゲーム機ばかりを中心に作ってきた開発者からすると、それは不便だけれどまあ仕方ないよね、という点も判っているわけだけれど、現バージョンのUnity(3.3)の機能がまたややこしくしてくれていて。

GUITextコンポーネントとかで使う為には、TTFのフォントファイルをアセットに追加して指定するわけですが、ここでフォントに含まれているUnicode範囲の文字を全部読み込んでくれてワァとてもラクちん便利だわ、と思うのだけれど出来上がった画像は4096x4096のテクスチャとかになっててもうバカそんなの今の実機で動かせないから、という事態になります。
で、そこでもともとフォントに文字データが含まれていなければUnityEditorはその文字を無視してくれる、という現状の動作を見つけたのでいろいろと私の方で文字を教育漢字+ゲームに使いそうな文字110文字前後に限定して作り変えたのがSelected U3D Japanese Fontです。1024x1024のテクスチャで25ポイントくらいの大きさを維持できるよう調整しました。

こんな状態でインポートされてテクスチャができあがります。

これからのスマートフォンで使うときについて

現実的に1024x1024の制限があるのはiPhone3G、iPod touch2世代目までで、それ以降のOpenGL ES2.0が使えるiPhoneAndroid機種なら2048x2048までいけます。なので実質的に文字をもっと使えるようにしたり、大きな文字サイズで組み込みするなども柔軟にできそうです。

このフォントのライセンスは?

注意点とかライセンスとかは各Unityパッケージの中にテキストで入っているのでそちらをご覧ください。ざっくり言うとM+OUTLINEフォントのライセンスと同じで無料で使えて配布も改変も自由です。

メイリオとかで作ってほしいのですが

なんですって? フォントの権利に関するまとめをお読みください。
いやまあメイリオWindows上で動かすものならOKという話ですけど。
もしくはフォントワークス社等の商用フォントを買ってくるのがラクです。

IPAフォントならどうですか?

IPAフォントの改変ライセンスは「最終的な使用者が自身で元のフォント状態に戻して使える」ことで必須のため、Unityのように技術的に入り替えをおこなえない組み込み用途では使うことができませんでした。

自分でも作れそうですか?

手順としてはFontForgeというソフトを使い、フォント中の必要ない文字を全部消すマクロを使っています。使い方は手間ではないけれど、不要な文字を消すマクロファイルを作る方が手間かも。Windowsのひとはunofficial fontforge-cygwinを使うのがインストールがラクで便利です。

話変わりますが、XNAでも使えます?

仕組みとしてはXNAでも同様のことに注意しないといけないけれど、XNAにはspritefontという標準の高機能(?)な組み込み機能があるのでそれを使用することになります。spritefontのデータファイルに使用する文字コードをずらずら書くことになりますが。