リフスロー
コードレビュー
リフスローチーム
和泉 真
西村 和晃
お題目
計画的なお話
◦ 改めてプロトタイプについて
◦ リフスローでどうなったのか
◦ 気をつけるべきこと
技術的なお話
◦ リフスローの良かった点の解説
◦ リフスローの悪かった点の解説
担当:和泉真
前半
~計画的なお話~
改めてプロトタイプについて
ゲームの動きを見るためのもの
プロトタイプ ≠ メイン
使い捨て
リフスローでどうなったのか
ゲームの動きを見るためのもの
◦ 成功
プロトタイプ ≠ メイン
◦ 移行時期で大失敗
再利用するかの判断、実際に移動
◦ 同上の理由で大失敗
気をつけるべきこと
プロトタイプであるという意識
メインへの移行計画を具体的に
そのクラスは他で利用できるのか?
チーム内での仕様を徹底して把握
ちなみに
メインで利用しないプログラムでも、
取っておいた方が良いです
担当:西村和晃
後半
~技術的なお話~
ここからの流れ
良かった点
◦ 入力判定の統一化
◦ データベースの使用
◦ ステージエディタの作成
悪かった点
◦ 時間配分
◦ ベース関数説明・リファレンス
リフスローPGの大まかな流れ
初期化処理
・入力デバイス
から入力を受け
取る
・データベース
の内容を更新す
る
・ステージ処理
からの要望で、
新しいステージ
を作る
・ステージ処理
からの要望で、
ゲームを終了す
る
ベース処理
ステージ処理
終了処理
・モデルや画像
を動かす
・モデルや画像
を描画する
・音を鳴らす
・新しいステー
ジを作るよう
ベース処理に要
望する
・ゲームを終了
するようベース
処理に要望する
入力判定の統一化
リフスローの入力仕様
◦ キーボード・ゲームパッド両方に対応
◦ キーコンフィグに対応 結局実装できなかったけど…
これらをどう処理するか?
(キーコンフィグ設定をこれからの入力判定に反映させる);
if(キーボード判定||ゲームパッド判定){
…
}
入力判定の統一化
リフスローでは
◦ 入力処理を受け取るための専用クラスを
設計(CInputクラス)
キーボードからの入力を受け取って保存
ゲームパッドからの入力を受け取って保存
キーコンフィグの設定を受け取って保存
テーブル処理で、必要な時に設定を参照
1フレーム前の入力情報も保存
「今押したか」「前から押されてるか」の判定が可能
入力判定の統一化
そしてどうなった
◦ if文一つで完全な入力判定が可能に
キーコンフィグはどんな設定になっているか?
キーボードはどのキーの入力を調べるか?
ゲームパッドはどのボタンの(ry
キーボードの方ではキーは押されているか?
ゲームパッドの方ではボタンは(ry
今押した?前から押されている?
◦ 入力デバイスによって判定回数を増やす
必要がない!
入力判定の統一化
こんな感じ
BTN1が今押された
BTN2が押されてる
Bボタンが
ゲームパッド
押されてる
入力クラス
押されたよ!
キーコン
フィグ
Zキーが今
キーボード
押された
Type
Key
Pad
BTN1
Z
A
BTN2
X
B
UP
↑
↑
RIGHT →
→
BTN1って今
メイン処理
押された?
入力判定の統一化
入力判定はゲームの根幹
◦ 入力が受け取れないゲームなんて無い
◦ まともな操作もできないゲームは論外
◦ つまり・・・
入力の仕様はとても重要です
◦ できれば最初に実装しておきたい箇所
◦ 必要であればキーコンフィグも実装
◦ あとで仕様変更の無いように!
※ここの内容は、キーコンフィグ以外FKUTにも実装されています
データベースの使用
1つのモデルには複数の変数が必要
◦
◦
◦
◦
fk_Shape
fk_Model
fk_Material
CMotionCharactor
ゲーム全体で反映される値もある
◦ 音量設定
管理がめんどくさい!
データベースの使用
リフスローでは
◦ 「データベース」(以下DB)を作成
◦ 用途に応じた複数のDBが存在する
modelDB(モデルを扱う)
graphDB(2D画像を扱う)
effectDB(エフェクトを扱う)
soundDB(BGMやSEを扱う)
configDB(各種設定を扱う)
systemDB(システム系操作を扱う)
rankingDB(ランキングデータを扱う)
データベースの使用
modelDB
◦ 大半のモデルはmodelDBに登録
◦ モデルをいじる時は
用意された関数を使う
モデルのポインタをもらう
ホントはよくないけど…
◦ モデルの後片付けも全部お任せ!
◦ DBの中ではこいつが一番活躍しました
データベースの使用
graphDB
◦ 2D画像の処理に特化したDB
まあfkut_SpriteModelがあれば十分だけどね…
effectDB
◦ エフェクト(3D画像)処理に特化したDB
◦ カメラ「こっち向いて~」
関数1つでカメラの方へ!面倒な計算不要!
データベースの使用
soundDB
◦ BGMとSEを扱うDB
◦ 音量を一律で変更
音量設定はconfigDBから受け取る
configDB
◦ オプションで設定した内容を持つDB
音量設定
フルスクリーン設定
データベースの使用
systemDB
◦ 細かな処理を担当するDB
フェードアウト・フェードイン
カメラモデルのポインタを渡す
fk_Sceneのポインタを渡す
rankingDB
◦ ランキングデータを持つDB
実装には至りませんでした
データベースの使用
変数の管理はしっかりと!
◦ むやみな変数の宣言は混乱のもと
◦ ややこしい変数や関数は全部クラス化
◦ 変数を管理する専門の人を作るのも良い
ステージエディタの作成
ステージを作るには
◦ コードに数値をガチ打ち
やめてください
◦ とりあえず txt
or
まあ多少は楽だけど…
◦ ステージエディタ
こっちの方が楽だよね
csv
ステージエディタの作成
リフスローでは
◦ フィールドを3次元のマス目で表現
◦ ブロックが存在するマス目を保存
◦ 読み込み時マス目から実際の座標へ変換
7
6
5
4
3
2
1
1
2
3
4
5
6
7
ステージエディタの作成
管理しやすい保存ルールを!
◦ 1行目にはエディタのver.を
◦ 2行目にはプレイヤーの初期座標を
◦ 3行目以降にはブロックの座標を
特に大量のステージを作る時に有効
◦ プレイヤーにステージを創作してもらう
時は必須
悪かった点
時間配分
◦ ベースを作るのが遅かった
一通り作り終えたのが7月中旬ごろ
しかもバグが多発
プロトタイプから移行する時の障害の一因に
◦ ベースは早めに作ろう!
ベースを作る人のペースがその後の作業全体に
影響します
悪かった点
ベース関数説明・リファレンス
◦ 何もかも説明不足だった
「この関数はどうやって使うの?」が数百回
用意した関数が活躍できなかった
◦ 他人のコード程分かりにくいものは無い
詳細な説明が必要です
コメントだけでなく、実際に使っているサンプ
ルプログラムなどがあるとすごく良い
最後に
プログラムの腕はほぼ経験で決まる
◦
◦
◦
◦
◦
どれだけゲームを作ったか?
どんなゲームを作ったか?
どんなライブラリを使ったか?
どんな人たちと一緒に作ったか?
失敗も成功も全てが経験!
泣いても笑っても、ゴールは来年9月
◦ 悔いの無いゲーム制作を!
ご清聴
ありがとうございました
© Copyright 2026 ExpyDoc