来たる11月25日(日曜日)に,東京は台東区,浅草にある都立産業貿易センター台東館にて開催されるローゼンメイデンオンリー同人創作物即売会「まきますか?まきませんか?6」へのサークル参加に当選しました.…ナニこんなに丁寧な解説してるんだろう?
とりあえず前日の土曜はバイト休み貰わなくちゃね.ギリギリまで作業するとかしないとかじゃなくて,バイト行ってたら出発に間に合わない(夜行高速バスに乗れない)のです.地方(四国・徳島)在住者の辛いところです.
今回も頒布するのはACTゲーム「金糸雀ランド」です.今回こそ完成品を出したいものです.でも画像関連は残りの期間を考えると完璧にするには無理臭い.なんせ一人で作ってるし.もともと絵は上手に描けませんし.外注しないのはなんでかって?一つはコネが無いのと,もう一つは「自分でも出来るだろ」という多大な誤算をしてしまったためです orz
9時
>これからもサイト運営を是非頑張って下さい.
誰だか分かりませんがありがとうございました m(_ _)m とりあえず何は無くとも日記だけは書いていこうと思います…
句点がピリオドということを考えると,知り合いの中では結構投稿者は絞れるんですが,まきまき6のページにうちへのリンクが掲載されましたからね.知らない人の可能性もあるんですよね.何にせよありがとうございます.
リファクタリング.自分で書いたソースを修正・改良・最適化しているときの方が,何だかとっても楽しい.
…これでいいのか?ダメな気がする orz
ていうか日記書いてる暇がねぇー.
アクションパートのステージをまぁ作ってるわけなんですが,画像(マップチップ)の質はおいておくとして,それをどう並べるかを決めるわけですね.ここでマップエディタでも作れるスキルがあればいいんですが,それ作るだけで軽く3週間くらい消費しそうなんで,今はテキストエディタでマップチップIDをぷちぷちと打ち込んでいく作業をしてるわけなんです.まぁこれが面倒くさいのなんの.なんせ目に見えるのは16進数の羅列ですよ.んで書いて保存してゲーム起動して確認して,間違ってたら間違ってる箇所をよく覚える or メモするということをして,再びテキストエディタで修正.最初だからとりあえず今回は我慢出来ますが,次からは絶対にしたくないですね.
今まで
コンストラクタ : クラス名
状態の初期化処理 : init
描画 : draw
更新 : renew
状態の終了処理 : end
デストラクタ : ~クラス名
で大きな流れを作っていました.
しかしコンストラクタで例外を発生させることの危険性を知ってから,インスタンスの構築(construct)と初期化(initialize)を分離するべきだと考え,色々と思案した結果以下の様に今後は変更することにします.今後ってのは金糸雀ランドの後ね.だから正確には「今」後じゃねぇな.いや,そんなことはどうでもいいとして…
コンストラクタ : クラス名
インスタンスの初期化 : initialize
状態の初期化 : start
描画 : draw
更新 : renew
状態の終了処理 : end
インスタンスの終了処理 : uninitialize
デストラクタ : ~クラス名
ところで1フレームの更新処理を行う関数に renew という動詞を自分は昔っから使ってるわけなんですが,コンピュータ用語では更新は update と言う方がメジャーなんじゃないかと最近思い始めました.でも辞書を見ると update ってのはなんかニュアンスが違う気がするんですよね.上手く言えませんが (´・ω・`)
他の人がどうしてるのか結構気になります.長いものに巻かれたい小心者ですので orz
あと今日辞書見ててびっくりしたこと.initialize って動詞はコンピュータ用語としての造語だったんだね.uninitialize なんて動詞は載ってすらない.ググル先生に聞いても uninitialized なら知ってるけど…とか言われる始末.これにはほんとお姉さんビックリだ!
あとまた話題がぶっ飛ぶけどゲームのメインループは
[A]
1. 初期設定
2. 更新
3. 終了判定(終了ならば終了処理をして1.に戻る or ループ終了)
4. 描画
5. 2.に戻る
じゃなくて
[B]
1. 初期設定
2. 描画
3. 更新
4. 終了判定(終了ならば終了処理をして1.に戻る or ループ終了)
5. 2.に戻る
だと思うのです.ゲーム作りの入門書や解説サイトは[A]が多い(というか[B]を見たことが無い気がする)です.しかしこれは何だかおかしいことが多い.
<例1>
[A]だと最初に 1. で位置 (x,y) に物体を設置したとして,重力加速度 g による落下が更新処理で行われるとしたら 4. の描画で表示される位置は (x, y + (vy + g)) になるんですよ?
<例2>
256 フレームかけて,明るさを 0 から 255 まで変化させるというようなフェードインの処理を行いたいとします.ここで明るさを設定するために bright という変数があるとします.2. で行うのは更新処理なので,行うべきは bright++ でしょう.すると,1. で bright を -1 に設定しなければならなくなります.もしくは, 1. で bright に 0 を設定して,4. の描画の際に bright - 1 の明るさで描画を行うという命令にしなければならなくなります.こうすると終了判定も少し様相が変わってきますね(詳しくは書かない).
ちなみに私は昔
[C]
1. 初期設定
2. 更新
3. 描画
4. 終了判定(終了ならば終了処理をして1.に戻る or ループ終了)
5. 2.に戻る
という構造で作っていました.これはなんだか,経験不足も相まって相当へんてこなソースを書いていた記憶があります.もうプライベートメンバ変数の多さに世界が涙した,って感じ.
mixi 日記にて initialize の反対は finalize じゃない?という意見をいただきました.そうすると uninitialize ってのは「未初期化にする」みたいな?意味じゃね?って思えてきました.てことでこれからの終了処理メソッドは finalize っすね.それにファイナライザって単語もどっかで聞いた記憶がある.自分だけで1日かけて考えた意見には全然自信が持てないけど,他人が言った一言は10分くらいで納得出来ます(的を外してない限り).仲間ってのはこんなにも強いものなのね,羽入.
もうすぐシステムというかエンジンが完成するんだ…
そしたらようやくステージの本格的な調整や敵の調整に入れる…
今だから話そう.本当はこれが5月の頭には終わってるハズだったんだ.
アホだね,救いようがないね,ほんと (・ω・)
何考えてたんだろうね.うん,実は何も考えられてなかったんだろうね.
よっく分かったよ.俺はアホでしたああああ!!!!ああああ!!!!
知ってるよ.ああそれにしても今日も眠い.
こな×かがばっかりだぁあ!!!
こうなったら俺がひよりんzpを読むしかねぇッ!
咲夜,2chに,ひよりん可愛いよっつってんだろダラズ!
あなたは一体何者なのですか!?
フハハハ,こーちゃん,ひよりを持て余す.
18時
>御本業が疎かにならない程度に頑張って下さい。季節の変わり目ですので、どうかお身体にお気を付け下さい。
メッセージどうもありがとうございました.
ご指摘通り,学生としての本業を疎かにしないよう気をつけます.そして最近はほんと急に寒くなりましたね.夜中に寒くて目を覚ますことが増えてます.お互い風邪など引かぬように気をつけたいものですね.
と言うよりさぁ,もう既に今年が残り二ヶ月だよ.思えば色んなことがあったはずなんだけど,今自分の人生において最もウェイトの大きい「ゲーム製作」が全然進歩していないから,今年一年ほとんど何もやってないような気がするよ.
でもそういうことを意識して考えてみると,この一年で自分の C++ のプログラミングスキルはアホみたいに上がった.上がった気がする,じゃなくて,間違いなく上がった.
あと動的ゲームのプログラミングスキルも基礎的な部分はかなりノウハウが固まって来た.
※動的ゲーム:
ACT,STG,格ゲー,スポーツものなど,反射神経と運動神経がものを言うゲームのこと.対して,ノベルゲーや RPG のようにそれらの神経を重要視しないゲームを静的ゲームと称する…かどうかは知らない.
軽く現状を報告してみます.
当然というか何と言うか,あともうちょっとだと言っていたシステムの方がまだ完成していません.よくあることです.ダメですけどね.
残りは
・難易度によるステージ設定差し替え
・無敵
・敵動作設定スクリプトあと 1 種類(今スクリプトで出来るのは 3 種類の行動のみ)
・落下と水没による死亡
・ボス登場シーンの骨組み
・最終ステージ専用のあれらのギミック(これは用意しなければならないのだ)
・神経衰弱の作り直し(バグはまだ直ってません)
システムだけでこれだけ残ってます orz 思った以上に接触処理(当たり判定と当たった後に壁に接する地点までの押し戻し処理)が難航しました.というかそれだけで3週間(ほぼ10月今まで全部)消費してます.
そしてゲームバランスや見栄えに分類される部類の作業で残っているのは
・各ボスの登場時の運動とアニメーション
・というか随所随所のアニメーション
・残り13ステージのマップチップ配置
・残り20種類くらい?の敵設定
・残り15ステージ * 3つの難易度の敵配置
・3つの難易度でのボスバトル
・エンディング(これはもう別に無くても…(逃))
そして何と言ってもドット絵関係は壊滅的です.テスト用の画像もろくに準備が終わってません.
音楽や効果音も素材をダウンロードしてはあるんですが,探せてません.
あと頒布するための準備として,レーベルイラスト作成とマニュアル作成.
軽く絶望的っすね.でも頑張る.
ソースコード:13796行
ファイル数:152(.h .cpp 総計)
ソースサイズ:約306kB
初めて真剣に完成を目指して作ってるわけですが,どう見ても不相応な分量じゃないかと思われます (・ω・)
ちなみにソースコード行数は途中でライブラリにまとめた分も含めるともっとあります.スクリプトのコンパイラも含めたら更にある.でもDXライブラリのヘッダファイルはあれだけで1000行以上あるので含めない.
1つ失敗したなぁ,と思ったのは,Ruby でのバイナリファイルの書き込み方がよく分からなかったのでスクリプトのコンパイラも C++ で作ってしまったこと.でもお陰でバイナリファイルと整数値データをやりとりする関数は完備されたので,それは嬉しい.けど Ruby に慣れる機会をまた失ったかと思うと… orz