過去作をブラウザで動くようにする
ナニコレ
- もともと2015年の例大祭で出したゲームです。
- HDDの肥やしになってたのでせっかくだからブラウザで動くようにした。
- 元ネタのゲームの都合で、キャラがファイヤーとかボンバーとか言う。
- 勢いで作ったゲームなので色々アラはあるけど、今回は単にブラウザ移植ということで変更は最低限にしてあります。
- (でも弾幕部分は意外とそれっぽくできてるな?)
技術的なあれこれ
Unityのバージョンで言うと5.1から2019.1.2への移行。
修正点
- Application.CaptureScreenshot -> ScreenCapture.CaptureScreenshot
- Graphics.DrawProceduralIndirect -> Graphics.DrawProceduralIndirectNow
- Camera.hdr -> Camera.allowHdr
- フォントがArialだったのをNotoFontに差し替え
- これは元々の作りが悪くて、フォントはインポートしたものを使うべきだった。
- EventSystemオブジェクト作り直し
- どこかでフィールドの追加があったっぽくて、オブジェクトを作り直さないと動かなくなってた
- BaseVertexEffect -> BaseMeshEffect
- これは一時期Unityが迷走してた部分だ。
- このへん。 Unity5.2.1のUIエフェクト - さけのさかなのブログ
- 文字のグラデーションがおかしくなったので手動で直す
- 文字あたりの頂点数が4から6に変更されたのに影響を受けた。
- このへん。 uGUIでグラデーション文字 その2 - さけのさかなのブログ
【Unity】Tilemapの拡張機能を導入する
やること
UnityのTilemapは機能が物足りなくて、たとえばアニメーションするタイルが使えない。
が、githubの2d-extras
リポジトリに拡張機能が公開されており、アニメーションタイルなんかもこれで使えるようになる。この記事はこれの導入方法について。
手順
PackageManagerに登録する。
やり方としては、プロジェクトのPackages/manifest.json
に
"com.unity.2d.tilemap.extras": "https://github.com/Unity-Technologies/2d-extras.git#package",
を追記すれば良い。
こんな感じ。
するとこうなる。
リポジトリ
ぜんぶここにかいてある
例大祭と、GWセールのこと
4/25~ GWセール
Switch版MSTがGWセールで20%オフになってます。Switch版の値下げは初ですので、この機会にどぞ。
ec.nintendo.com www.famitsu.com
5/5 例大祭
サークル参加です。スペースはG20b オートリ電子。
出し物は……間に合わない。ペーパー頒布(無料)になります。
当初のもくろみとしては、事前にSteamでリリースして、イベントではDLカード頒布!だったものの、思いのほか開発に時間がかかったので間に合わずです。
これからの予定
開発中画面
イラストはプーアカちゃんさんにお願いしました。
楽屋裏
- なんで時間がかかってるかというと、元々作ろうとしたやつが結局あんまりおもしろくならなかったので潰して作り直したから。
- DLカード自体は例大祭時点でも作れるんだけど(キーの発行は可能なので)、さすがにリリース前のゲームのコードを会場頒布するのは、ちょっと、なあ……ということで頒布物はペーパーにしときます。
NotoFontでフランス語に対応するときの注意事項
日本語のゲームを出すうえで、NotoSansCJKjpを使う人も多いんではなかろうか。
このフォントには当然アルファベット26文字も含まれるので、英語版を開発する場合にも同じフォントで充分で、差し替える必要はない。
ではフランス語版はどうだろうか?このままNotoSansCJKjp一本で済ませられればラクできるわけだが。
NotoSansCJKjpに含まれないフランス語アルファベット
フランス語アルファベットの構成文字は以下の通り。
ABCDEFGHIJKLMNOPQRSTUVWXYZÉÀÈÙÂÊÎÔÛËÏÜŸÇŒÆ abcdefghijklmnopqrstuvwxyzéàèùâêîôûëïüÿçœæ
そしてNotoSansCJKjpの中には、Ÿ
だけが含まれていない。(小文字のÿ
は含まれている。)
このため、フランス語を完璧にサポートしようとするとNotoSansCJKjpでは不足で、フォントを差し替えるか、別のフォントを使う必要が出てくる。アチャー。
Ÿ
という文字について
ただし、Ÿ
はフランス語でも使われることがかなり珍しい文字で、せいぜい20個程度の単語でしか見られず、しかもそれらは固有名詞なんだそう。
なので、ゲーム内に使う文字を調べてみて、Ÿ
が必要ないということは有りえる。そうなればめでたくNotoSansCJKjpでフランス語版を組むことができるわけだ。(実際MSTでは必要なしと判断した)
とまあ、イマイチ座りの良くない結論になってしまうんだけど、完璧を目指した場合にやるであろうランタイムでのフォント差し替えはとてつもなくめんどいので、これはしゃーなしよな。
余談:NotoSansCJKに含まれる文字
こっから先は余談。
ところでNotoSansCJKに含まれる文字セットってどういうものか?
公式にはこう書いてある
This includes the full coverage of CJK Ideographs with variation support for 4 regions, Kangxi radicals, Japanese Kana, Korean Hangul, and other CJK symbols and letters in the Basic Multilingual Plane of Unicode.
韓国語日本語中国語以外の文字については、「Unicodeの基本多言語面にある文字」と書かれている。が、さきほどのŸ
(U+0178)はというと、まさに基本多言語面に含まれている文字なのである。えー。つまり。基本多言語面にある文字のうち、なんらかの基準で選定した文字セットがNotoSansCJKには採用されている、と。そんなことある?
頭文字として使用しているケースが存在しないからではないかなと…
— あんころむらさめ (@_murasame) March 24, 2019
結局、使いたい文字が含まれているかどうかは実際に確認しとけっつーことですわな!
Ÿ
がハブられる文字セット
さらに余談の余談。
小文字のÿ
が含まれるのに大文字のŸ
がないとか不自然だろ、と思うんだけど、実際にそういう文字セットが存在する。Latin-1
(ISO 8859-1)というラテンアルファベット文字コードがそうだ。MySQLを触ってる人には見おぼえがあるんじゃなかろうか。まあ好きではないだろうけど。
わざわざNotoSansCJKjpの文字セット策定にあたってLatin-1
を参考にしたわけではないとは思うけど、ともかく、文字コードまわりはなかなか複雑怪奇なことが多くてしんどいすなあ。
【Unity】UI.Textの禁則処理・V2
前回
禁則処理リポジトリをforkして性能を上げた。
今回 V2ブランチを作る
設計を自分になりに使いやすくしていきます。
コア部分の処理にText
コンポーネントは必要ないのでMonoBehaviour
から独立。自動改行処理がAPIとして柔軟に使えるように。
あとはちょいちょいバグっぽいところを潰したり。
さしあたり今から導入するならこっちのほうがいいんじゃないかなあと。
issue
RichTextタグの処理がうまくいかない場合がある
たとえば<color>
タグ。これはUI.Text
においては閉じタグがない場合はタグ扱いせず普通に文章として表示されるんですが、HyphenationJpnではこの場合もタグとして処理してしまい(つまり文字幅ゼロとしてしまう)齟齬により変なところで改行が発生してしまう。具体的には行が適切に改行されず、はみ出してしまうという現象が発生します。
しかしこれをどうにかするのは骨。きっちりUnityの内部処理と同様にタグを処理しなきゃいけない。
latin文字だけの行が横幅をオーバーする
禁則処理として数字・アルファベットが連続する場合は改行で分断しないようになっています。そのためたとえばAAAAAAAAA....
みたいなアルファベットのみの長ーい1行がある場合、改行せず横幅がオーバーします。めんどいですね。
【Unity】UI.Textの禁則処理、改良版
上の記事で禁則処理に関しては紹介されているんですが、コードを見るともうちょっと良くできそうだなあ、ということでforkして直してみた。Unity2018.3.6f1。
コード
修正内容としては
です。とりあえず軽くなるぞって感じ。
ちなみに、元バージョンについてはArray.Exist
のGC負荷が高く、そこをIndexOf
に差し替えるだけでかなりマシになったりします。
インターフェースはちょっと気になるところがありつつ(文字列を渡すのがGetText
メソッドなんだけど、そこはSetText
では?)、ひとまず互換性優先でそういうのは直さず。なので元バージョンを使ってるという人は差し替えで動くはず。
そもそも
けっこう古いプロジェクトで更新もないので、禁則処理についてはみんな別の方法でやってたりするんでしょうかね?
追記
そもそもこの処理、Textコンポーネントがなくてもできるじゃん(Fontがあれば十分)、なのでコア部分を別クラスに分けたほうが良さそう。
というわけで次回、ブランチを切ってアレンジしていく。
サイト作成
サークルサイトなんですが、いいかげんhtmlで書くのもかなりしんどいな、ということで移行していこうと思います。といっても旧サイトは更新停止するだけでそのまま残す方針です。
新URL
機能としてはストアページや作品紹介ページへのハブになればいいのでデザインはシンプルでいい、はず。アイコン画像ぐらいはあると見やすくなったりはするんだけど、そういうのは気になったら追々やるとして。
メールアドレス
ちなみにですがシレっとメールアドレスも新しいのになってます。古いやつはちょっとプライベート用と混同しててあんまり良くないなあ、ということで。古いアドレスも引き続き有効なので気にしなくていいです。
使ってるサービス
GitHub Pages。markdownで書いたらウェブページとして公開できる、便利。スマホ対応とかはエンジンに任せとくのが楽ね。