モナドのまほう　第17話『ｱｶﾈﾁｬﾝｶﾜｲｲﾔｯﾀｰ!』

[第一話](http://qiita.com/hiruberuto/items/5321d8cebce7b87851f6) / [前回](http://qiita.com/hiruberuto/items/02cea526f5487d579cec) / [デモ](https://aratama.github.io/cubbit/)

黙々とゲームを作る日記です。今回は完全に脱線しています。Blender回です。


# 病ンデる琴葉姉妹

まだキャラが一人しかいなくてちょっとさみしいから、新キャラ作るで！　ワイは[病ンデる琴葉姉妹](http://seiga.nicovideo.jp/seiga/im5274301)が出てくるゲーム実況動画がほんに好きなんやけど、それで関西弁ボイスロイド[琴葉茜ちゃん](https://www.ah-soft.com/voiceroid/kotonoha/)作ることにしたわ。琴葉姉妹はカラーリングが紅白でめでたいしな。新年のお祝いや。それにな、ゲームが完成したらプロモ動画作って茜ちゃんにナレーターしてもらおうと思うんや。夢が広がりんぐやな。

そんなわけで、いつものアレから作り始めることにするわ。

![makehuman.png](https://qiita-image-store.s3.amazonaws.com/0/64695/20eb39b8-0665-a4b7-0012-6ac59121be0d.png)

そういえば、このあいだプレイヤーキャラクターのモデルを作った時にはなんか半端に肘を曲げたポーズでエクスポートしていたんやけど、この腕を水平に伸ばしたブーンのポーズのほうがあとあと編集しやすいことに気づいたんや。そういうことはな、先に教えて欲しかったわ。じゃあ下絵を読み込むで。

![blender.png](https://qiita-image-store.s3.amazonaws.com/0/64695/adf7e873-dbfa-1536-04e2-a765a0c2c9c2.png)

まずは元画像の茜ちゃんをじっくり観察してモチベーションを高めるんや！　今回の下絵は真正面じゃないからちょっと厄介やけどな、下絵を自分で描き直す根性はないしな。それからさっきの素体を読み込んで、下絵に重ねて身長や大まかな体型を合わせる。プロポーショナル編集ツールを使うとええぞ。まさに<ruby>体型<rt>プロポーション</rt></ruby>を編集するためのツールやな、ってやかましいわ。

![blender2.png](https://qiita-image-store.s3.amazonaws.com/0/64695/3327b67d-2a98-df39-0291-51935e2f587c.png)

全裸やないかい！　こんな格好で外を出歩いたらお巡りさんに捕まるかもわからんで！　とりあえずなんか着ーや。

![blender3.png](https://qiita-image-store.s3.amazonaws.com/0/64695/1acadee7-94ad-b27c-6aa7-98e02e20bc7a.png)

……しっかしなんやねん、このぶっさい子は！　こんなん琴葉茜ちゃんとちゃうで！足だけ妙に色っぽくて逆に気持ち悪いわ！　顔もアカンわ。顔面は全部作り直しやわ。

![blender4.png](https://qiita-image-store.s3.amazonaws.com/0/64695/f9f673d8-bf61-e330-8c16-08ce354dfc35.png)

あかん……あかんで葵！　似てるのは色だけやで！　ちゃんと画像から色を拾って材質を設定しているからな。この、完成型がまったく見えてこない状況でひたすら微調整を繰り返す作業が一番しんどいわ。腱鞘炎寸前やわ。

数時間後。

![akane.png](https://qiita-image-store.s3.amazonaws.com/0/64695/c496595a-8fe2-99b1-df53-c851a9c6c46d.png)

どうや？　これはもうほとんど至るところで茜ちゃんやろ。ｱｶﾈﾁｬﾝｶﾜｲｲﾔｯﾀｰ!　BlenderにFreestyleっていう輪郭線書いてくれる機能があってな、これ使うとかなりイラストっぽくなるんや。まだソックスのくしゅっと感が足りんし、テクスチャもちゃんと影やグラデーションをつけていないから立体感が足りてへんわ。もうちょい調整したらゲームの中に出すわ。妹の琴葉葵ちゃんもつくろか。左右反転して色変えるだけやから、わりと簡単や。一体で二度美味しいとはさすが双子姉妹やな。まあ版権モノやから、最終的には削除するかもわからんけどな。茜ちゃんが見守ってくれて開発中のモチベーション上がればそれで構へんのや。やっぱBlenderが一番楽しいんや。もうプログラムとか誰か代わりに書いてくれひんやろか。あとで[ニコニ立体](http://3d.nicovideo.jp/)なんかにも投稿できたらええな。

ゲームのノンフォトリアリスティックな表現では、やっぱ一番すごいのはGUILTY GEAR Xrdやな。あれ作ってるアーティストさんすごいわ。集中線とかの演出面も含めてもうパッと見で完全にアニメやし、それでいてカメラをブンブン振り回すから迫力が半端無いんや。

<iframe width="560" height="315" src="https://www.youtube.com/embed/NKGPhKu3jNg" frameborder="0" allowfullscreen></iframe>








# ゲームはテスト自動化できないらしい

テストをどうしようかいろいろ考えていたら、下の記事にたどり着きました。

* [ゲーム業界のテスト事情](http://qiita.com/sisomoti/items/e9d1b4dc756300f75abf)

結局のところ、ゲームのテストを自動化することはできない、ということのようです。よく考えたら、今作っているゲームはフレームレートが可変になっているので、結果が決定的ではありません。つまり、ゲームを開始してからずっと方向キーを右に入れて歩き続けると100フレーム目には必ずこの位置に来ている、というようには言い切れず、どうしてもある程度の誤差が出てしまいます。そのためゲーム全体を通しての自動化されたテストというのがやりにくいのです。しかも先に仕様が決まっているわけではなくて、完全に行き当たりばったりで調整が繰り返されます。だってプレイしてみないと面白いかどうかなんてわかりませんからね。仕方ないのでテストは今後も人力です。



# 謎構文エラー

Opera 12.18, Windows 8という環境で構文エラーが出ているみたいです。構文エラー……？

```
Syntax error at line 14918 while loading: FunctionDeclaration in Statement context
```

OperaはだいたいChromeと同じように動くと思っていたんですが、謎エラーが出ています。筆者の手元のOperaではちゃんと動いているんですが……？謎。

Safari9.1.2/Mac OS X10.11.6という環境でも。

```
SyntaxError
Strict mode does not allow function declarations in a lexically nested statement.
```

こっちはStrict modeのせいということで、まだエラーの内容が想像つきますね。行番号はまったく明後日の場所を指していますけど。うーん？何なんでしょうか。実機がないとよくわかりません。sentryのほうで何かミスをしているのかも……？



# uncurrying optimization

PureScriptの関数はすべてカリー化されて表現されているのですが、これをカリー化されていない関数へと最適化してくれるツールをRollupで作っている人がいるようです。

* https://github.com/purescript/purescript/issues/2207#issuecomment-271081592


カリー化のオーバーヘッドはかなり大きく、PureScriptの最大の欠点といえるかもしれません。実際にこの問題のせいで一部をJavaScriptで書きなおすハメになったので、もし実用的になればすごく嬉しい機能です。ただかなり場当たり的な方法なので、何か思わぬ落とし穴があるかもと心配になります。




# 次のお話

* (まだです)