これは自分を戒めるために上げている日記です。
自分の中で勝手に納得したり、独り言を言ったりしている様子が隠しもなく描かれています。
そういうものが苦手な方は、ブラウザバックしたほうがいいかもしれません。
==========================================================================
~アクセスナイト製作日誌~
「アクセスナイト」は、要するにロックマンエグゼっぽいゲームです。
そしてこれは、その制作の過程を記した日記になります。
定期的にあげる予定はありません。気分が向いたら上げようと思います。
==========================================================================
【2014/11/01】
とりあえず基礎だけ作っとくことにした。
明日は文化祭2日目だし、この程度にしておくかな。
・ウィンドウの表示
・ウィンドウモードの選択
・タイトルの切り替え、ログ出力機能のオフ
==========================================================================
【2014/11/02】
とにかく疲れてアレだったので、ほどほどに抑えます。
・キーコンフィグっぽいのの作成
・パット及びキーボードからの入力に対応
==========================================================================
【2014/11/03】
せっかくの休みなので、ちょこっとだけ進捗させとくことに。
いやー、本当に簡単でした。特にメニュー画面。
こんなに簡単なのは、恐らく前の苦労があったからなんでしょうねー…
そう考えると、あの黒歴史もそこまで悪いものではないような気がしてきた。
・簡易型のメニュー画面の実装
・フォント及び配色の実装
・データロード用の関数を作成
==========================================================================
【2014/11/04】
やばいやばい。だんだんわけわかめ状態になってきた。
なにしろそれぞれのシーン管理をするメイン関数が滅茶苦茶多くなってきて…
・ゲームフェイズを作成(ただし未実装)
・キャラステータスの構造体を作成(ただしバトル用のみ)
==========================================================================
【2014/11/05】
そろそろ3Dの勉強に取り掛かろうと思ったら、
途中で頭がぽぽぽぽーんになりかけたので断念。
大人しくバトルフェーズの製作に取り掛かってました。
それにしても1日に1回進捗やってんのな俺。
・簡易型戦闘マップの作成
・移動操作の確立(移動可能領域内でのみ移動できるようにした)
==========================================================================
【2014/11/06】
うえーい。今日はプログラム組むのを忘れていたぜー。
と、いうのも、今日はキャラデザをやってたからなんですがね(^q^)
一応Fウイルスの外見設定は決まりました。
まあ、元ネタをロックマンエグゼに設定してるだけあって、
外見がもうロックマンのパクリとも言われそうな感じになりました。
うるせぇ! クラッシュボム投げつけんぞ!(泣)
・キャラクターデザイン(主人公・Fウイルス)
==========================================================================
【2014/11/07】
ひっさびさの休日前。今までは休日なんてなかったからなー。
ってなわけで、のんべんだらりとしてしまいました。あんまり進んでない。
・体力増減計算の確立(?)
==========================================================================
【2014/11/08】
もう休日はしっかり休むことにしました。
とりあえず今日は、ガッツリお絵かきの方を楽しんで…
まあそのキャラは言うまでもなく主人公ですが(笑)
アナログの鉛筆画を写真で撮ってパソコンに転送して、
その線画を抽出して色を塗ってました。
…これは酷い。また改めて塗りなおしたいですね^^; そんな暇があれば。
あと、メニュー画面を改めて作り直しました。画像込。
ちょっと色が付くだけで、こんなにモチベーションって上がるんだね(笑)
大体こんな感じかな、ってのに仕上げられたので、
実質これにちょこちょこ追加していく風にしようかなぁと考えてみる。
・キャラクターデザイン(主人公・Fウイルス)
・メニュー画面リニューアル
・さらっとスクショ機能の実装(>>1の流用)
==========================================================================
【2014/11/09】
で、プログラムする。
実際にはそこまでやってません。今日やったのは勉強です。3D関係の。
必死にリファレンスマニュアルを読みまくったのですが、
話半分程度にしか理解できてません。「なるほど、わからん。」状態。
実際に使うのは、おそらく画像変形程度でしょう。戦闘マップだけだし。
で、その画像変形の関数が、これ。
DrawModiBillboard3D( VECTOR Pos, float x1, float y1, float x2,
float y2, float x3, float y3, float x4, float y4, int GrHandle,
int TransFlag ) ;
………。
つまり、どういうことだってばよ。
リファレンスによると、「VECOTOR Pos」が画像を描写する座標、
「float x1」~「float y4」が、それぞれ左上、右上、左下、右下の座標、
「int GrHandle」は画像登録ハンドル、「int TransFlag」は透過設定らしい。
でも、そもそも「画像を描写する座標」ってなんだよ!
座標って普通、点だろ! それが領域になるってどういうことだよ!
…理解不能。orz
もうこれ、3D関数使わずに、普通にDrawModiGraph関数使った方がいいような…
==========================================================================
【2014/11/10】
よーし終わった。大体のメニュー画面はこれで完成です。
本格的に画像を付けました。実行してみたらそれなりにいい感じかな。
明らかにロッ●マンエグゼっぽいけど、リスペクトだしまあいいかって感じで。
…6のタイトルBGMを再生しながら実行してみると、違和感がまるでない(笑)
あとはBGMと効果音、あとそれぞれの項目の機能を追加するだけ。
そのうちの殆どが≫1から流用できそうだから、割と楽…かもしれない。
あと、3Dは諦めました(笑)
でも、疑似3D(所謂2.5D)には挑戦します。
先に書いた、DrawModiGraph関数を用いて、座標を計算しつつ描写していこうと。
…まあ座標計算とか面倒臭そうではありますが(´・ω・)
そこらへんはバトル系の.cppにグローバルでconst宣言してあげたらいいかな。
今までconstを使う意味が全く判ってなかったけど、ようやく出番ですよ先輩。
何故だ! アイコンが変わらん!
いや、もうやるなら早めにと思って、アイコンの変更をしようと試みたのですが。
リファレンス通りにやっても変わってくれません(´;ω;`)
何度やっても、下のあれは変わってくれるのに、
ウィンドウのアイコンが変わらないんだよなー…なんでだろう
というわけで放っておく(定番)
まあウィンドウのアイコンとかは別になくてもいいやつだしー。
ファイル用のアイコンさえきちんとなってればいいや(遠い目)
==========================================================================
【2014/11/11】
今日はポッキーの日ですが、そんなことも言ってられません。
先程座標を計算するうえで、とっても重大なことを発見しました。
640って、6で割りきれないじゃん!!
予定では9×9マップが二陣営なので、横に6マス、綺麗に必要なわけです。
ただ、横サイズ640だと、どうやっても余りが出てしまう…
そこで、ある方法を思いつきました。
もう、ロッ●マンにしちゃえ(笑)
どういうことかというと、画面サイズ比をGBAスクリーン比と同じにしようって
いうことです。
ってなわけで、640×480だったのが720×480に変更されました。
それに伴い、文字や画像の出力位置をちょいちょい修正。
かるーくconst使う練習もやったところで、今日は終わりました。
==========================================================================
【2014/11/12】
ようやく、座標計算が終わりました。
例の関数で描写してみたら、そんなに歪んでなかったのでひとまず安心。
画像は例によってサンプルのままなので、そろそろ自作したいかなぁ。
あと、キャラクタのドット絵も作りたいかも…
それと、キャラクタの構造体も若干変えてみました。
ch.F.battle.x = 1;
ネストしすぎだろ!って一瞬思ったけど、まあいいや(^O^)ノ
【2作目制作日記】Access Knight
Re: 【2作目制作日記】Access Knight
お疲れ様です。
3D関数に関してですが、試しに色々パラメータを変えてみて、どの引数がどういった役割を果たしているかを予め調べておくと理解が深まるのが早いのではないでしょうか。
3D関係は2Dとは比べ物にならないほど苦労しました(というか現在進行形で苦労してる)ので、誰かに質問するのも一つの手だと思いますが余計なお世話でしょうか。
DrawModiBillboard3D の「画像を描写する座標」は、その言葉通り座標です。どこにも領域とは書かれていません。
VECTOR構造体はx,y,zの3要素を保持する構造体で、それ一つで画像を描画する座標を表しています。
3D関数に関してですが、試しに色々パラメータを変えてみて、どの引数がどういった役割を果たしているかを予め調べておくと理解が深まるのが早いのではないでしょうか。
3D関係は2Dとは比べ物にならないほど苦労しました(というか現在進行形で苦労してる)ので、誰かに質問するのも一つの手だと思いますが余計なお世話でしょうか。
DrawModiBillboard3D の「画像を描写する座標」は、その言葉通り座標です。どこにも領域とは書かれていません。
VECTOR構造体はx,y,zの3要素を保持する構造体で、それ一つで画像を描画する座標を表しています。
Re: 【2作目制作日記】Access Knight
SAIさん≫
そうですね…。今現在の時点ではDrawModiGraphで十分なので、そちらにはもう3Dを使うのをあきらめていますが、
もう一つ「アクセスフェーズ」という別のゲームシステムを予定しておりまして、そちらでは3Dが必須なので、
そちらの方で再度勉強しなおそうと考えております。
でも…その「画像を描写する座標」の意味が分かりません(´・ω・)
画像の左上の座標のことを言ってるわけではないでしょうし…
そうですね…。今現在の時点ではDrawModiGraphで十分なので、そちらにはもう3Dを使うのをあきらめていますが、
もう一つ「アクセスフェーズ」という別のゲームシステムを予定しておりまして、そちらでは3Dが必須なので、
そちらの方で再度勉強しなおそうと考えております。
でも…その「画像を描写する座標」の意味が分かりません(´・ω・)
画像の左上の座標のことを言ってるわけではないでしょうし…
Re: 【2作目制作日記】Access Knight
2Dの場合はスクリーン座標で座標(x,y)を指定しています。しかし、3Dの場合はワールド座標(x,y,z)で座標を指定しなければなりません。
今回の「画像を描写する座標」というのは、画像の中心座標がワールド座標においてどこに来るかということを表しています。
DrawModiGraphでは直接4つのスクリーン座標を指定して画像を描画していましたが、DrawModiBillboard3Dではまずワールド座標を指定して、
その後の8つの引数でその座標からのx,yの差分を指定して4つのワールド座標を決めています。
あ、今ワールド座標と言いましたが、カメラの向きに依存しないことを考えると多分x1~y4の値はビュー座標に介入しています。(自信ない)
これだとZ座標が固定で自由度があまりないので、自由に座標を指定して描画したいのであればDrawPolygonIndexed3D関数を使用したほうがよいでしょう。
そんじゃあこの関数は何のためにあるのかというと、どうやらこれを使うと画像をカメラの向きに関わらず常に正面を向かせることができるようです。(今調べた)
こいつの存在をもっと早く知っていれば森の木を正面に向けるのにこんなに苦労しなかったのに・・・orz
今回の「画像を描写する座標」というのは、画像の中心座標がワールド座標においてどこに来るかということを表しています。
DrawModiGraphでは直接4つのスクリーン座標を指定して画像を描画していましたが、DrawModiBillboard3Dではまずワールド座標を指定して、
その後の8つの引数でその座標からのx,yの差分を指定して4つのワールド座標を決めています。
あ、今ワールド座標と言いましたが、カメラの向きに依存しないことを考えると多分x1~y4の値はビュー座標に介入しています。(自信ない)
これだとZ座標が固定で自由度があまりないので、自由に座標を指定して描画したいのであればDrawPolygonIndexed3D関数を使用したほうがよいでしょう。
そんじゃあこの関数は何のためにあるのかというと、どうやらこれを使うと画像をカメラの向きに関わらず常に正面を向かせることができるようです。(今調べた)
こいつの存在をもっと早く知っていれば森の木を正面に向けるのにこんなに苦労しなかったのに・・・orz