プログラミングプロジェクト紹介② Sota's Adventure

プログラミングプロジェクト紹介第2弾は、俺が高2の時に作ったゲーム、Sota's Adventureである。

 

f:id:pepsisoda:20190820201055p:plain

 

ストーリーの概要はこうだ。2017年、未知の惑星からのUFOが南極に着陸した。宇宙人は地球に宣戦布告し、世界中を攻撃し始めた。彼らは我々よりずっと進んだテクノロジーを保持しており、地球上のどのような兵器、核兵器でさえも、効果がないことが分かり、世界はほとんど希望を失っていた。そこで突然、最も優しく、賢く、素晴らしい少年ソータが現れ、彼は自身の驚くべき発明を手に、勇敢に敵に立ち向かった!

 

マリオのようなRPGゲームを作ろうと思い着手したこのプロジェクトは、俺が過去に携わったプロジェクトの中で、かけた時間、コード量、そして終わった時の達成感という面で最大のものである。着想から一応の完成まで、約5か月かかった(途中1か月ほど訳あって中断していたので、実際の制作期間は3,4か月くらい)。

 

開発はJavaで行い、外部ライブラリは一切使っていない。当時はライブラリを使うことはずるだと勝手に考えており、意地でも全部自分で作りたいという思いがあった。今このようなゲームを作るとしたら間違いなくライブラリを使っていただろう。そっちの方が効率的で、時間を大幅に短縮できるからだ。しかしこのゲームをライブラリなしで作ったことで、プログラミングの力が大きくついたと思う。画面のスクロールや、フィジクスの処理、グラフィクスのレンダリングとかをすべて自分で実装したのは大変だったが、プログラムに対する理解が深まった。

 

ゲーム開発のプログラミング以外の要素も経験することができた。ストーリーの作成や、キャラクターのデザイン、マップの構築、ルールの調整など、ゲームは様々な要素を統合して作り上げていかなければならないのだと学んだ。特にキャラクターやマップのデザインは、画像編集が得意でなく別に好きでもない俺にとって、一番面倒な部分であったが、結果的にはいいものができたと自負している。

 

いきなり完成品を目指すのではなく、最初はできるだけ要素を削った最もシンプルな機能の実装から始めた。最初はただの水平線と適当に描いたキャラクターを描写し、キーボード入力に合わせてキャラクターが移動し、画面もそれに合わせてスクロールするという基本的なところから始めた。といっても、ここまで作るのが一番大変なのだが。

 

f:id:pepsisoda:20190820200445p:plain

開発初期のゲーム画面

 

ここから、起伏にとんだマップを作ったり、敵を導入したり、HPを表示したりなど、要素をどんどん追加していった。一見複雑に見えるゲームだが、基本となる機能があり、それに肉付けしていくという手法をとったため、方向性を見失わずに開発を続けることができた。コードは最終的に16ファイル、2,786行という大作になったが、このようにシンプルなものから始めていくというやり方でなければ達成できなかったと思う。

 

このプロジェクトは今までの俺の最高傑作であると自負している。その後もいくつかプロジェクトに携わったが、これほどの達成感、満足感を得られたものはなかった。

 

ソースコードはGitHub上に公開してある。ゲームのダウンロードもGitHubからできる。

github.com

以下に、ゲームの画像を掲載しておく。

f:id:pepsisoda:20190820201055p:plain

f:id:pepsisoda:20190820201058p:plain

f:id:pepsisoda:20190820201027p:plain

f:id:pepsisoda:20190820201035p:plain