RPGを作って楽しかった事とかマトメたお!
スポンサードリンク
はい。妖精です。
ブログって続く癖、続かない癖、どちらも存在しますね!
俺は…。習慣づけて続くタイプなんだけれども
ここ最近は邪魔が多くて続けようが無くなりつつありますw
ピンチw!
原因は1つ。「子供」なんだけども、まぁ、ずーっと小学生でもないし
塾やスポーツ少年団も変わるし。。なかなか難しい話しですw
さて今日は…。ココにも書いたけど、あまりオススメできる
仕事と言えないんだけど、ゲームプログラマーやってた過去がありまして
その中でもRPGは趣味で自作経験があって…。楽しい思い出が多いので記事にしてみましたっ!
- これからプログラミングしてみたい!
- 日曜プログラマーやるんだけどコレといった目標がない!
- 色んなジャンルのプログラミングをやってみたい!
といった方に読んで頂ければ幸いです。
様々なアルゴリズムを自作できた!思考しまくりw
街、ダンジョンの表現やアタリ判定
ここは様々なゲームプログラミングで出てきますが、RPGの根源になる「設計」になります。
正解らしい正解はない。汎用的に作るべきだけれども、簡単なRPGで
- ラスボス倒して終わり
くらいのRPGだと「大袈裟な設計」だけど
- プレイ時間が100時間を余裕で超えるような超大作
だと、逆に処理の遅延を招く場合もありますw。プロの世界の話しです、ココはw
という訳で、僕は↑画像みたいに考えて作ってみました。ご参考に。これがマップ全体で2次元配列として管理するデータになります。
マップ全域1つ、街1つ、洞窟1つ。。大変だよねw。宝箱もフラグ管理しなきゃ!
バトルシステムの構築
これも歯ごたえがあるプログラミングでしたw
大規模RPGだと、バトルシステムだけで専任プログラマーが配属されたりしますよね?
エンディングのスタッフロールには「MAINプログラマー」の次に表示されます!
夢だったなぁ~、仕事では叶わなかったので、自分で作って叶えたけどw
さて、俺さんの設計は…。
- 敵と味方のどちらも同じステータスを持つ
が、基本で、かつ限界でしたねw。オブジェクト思考プログラミングらしく
- ステータスと攻撃、呪文といったアクション
もオブジェクトを定義して実装させたかったけど、ええ、当時の脳ミソでは無理でしたw
- HP
- MP
- 体力
- 防御力
- 素早さ
くらいを定義して、攻撃力は武器で加算される、防御力も防具で加算。
素早さは「どちらが先に攻撃するの?」で利用してました。
ちなみに素の状態、つまりMAX値のステータスも、別途で定義しなきゃなりませんw
例えばHPが16だとしても…。MAXが50なのか16なのか分からないです。
定義しないと…宿屋があって眠っても「どこまで回復していいか不明」ってなりますw
なお、ダメージは敵、味方が同じく
「ダメージ = 防御力-攻撃力(体力+武器の攻撃力)+(0~レベル/2の数値MAXのランダム)」
で算出させておりましたw
はぐれメタルの1ダメージしか与えられない件をクリアできないロジックですw
細かいけど画面中央の主人公の動きや、レベルアップのロジック!
はい、続いて表示される主人公の動きです!
1人の主人公だったので「→」が押されたら
- 主人公の画像を右向きに変える。
- 右のマップ情報を見て「アタリ判定OK」なら次へ進む。
- バックグラウンドを左向きへ1つ進む。
くらいのロジックでした。これが4人パーティーとかだと難しいですw
例えば…。下記にドラクエ3の実況動画があるんですが、とにかく
バックグラウンドの絵を無視して4人だけの動きを見てください。
左右上下の切り替わりは先頭の人間だけで、後ろの連中は
前の人間の動きを1回遅れで真似てるロジックですよね。
4人が同時に動くのは、穴に落ちたり「ルーラ」くらいしかないですw
で、続いてレベルアップのロジック。主人公に「レベル&経験値の配列」を定義してあげます。
バトルが終わったら経験値を敵からゲットして、現在の経験値の合算が、次のレベルの経験値を超えたらレベルアップです。
主人公には、レベル毎の能力値を定義してあげるか、レベルアップのタイミングで適当にランダムで能力を上げても面白いですねw
で、よくあるバグですが、1回のバトルで2回以上のレベルアップねw。考慮してプログラミングしないとレベル1でメタルスライムを倒してもレベルが1しか上がらず、次のバトル後に、またレベルが上がりますw
とにかくデータの設定、管理、あとファイルIOも学べたw
という感じで、一通りのRPGプログラミングを作っては動かし、作っては動かしって
テストしながら遊び続けていた訳です。
そんな作業をやってると…。RPGに限らず、ゲームってプログラミングだけじゃなくてデータも同等に大事なんだなぁ~って、改めて感じさせられました。
例えば…。FF7くらいの超大作RPGなのに、データ定義がバカで、序盤でレベル99まで上がってしまったら…。プレイヤーは全員「このクソゲー!!」って感じますよねw
逆に、個人が作ったRPGプログラミングでも、汎用的だったり大量データに耐え得るプログラミングを心掛けていたら、2や3などを簡単に作る事ができます。
いわゆる「ツクール」といったゲームが実在するのは、データもゲームの命だ!ってのが分かっちゃいますネw
で、毎回、プログラムのなかにデータを書いて削ってはコンパイルしてたんですが、面倒になってきたので…。頑張ってファイルIOも勉強しましたw。ウインドウAPIではファイル1つ開くのにも、当時は苦しかったw
でも、色々と勉強できるキッカケになりましたw。ビジネス系プログラマーになるためには、ファイル以外にもデータベースや通信といった「IO」も必要になりますからね!
作成裏側みたいなのが分かってワクワクでした!無駄に自分しか乗らないスタッフロールも作ったw
「魔王が姫を拉致、姫を助ける冒険、魔王を倒したら終わり」
といった単純なRPGではあったんですが、自作したら色々と「作成の裏側」みたいなのが
非常によく妄想できるようになりましたねw
- バグのメモは、少なくともジャンル別けしておかないと…。後で見たら死ぬw
- ロジック考察に慣れてきて、色々できるようになるけど、あえて組み込まないのは、面倒だったりバグが怖かったりw
- とりあえず絵と音楽で誤魔化せるところあるなー!
- チームでプログラムを作るには~、やっぱり仕様書っていうか、まずはとにかく「データ定義」だなぁ~
などなどw
痛いほど分かりますw
何となく出来上がってしまうRPGだけれども、コダワルと死ぬほど深いのもRPGだ!ってのに気付かされるのが最も大きい収穫だったかもしれませんね。
苦労したけど…。ストーリー、簡単な絵やBGM、SEを作ったり調べたりを体験できた!
他にも山ほど細かいアルゴリズムを書かなきゃならなかったり、ストーリーも一応は考えたり…。
絵心がないのに、無理にWindowsのpaintを使って、主人公の絵を描いてみたら…。
ああ、そっか、主人公は歩く、静止に関わらず「パラパラ漫画で足踏み」させなきゃならんのに気付いたり…。
世の中には山ほど無料のBGMやSEが転がってるもんだ!ってのも勉強になりましたw
ゲーム1つ完成したときのブラウザのブックマークは、本当に宝の山になりましたね!
ということで、色々と熱く語りましたが…。これで終わります!
皆さんも是非ともRPG作成に挑戦してみてくださいまっせ!!
で、是非是非、楽しんでくださいね!
RPGツクールMV Trinity - Switch (【Amazon.co.jp限定】RPGツクールMV Trinity 追加コンテンツ「RPGツクール フェス BGMコンプリートセット」配信 同梱) RPGツクールMV Trinity - Switch (【Amazon.co.jp限定】RPGツクールMV Trinity 追加コンテンツ「RPGツクール フェス BGMコンプリートセット」配信 同梱) Amazonで確認 |
【RPGツクールMV】で作るゲーム制作講座 【RPGツクールMV】で作るゲーム制作講座 Amazonで確認 |
三国志ツクール [オンラインコード] 三国志ツクール [オンラインコード] Amazonで確認 |