わすれてました
ブログの更新忘れてました。空鮫です。
や、だってほとんどの更新や進捗報告、全部ツイッターでやってたもんよ…
ツイッターでの報告まとめ。
1.会話スクリプトのいろいろ。
・背景実装
・時間待機命令コマンド
・大声コマンド(全4種)
・効果音コマンド
#ESPERANTO 進捗報告動画
— 空鮫 (@aki_shark2569) 2018年8月20日
・背景
・時間待機命令
・大声
・効果音
※効果音テストのところからネームプレートが非表示になっています。ご理解のほどよろしくお願いいたします pic.twitter.com/43IQcILevJ
2.RPG基礎実装。
動いてる…やったよ… pic.twitter.com/7pslDRWoq6
— 空鮫 (@aki_shark2569) 2018年8月23日
計算式メモです。
attack = 自身の攻撃力*カードの攻撃力/100;
rate = 自分と相手の属性相性 * カードと相手の属性相性 * クリティカルレート * バフ;
damage = attack * rate;
カードの攻撃力は百分率みたいなものだと思ってください。
そこらへんは要調整。
バトルの流れですが、
① カード選択
② ターゲット選択
③ ①、②を味方の数だけ繰り返す
④ 敵の行動を決定
⑤ 行動順序決定、アクション
⑥ ターン経過、①に戻る
ってな流れです。
行動順序に関するメモ。
基本的に(キャラ自体の素早さ+カードのスピード性能)の大きい順で行動させます。これは、ほら、威力の大きい武器は重いから振り上げ→振り下ろしに時間がかかるーとか、小型銃だったら連射が可能だったりとか。そういった、行動ごとに必要な時間が違うよねーってとこから考えたシステムです。
ただし、自身の状態異常の中に「優先行動」「劣後行動」というものがあります。その名からわかる通り、素早さに関係なく、最初に行動or最後に行動するよ、というものです。また、これら二つにはどちらにもランクが存在します。ランクの低い順に「優先(劣後)行動C」「B」「A」「S」の4種類。これは、優先行動の状態異常を持ったユニットが複数いた場合、ランクの高いほうから優先・劣後権を与えます。ランクも同じなら…素早さ勝負かな。それかダイス。
今回のまとめはこの程度で。次はもっと進めます。
あー、でも研究開発も進めなきゃなー…学校なんてくそくらえだ!!!!
やらかしてしまった
お久しぶりになります、空鮫です。ほんと久しぶりだなお前。
今まで音沙汰なかったのは、まあ、あれです。いろいろやることがありまして…(汗
Twitter見てる方は大体察してください。動画です。例の。
んで、前回分以降の進捗をまとめますと、「ダメです」の一択ですね。
まず、RPG戦闘要素のモックをざっくり決めました。
モックというのは、大体の画面のレイアウトやシステムの流れを図示したものです。
こんなの。
結構体力ゲージのデザインとかカードセレクトとか試行錯誤しましたよ。
んで、レイアウトが決まったところで実装~…と思ったのですが、なんと残念、設計上に破綻が見つかりました。えらいこっちゃ。
とはいうのも、なんと高校時代にやらかして破綻した循環参照をまーた繰り返しかけてたところだったんですよね。バトルクラスがテーブルクラスを参照し、テーブルクラスがカードクラスを参照し、カードクラスがバトルクラスを参照。これはひどい。
というわけで設計から見直すことに。今まで組んでたバトル関連のプログラムは全部パァです!!!!!
スクリーンショット
そういえば今週の進捗出してないなって。空鮫です。
Twitterのほうでは言いましたが、この前ツイキャスを使って簡単に進捗報告をしました。まぁ、言うほど進んでませんが。
この前言っていた、スクリーンショットの拡張子を選択できるやつです。
ありました。普通にありました。
表のリファレンスにはありませんでしたが、裏リファレンスには普通に乗ってましたね…
JPEGの場合
SaveDrawScreenToJPEG( int x1, int y1, int x2, int y2, const TCHAR *filename, int Quality = 80, int Sample2x1=TRUE ) ;
第5引数までは解説不要ですね。いつものあれと同じです。
int Quality は画質を表してるみたいです。多分最大で100。省略してもいいそうです。
第7引数の int Sample2x1に関してはまったくもって意味も分かりません。
とりあえずTRUEでいいんじゃないかな。
PNGの場合
SaveDrawScreenToPNG( int x1, int y1, int x2, int y2, const TCHAR *filename, int CompressionLevel = -1 );
CompressionLevelは圧縮率を表してます。0が低圧縮、9が高圧縮です。
-1ってなんなんだろう。特に指定しませんよって意味ですかね?
ソースコードも公開してみたいけどどう公開すればいいのだろうか…
何とかしてこのブログに埋め込めないかなぁ。ちょっと調べてみます。
簡単な基盤から実装していく
ではここから普通に進捗報告していきます。
更新頻度は…どうしようかなぁ。少なくとも週一回はしたほうがいいかな。
ブログ開設までに以下のことをやってました。
・タイトル画面実装
タイトルは仮です。ただストーリーもざっとは固まってきたのでもうこれで確定かも。
・マップ画面、カメラ移動
真ん中に見える赤い点が自機で、これを操作します。
見てわかる通りクォータービューです。計算がとてつもなくだるかったです。
マップデータはCSVデータを外部からロードすることにより生成されてます。
こうすることでマップエディターも作りやすくなりますしね。
あとは自機の画像をどうするかなのですが…うーん…
・会話スクリプト
RPGと言ったら会話ですよね。これがなきゃ始まりません。
これに関しては、本家DXライブラリ様のサンプルプログラムを参考に開発してます。
サンプルにもあった「改行」「クリア」「ボタン待ち」のほか、「ハイライト」「ネームプレート」「キャラクター立ち絵表示」「キャラクター立ち絵スポットライト」を実装しました。今後はBGMの変更や効果音なども実装していきます。
ちなみにこのフレーム、自作です。なかなかにいいデザインしてると思いませんか?
・設定画面
実は今日制作したものです。ここでゲームのBGMやSEの音量を調整するほか、キーコンフィグなどの設定も可能にしています。これに関しては以前学校の文化祭用に作ったゲーム作品を移植、改良しました。時間はさほどかかりませんでしたね。
そして、ほかにも細かなマイナーな機能も。
このスクリーンショットもPキーを押すことで自動で生成され、F10キーで保存先のディレクトリを勝手に開くという構造にしています。ただ残念ながら、スクリーンショットのファイルフォーマットがBMPになっていて、Twitterなどにアップロードするときには一度PNGなどに変換する必要があり…とても面倒ですね。
PNGでスクショをする方法も探ってみたいと思います。
今回の進捗分は以上です。
ソースコードや、現時点での成果物を随時アップロードしてもいいか…と考えたのですが、適切なアップロード先が見つかっていないため、今回の公開はお休みということで。
プロローグ
はじめまして。空鮫と申します。
あ、フォロワーさんですか?違いますか?ええそうですか。
私としては、どちらでも構いませんがね。
まずは、ご閲覧ありがとうございます。
当ブログは、某ゲーム会社に就職したい一学生が、プログラミングを学ぶために、様々なことに手を出しながらゲームを作っていく、そんなへっぽこ日記です。
プログラミングの四苦八苦、うまくできたことへの喜びの気持ちなどなど、自由に自由に書き連ねていきますので、生暖かい目で見守っていただけると嬉しいです。
では、今から作っていく(というか今作ってる)ゲームの簡単な説明をします。
ジャンル:RPG
対象人数:一人(時間が余れば通信対戦も考慮)
開発環境:Visual C++ 2008 Express Edition
言語、ライブラリ:C/C++、DXライブラリ
このブログには、その時点で完成している作品およびソースコードを載せていく予定です。
さて、無事に完成するかな?
タイムリミットは、来年4月。学業と合わせて、どこまでできるか見ものですかね。