ゲーム プログラミング

今さらNode.js+Three.jsでゲームを作る理由 – なぜUnity, Unreal Engineでないのか

投稿日:2021年12月14日 更新日:

目的を「コードを書いてゲームを作る」に絞る

ゲーム作成経験のない場合、まずどんな方法でもよいので1本ゲームを短時間で作り上げるのが良いと思われます。
2021年現在、ゲーム作成方法の主流は「Unity」や「Unreal Engine4」などの強力なゲームエンジンを利用する事になっています。しかし、これらの方法はゲーム作成初心者の場合は必ずしも最適とは限りません。Unity、UE4は豊富なアセットを利用でき、ゲーム作成の一連の流れがパッケージ化されていますが、それらを最大限に生かせるのはゲーム作成経験があってこそではないでしょうか?
現代の人に「最初は自分でコードを書いたほうが良い」と言っても聞く耳を持ってもらえないかもしれません。「ゲームの中身を深く理解できる」という利点を説明しても、あまりに便利なゲームエンジンが用意されていては必要性が感じられません。

なので開き直ってこう言います。

「私はコードを書いてゲームを作りたいからJavascriptを選ぶ」

究極、作りたいから作るで良いのです。

メリットはとにかく気楽に作成できます。
基本、準備するのはエディター(Visual Studio Code)だけで良いのですから。

そして自由があります。作りたいものは何でもコードを書けばよいのです。
UnityやUE4でもコードは書きますが、大半はGUI操作で要素をつなげる操作に思えます。これがどうにも肌に合わず、不自由さを感じてしまうのです。

捨てる物

そうは言っても、Unity、UE4が登場したのは確固とした理由があります。クロスプラットフォームで作成ができて、成果物をあらゆるストアにアップロードができます。つまり、ゲームを作成した後の収益化なども考慮すれば、これらのゲームエンジンを利用したほうが良いと言えます。

しかし、上述のように目的を「コードを書いてゲームを作る」だけに絞りました。なので同時に「捨てる物」も明記しなくてはなりません。

・収益化

これを捨てましょう。
ますます、他の同意を得られなくなりそうですね。

しかし、世の中を見渡せばすべてのゲーム作成者が「収益化」を目的にしているとは限りません。

・ゲーム作成を学びたい人
・ゲーム作成が趣味の人

これらの人々は作ったゲームで稼ぐ必要はありません。

余談、私自身の目的

矛盾を解くために私自身の事を述べておきます。私はゲーム作成を学びたいわけでも趣味でもありません。
私がJavascriptでゲームを作成する理由は

・コードを書くことしかできないから
・収益化を考えて物を作ると上手くいかない

ここ数年、「収益化」を考えて作ったアプリが全て上手くいきませんでした。同じことを続けても結果が変わらないと感じたので結論を出しました。

「私は収益化に向いていない」

非常に悲しい結論ですが事実なのでしょうがないです。

しかし、コードを書く事だけは結構できるのです。なんとかこの強みを生かす方法はないかと考えてJavascriptでゲームを作成することに行きつきました。収益化を考えないというのは非常に危険ですが、余計な事は何も考えずにひたすらコードを書いて「何か」が起きることを少しだけ期待しています。
(これは無謀なようで過去に実体験があるのです。)

皆さんに言えるJavascriptでゲームを作るメリット

さて、ほぼ世捨て人状態の私の目的を話したところで皆さんに何のプラスにもなりませんが、一般の方々にもJavascriptでゲームを作成することにメリットはあります。

「結果をすぐに見れる」
さっとコードを書いてブラウザで実行してすぐに描画を確認できます。コンパイルが必要な言語では待ち時間があります。ゲーム作成を学びたいだけならコード修正、描画確認をスピーディに行えたほうが良いです。

「一通りやれば言語が変わっても通用する」
これは私の経験から断言できます。私は最初(2010年あたり)、c++からプログラミングを始めました。そして描画の部分はOpenGLで書いていました。描画の部分は言語が異なっても基本、やる事は同じです。レンダリング、カメラ、ライトを設定して描画するものを追加してフレームを進める。最近で言えばiOSのMetalをやりましたが、一切書籍等は読むことなく、サンプルプログラムを見ただけでOpenGL時代の知識だけで自分のやりたいようにコードを書くことができました。また、受注業務でPHPなども少しやりましたが、基本c++の知識だけで何とかなりました。英語が分かっていればアルファベットを使用する言語なら何となく分かるといったところでしょうか?

-ゲーム, プログラミング

執筆者:

関連記事

Heroku 独自ドメインで公開の手順 / ムームードメイン, ロリポップ使用の場合

HerokuでいくつかNode.jsゲームを公開しています。そのままただ公開すると「https://アプリ名.herokuapp.com」というURLになりますが、収益化などを考えた場合は独自ドメイン …

Macでフォートナイトが起動できない場合の対処 – MacBook Pro

目次 チャプター2シーズン4Macでチャプター2シーズン4をプレイする方法チャプター2シーズン3Epic Game Launcherが起動できない場合の対処法諦めてゲーミングWindowsPCを購入 …

2重(N重)振り子の数値シミュレーション – Javascriptで計算から描画まで

2重振り子を数値シミュレーションをJavascriptでやってみます。Javascriptでやる利点は計算後の結果表示アニメーションまで容易に行える事だと言えます。2重振り子の解法に関する記事はWeb …

Found an unexpected Mach-O header code: 0x72613c21 への対処 Xcode, Admob, xcframework

日々変わっていくAdmobの仕様への対応にとても苦労しています。そんな中、アプリをApple Store Connectへ提出するためXcodeにてArchiveを作成してValidateしようとした …

弾丸と壁/人の接触判定を少し真面目に実装してみる|ゲーム作成

フォートナイトみたいなオンラインバトロワゲームを作っています。優秀なサンプルコードから作成を開始したので早い段階で一応形にはなりました。しかし、サンプルをいじりすぎて接触判定に矛盾が生じてきてしまいま …

スポンサーリンク