Unityに関する世界観です。ゲーム開発も参照のこと。
ゲームエンジンとは、ゲームを開発するために必要な機能を集めたエンジンのこと。Web開発で言えばフレームワークのようなもの。
昔はBASICなどでゴリゴリとすべてのゲームに必要なコードを記述していたが、今のゲーム開発はゲームエンジン全盛期であり、たとえばテトリスのような落ちゲーなどを作るのであっても、自分ですべてを記述せず、Unityのようなゲームエンジンを使うことが多い。
なぜUnityを使うのかは、安くて標準的だから。特に、利益の少ない小さな会社や個人向けにはUnity Personalは無料で使うことができる(大きな会社だとお金が必要)。
Unityはほかのソフトウェア(3DCGデザインソフトや3Dグラフィックスの表示レイヤーなど)にも対応し、またネットや書籍での情報も多い。任天堂やSONYなどでもおそらく独自のゲームエンジンを作っているはずだが、Unityはクロスプラットフォームであり、任天堂やSONYなどのゲーム機やWindowsパソコンやスマホなど、一部のプラットフォームに限らず、さまざまな環境で動作する。
Unityは画面からスクリーンを編集できるほか、C#を用いてゲームプログラミングが行える。言語がC#なのは内部でMonoを使っているからであり、Microsoftがごり押ししたわけではない。だが、MicrosoftもXboxなどを持つ巨大ゲーム企業のひとつであり、C#を学ぶことはゲーム開発者になるために必要な知識のひとつであるということは言える。ただし一般的には、ゲームにはパフォーマンスが必要であるため、C/C++を使うことが多い。ただし、Microsoft環境ならもちろんC#も使うことができる。AndroidならJavaを使うことも多い。
Unityはクロスプラットフォームのゲームエンジン。DirectXやOpenGLに対応しており、BlenderやPhotoshopのファイル形式にも対応している。
Ubuntu独自のユーザーインターフェースもUnityという名前だが、別物。
最近(2018.11.29)、自分はUnityについて勉強中である。スクリプトはC#/monoで動いていて、コードはC#で書く必要がある。それから、無料版は大きく儲かっていない小さな企業でしか使うことができない。
だが、Unityはダウンロードだけで簡単に使えるし、上のサイトのように詳しいサイトがたくさんある。C#は僕が昔twintail(2ch専用ブラウザ)の改造の時にお世話になった言語である。
できることなら、今僕の言っている作業所で、Illustratorで仕事をやる合間に何かゲームでも作れたら良いなと思っている。
Unityはブラウザやモバイルから家庭用ゲーム機まで幅広く対応している。とても優れたゲームエンジン(ゲームのための色んな機能を提供してくれるエンジン)で、エディタは自由に拡張することができる。アニメーションなどの分野でも使われているようである。
できることなら、Unityでカードゲームを作りたい。UnityはポケモンGOなどでも使われており、最近とても流行っている。ゲーム業界のデファクトスタンダードになるのではないかと思う。
Unityでは、Microsoftによる.NET Frameworkの言語である、C#を使う。これは、オープンソースの.NET Frameworkとしておなじみのmonoを内部で使っているからである。
C#はMicrosoftの公式サイトでASP.NETというWebプラットフォームに使われていたり、Windows.Formsなどでもおなじみで、.NET Coreなどのコードを見て分かる通りWindowsやMicrosoft製品の内部で使われていて、VB.NETよりもJavaに近い言語として知られている。Java VMとの比較から「MS版のJava」として知られている。monoはLinuxなどのUNIX向けのオープンソースな.NET Frameworkの実装。Unityではこのmonoをスクリプトを書く言語に採用している。
僕の大好きなエンジニア経営者のセイト先生がYouTubeで面白い動画を投稿されたので参照してください。短い動画ですが、セイトさんがUnityをとても面白くゲームの開発に使っていて、ゲーム開発の「さわり」を知る上で参考になります。
後日注記:実際のところ、こんなに短時間でゲームが作れるということは驚きました。Unityというゲームエンジンを使っているということ、Udemyという動画サイトを見た上での結果であるということは分かりますが、世の中のゲーム会社はあまりに適当にゲームを作っているのではないかと勘繰りたくなります(もちろん、ひとつのステージのほんの少しの部分しか作っていないということは分かりますが)。
2022.11.29
2022.12.01編集
以下はUnityでテトリス風落ちゲーを作る制作記録。
2026.02.19
残念なお知らせですが、Unityでは最新のC#の機能は使えません。これはUnityがMonoというランタイムエンジンを使っているためです。Monoは旧来の.NET技術であり、C#のバージョンが古く、UnityではC# 9.0というバージョンに固定されています。最新の.NETではC# 14なので、大分古いです。詳しくは以下の記事が参考になります。
2026.03.07
Unreal EngineはEpic Gamesによるゲームエンジンで、Unityと並んで「大手のゲームエンジン」として知られる。Unityと同様、原則無料で利用できるが、UEを使って作ったゲームやコンテンツの収入が100万ドル以上になった場合、5%のロイヤリティを払わなければならない。
Unreal Engineは、無料で利用できるからといって、チャチなものではなく、とても高度なゲームや3Dコンテンツを作ることができ、シミュレーションなどにも使える「本格的なゲームエンジン」であると知られている。
Godotはオープンソースなゲームエンジン。完全に無料で利用でき、なんらかの条件でライセンス料やロイヤリティを支払う必要もない。2Dにも3Dにも使えるが、どちらかというと2Dゲームに向いている。
昔のパソコン業界では、BASICでゲームを開発するのが常套手段でした。
昔のホビーパソコンの時代では、BASICインタープリタあるいは機械語やC/C++などを使ってゲームを作っていた人が多かったと思います。
その時代、インターネットなどはなく、「マイコンBASICマガジン」のような雑誌にBASICや機械語で書かれたプログラムを掲載して、多くのホビーエンジニアはそのような雑誌で知識をつけていました。
そして、当時から、MicrosoftはBASICインタープリタの開発で有力なソフトウェア企業でした。
その後に、MicrosoftはOS企業として、IBM PC/AT互換機のディスク管理OSであるMS-DOSを提供するようになり、その後にWindowsというデスクトップのGUIなOSを作るようになりました。
さて、Windowsの時代ですが、Windowsでプログラムを書くためには、C/C++だけではなく、Visual BasicというBASICの改良言語でプログラムを書くことができます。
このVisual Basic(バージョンを含めるとVB 6.0)という言語は、優れたフォームデザイナーがついてきたため、グラフィカルな開発がしやすく、「Visual」という名前がついているのに相応しい開発環境でした。
このVB 6.0は、長らくWindows開発の主力として使われた言語であり、ゲームの開発も簡単にできます。以下の書籍が参考になります。
そして、時代はさらに新しくなります。MicrosoftはJavaと同等の仮想マシン(VM)上で動く環境である、.NET Frameworkという技術を開発します。この.NETはWindows Vista以降のバージョンではWindowsに最初から搭載されています。そして、この.NETで動く言語として、VB.NETとC#が提供されました。
そして、この時代から、Microsoftの主力言語はC#になります。
VB.NETがついてくるのであれば、いつまでもBASICを使えばいいような気がしますが、実際にはC#はJavaを模した上で改良した言語であり、Javaがエンタープライズ向けの言語であるのと同様、C#もエンタープライズ向けの言語となりました。そして、VB.NETで書くよりも、Javaを模したC#で書いたほうがモダンな書き方ができて、C/C++にも構文的に近いため、C#は新しいWindowsの標準となりました。
ですが、問題は、C#は当初Windows向けの言語だったため、UNIX環境では動きませんでした(今では.NET Core以降の.NETがオープンソース化されており、UNIXでも動くようになっている)。そのためどうしたかというと、当時は.NET技術がJavaに対抗する上で標準規格として公開されたため、仕様を詳しく知ることができました。そのため、Linux向けのGUI環境GNOMEを開発したミゲル・デ・イカザという人物(Linux界隈では知らない人はいないような超有名ハッカー)が、UNIX環境でも動くMonoという.NETのオープンソース技術を開発したのです。
そして、Unityは、このMonoというランタイムをゲームエンジンのための開発言語として採用しています。そのような経緯があって、今ではゲームはC#で書くのが普通になりました。すなわち、BASICがVisual Basicとなって、最終的にC#/VB.NETおよびMonoに至る歴史があったために、「昔はBASIC、今はC#」という流れができたのです。
ですが、問題はいくつかあります。ひとつは、Monoの開発が停滞していることです。UnityのC#はバージョン9.0で固定されていますが、これはMonoを使っていることが一因です。最近のC#はバージョン14ですが、それに比べるとずいぶん古いです。Monoを使わず今の.NETを使えばいいのですが、ランタイムを変えることは困難であるため、C# 9.0よりも新しい機能は使えません。
ですが、問題はそれくらいです。C#は極めて新しいプログラミング言語であり、最新のIT業界で使われる多くの機能がありますし、Microsoftは新機能をどんどん付けていくので、たくさんの機能が使えます。プレステなどのコンシューマゲーム機では今でもC++を現役で使っていますが、C++に比べるとC#の環境は天国と地獄ぐらいの差があります。なので、「Unityは最高だ」と言う人は少なくありません。
また、Unity自体にも問題はあります。ひとつは、Unityがゲームエンジンであることです。C#でゲームを開発しようとするとUnityを使うのが一般的ですが、これは「ゲームエンジンを用いたプログラミング」を意味しています。ゲームエンジンを使うことで、難しいゲームを簡単に作ることができますが、Unityのやり方でしか作ることができません。
それに比べると、C++でゲームを作るのは自由度が高いです。あえてゲームエンジンを使わないことで、ゲームを作る難易度は上がりますが、C++の認める範囲内で言えば自由な開発が許されます。なので、C#でゲームを開発するのが簡単すぎて物足りない場合は、C++で開発することが重要になります。プレステなどのコンシューマゲーム機ではC#は使いません。C++で開発することが一般的です。
UnityではなくC++でゲームを開発するためには、どうすればよいのでしょうか。ひとつの方法として、Windowsを使う場合、Microsoft Visual Studioを買う方法があります。Visual StudioにはVisual C++という開発環境がついてきます。ですが、僕はこれはお勧めしません。なぜなら、値段が高額なのに使い方が難しいからです。現に、僕はWindows XPの時代にVisual Studio .NETを学生価格で買ったことがありますが、使い方が分からずにどこかにしまい込んで、結局使わなくなってしまいました。
もうひとつの方法は、オープンソース技術を使うことです。Linuxや*BSDのようなUNIX系のOSには、GCCあるいはLLVMといったコンパイラ基盤がついてきます。これらは無料で使えるので、もし使い方が分からなくなって放棄したとしても無駄になりません。手軽に使うという意味では、Linuxや*BSDでGCCなどを使うことはよい選択です。
また、ほかにも利点があります。それは、オープンソース技術がたくさん使えるということです。GCC以外にも、PerlやPHPやPythonやRubyというほかの言語も無料で使えます。ほかにも、Webサーバーを立てたいと思った時にLinuxならApacheなどを使ってすぐに立てられます。Perl/CGIを使うことで、掲示板やチャットなど、ネットゲームにプラスして開発したいWebサービスが簡単に開発・公開できます。WebフレームワークとオープンソースのSQLデータベースを使うことで、FacebookのようなSNSも開発できます。ゲーム以外の開発も簡単だということが、Linuxを使う上で大きなメリットです。
ただし、かつての僕の経験の話をすると、DelphiというBorlandが作っていた開発環境は素晴らしかったです。当時はDelphi 6のパーソナル版が無料でダウンロードできましたが、僕は製品版のDelphi 7を購入して使っていました。製品版のDelphiを買うと、コンポーネントが全機能使えるほか、オフィシャルコースウェアというマニュアル本がついてきます。これらの開発環境を使ってPascalでプログラミングをするのもいいと思います。そうしたところは、好きなように決めてやればいいでしょう。Delphiでゲームプログラミングを行うのは簡単です(以下の書籍を参照のこと)。
今の時代、かつてのホビーパソコンよりも環境はよくなっています。雑誌の文化はなくなりましたが、Webでたくさんのネットゲームが遊べるようになった今の時代は、昔よりは恵まれていると思います。ただし、3DCGのゲームが増えたように、ゲーム開発の難易度は上がっているので、昔のように簡単にゲームは作れません。ですが、そのような難易度を極力下げるためのUnityのようなゲームエンジンだと思います。
C#は、Unityで使われているからゲーム開発で使うだけではありません。C#はMicrosoft Windowsの主力言語です。以下のやねうらお氏の書籍は、Unityなどなかった時代に書かれた本ですが、既にC#がゲーム開発の分野で主力として使われていたことが分かります。C#はWindowsにおけるゲーム開発の中軸であり、GDI+やDirectXのようなWinwows技術が(C++と同様に)ネイティブサポートされています。C#はWindowsアプリケーションの開発にも使われているので、C#を学んだことは決して無駄にはならず、Unityを使うのをいずれやめたとしても、C#の知識はエンジニアとして大いに役に立ちます。
ゲーム開発とは、グラフィックスプログラミングです。グラフィックスプログラミングにおいて、Windowsでは、2DCGであればGDI+、3DCGやハードウェア処理であればDirectXを使います。これらはC++とC#どちらもサポートされていて、使い方がよく似ています。Unityを使わなくても、C#を使う上でこれらのAPIを学ぶことは重要です。なので、C#の勉強は、WindowsのC++を学ぶ上でも極めて役に立ちます。
2026.05.29
ゲームエンジンの内部の仕組みは、以下の動画が参考になる。
この動画によれば、ゲームはパラパラ漫画のような画面フレームごとの無限の繰り返しの中で、「入力チェック」「状態の更新処理」「画面への描画」という命令を繰り返し実行している。
入力チェックの中でユーザーの入力(コントローラのボタンなど)を取得し、状態の更新において物理演算やキャラクターの動きの判定などゲームに必要な処理を行い、描画の中で物体(メッシュとテクスチャ)を光の加減などを考慮して表示する。
このようなゲームにおいて必要な処理や機能を、ゲームエンジンがある程度の枠組みごと最初から用意してくれる。これがゲームエンジンの内部の仕組みです。
ゲームエンジンでは、描画処理が最初から綺麗かつ多機能なので、簡単にゲームの描画をすることができ、自分でスクリプトやコンポーネントを追加した時は状態の更新処理の中に追加されるようになっている。だから、ゲームが作りやすいのです。
2026.05.30-31