2016年11月26日

Unity C#とMoonSharpの実験

割と簡単なコードで、MoonSharpとC#とのコルーチンで処理をピンポンさせつつ合間にちゃんとUnityの他の処理も実行させることが出来ました。これで、ゲームのシナリオ進行やイベント演出等をMoonSharpで直列で書きつつ具体的な処理についてはUnityでまったく制約なく書くことが出来そうです。 MoonSharpはC#で書かれたLuaライクなスクリプト言語で、一部の機能を除いてLuaととてもよく似ています。APIもC#の機能を活用しつつLuaのAPIから類推出来る部分も多いので、Luaを使ったことがあるならすぐに使えるようになると思います。


    using UnityEngine;
    using System.Collections;
    using MoonSharp.Interpreter;

    public class NewBehaviourScript : MonoBehaviour {
      // Use this for initialization
      void Start () {
        StartCoroutine(CSharpFunc());
      }

      IEnumerator CSharpFunc()
      {
        string src = @"
        function wait(i)
          coroutine.yield(i)
        end
        return function ()
          for i=1,10 do
            wait(i)
          end
        end  
        --coroutine.yieldは関数の中からでも呼べる。
        ";
        Script s = new Script();
        DynValue luafunc = s.DoString(src);
        DynValue cr = s.CreateCoroutine(luafunc);//C#からでもコルーチンを作れる
        while (true)
        {
          DynValue x = cr.Coroutine.Resume();
          if (cr.Coroutine.State == CoroutineState.Dead) break;
          Debug.Log(x);
          yield return null;
        }
      }

      // Update is called once per frame
      int count = 0;
      void Update () {
        count++;
        if (count<15)
        {
          Debug.Log("Update");
        }
        //Updateで全部流れてしまわないように15回だけ表示している。
      }
    }
    //出力に数字とUpdateが入り交じり、C#のCSharpFunc、MoonSharpのコルーチン、Updateがそれぞれ呼ばれてるのが分かる。
posted by NTak_Indies at 08:19| Comment(2) | TrackBack(0) | 日記

2016年11月22日

Unityの研究中

少し更新期間が開いてしまいましたが色々やってます。

Unityでボクセルベースのテレインを作ってみる

色々作ってみたのだが、こういうのってレンダリングやマテリアルの管理などUnityがせっかくある程度自動でやってくれてる部分をいきなり自前で組む話になってるので、ちょっと初習者向きでは無いかな、といったんここでペンディング。まあ、メッシュとか自前で構成する勉強にはなった。

2016-11-21.png

クリスペで作画→Illustratorで線画→クリスペで塗り→Spineでリギング、アニメーション

イラレの線の引き方はだいぶ覚えた。Altでアンカーをクリックして折れ線を書けるのがミソ。Spineには課題が多い。メッシュ機能で頂点置いてウェイトを塗ることは覚えたのだが、元絵の作り方をもうちょっと工夫しないといけなさそう。身体はいっそ最初から一体にして、ちゃんと頂点置いて変形させるほうがいいかな。別オブジェクトに割ると連結部分が問題になる。あとまあアニメーションの作り方かな。この辺は3Dでも同じなのだけど、ちゃんとキーを打たないと直線的になる。(画像はアニメGIFにする際に容量節約のためフレームレートをかなり落としてあります。)

yukari.gif

IllustratorでUI仮素材デザイン→SVGで出力→node.jsからXMLとして読み込みLuaテーブル形式に変換→それを元にNScripter2で仮素材を作る

書いたとおり。IllustratorでSVGを弄る場合は、全ての単位をピクセルにし、線を無しにして長方形を置けば意図通りになる。ウィンドウの「変形」で数値入力できる。背景に画面サイズの長方形を置いておかないと出力時に透明部分がトリミングされるかも。あるいは、AtomでSVGを直書きしてしまうことも出来る。いずれにしろ、idをちゃんと振っておけばあとで取り出しやすい(Illustratorではレイヤ名やグループ名やパス名がidになる)。上手く行ったので、これからは仮素材作りはこれでやろうと思う。

Tiled map editorで作った2DマップデータをLuaテーブルを出力し、NScr2から取り込む

この辺の話を後に記事にするかも。単純にLuaテーブル形式で吐けるのでNScripter2では単にdostringして戻り値を取るだけでいい(内部ファイルの場合。外部から任意のファイルを取り込む場合はevalインジェクションがあるので避けた方がいい)。他にもJSONやCSVでも吐けます。

posted by NTak_Indies at 19:26| Comment(2) | TrackBack(0) | 日記

2016年11月07日

同人開発本格始動

nscripter.comリニューアル始めた

まだコンテンツがないんだけど、DreamWeaver+bootstrapで作業。

HTML5ゲーム開発開始

使うライブラリを決定した。まずpixi.jsで2Dゲームを作成する。その次に、PlayCanvasで3Dゲームを作ってみる。調子がよさそうならelectronでPCアプリ化、あるいはPhoneGapでAndroidアプリ化もするかもしれない。この辺のライブラリに一通り触ってみるのが第一目的だが、それなりに真面目に作る。なんらかのオンライン要素も付けたい。

Androidネイティブゲーム開発

Unityで作成しWEB広告を付ける。UnityAdsにしとこうと思う(簡単そうだし)。2Dと3Dで一本ずつ作れればいいなあと。

ゲーム企画が必要

いずれにしても企画が必要。今一番足りないのはこれ。時間取らないとなあ。上記プラットフォーム用のゲーム企画と、動画制作用企画(ずっとニコニコ動画には参加したかったのだ)。

本気で素材作成の練習始める

もう少しでSDキャラはそれなりのものになるんじゃないかと甘い期待……頑張る。

キャラクター作成

クリスペで下絵→イラレで線画・着色→Spineで2Dアニメーション、ZBrushCore,MayaLT,3D-Coat,Substance Painterを使って3Dモデル化 をこなしていく。動物やクリーチャーとかもやる。

その他モデリング

建築物、家具、アイテム、などのモデリングはFusion 360→FreeCadでOBJ変換→着色はキャラクターと同じ方法、という感じで進めていく。 自然物・植物の類はテレインを使うと思う。

動画練習

PremiereとAfterEffectsとボイスロイドやCevioを使いこなす。どんな動画を作るかが思いつかないがこれも企画作業に含める。YouTube使えば収益化も可能のようだ。試すだけ試してみるのもいいかなと。ニコニコと併用する場合は高画質版をYouTubeに持って行くのが定番のようだ。

posted by NTak_Indies at 18:10| Comment(0) | TrackBack(0) | 日記