いつまでもプロトタイプ

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

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

カテゴリ:ゲーム > コイカツ

337

336

335


ゲームのエンディングでスタッフロールを流す背景のような過去回想写真、といったイメージだったけど、ポーズといい、髪の表現といい、構図といい、なんかスゲー満足したのでのっけから3枚掲載。

ま、パンツ穿いてないんですけどね。



さて、Shortcutsの機能を少しずつSpecterへと移植しているわけですが、なぜか、個別に作っていたプラグインのInvisibleBodyとSceneLoaderが先に取り込まれました。


使い方は、おそらく画面を見ていただければすぐにわかるかと。

こんな感じで。


321

322

323

アクセサリも個別に切り替えができるので髪なんかをアクセサリで作ってる場合でも消せます。

逆に衣類の装飾にアクセサリを使っていたりする場合に、アクセサリは消したくないときももちろん表示したままにできます。

デフォルトの機能でもアクセサリは切り替えられますが、一括でできると楽なこともあるかと。

ついでに、男性キャラも同様に。
とはいえ、単一カラー表示ができるから必要ないかな~?

で、ボディの透明化ができると二人羽織が楽しい。

324

327

エフェクトの確認とかしてたんでブラーもブルームもかけすぎてますが、まぁいいでしょう。



次のシーンデータローダーは個人的にはよく使うものだったりする。

イリュさんには若干申し訳ない気もするんだけど、WEBサイトへ向かい、シーンデータを閲覧し、ダウンロードしてスタジオで読み込む、って結構手間なんですよね。

なので、スタジオ内でアップローダーページへアクセスしてシーンデータを閲覧&クリックで読み込みをやっちゃいました。

で、ページ数は公式ページに一致しているので、良いものがあったらそのページへ移動して拍手を押しませう!

328

329

余談ですが、GUIのボタンに読み込んだ画像をテクスチャとして貼り付けてるんだけど、ウィンドウを拡縮するとボタンも拡縮するようにしている。

で、縮小の時は連動してテクスチャも縮小する。自動で。特に設定してない。

けど、拡大はどうやら自動ではやってくれなくて、画像サイズが最大となる模様。
拡大もしてくれたらいいのにな、とほんの少しだけ調べたけど、今のところそれを実現したとしてもリターン(満足感とか)がない気がしたのでスルー。

とりあえず、このままで自分としてはOKなので、このままいきま~す。



いや~、それにしても時間に余裕があるっていいですなぁ!

今月の仕事はほぼ片付いて、次の三連休も休めそうだし、12月はもっと暇になるはずだし、来年は・・・
1月からはしばらく旅に出るかな~


それにしても、今日はSSが捗った。
エフェクトが試行錯誤でやり過ぎ感があるので、もう一度撮り直そうか。


330

331

334

上のSSはポーズだとか構図だとかよりも、指だよ指!

尻にあてがわれてる右手とかけっこう好みになりましたな!
いや、左手もなかなかいいと思うんですがね。
ブラーでボケボケなんですがね!w


そんな感じで夜中に酔っ払いながらブログを書いているわけですが、皆さん良い夢を~


317



新プラグイン Specter
 アイテム検索
 エフェクト
 オブジェクト
 困ったときのプラグインリセット



Illusionのゲームは「プレイクラブ」が初めてで、その後「ハニーセレクト」や「プレイホーム」
そして、「コイカツ」と遊んできた。

「プレイクラブ」は衝撃的だった。こんな手軽にリアルなものが楽しめるものなのか、と。

で、その時に「マウス操作でいちいち脱ぎ着させるの面倒」というところから「キーボードで全裸・半裸・着衣」を切り替えるための機能として「Shortcuts」が生まれた。

ほんと、当時は3つくらいのキーに1つずつの機能を割り当てるのが精一杯だったんだw

命名も結構適当でしょ?複数のキーにショートカットを割り当てるから Shortcuts って。

Unity どころか C# も初めてだし、VsiualStudio も初めて。
本読んでもわかんねーし、人様のソースコード見ても当然わけわからんのよね。

けど、Excelでマクロをチョロっと組んだことあるという程度だったはずなのに、気付けば早数年、数百にも上るダウンロード数で当初は予想もしていないほど多くの方にご利用いただいているようで、本当にありがとうございます。


というわけで、元来面倒くさがり屋なもので既存の Shortcuts に付け足し継ぎはぎでここまで来てしまったのだけれど、もう一度根本から見直して、作り直そうと思い立ってみた。

BepInEx の普及もあって、やはりBepInExにも対応させたいとも思うのでね。
 
 
で、とりあえず、「Specter」という名前で新プラグインを作りはじめました。

ま、自分の力量でできることなんてそんなに変わらないし、結局自己満足で、大きく変わっているのはソースだけというw

なので、既存の Shortcuts に追いつくまではまだしばらく時間がかかると思われます。


・・・そうはいっても、ついカッとなって意味不明なことを叫びながらキーボードを叩いていたら出来上がった「アイテム検索機能」は結構便利なんじゃないかな。
俺は便利だと思ったよ!w

あ、メニューの表示は「U」と暫定的にはしたんだけど、これ、今後変更になる可能性あるのでご注意を。

というか、そもそもまだ実験段階なので、その辺何かあってもいつもの通りスルーで宜しく!w
 
 
 
◇ アイテム検索の使い方・・・って、ただ文字入れて希望のものがあったらクリックするだけ

318
 
 
 
◇ エフェクト

エフェクトの名称も、各項目の名称も、Unityで定められている標準の名称なので、それらをググればいろいろ教えてくれます。
独自に日本語化してもいいのかもしれないけど、そんな暇はねぇ!w

319
 
 
 
◇ オブジェクト

それほど万人向け機能というわけではないのかもしれない。
けど、今後、マテリアル関係やシェーダー、DynamicBoneなどなどなど、色々簡単に弄れるようになると俺的勉強が捗るので真っ先に実装した。

現在、そのGameObjectがもつ機能(コンポーネント)を丸っと取得して、変数(フィールドとかプロパティと呼ばれるもの)の数値をスライダで変更できるようになっている。

けど、その中でも対象は限定的で、FloatとVector3、Boolの3種だけ。
なぜかintを忘れている。

これだけだけど、TransformのPositionやAngleなどlocalな値も含めて触れるので、まぁまぁ遊べる。


蛇足的だけど、オブジェクトをここでいじるとどんなことができるのかをツイートしていたので引用。






 
 
 
◇ 困ったときのプラグインリセット

オブジェクトをあれこれ弄っていると、弄れない項目を弄ろうとしているのか、稀にプラグインのウィンドウ内にGUIが何も表示されなくなることがあります。

そんな時は、「左Ctrl」+「左Shift」+「U」でリセットできるので、これで復帰します。
※プラグインが何か処理していると1回ではなく複数回押さないとだめかも。
※リセットされるとプラグインのウィンドウが消えるので、再度「U」で表示してください。
※再表示されないようであれば、もう1回リセットを。
※スタジオのリセットではなくプラグインのリセットなのでスタジオ自体には影響しません。
※ぶっちゃけ、面倒なのでリセット連打でいいと思う。俺はそうしてるw




てな感じで、今後はBepInEx用に切り替えていくかな~



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が使えるバージョンになるのかしら?

このページのトップヘ