ややプログラム紀行

博士2年のプログラムに関する日記

大雑把な流れを

構想をひたすら考えてても、なかなか掴めないので

一度、文章シミュレーション(適当につくりましたw)をしてみることにします

今決まっていること

・2Dアクション

・準オープンワールド(2Dということで)

・ワールドマップあり

・キャラクターの移動は当然アクションなので自由ですが、一応マス目あり

他にも細かいことを色々決めてたんですけどね

あとプログラム面は

ストックは前と同じくあって、ここに画面上のオブジェクトを積んで置くわけです

属性として「描画するかしないか」「動くか(処理するか)」なんてのがあります

マップについては凄い悩みました

たまに誰かが作ったRPGをやってみると、なんか平面な感じがするんですけど

それはマス目ごとに分かれてるのと、オブジェクトの後ろにキャラクターが隠れることがないからだと思います

地形を二次元配列で管理しているからだと思いますが、そこはどうしても立体的にしたいな~ということで

いっそのことストックを二次元配列にし、さらにその中身をlistにするという少し冒険のようなことをしてみました!

なのでストックは二次元配列+listとただのlistの二つで出来ていることになります

エージェントとかいうのがなくなりました

ウォッチャーはそれぞれのIDを見たり、フラグを見ることでそれにおおじた処理(ほとんどクエスト関連です)

をします

その他は特に変わってないです

では最初から・・・

・まず起動します(まあそうっすね)

じゃあここでは初めてのプレイとしましょう

・「初めから」みたいなのを選ぶ

・場面を管理するクラスがキャラエディットになります

・いろいろ選びます

・ファイルIOクラスみたいなのを使ってセーブします

・ストーリーの始まりです

・二次元配列のストックにマップ、プレイヤーキャラを登録します

・ストックを左上(二次元配列でいう[0][0])から読み込んで描画していきます(1F目)

・キーボードで左を入力したとします(2F目)

・そうするとクラスが読み込んでプレイヤーキャラに左に移動しろと伝えておきます(2F目)

・ストックを再び読み込んで描画していきます

 最初は書きませんでしたが毎回、登録されたオブジェクトはそれぞれ決められた処理を実行します

・ストックがプレイヤーキャラのところに来たときにまずキャラの左に障害物があるか判定します

 ストックが直接マップと同じ配置になっているのでこの場合1個前の要素を確認すればわかります

 この場合は村人がいたとします

・前回の入力で左が押されていたかを判定します

・もし押されていなかったら村人に話しかけたということになります

・するとメニューが開きます(メニューをストックに追加します)

・ファイルIOで読み込んだ文章&質問データを会話メニューに表示します

・プレイヤーキャラ、村人の処理をスキップするようにしてキーボード操作の対象を会話メニューにします

・ここでは「倒してやる!」を選んだとします

・プレイヤーキャラ、村人の処理のスキップを外します

・村人の敵対値をMAXに、敵の対象にプレイヤーキャラのIDをいれます

・そうするとストックで村人の所に来たときに、襲いかかる様になります

・村人を倒したとします

・村人はストックから消えることはありませんが、処理がスキップされるようになります

・村人の死体の近くで「物を拾う」を押します

・拾う物を選択するメニューが出てきて(ストックに追加)その中に「村人」があるので選択し、欲しいものをとります

・取られた分をプレイヤーキャラに追加、村人から削除します

・重量オーバーになったとします

・物を捨てることにします

・捨てるものを選んで、捨てるボタンを押します

・マップのlistに捨てたものを追加します

・・・大体こんな感じですかね

しかしまだ問題点もありまして、例えばエージェントを処理速度の向上のためになくしたんですけど

その代わりとなるものがまだなくて・・・

だから上のシミュレーションで簡単に「アイテムの追加」なんて書いていましたが、

方法がまだ浮かんでいません

まぁちょこちょこと考えていきますw

全体像は出来ました