C/C++でRPGを作成する

C言語で簡単なアクションゲームを作っていたのですが、RPGを作ってみたくなりました。
色々と調べてみて、わかったこと等を書いていきます。

私自身は、仕事でプログラムをしているわけではなく、趣味のプログラマです。初心者ですがC++を勉強しながらRPGも作っていきたいと思っています。

PRGは設定や用意すべき素材も多く、製作が大変な部類だと思います。
RPG以外にもゲームのジャンルはたくさんあります。

RPG製作で使えるアイデアは、シューティングゲーム、アクションゲーム、格闘ゲーム、ノベルゲームといった別のジャンルのゲームにも応用できることが多いです。

今回は2DのRPG作成を考えています。3Dにする場合は別の知識が必要になる場合があるでしょう。

(ツールやサイトは、基本的に無料で利用できるものを中心に紹介していきます。)

C/C++入門と、ゲームプログラム

C、C++共に入門サイトが沢山あります。
ゲームプログラミングだと、Cの方が初心者向けの解説サイトは多いですね。
ちょっと本格的な内容の書籍はC++で記述されていることが多いように感じます。

私は、Cは主に書籍で、C++は書籍とウェブサイトで勉強しています。今も勉強中です。
いくつか紹介します。


私がC言語を勉強してきて内容がよかったと思う本は、柴田望洋先生の「明解C言語(入門編)新版」です。理解できたら「実践編」も読むといいでしょう。例が多く説明がわかりやすい本です。

ゲームを作るためのCの最低限の知識は、身に付きます。Cを深く知りたい人には物足りないかもしれませんが、そういう場合はK&Rやその他の本を手に入れてください。


プログラムを書こう!
『新・これならわかる C++』などを書かれた小林健一郎さんのサイトです。

わかりやすいC++入門のほか、C言語、Javaなどの解説があります。


コンパイラや統合開発環境は、Borland C++ Compilerを使う場合とMicrosoft Visual C++を使った解説があります。それぞれの解説サイトで勧められているものを使うといいかもしれません。
私は主にVisual C++ 2005 Express Editionを使っています。他の人が作ったプロジェクトを開く時にVisual C++ 2008 Express Editionが必要になることもあるので、VC++2008もインストールしてあります。どちらも無料です。

(C++だけでは満足できない!という人はVisual Studioをインストールするといいでしょう。無償版もあります)

私の場合はウェブサイトを見ながら勉強するよりも、本を読みながら勉強したほうが向いているタイプです。ただ、古い本の場合は情報が古くて、うまくいかないことがあります。あとは本自体にミスがある場合も多いです。コードに誤植や漏れがあったりすると、コンパイルできなかったり、実行時にエラーが出たりして余計な時間がとられます。本を選ぶ時はネットで評判をチェックしてからの方がいいでしょう。


本格的にプログラミング言語を習得しようとすると時間がかかります。
ゲーム作成やRPG製作が目的であれば、必要の無いことは勉強しないというのもいいでしょう。

RPGのアルゴリズム(プログラミング言語での処理手段)

RPGを作成する際には、いくつかの特徴的なアルゴリズムがあります。
画像表示、音声出力、文章表示、キー・マウス・コントローラの入力など他のジャンルのゲームとも共通するものも多いです。

RPGの特徴的なものとして、マップがあります。
「移動できるところと通れないところを作る」といった処理が必要になります。これはゲームプログラミングを解説する多くのサイトで説明されています。

一番手間がかかりそうなのが戦闘の処理でしょうか。戦闘が特徴的なゲームは印象にも残るので、独自のものにしたいという人は多いと思います。
複雑なものを作るには、プログラムに対する慣れが必要ではないかと思います。
戦闘の処理も、はじめは練習に単純なものから作っていくといいかもしれません。じゃんけんのようなもの等でも十分ゲームとして成り立ちます。

大規模なRPGを作る際には、マップエディタなどのツールから作る場合が多いです。ツールから作成するのは初心者向けではありませんが、覚えておくといいと思います。

C/C++でRPG作成 サンプルのソースコード

解説サイトがたくさんあります。これがCやC++の魅力の一つですね。マイナーな言語だと解説サイトを探すだけで大変だったりします。

サンプルのソースコードが公開されているサイトを紹介します。
各サイトの解説を見て、サンプルを打ち込んでいけば理解が深まるはず。
コピーアンドペーストでもいいので、どんどんコンパイルして試してみるといいでしょう。


創作プログラミングの街
Visual C++での"超簡易RPGソース"が公開されています。
その他Javaや、リバーシといったソフトの解説などもあります。


RPGはゲームの中でも規模が大きい部類に入ります。
まずはオセロ(リバーシ)やじゃんけんゲームのような簡単なゲームを作ってみて、それからRPGを作る……といったやりかたを勧めている人も多いです。
一番大切なのは作る人のやる気だと思いますが、小さいゲームでも完成させていくと自信につながります。言語に関して初心者なら、まずミニゲームを作ってプログラムになれることをおすすめします。
テトリスを作ってみるのもいいアイデアです。C/C++をはじめ、様々な言語でのサンプルが公開されています。

DXライブラリを使う

C/C++を使う場合は、DXライブラリが使いやすいかな、と思います。
C言語を習得していれば簡単に扱うことができます。
利用者が多く、わからないことがあった時に調べたり質問したりしやすいのも魅力です。開発が続いているというのもポイントです。


以下のサイトからダウンロードできます。
DXライブラリ置き場
DXライブラリのページにある解説が非常に丁寧です。
サンプルプログラムや、リファレンスのページに書かれたソースコードをコンパイルしながら勉強しました。


ひとつ解説サイトを紹介します。
C言語何でも質問サイト
「ゲームプログラミングの館」「シューティングゲームの館」「龍神録プログラミングの館」ではDXライブラリを使用したコードのサンプルと解説があります。非常に丁寧に解説されています。
「C言語なんでも質問掲示板」は、回答者も丁寧で質問を書き込みやすい雰囲気です。
管理人さんは四聖龍神録Plusという弾幕シューティングゲームを作った方で、ほとんどオープンソースに近いような形でソースコードを公開・解説されています。ゲーム自体もフリーゲームとしてダウンロードできます。



DXライブラリを使わずにRPGをつくることも、もちろん可能です。
C/C++を使う場合はその他の方法として……
・DxLibを使わずにC/C++とDirectXを使う
・C/C++とWINAPIを使う
・C/C++とOpenGLを使う
といった方法で製作することになると思います。

なお、DXライブラリは無料で利用できます。
C#やD言語に利用する人もいます。
DXライブラリ3Dというものもありますが、これは別のものです。

その他のプログラム言語

同人、アマチュアでのゲーム作成は、C/C++の他にも、HSP、JAVA、C#といったプログラム言語が用いられることが多いようです。
調べていて気づいた特徴などを書いていきます。

・HSP
手軽に導入できるということもあり、ゲーム製作にもよく用いられているようです。
大規模なシステムに向かないため、HSPで作られたRPGはそれほど多くはないようです。
解説サイトが多いので、小規模なRPGなら作りやすいかもしれません。

・JAVA
ゲーム作成の定番言語だと思います。解説サイトや関連書籍も多数あります。
C++に比べると実行速度の遅さが指摘されることが多いですが、RPGなら工夫次第でカバーできるでしょう。
iアプリ用にも制作できます。

・C#
マイクロソフトのXNA Frameworkを対象にしているゲームは、C#で書くことが出来ます。
エックスボックスとの連携など、今後さらにC#ユーザーは増えていくと思われます。
解説サイトも充実してくるのではないでしょうか。

・FLASH
FLASHを使ってRPGを作る人もいます。
ActionScriptを利用して作ります。


プログラムを習得すれば、非常に自由にゲームを作れます。
プログラム未経験者にはかなりハードルは高いと思いますが、入門サイトも数多くありますので挑戦してみてはいかがでしょうか。

RPG作成ツールを使ってみる

C言語やC++とは関係ないのですが、ツールについて少し触れておきます。
RPGを作る場合には、RPGツクールを使う人が多いようです。
他にはWOLF RPGエディター(ウディタ)などがあります。

RPGツクールXPやVXではRGSSスクリプトが使えますが、Rubyがベースとなっています。
RPGツクールの場合は、完成したゲームのデータの中身を見ることができます。(XP,VXなどでプロテクトしてある場合を除く)
作りたいRPGの中をのぞいて、参考にするのもいいと思います。

スクリプトも参考になるでしょう。
ただ、Rubyベースの言語なのでCやC++とは記述方法が違います。両方、またはどちらかを習得していない場合は余計な手間がかかってしまいます。

これらのツールを使うと、「何でも自由に作れる」というプログラミングの楽しさは得られないかもしれません。
ツールを使っていれば、RPG作成に必要なアルゴリズムについて勉強になります。
ツクールには体験版がありウディタはフリーソフトとして公開されているため、無料でダウンロードできます。最終的にC++等のプログラムでRPGを作るつもりでも、機能を眺める程度に使ってみるといいかもしれません。


ゲームシステム以外にも、画像や音楽も必要になると思います。
素材を利用するか自作するかという選択することになります。
このあたりも、ツクール製のゲーム等を見ると参考になることが多いです。
ドット絵や3D背景といったグラフィック関連や、SEやBGMといったサウンド関連については、また別の機会に書いていきたいと思います。

ゲームシナリオの書き方