【同人ゲームの作り方】ゲ道のすゝめ part3 プログラマーとHello world.

第4章 プログラマーとHello world.

ゲームを作る上で避けては通れないもの、それがプログラムです。イラストやグラフィック、シナリオといった素材を最終的にまとめて、命を吹き込み、ゲームという一つの世界を作り出す大変重要な工程です。といっても、プログラミングってなんか敷居が高そうだと思いませんか・・・?実はゲームに関わる作業の中で一番初心者に取っ付きやすいのがプログラミングなんですよ?なんせ、ゲーム作りってプログラミングが一番ゲームを作ってる感が目に見えて、わかりやすいですからね。なので、プログラミングの勉強のためにゲームを作ってみるってのも悪くはない選択肢です。

プログラミングのコツはこの3つだ!


■難しいことを考えず、ゲームエンジンを使おう!
プログラミングの何が難しいかって、やっぱり数学的な計算やハードウェアに近い方の処理を行うコードなんですよね。例えばアフィン変換だとかDirectXだとか。でもそういった小難しいことってゲームの面白さには何も貢献しないのです。もちろんプログラミングの勉強をシたいなら避けては通れない部分ですが、作りたいのがゲームだったらそういった小難しいことを隠蔽してくれるゲームエンジンを使いましょう。実際プログラムでやりたいことってのは、逆キネの計算ではなくキャラクターを動かしたりシたいわけです。そういったことを簡単にしてくれるゲームエンジンを後ほど紹介します。

■ゲームは何度も動かしながら調整しよう!
プログラムって一見難しそうに見えます。実際にやりたいことがキャラクターをジャンプさせることなら、その時の初速はこーで、重力はー、空気抵抗はーと、色々難しく考えてしまいがちです。でも実際ゲームを作る上ではそれっぽく動かせればいいわけで、まあ基本的な動かし方はいろんなサンプル見ながら真似してみて、あとはジャンプをもっと高くしてみようとか、摩擦係数を追加してみようとか色々動かしながら考えてみると面白いです。そういうのが面白いなって感じられ始めたらゲーム作りの第一歩を踏み出したんじゃないかなって。

■一番大事なのはレベルデザイン!
レベルデザインというのは、例えばダンジョンのどこに宝箱をセットして、ボスの強さはこのくらいで、キャラの成長はこんな感じで・・・という風にゲームの面白さを設計する仕事のことです。本業の場合はゲームデザイナーやスクリプターという役割の人がやるんでしょうが、小さな同人サークルでは基本的にプログラマーがそういった細々とした調整をメインでやっていくことになるかと思います。ゲームの面白さというのはレベルデザインの面白さである、と海外のゲームデベロッパーではよく言われますが、確かにその通りでプレイヤーに「この後どんな宝箱があるんだろうか」「モンスターに負けそう!はらはらする!」とかそんなエクスペリエンスをいかに提供するかが、ゲームデザイン/レベルデザインの肝だと思います。プログラムってのは正しく動けば良くて、それ以上はゲームの面白さにそのまま繋がるレベルデザインに注力したいものです。なので、プログラムはお手軽に作ってレベルデザインを頑張ってなんぼってことですかね。

よくある質問、最初に始めるべき言語は何ですか?
ウィットに富んだ回答としては「英語」を学びなさいというのがプログラマーの格言らしいですが、実際どの言語でもメリットデメリットがあるので以下に挙げるメジャーな言語から選ぶといいです。
C#・・・オブジェクト指向の言語でモダンな機能が多数ありオブジェクト指向の言語の中では最も初心者に取っつきやすい。ゲームエンジンのUnityや往年のPSM SDKなんかにも採用され今後の発展にも期待できる言語です。反面、実務でこの言語を使うことはあまりなく、ほかの言語に移行した際あれがないこれがないと不満に思ってしまうという難点も。
Java・・・オブジェクト指向の言語で最も有名な言語。多数のデバイスで動くことを目標としているため、例えばAndroidだとかあるいは昔の携帯電話だとかそういったデバイスで動作するゲームを作るのに向いています。実務ではJavaかCができる=プログラマーとか思われている感もあるほどメジャーな言語です。また、吉里吉里などこの言語を意識して作られたスクリプト言語もあるので覚えておいて損はないです。デメリットは多少設計が古くさく難解で、これに慣れていると最新の言語で違和感を感じることも。
C++・・・ゲーム開発の会社では最も多く使われる言語。将来ゲーム作りを本業にしたいならこの言語を選ぶのが吉とされています。ただし、Cに毛が生えたような古くさい設計は難解で、初心者がいきなり手をつけるのは難しいかも。
Javascript・・・ブラウザ上で動く言語。昔はダイアログを出したり、画像を切り替えたりといった機能くらいしか使われていなかったが、気がつけばUnity向けの開発言語の一つだったり、HTML5を使って高度なゲームを作ったり、WebGLを利用して3Dゲームを作れたりと、ブラウザで動く割には高性能な言語になってたりします。比較的初心者でも理解しやすいスクリプト言語ながら、AndroidやiPhoneといったモバイル向けのゲームも作れるなど汎用性も高いので意外とおすすめの言語です。ただ、コミケ向けにゲームを作るんだったらブラウザ上でしか動かないこの言語は選択肢には入りませんが。
HSP・・・簡単にゲームを動かせることを目的としたスクリプト言語。絵を出す、キャラを動かす、音を鳴らす、そういったゲーム制作に必要なプログラムを簡単に書くことができる言語です。どちらかというと吉里吉里とかのゲームエンジンに近いかも。難点は設計がBasic風味で古いのと、同人ゲーム以外ではまず使わないことですかね。

ちなみに同人ゲームがサーバー上で動くゲームなら、PHP、Perl、Rubyあたりの言語を学んでいくことになりますが、初心者向けの記事なので割愛します。まあ、とりあえず初心者はC#から学び始めておけばいいと思うよ。

よくある質問、おすすめのゲームエンジンを教えてください!
3DのゲームエンジンであるUnityかノベルゲーム用のエンジンの吉里吉里を選択するのが無難でしょう。
Unity・・・インディーズ向けの3Dゲーム製作用の統合ゲーム開発環境。GUIでオブジェクトを配置したり、C#やJavascriptといったメジャーな言語でスクリプトを書くことで3Dゲームが簡単に作れる。またAsset Storeというプラグインの配布サイトがあり、こちらで3Dモデルやスクリプトをダウンロードしたり(有償のものは購入したり)できるようになっている。また、特徴的なのはAndroidやiOS、Wii/WiiUやPS3、Xbox360など様々な環境向けにビルドできるため、パソコン向けだけでなく別のプラットフォームで配信したいと言うときにUnityで制作しておけば移植する手間が不要になります。
http://japan.unity3d.com/

吉里吉里・・・ノベルゲーム向けのゲームエンジンでは最もメジャーなもの。最近は吉里吉里Zというタブレットのようなモダンな端末に対応したバージョンもあるみたい。基本的にシナリオテキストを書いて、あとはキャラを出す音と出すといったスクリプトを書いていけばアドベンチャーゲームが制作できます。商用ゲームでも規模の小さい会社から出るアドベンチャーゲームにはよく吉里吉里が利用されています。TJS2というスクリプト言語を書くことでさらに高度なゲームも制作できるようで、アドベンチャーゲーム以外のゲームも作れるのかも。あと、吉里吉里のスクリプトに互換性のある別プラットフォーム向けのエンジンもありほかのプラットフォームへの移植もできるかも。
http://krkrz.github.io/

こんな感じで最初に何をすればいいかわかってきたでしょうか。次の章ではUnityを使って超簡単なゲームを作る方法を超簡単に説明します。このドキュメントはおおざっぱにゲームの作り方を見てもらおうってコンセプトなのであまり詳しいことは説明できませんが:)

タイトルとURLをコピーしました