このブログは広告及びアフェリエイトプログラムを使用しています。

プライバシーポリシーと免責事項



ゲームプログラミング(1-1.学習の手始めに)

December 18, 2024
プログラミング ForMe
執筆:EugeneAmnis

プログラミング学習の意欲

プログラミングを始めたいと思ってみても、具体的な意欲がなければ中々継続しないのが普通でしょう。仕事や学業に役立つものを形にするなど実感できる目標があれば、日々の学習も苦にならないでしょうが、抽象的な学習を繰り返すだけではただの苦行です。

多くの人は具体的な制作物のイメージを持つことが難しい、又は必要とする技術スタックが高度すぎて抽象的な学習に嫌気が差してしまうことがあると思います。

では、何をモチベーションにプログラミング学習をすれば良いのでしょう?そこでお勧めしたいのは題材通りのゲームプログラミングです。

ゲームプログラミング学習のすすめ

なぜ、ゲームプログラミングを勧めるかといえば少なくともファミコンから現在のPS5までの家庭用ゲーム機に触れた世代にとっては取っ付き易い題材だからです。ゲームとは何かをイメージしやすいとも言えます。

他方、業務システムやSNSサービスはその全体像をイメージすることが難しく、眼の前の抽象的学習との関係性を結び付け辛く、学習コストが高くならざるを得ないのが実情です。それに比べてゲームプログラミングはある程度慣れ親しんだ世代であれば、ゲームの構造をイメージしやすく、抽象的学習との関係性も結びつけやすい点が挙げられます。

それにミニゲームのような簡単なものでも使用するアルゴリズムやコードの種類が多様に渡るので実際にデバックしながら各アルゴリズムやコードの意味を理解することが可能になります。

何より、業務システムやツール系アプリは分かる人にしか分からないというユーザーの間口の狭さが目立ってしまいますが、ゲームは万人に気軽に作ったんだと発表できるのは何より大きな利点でしょう。

ゲームプログラミングの実態

現在のゲームは高画質・大容量が当たり前になっており、必要とされるプログラミングの技術は高度なものになっています。そして何より、アセットと呼ばれる各画像や音楽などのデータ類のライセンスについても気を配る必要があり、ただプログラミングすれば済むという話では無くなってきています。

それらを扱うプログラミング言語もC++C#のみを受け付けているところが多く、少し学習の難易度が上がると同時に使用機会の少ない言語であるため、潰しがきかない問題も発生します。

無論、フルスクラッチと呼ばれるゼロから作らなくてはならない訳でなく、ゲームエンジンと呼ばれるフレームワークを使っていくのが主流になっています。有名ところではUnrealEngine5Unityなどが挙げられます。これらのゲームエンジンではライセンス的に問題のないアセットマーケットが準備されていたり、ブループリントと呼ばれるビジュアルプログラミング環境がセットされていて、コーディング無しでゲームを作ることも可能です。勿論、自由度が高いのである一定の学習時間は必要となります。それと結構スペックの高いWindowsマシンが必要になります。

プログラミングの特徴としても、使用するゲームエンジン特有の命令や関数を覚えていくのが主体になるので少し癖のあるコーディングになりやすいです。

ここまで説明するとプロやセミプロ向けではないかと気づかれたかと思います。実際、有名ところのゲームエンジンを使ってゲームを作れるなら、就職や転職・副業に有利になることは間違いありません。

しかし、筆者がお勧めしたいゲームプログラミングはゲームボーイやファミコン・スーファミ時代レベルのゲームの再現と言えるものです。

ゲームの必要条件

ゲーム(ここでは2dゲーム)の必要最低限の条件とは何でしょう。筆者はゲームプログラミングを専門にしているわけではないので、あくまで素人判断になってしまいますが、以下の3つになるのではないかと考えています。

  1. キャラクター、背景と移動できる地形で構成されたマップ、敵などの障害物の3つが画面に表示されていること
  2. キャラクターはユーザーの操作に対して視覚的にわかる挙動をすること
  3. キャラクターと障害物は接触・非接触が感知できるようになっていること(当たり判定)

上に挙げた3つの条件だけで構成され、3の当たり判定でゲームオーバーになるゲームはアクションゲームと呼ばれる部類になるでしょう。当たり判定後に戦闘画面に遷移すればRPGゲームになり、イベントなどのムービーシーンにも応用可能です。

実際のゲームコードではメインループと呼ばれる決められた時間内に自身の命令を繰り返し行う(再帰処理,FPSで表される)コード内で1の描写、2の操作、3の当たり判定を行っています。これはゲームボーイのソフトのコードから変わっていません。

操作の受付はコード内のグローバル変数(馴染みのない方は共有フォルダや2ちゃんのスレみたいにみんながアクセスできる物と思って下さい)等でキャラクターの状態を変化・保持しています。

同時に障害物の状態も自動で変化・保持させてその情報を元に再描写を行い、ユーザーからは視覚的に操作していることを実感させ、必要に応じて当たり判定ができるようになっています。

ゲームボーイから今日まで速度に定評のあるC言語系で上で述べたアルゴリズムを実装しているわけです。

では、ゲームのアルゴリズムの考察まで終わったのでプログラミング学習効果が高いと思われる言語を使って、最低限の労力で実装できるようにする為にもう少し考察をしてみましょう。

ゲームプログラミングを手軽にしたい

今、流行りであるPythonと呼ばれるAIの学習に特化し、ライブラリの汎用性も高く、学習難度も比較的低いとされている優れた言語をお勧めするのが常套句のようになっていますが、プログラミングをできるようにする(開発環境を構築)までが他の言語より簡単とは言え、手間が少し掛かります。

それでは趣旨に反するのでここではJavaScriptと呼ばれる言語をお勧めします。この言語はブラウザとメモ帳のようなコードエディタがあれば実行でき、ブラウザの入っている端末であればOS関係なく学習を始められる長所を持っています。

更に元はWEBサイト向けのプログラミング言語でしたが、GoogleAppScript、OfficeScript、AppleScriptなどの派生言語があり、JavaScriptを覚えればその派生言語でSpreadSheet、Excel、macOSなどを自由に扱えることができるようになる汎用性の高さがあります。

学習難度もPythonと対して変わらないので、初めてプログラミングしたい方にはまず手を付けてみればとお薦めしたい言語です。

それでは次回からは簡単なアクションゲームをJavaScriptのコードで実装したものを解説していきます。

今回紹介したようにゲームプログラミングはキャリアアップにも使える特別なスキルです。入門とかまどろっこしいのが嫌な方は以下のようなプログラミングスクールに入学するのが間違いありません。

Next Previous

MailForm

プログラミング ForMe

Home

ゲームプログラミング(1-2.JavaScriptでアクションゲーム)

December 18, 2024
プログラミング ForMe

ForMeを使ったプログラミング学習

December 18, 2024
プログラミング ForMe

プログラミングと英語

December 18, 2024
プログラミング