BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ アーティクル オンラインゲーム開発に最適なプログラミング言語は何か?

オンラインゲーム開発に最適なプログラミング言語は何か?

ブックマーク

最近のオンラインゲームは、かつてないほど多様化していると言えるでしょう。スムーズで、詳細で、没入感があるので、誰でも簡単に入り込むことができます。開発者たちは、仮想カジノの中で、あなたが実際にその場所にいるように感じる方法を熟知していて、そのためのアプローチ方法もたくさん持っています。

オンラインゲームは、一般的なコンソールビデオゲームとは違います。インターネットとの安定した接続が必須であるため、ルールやプレイモードの面で、より柔軟性があると考えられています。長々としたインストラクションを学ばなくてもプレーを始められるのは、誰にとっても便利なはずです。プレーヤは、場面毎のインターフェースの方法を理解しなければなりません。これを可能にするためにゲーム開発者たちは、さまざまなツール — プログラミング言語、メディアライブラリ、レンダラなど — を利用します。

プログラミング言語の選択

数多くの多目的言語があり、さまざまな場面で使用することができます。ですから、オンラインゲームをコードするプログラミング言語の選択にあたって、2つや3つの選択肢に制限されるようなことはありません。選択肢が多いことは、非常に有利なことなのです。しかし、それが一方では、落とし穴にもなります。どうすれば、正しい選択をすることができるのでしょうか?

オンラインゲーム市場の規模と競争力のレベルを考慮すれば、将来のゲームに最適な基盤を選択することが、すべての開発者にとっていかに重要かは理解できるでしょう。しかし、オンラインゲーム開発に最適なプログラミング言語ということになると、個々のプロジェクトに100パーセント最適な答というものは存在しません。

ここに秘訣があるのです — 取り入れる必要のある機能を明確に理解するためには、開発しようとしているゲームの内容を詳細に計画しなくてはなりません。実際に、実装するゲームのあらゆる面を重み付けした上で、使用可能なプログラミング言語のリストを調べれば、選択肢は限られてくるはずです。それでも候補リストが長すぎたならば、では、どうすればよいのでしょうか?

JavaScript

当然のことながら、ひとつの言語ですべてを構成することはできません。ですが、完全な仮想環境や、便利でユーザフレンドリなインターフェースの開発に有効な"リーダ(leader)"は存在します。JavaScriptは、そんなリーダのひとつです。

オンラインゲーム開発において、JavaScriptは、最も多く使用されているプログラミング言語のひとつです。Javaと混同しないでください。JavaScriptは比較的マスタしやすいため、開発者の間に広く普及しています。おそらくは、2048SpacecraftといったJavaScriptのゲームを、一度はプレーしたことがあるでしょう。プレイヤに多くの時間を費やさせることができることから、"ウィルス"ゲームと呼ぶ人もいるほどです。同じようなものを開発しようと思っている人のために、JavaScriprtの概要を紹介しましょう。

Java Scriptをオンラインゲーム開発で使用するには?

一般的にJava Scriptは、HTML文書に記述して実行されます。JavaScriptとHTML5の共存することが多いのは、そのような理由によるものです。

基本的には、HTMLがゲームの全体的な構成を保証するのに対して、プログラミング言語としてのJavaScriptは、さまざまなコンポーネントの相互運用性をコントロールします。色や形や動作など、さまざまな要素を適用する方法を詳細にコーディングすることができます。JavaScriptは、Webアプリとモバイルアプリのどちらも開発できるので、総合的なアクションや機能の範囲は十分に大きなものになります。両方のバージョンを開発することも、いずれか一方のプラットフォームに重点を置くことも可能です。このことは、ゲーム機能を考慮する場合にも役立つでしょう。

オンラインゲームでは、モバイル版の方が好まれる傾向があります。現代社会は速いペースで変化し続けているので、プレイヤたちは最大限の利便性を享受することができます。ただしそれが必須ではありません。スムーズに動作するオンラインWebゲームにも需要はあります。しかし、どちらに決定するにせよ、JavaScriptが開発に寄与することは間違いありません。

ゲームエンジン

最終的な結論は、レンダリングに使用するゲームエンジンが何であるかによります。JavaScriptで選択可能なオプションは、次のようなものです。

  • Phaser: Phaserは、デスクトップとモバイルWebアプリの両方に対して、いくつかのタイプのレンダリングツールを提供する、高速なゲームフレームワークです。
  • Melon.js: 高いDPIレゾリューションと、オブジェクトエンティティの基本セットを備えた、2Dゲームエンジンです。
  • Pixi.js: Pixi.jsは最も高速な2Dライブラリのひとつで、さまざまなデバイスで動作します。
  • Kiwi.js: モバイルとデスクトップのブラウザゲーム開発を支援するゲームエンジンです。
  • Crafty: Craftyはほとんどのブラウザに対応し、他のJavaScriptライブラリと組み合わせることが可能です。

フレームワークを追加することで、ゲーム開発が容易になります。必要な機能に集中することができると同時に、プログラム言語としてJavaSciptを引き続き使用しながら、ゲームの最終バージョンを完成させるのに最適なツールを選択することが可能になるのです。

メディアライブラリ

JavaScriptを使うことで、移動やバウンス、マウスコントロール、"ゲームオーバー"など、基本的なオンラインゲームの機能を簡単に構成することができます。もっと複雑なものが必要ならば、Three.jsTween MaxといったメディアライブラリとJavaScriptを組み合わせれば、何の問題もありません。

Three.jsには、豊富な3Dモデルが用意されています。さまざまな視覚効果を使って、ゲームの外観全般をブラッシュアップすることができます。さらに公式Webサイトには、ステップ・バイ・ステップのガイドが無償で公開されているので、実装も比較的簡単です。もうひとつのアニメーションライブラリであるTweenMaxを使えば、その他にも多くの機能をゲームに加えることができます。基本的なことが分かったので、次に、JavaScriptゲームがどのようなものなのかを見てみましょう。

最も人気のあるJava Scriptゲームは?

ゲームガイドをすべて掲載するには大きすぎるので、最も有名なJavaScriptのオンラインゲームのリストを紹介しましょう。

Cookie Clicker

この単純なゲームでは、プレイヤが大きなクッキーをクリックして、クッキーを作らなくてはなりません。アップグレードを購入するには、十分な数のクッキーを集める必要があります。最終レベルが存在しないので、ゲームはほとんど永久に続きます。ですから、好きな時にいつでも楽しい時間を過ごせるようになっています。

The World's Biggest Pac-Man

JavaScriptのオンラインゲームである"The World's Biggest Pac-Man"は、多くの点で昔のPac-Manと同じです。ゴールは同じ — 迷路の中で、すべてのドットとパワーパレットを"食べる"こと、ただし迷路のゴーストに捕まってはいけません。

"The World's Biggest Pac-Man"には、エキサイティングな機能がひとつあります — プレイヤが迷路を作ることができるのです。迷路を作るためには、Facebookのアカウントが必要です。さらに、ハイスコアテーブルがあるので、そのトップを目指すことも可能です。達成する方法は2つあります — それまでの最高スコアを打ち破るか、あるいは世界中のプレイヤと戦うことです。また、Facebookアカウント経由でテーブルを見るというオプションもあります。

A Dark Room

プレイヤがゲームを始めると、自分のキャラクタが真っ暗な部屋にいることと、その部屋でかつて不思議なことが起きたことが明らかにされます。最初にできるのは、部屋の中で火を付けることだけです。その後は、もっとリソースを集めることで、他のプレイヤと協力したり、村を作ったり、あたりをもっと広く探索したりできるようになります。

BrowserQuest

BrowserQuestでは、プレイヤはゲームチャット内で互いにコミュニケーションを取ったり、協力して敵を倒したりすることができます。ゲームを通じて、プレイヤは、さまざまな成果を解き放つことができます。軍が敵を倒すと、戦利品が落ちてくるので、どのプレイヤもそれを拾うことが可能です。戦利品の箱には招待状が入っていることがあります。これによってプレイヤの"衣装"を変えて、例えばFirefoxのロゴのようになることができます。

2048

オンラインJava Scriptゲーム2048のオリジナルバージョンは、16のスロット(4x4)を持つグリッドでプレーします。ゲームには数字の付いたタイルがあって、Webバージョンでは矢印キーで、モバイル版では指で動かすことができます。各ターン毎に、空のスロットに新しいタイルがランダムに現れます。それぞれに2または4の値が振られていて、2つの同じ値のタイルが衝突すると、2つの合計値を持ったひとつのタイルに置き換えられます。

このように、オンラインゲームの開発にJavaScriptを使うオプションはたくさんあります。重要なのは機能性です。2048のようなゲームはコアJavaScriptで簡単に構築できますが、BrowserQuestやA Dark Roomのようなものは別のフレームワークやライブラリが必要になります。

オンラインゲームプログラミングのトレンドは変わるのか?

オンラインゲームの市場は進化し続けています。新たなテクノロジが現れ、巨大なビジネスチャンスの場となっているのです。私たちは今、ほとんど無限といってもよい、仮想世界の発展の時代に近づいています。このことは、仮想現実(VR)や拡張現実(AR)、ブロックチェーンなどの人気の高まりから証明されています。このような機能の豊富なプロジェクトの構築には、純粋なJavaScriptでは不十分ですが、スキルセットの確固たる基盤となることは間違いありません。オンラインゲームをより没入的にするためには、さらにC++やC#をマスタして、VR/ARの要素を加えることを考えてみてください。

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

BT