超初心者が0からRPGを作る

ゲームプロデューサー志望が日々の悪戦苦闘を綴る。

机上に踊れ、小人形【第陸歩】

春休みなのをいいことに17:00頃まで寝てしまったHeptagonDだ。

こんな生活はいけないとはわかっていても、やめられない自堕落よ。

 

さて、今回は簡易的なゲームを作ってみよう…と思っていたのだが、予定以上に凝ったものをデザインしてしまったため、先に裏で作っておいた。

それでは、今回辿った流れを綴るとしよう。

 

 

【人形を定める始祖は企画】

まずは、大まかにどんな物を作るかを決めなくてはならない。

実際の職場では、これこそがゲームプロデューサーないしゲームプランナーの仕事となる。

 

今回はあくまで試作、何でもいいといえば何でもいいのだが…

とりあえず、せっかく作るのであればRPGに絡めたい。

そう思い、簡単な戦闘を模したゲームを作ることにした。

 

実際ゲームを作る際にはGUIでの開発となるわけだが、GUIRPGにおいても文字情報というものは非常に重要であるのは言うまでもないだろう。

その証拠に、大抵のRPGでは戦闘中にはテキスト用の欄が表示されているはずだ。

今回はそのテキスト欄の中身にあたる物を作っていく。

 

それでは、ゲームのテーマである戦闘そのものはどのような物にするか。

コマンド入力式にしても良かったのだが、今回は戦闘自体はランダムかつ自動に進行するものとする。

というのも、コマンド入力を使用するのであれば、もう少し勉強して「メソッド」や「クラス」などを理解しておいた方が格段に楽になることが予想されるからである。

しかし前々回も少し述べたが、入力することがなくてはゲームとは言いづらい。

そこで、事前に「職業」を用意し、プレイヤーがそれを選ぶ…という工程を挟むことにした。

 

 

【企画を文字に、誇りは常に】

頭の中でどういったものを作るかある程度決まってきたら、一旦それを文字または図面化していこう。

ゲームの開発は複数人で行うため、どんなゲームを作るかを他人に伝えられなくてはならない

…が、ブログという物の性質上それは既にある程度かなってしまったな。

 

ともかく、今回作ってきたゲームの概要だ。

 

2人のプレイヤーが職業を選び、それらが自動でターン制の戦闘を始める。

行動は各職によって異なり、それぞれ6パターンずつある。

また、職毎に特殊能力が存在する。

各職業の能力などは以下の通り。

 

1.ソルジャー

耐久力:A

最大攻撃力:A

攻撃安定度:B

回復力:C

特殊能力:体力低下で攻撃力UP

 

2.メイジ

耐久力:C

最大攻撃力:A

攻撃安定度:S

回復力:C

特殊能力:稀に相手の攻撃を無効化

 

3.ボウガンナー

耐久力:B

最大攻撃力:S

攻撃安定度:D

回復力:A

特殊能力:稀に二回行動

 

4.ヴァンパイア

耐久力:C

最大攻撃力:B

攻撃安定度:B

回復力:S

特殊能力:最大HPを超えて回復可能、行動後僅かにHP回復

 

5.ゴーレム

耐久力:S

最大攻撃力:B

攻撃安定度:A

回復力:D

特殊能力:被ダメージ軽減

 

以上だ。一部職業ではないものも交じっていた気もするが、RPGの世界ではよくある話なのでスルーしてほしい。

一応、各職毎にコンセプトが存在しているので読み取って貰えると非常に嬉しいな。

 

 

【想いを形に、プログラミング】

さて、これを実際にプログラミングした訳だが…

とにかく長い。なんと749行に及ぶコードとなってしまった。

そのためここに記載することは控え、別に公開しておく。

もし気になったものは、下記のリンクから見てくれ。

机上に躍れ、小人形【第陸歩-おまけ】 - 超初心者が0からRPG作る(オマケ)

 

それでは、今回のコードで初使用したことを押さえておこう。

 

《コメント》

コメントとはいっても、某動画投稿サイトやこういったブログのコメント*1とは少し違う。

プログラムにおけるコメントとは、基本的には不要な物だ。

しかし、なぜこんな機能が存在しているのか。

 

その理由は単純。コードを人間側が理解しやすくするためだ。

市販されているゲームのソースコードなどは、ゆうに数千・万行はあるだろう。

そして一つのゲームにあたり数人のプログラマーが付くことは稀ではない。

さらに、近年のゲームは発売後も次々に新バージョンが開発されている物も多く、関係者の延べ人数はとんでもないことになっているだろう。

 

以上のことから、ソースコードは長くてもわかりやすく他人に伝わるものでなくてはならない。

そこで有用なのがコメント、というわけだ。

コメントの書き方は以下の通りだ。

 

//コメントの内容

一行分をコメントとして認識させる

 

/*コメントの内容*/

/*と*/の間をコメントとして認識させる(複数行でも可)

 

《代入演算子

代入という言葉でわかる通りだが、これは今までも一部使ってきている。

左の変数に右の値を代入する、というものだ。

しかし、代入としてではなく、計算を簡略化することもできるのだ。

例えば、

A = A + B

これは第参歩でも少し触れたが、AにA+Bを代入している。

しかし、これをもっと文字数を減らして書くことができる。

それが、以下の書き方だ。

 

A += B

 

初めは少し戸惑うかもしれないが慣れれば非常に使いやすいため、余裕があれば覚えておいてほしい。

もちろん、+=の他にも-=*=/=%=などが存在する。

 

 

今回初使用したのはこのくらいだな。

それでは、コンパイルして実行…と言いたいところではあるが、せっかくなので気になる者は自分の目で確かめてほしい。

ソースコードは先程記載したリンクから入手してくれ。

遊んでくれる方には手間をかけさせて申し訳ないが、ここまで読んでくれている方であればこのくらい朝飯前だと信じているぞ。

 

 

【小人形を踊らせた後の心は】

本当はもう少し勉強を進めておけば、今回のコードは半分…とは言わないが、もっと短くなっていた。

実際にソースコードを見てもらえればわかるのだが、同じような記述が多々あるのだ。

この辺りは「配列」「メソッド」「クラス」などをマスターすればかなり楽になるらしいので、今後学んでいくとしよう。

 

なぜそれを知っていながら、わざわざ面倒で冗長なコードになるのをわかっていながら試作品を作ったのか。

それは、しっかりと経験を積むため。

そして、モチベーションを上げるためなのだ。

 

なんでも先人によると、とにかく勉強して大作を作ろうとして、結局上手くいかずに折れる人が多々いるのだとか。

途中で折れるなどと、全く根性がなっていない輩たちだな…(一敗)

また、折れる原因としてモチベーションの低下も挙げられる。

 

実際、今回このゲームを作ってみて身に付いたことは少なくない。

また、作ってみてそれを自分で遊んでみると、思いのほか楽しいのだ。

後続の者たちも、身の丈に合う…というと少々厳しい言い方だが、できる範囲でちょくちょく作っていくことがどれ程大切なことかを知っていてほしい。

 

 

さて、次回は早速「配列」について学んでいくぞ。

これがあれば、コードを書く際非常に楽になるだろう。

 

ここまでのお目通し、ご苦労であった。

また会えることを楽しみに待っているぞ。

 

…今回内容薄くね?

 

【次回はこちら】

全ての要素、集う刻【第漆歩】 - 超初心者が0からRPGを作る

【前回はこちら】

生死を分かつはその一文【第伍歩】 - 超初心者が0からRPGを作る

*1:気軽に好きなように書いてもらって構わないので、ぜひともこのブログにもコメントを。