プロトタイプ4

 ドット絵をちょっと豪華にみせる作戦として、見下ろし視点にちょっと奥行きが出るようパースをかけて表現したい。

f:id:giraffyk1:20160927085446p:plain

ポケモンプラチナ? イメージとしてはこんな、画面上部の消失点に向けてオブジェクトが内側に向いてる状態。これを実現する作戦として、2Dの画面を単純に台形に変形してから描写する事を考えた。

実装方法としてはSFMLが持っている機能で頂点リストで四角形が書けるものがあったので、これを使おうと思った。その機能で画面大の台形板を作って、その上にテクスチャとして画面バッファを貼り付ければ奥行き出るのではないだろうか。

と思ったけど、失敗。テクスチャを貼り付けると形がゆがむしちらつく。これはSFMLが悪いのか僕が悪いのかわかららず。

プランB。SFMLはOpenGLが操作できるようなので、そこから画面大の四角いポリゴン板を生み出してそこに画面バッファを貼り付ける。んで奥行きが出るように軽くポリゴンを回転させてやればいいんじゃないかと思ったが…こちらも失敗。SFMLの画面描写機能とOpenGLが同時に使えなかった。OpenGLでポリゴンを出した後、他のインターフェイスやたデバッグ情報など上からdraw命令で描画するとOpenGL経由で出力したポリゴンが消えてしまう。

解決方法がありそうなんだけど・・・そんな事より上のポケモンの画面をじっくり見てて気づいたのが、キャラクタはドット絵なんだけど、それ以外は3Dで描写されているのでは無いかという疑念。

www.youtube.com


で、動画を実際見てみるとやっぱりそのようだ。建物やオブジェだけ3D?ともかくプレイヤーの位置によって横壁面や上面の見え方が違うのは2Dじゃ実現出来ない。僕がもしこのままOpenGLの探求を続けて、2Dにパースをかけれるようになっても、ただ歪んだ画面になるだけで立体感残したままパースがかかった画面にはならないのでしょうね。

…というわけで、今回の開発で初めて予定していた機能というかエフェクトの実装を取りやめました。

代わりにちょっとしたものを。

カメラエフェクト - YouTube

カメラが主人公が追尾する速度に少し遅延を入れました。一行で書けないかなと頭をひねったが結局三行必要だった。数学をもっと勉強しておけばなあ…。


というわけで、技術検証を終了して、本組みに入っていく。まだまだ知識が半端だけども完成するくらいまでは破たんせずに続けられる程度にはC++やらSFMLやらが理解できて全体の設計、エンジン的なもののイメージが出来た。


ただそういう地盤作りをしている間。たぶん1〜2ヶ月は目に見える変化が無いので、この開発日記はまた技術的なものに絡む独り言が増えていくだろうなあ。