さけのさかなのブログ

同人ゲーム開発やってます。Unity使ったりする。

C91や、その他のこと

C91のこと

 落ちた/(^o^)\

 まあ、やれて体験版の予定だったので、ここは落ち着いて開発しましょ。くやしくない。

ダウンロード販売のこと

 けっこう前の作品ですが、ぞろぞろぞふぃもDL販売始めました。パッケージ版よりちょい安めに設定してあります。

www.melonbooks.com

www.dlsite.com

www.dmm.co.jp

拍手返信

幻想四倍剣の1の方もDLサイトで販売してほしいです。

 古い作品の公開は、気が向いたらするかもしれない程度の感じ。期待しないで。

進捗のこと

 イラストと曲がぼちぼち仕上がりはじめて、いよいよプログラム側にターンが回ってきた感じ。

 今回はドット絵などは仮置きのまま、先にデータ打ち込んでステージ組んでみたりしている。このやり方だと見栄えが悪いままなので、スクショを公開しづらいというのが難点な。

 タイトルは、「Magic Scroll Tactics」になると思う。たぶんなる。なるんじゃないかな。まちょっとは覚悟しておけ。

 (それにしてもアルファベットのタイトルは思いのほか考えるのに難儀した。)

【Unity】Spriteで高さフォグっぽいやつ

やること

 Spriteで高さフォグっぽいものを実装する。ワールド座標で低いところにあるとフォグがかかるやつ。

 Lightingビューのfog設定を反映させられれば完璧だったんだけど、よくわからんかったのでmaterialで色などを設定するような作りにした。

コード

Unity5.5.0b2。Sprites-Defaultシェーダに手を加えて作成した。

gist.github.com

サンプル

before

f:id:enuenupi:20160910075706p:plain

after

f:id:enuenupi:20160910075703p:plain

 これで天則の核融合炉心部的ステージが作れるって寸法よ。

【Unity】立ち絵の透明部分をトリミングする

やること

 キャラクターの立ち絵画像で、左右に無駄な透明部分が生まれる場合がある。無駄なので、これを自動で処理するようなエディタ拡張スクリプトを作成する。

サンプル

 UnityChanの立ち絵でやってみると、テクスチャの横幅が2524pxから1988pxになる。

 なお、左側に透明領域が残っているのは、処理前後で画像中心軸が変わらないようにするため。

before

f:id:enuenupi:20160908171405p:plain

after

f:id:enuenupi:20160908171514p:plain

© Unity Technologies Japan/UCL

コード

Unity5.5.0b2

gist.github.com

使い方

 Resources/Dialogsフォルダに画像ファイルを入れると、テクスチャをリサイズして左右の透明部分を削ってくれる。

使えないケース

  • SpritePackerを使う場合はUnityが上手くやってくれるので不要。
  • というか、そもそもSpriteだとテクスチャのリサイズ時に頂点が変なことになるので使えないっぽい。
  • 画像作成時点でトリミングしてるなら不要。
  • テクスチャサイズが変わるので、二べきにする必要のある圧縮形式は使えなくなる。

四倍剣^2ダウンロード版公開しました

 最近の脱・メディア頒布な卒業する流れに乗っかるべく、四倍剣2のダウンロード版を用意しました。本日公開です。

 サイトはメロンブックスDL、DLSite、DMMの3サイトでの取り扱いです。何ぞ都合の良いところでどぞ。なおDMMはR18ゾーンになるので青少年諸君は注意な。

www.melonbooks.com

www.dlsite.com

www.dmm.co.jp

【Unity】ARGB文字列をパースする

かゆいところ

 Unity標準機能のColorUtility.TryParseHtmlStringを使うと、#RRGGBBAAで指定された文字列をColorにパースすることができる。

 けど、世の中にはAARRGGBBもあるわけでして。

コード

Unity5.4.0p1

static public class ColorUtil
{
    static public bool TryParseArgbString(string argb, out Color color)
    {
        if (ColorUtility.TryParseHtmlString(argb, out color))
        {
            var a = color.r;
            color.r = color.g;
            color.g = color.b;
            color.b = color.a;
            color.a = a;
            return true;
        }
        return false;
    }
}

 αのないRGBを入れたら変なことになるんだけど、そこまで対応するなら自分で書いた方がよさげ。

public static Color32 ParseArgb(string argb)
{
    var value = System.Convert.ToInt32(argb.TrimStart('#'), 16);
    var a = (value >> 24) & 0xff;
    var r = (value >> 16) & 0xff;
    var g = (value >> 8) & 0xff;
    var b = value & 0xff;

    return new Color32((byte)r, (byte)g, (byte)b, (byte)a);
}

argb parser · GitHub

【Unity】 WebGL版の落とし穴

 先日Tactics.YokoのWebGL版を公開したわけですが。その時ひっかかった点。

ThreadNinjaは動かない

 マルチスレッド処理を行うのにThreadNinjaというアセットを使ってるんですが、これが例外を吐く。

 なので↓のようにマルチスレッド処理をあきらめる。

public Coroutine StartCoroutineAsync(IEnumerator routine)
{
#if UNITY_WEBGL
    return StartCoroutine(routine);
#else
    return CielaSpike.ThreadNinjaMonoBehaviourExtensions.StartCoroutineAsync(this, routine);
#endif
}

 マルチスレッド処理はステージオブジェクトの構築やAIの思考とかに使っているので、そういう箇所で画面が固まるんだけど、どうしたもんかな。他のアセットだとうまくいくんだろうか。

 普通のコルーチンで同じような負荷分散をやろうとするとドエライ大変なので、残念ながら妥協のしどころか。

CloudBuildは動かない

 CloudBuildでビルドしたWebGL版がエラーを吐いたけどローカルでビルドすれば動いた。つらい。自前でやるしか。

 これについては、Windows環境で開発してるとCloudBuild環境ではエラーになるケースがあるとかじゃないかな。知らんけど。

toriden.hatenablog.com

Logは動く

 PlayerSettingsでDebug.Log出力をオミットでき……できねえ! ↓のコードで止める。

#if !UNITY_EDITOR
        void Start()
        {
            Debug.logger.logEnabled = false;
        }
#endif

参考

qiita.com