いつまでもプロトタイプ

映画やアニメ、エロゲ、AVなどなどエロネタ中心に扱ってます。

<お知らせ>
作ったもの(プラグインしかないけどw)を置いておく場所を変更しました。
一部記事にてリンク切れが発生しておりますがワタクシめ修正する気がないようです。
おなじみのアップローダーを借りたので、今後はこちらから奪ってやってください!
http://ux.getuploader.com/moistened_eye/

2018年10月

283


ありそうでなかった!?ポーズの左右反転コピー!

FKを有効にする必要があったり、最初のポーズがどれかによって若干ズレるので完璧なコピーではないけど、ほぼほぼいい具合。

ということで、倉庫に1.9をアップロード。


使い方はそんなに難しくないっす。


まずはキャラを読み込んで・・・(てきとーですんません)

285


次に誰かのポーズを決めて・・・

286


FKを有効にして・・・(あ、コピー元/先のキャラ全てのFKを有効にね)

287


で、ShortcutsKoiのメニューを表示し「ポーズ」を選択。
コピー元のキャラとコピー先のキャラを選択して、反転コピーボタンを押せば完了!

288


あとは必要なだけ同じ操作を繰り返せばいいんじゃないかな。

289


尚、キャラ全体の角度まではコピーしてないのでそれらもちょこっと弄ると下の画像。
ほぼほぼコピーできてるんじゃないかな。

290



これで冒頭の画像のような二人で一人なシーンは作成しやすくなるかと!


・・・しかしなんだ、ハロウィンなのにハロウィンらしいことは何一つしていないという・・・w

275


え~、なんか余計なスライダとボタンが出たままSS撮っちゃったのに気づいたのはだいぶ後。
もう、面倒なのでそのまま使うことにw


さて、前回あたりからラノベ機能を復活させたのですが、メッセージウィンドウの読込(変更)コマンドも付けたので、倉庫へアップロード。
(ついでにシーンデータ読込の不具合も直したんだっけ)

しかし、やっぱりシーンデータが重いと待ち時間が長く感じるね~


使い方は以前より変わってません。

Plugins\ShortcutsKoi\Lanove 内にCSVファイルを置き、そのファイルにメッセージなどいろいろ書きます。

[コマンド],[パラメータ1],[パラメータ2]

といった感じで。
(実際にファイルの中身を見てもらった方が早いかも)

コマンドには「ldw」「lds」「msg」の3つがあります(少ねぇ!w)

ldwはメッセージウィンドウの読み込みで、画像ファイル名をパラメータ1に指定(拡張子は除く)
メッセージウィンドウの画像データはこのCSVファイルと同じPlugins\ShortcutsKoi\Lanove 内に。画像フォーマットは今のところPNGのみ。

ldsはシーンデータの読み込みで、シーンデータのファイル名をパラメータ1に指定(拡張子は除く)
シーンデータの保存場所は特にいじることなくデフォルトのままでOK。

msgはメッセージで、パラメータ1に名前、パラメータ2にメッセージを書きます。

ldwもldsもパラメータ2は不要ですが、カンマの打ち忘れにご注意を。
1行にカンマが2個あることが大前提なので。
また、最近は文章中の読点をこのカンマ(半角)で書くこともあるようなのですが、このファイルではcsvの区切り文字として使っているので、読点は全角の「、」を使用してください。

とりあえず、サンプルのようなものは Plugins\ShortcutsKoi\Lanove に入れてあって、lanove.csvとwindow.png、window2.pngがそれ。

あとは、何か適当なシーンデータを001.pngとして用意すれば、とりあえず、簡素な説明がラノベ風に流れていきます。
(001.pngはなくてもシーンデータの読み込みがされないだけで、メッセージは流れていきます)


276


あと、メッセージは一文字ずつ打ち出されていきますが、途中で左クリックを押すと一気にすべて表示します。

また、メッセージフレーム内を右クリックすると下のようにログが見られます。

277


MODテンコ盛りだったりアイテム多数使用シーンだったりすると、シーンデータの読み込みに時間がかかるので使い勝手はイマイチですが、まぁ、なかなか面白いんじゃないかと。

メッセージフレームより上の部分ではカメラもグリグリ動かせるのでね。


いや~、久々の夜更かしだけど、明日、起きられるのかしらん?w



278

272


珍しく(?)ちょっと真面目にプログラミングの勉強中・・・

ある時からのShortcutsシリーズや特にAddDBColliderとかは処理が重くなってた。

きっと、スタジオでキャラをぐりぐり動かしていると毎秒突っかかるような症状が出る人がいるのではないかと思います。いや、確実にいます。例えば俺。

うちのPCは非力でね、3Dゲームをするにゃちょっとギリギリなんじゃないかと思うほどに。
だから、ちょいとカクつくくらいは致し方なし、と。そう思ってた。

けど、もう少しスペックの高いPCでも同様の突っかかりが出ることに気づいたのさ。

そして、「あぁ、これ自プラグインの作りが悪いのね・・・」という結論。知ってたけど。


というわけで

・ShortcutsKoi
・AddDBCollider
・SceneDataLoader

の3つを更新。

ShortcutsKoiとAddDBColliderは主に軽量化。
毎秒引っかかるような動作がなくなった(はず)なので、うちのような低スぺPCでも少しは快適になった気がするよ。

ただ、極々、極稀にシーンデータ読み込み中にAddDBColliderが原因でゲームが止まるかも。
稀にしか発生せず、原因はわかっているつもりなのに、完璧な上手い回避策が打ててないかもしれない。
1%程度の発生率かと思うし、さっきは100回ほどシーンデータ読み込んでも大丈夫だったので、多分大丈夫だと信じたいけど、ちと不安・・・
ま、ゲーム再起動で済むので、個人的には許容範囲、ってことでw

また、SceneDataLoaderは環境依存かもしれないけど「2回に1回の割合でマップが読み込まれない」という不具合があったので、直した。


はい、今日の更新はこんな感じです~


273






さて、今回の「毎秒動作が引っかかる」という症状、このおかげでだいぶ勉強になったので備忘録のように下記に残しておこう。
尚、illusionのゲーム(コイカツ)で使われているUnityは5.x系なので、それ以降のUnity2017やUnity2018には当てはまらない部分あり。

・UnityはメインスレッドでしかAPIが使えない
・重い処理や時間のかかる処理は非同期処理のできるコルーチンを使おう
・このコルーチンはメインスレッドで動いているよ
・なのでコルーチンの一つの処理が1フレーム分の時間を超えると処理落ちするよ
・処理落ちを引き起こすようなものは別スレッドで動かそう(ただし、UnityのAPIは使えない)

とまぁ、何か重い処理をやらせるにはコルーチンやらスレッドやらを利用するのが良いらしい。

そして、コルーチンまでは(間違いや勘違いが多いにせよギリギリ)使えていた。

ところが、どう頑張っても3番目の「たった一つの処理で1フレーム分の時間を超えてしまう」処理というのがあって、コルーチンでは対処しきれないケースがある。

・・・まぁ、

UnityEngine.Object.FindObjectsOfType<GameObject> とかやってんじゃねーよ!

というのが本来の結論なんですが・・・

そこを敢えてスレッドを使うという方法で何とかしてみる。

で、今のイリュゲはUnityの5.x系なので使えるのはThreadクラスまで。

Unity2017以降だとC#5.0で使えるようになったasync/await、.net4.0で導入されたParallelクラスが利用できる。(今回のケースではParallelクラスは使えたとしてもあまり意味ないけど)


さてさて、イリュゲは上記の通りThreadクラスまでなのでどうするか。


void Start () {
  thread = new Thread(HeavyMethod);
  thread.Start();
}

void HeavyMethod() {
  なんか重い処理
}

void OnApplicationQuit()
{
  if( thread != null){
    thread.Abort(); 
  }
}


といった感じで基本的にはOK

これで今回生じたカクつきとはおさらば!


しかし、なるほど、AndroidやらWindowsのフォームアプリ、WPFなんかでもメインスレッドとは異なるスレッドからは(基本的には)UIいじれないアレと似たようなもんか。

わかったような、わかってないような・・・w

次のイリュゲあたりからはasync/awaitが使えるバージョンになるのかしら?

このページのトップヘ