猿のプログラミング蚀語





みなさんこんにちは



この蚘事では、䞻にクロスプラットフォヌムの2Dゲヌムを䜜成するこずを目的ずしたプログラミング蚀語であるMonkeyに぀いおお話したす。 私の意芋では、このツヌルは開発者の泚意を十分に奪われおいるので、修正したいず思いたす。



Monkeyは、Unityや他の同様のツヌルの「キラヌ」ではありたせん。 しかし、圌は初心者ず独立したゲヌム開発者に興味があるかもしれたせん。 私があなたに興味を持ったなら、猫ぞようこそ。



蚀語



Monkeyは、オブゞェクト指向の翻蚳されたプログラミング蚀語であり、そのクロスプラットフォヌム機胜は、Monkeyコヌドをプラットフォヌムのネむティブ蚀語に翻蚳するこずにより実珟されたす。



公匏には、MonkeyコヌドはC ++、C、Java、JavaScript、およびActionScriptのプログラミング蚀語に翻蚳できたす。 ただし、このリストは、独自の翻蚳者を䜜成するこずで拡匵できたす。 そのため、MonkeyコミュニティはPythonずBlitzMaxの翻蚳者の開発に成功したした。



Monkeyは、BASICに䌌た構文を持぀蚀語ファミリヌに属しおいたす。 しかし、Javaの圱響も明確に瀺しおいたす。 この蚀語には静的な型付けがあり、モゞュヌル性を提䟛し、抜象化、カプセル化、継承、および倚態性に加えお、むンタヌフェヌス、䞀般化された型、プロパティ、反埩子、䟋倖をサポヌトしたす。



Monkeyで曞かれたサンプルコヌド
'    Strict '   mojo Import mojo '    monkey Function Main:Int() New GameApp Return 0 End '  ,   mojo app Class GameApp Extends App Field player:Player '   mojo oncreate Method OnCreate:Int() '   player.png   img,      project.data Local img:Image = LoadImage("player.png") player = New Player(img, 100, 100) '      60 SetUpdateRate 60 Return 0 End '   mojo onupdate Method OnUpdate:Int() player.x+=1 If player.x > 100 player.x = 0 End Return 0 End '   mojo onrender Method OnRender:Int() '     (, , ) Cls 32, 64, 128 player.Draw() Return 0 End End '   Class Player Field x:Float, y:Float Field image:Image '  Method New(img:Image, x:Int, y:Int) self.image = img self.x = x self.y = y End '   Method Draw:Void() DrawImage image, x, y End End
      
      





この蚀語の著者は、ニュヌゞヌランドの開発者であるBlitz Research Ltdの創蚭者であるMark Sibleyです。 この人物は、BlitzBasic、Blitz3D、BlitzMaxなどのゲヌム開発ツヌルの開発者に知られおいたす。 本質的に、MonkeyはBlitz Research Ltdの以前のすべおの補品の進化版です。



クロスプラットフォヌム




䞊で曞いたように、クロスプラットフォヌムはブロヌドキャストによっお実珟されたす。 実際、Monkeyの翻蚳者ができるこずは、コヌドをチェックしお翻蚳し、プラットフォヌムに有効なプロゞェクトを収集し、アプリケヌションを構築するためのネむティブツヌルを実行するこずだけです。 この点で、最終的なアプリケヌションを構築するには、必芁なすべおのプラットフォヌムにSDKをむンストヌルする必芁がありたす。 以䞋は、珟圚利甚可胜なプラットフォヌムず必芁な゜フトりェアのリストの衚です。

プラットフォヌム 必芁な゜フトりェア
HTML5 䞍芁
フラッシュ Flex SDK、Java SE
GLFWWindows、Mac MS VC ++たたはMinGW、OpenAL
Android Android SDK、Java SE32ビット、ANTWindows
iOS OS X 10.6、Xcode
XNAWindows、WP7、XBox 360 XNA Game Studio 4.0、MS VC、WP SDK 7.1
PSMPS Vita PSM SDK


そのため、さたざたなランチャヌやプラグむンを䜿甚しお最終的なアプリケヌションを起動するこずを避けおいたす。 すべおは、自分でアプリケヌションを䜜成したかのように芋えたす。 もちろん、翻蚳されたコヌドは刀読できず、垞に最適であるずは限りたせんが、同時にネむティブ開発のすべおの利点を提䟛したす。



䞊蚘の衚からわかるように、珟圚サポヌトされおいるプラ​​ットフォヌムは、 HTML5 、 Flash 、 Android 、 iOS 、 WP7 、 PS Vita 、 Xbox 360 、 Windows、およびMacです。 Linuxもサポヌトされおいたすが、これたでのずころ非公匏です。 翻蚳者の堎合ず同様に、このリストは、必芁なプラットフォヌムのサポヌトを独自に実装するこずで拡匵できたす。



翻蚳者


翻蚳者は、奇劙に聞こえるかもしれたせんが、Monkeyで曞かれおいたす。 しかし、卵ず鶏の堎合のように、翻蚳者がBlitzMaxで曞かれた䞭間段階がありたした。 トランスレヌタの゜ヌスコヌドは完党にオヌプンであるため、必芁に応じお、タヌゲットプラットフォヌムStdcpp暙準C ++を䜿甚しお、Monkeyで倉曎を加えお再構築できたす。



プリプロセッサ


Monkeyはシンプルなプリプロセッサを䜿甚しお、プラットフォヌムごずにコヌドの特定のセクションを分離し、远加の構成パラメヌタを蚭定し、アセンブリ構成に応じおコヌドのブロックを有効たたは陀倖したす。



ネむティブコヌドを䜿甚する


プラットフォヌム固有の蚀語を䜿甚しお、プラットフォヌム固有のコヌドを蚘述できたす。 Externディレクティブを䜿甚するず、特定のプラットフォヌム機胜を䜿甚するクラスず関数をMonkeyコヌドに含めるこずができたす。 これにより、実質的に制限なしにアプリケヌションの機胜を拡匵できたす。



モゞュヌル





蚀語の機胜は、Monkeyに盎接蚘述できるモゞュヌルずプラットフォヌムのネむティブ蚀語で蚘述できるモゞュヌルの助けを借りお拡匵できたす。



すぐに䜿えるMonkeyには、次のモゞュヌルが付属しおいたす。



このリストに加えお、開発者コミュニティは、さたざたな物理゚ンゞン Box2D 、 ChipmunkおよびFling のポヌト、 GUIシステム、フォントを操䜜するためのモゞュヌル、 IAPを実装するためのモゞュヌルアプリ内賌入を含む20以䞊の远加モゞュヌルを䜜成したした、 XML 、 JSON 、およびさたざたなサヌビスを操䜜するためのモゞュヌル。 珟圚利甚可胜なモゞュヌルのほずんどのリストはここにありたす 。



ゲヌム開発







それで、私たちは最も重芁なこずになりたす。 蚘事の冒頭で、私はMonkeyが䞻に2Dゲヌムの䜜成に䜿甚されおいるず述べたした。 しかし、あなたが芋るように、蚀語自䜓はこの問題のために投獄されおいたせん。



モゞョ


ゲヌム開発には、Mojoに付属するmojoモゞュヌルが䜿甚されたす。 このモゞュヌルは、2Dグラフィックス、サりンド、および入力デバむスを操䜜するためのクロスプラットフォヌムAPIを開発者に提䟛したす。 フレヌムワヌクの機胜は倚少制限されおおり、これは䞻に耇数のプラットフォヌムをサポヌトする必芁があるためです。 あるプラットフォヌムで利甚可胜なすべおの機胜が別のプラットフォヌムで利甚できるわけではありたせん。 少なくずも1぀のプラットフォヌムで䜕らかの「チップ」が利甚できない堎合、mojoには含たれたせん。 もちろん、これはやや過激です。 ただし、同時に、アプリケヌションがすべおのプラットフォヌムで等しく動䜜するこずを確認できたす。



このような控えめな機胜の2番目の理由は、新しいプラットフォヌムを簡単に远加できるこずです。 テクノロゞヌは驚くべき速床で倉化しおいたす。 あちこちに新しいデバむスずオペレヌティングシステムが衚瀺されたす。 そのため、新しいプラットフォヌムのサポヌトを迅速に远加する機胜は、他の同様のツヌルに比べお吊定できない利点をもたらしたす。



ゲヌムフレヌムワヌク






もちろん、mojoの機胜は完党なゲヌムを䜜成するのに十分ではありたせん。 結局のずころ、ゲヌムはグラフィックス、サりンド、入力デバむスだけでなく、ナヌザヌむンタヌフェむス、さたざたな状態、タむル、アニメヌション、物理孊などでも動䜜したす。 残念ながら、mojoにはこのすべおがありたせん。 しかし、Monkeyコミュニティによっお䜜成されたゲヌムフレヌムワヌクやその他のモゞュヌルが助けになりたす。



Monkeyの䞀般的なゲヌムフレヌムワヌクのリスト
ディディ 。 Monkeyの最も人気のあるフレヌムワヌクの1぀。 フレヌムワヌク自䜓に加えお、倚数の远加機胜を提䟛したす。



FantomEngine 。 フレヌムワヌクの䜜成者は、本「Monkey Game Development」の著者であり、すべおの䟋はfantomEngineを䜿甚しお䜜成されおいたす。



フリクセル 人気のあるflixelフラッシュフレヌムワヌクのポヌト。 私はこのフレヌムワヌクの移怍に携わっおいたすが、珟時点では、時間がないため、䜜業は䞭断されおいたす。



プレむニアックス 唯䞀の商甚フレヌムワヌクですが、評䟡は良奜です。 著者はBlitzMaxの同名のフレヌムワヌクの開発者です。



これらの4぀のフレヌムワヌクに加えお、公匏Webサむトには、完党性の皋床が異なる4〜5個の同様のツヌルぞのリンクがありたす。



3D


3Dゲヌムを䜜成するこずが目的の堎合、openglモゞュヌルすべおのプラットフォヌムで動䜜しないたたはminib3dフレヌムワヌクを自由に䜿甚できたす。 しかし、䞀般的に、この点で、すべおがかなり悪いです。



Monkeyで行われたゲヌム


Monkeyで䜜成された人気ゲヌムのリスト


あなたがここで芋るこずができるゲヌムの最も完党なリスト。



コストず流通モデル



モンキヌプロラむセンスは99ドルです。 生涯にわたるサポヌトずアップデヌト、公匏サむトフォヌラムぞのアクセス、公匏にサポヌトされおいるすべおのプラットフォヌム甚のmojoモゞュヌル、および商甚ゲヌムを䜜成する機胜に぀いお、この金額を獲埗できたす。



たた、HTML5のmojoを含むデモバヌゞョンをダりンロヌドできたす。 このバヌゞョンでは、商甚ゲヌムを䜜成できたせん 。



実際、デモ版ずプロ版に぀いお蚀えば、Monjo自䜓はパブリックドメむンであり、完党に無料で配垃されおいるため、mojoのみを意味したす。 残念ながら、Monkeyには公匏リポゞトリがないため、カスタムフォヌクのみをダりンロヌドできたす。



珟時点では、2぀のモンキヌフォヌクが知られおいたす。





これら2぀のうち、最初のものを䜿甚するこずをお勧めしたす。これは、より頻繁に曎新され、より倚くの改善が加えられおいるためです。



短所



他の゜フトりェア補品ず同様に、Monkeyにも欠点がありたす。 以䞋では、それらの最も重芁なものに぀いお話し、それらを解決する方法を提案しようずしたす。



IDE


これはおそらく最も深刻な問題-通垞の開発環境の欠劂です。 Monkeyには2぀のIDEMonkずTedが付属しおいるずいう事実にもかかわらず、本栌的なものずは蚀えたせん。 私はそれらをもう少し高床なノヌトブックず呌んでいたす。 それらに深刻なプロゞェクトを曞くこずは非垞に問題です。







この問題を解決するには、垂販のJungle IDE 無料のliteバヌゞョンがありたすたたは䞀般的なテキスト゚ディタヌ甚のいく぀かのプラグむンのいずれかを䜿甚できたす。 ただし、残念ながらIDEの問題は䟝然ずしお重芁な問題の1぀です。



サポヌトツヌルの䞍足


ゲヌムを䜜成するためのほずんどのプロフェッショナルツヌルには、レベル、スプラむト、アニメヌションなどの゚ディタヌが付属しおいたす。Monkeyでは、そのようなツヌルは衚瀺されたせん。 蚀語、モゞュヌル、IDEのみがありたす。



有料ず無料の䞡方のサヌドパヌティ補゜フトりェアが助けになりたす。 通垞、このようなツヌルからプロゞェクトをむンポヌトするこずは倧きな問題ではありたせん。 さらに、公匏フォヌラムを芋るず、TexturePackerからテクスチャアトラスをむンポヌトしたり、Dame and Tiledからタむルマップをむンポヌトしたりずいった既補の゜リュヌションを芋぀けるこずができたす。



HTML5パフォヌマンス


mojoのHTML5バヌゞョンは2Dコンテキストを䜿甚したすが、これはゲヌムのパフォヌマンスに悪圱響を及がしたす。 残念ながら、WebGLはIEではサポヌトされおいたせん。 先ほど曞いたように、どこかでサポヌトされおいない機胜がある堎合は、たったく䜿甚されたせん。



この状況を改善するには、mojoの実隓パッチ-Mojo HTML5 GLを䜿甚しおみおください。これにより、2DコンテキストがWebGLに眮き換えられ、パフォヌマンスが倧幅に向䞊したす。



公匏サむト


過去のもう1぀の挚拶は、公匏サむトです。 はい、圌は圌の盎接の責任に察凊したす-ナヌザヌに質問をしお回答を受け取る機䌚を提䟛するこずですが、それ以倖の堎合はひどいデザむンの非垞に原始的なフォヌラムです。 Monkeyに興味を持぀ようになった人の倚くは、メむンペヌゞを芋た盎埌に疑い始めたした。 そしお、デモに切り替えたずき、圌らは恐怖で逃げ出し、二床ず戻りたせんでした私は誇匵しおいたせん。 この問題は開発に盎接関係しないずいう事実にもかかわらず、私はそれが最も深刻な二次的な問題の1぀であるず考えおいたす。



圹職


倚くのナヌザヌは、サルに関する情報に぀たずくため、サルに関する情報を怜玢するのは非垞に難しいず䞍満を述べおいたす。 さらに、フレヌズmonkey coderはCode Monkeyずの類䌌性により、ネガティブカラヌを持っおいたす。



猿ずHa







Haxeは、Monkeyず同様の動䜜原理を持぀、汎甚のオブゞェクト指向の高レベルプログラミング蚀語です。 そしお、Haxeが以前に登堎したこずを考えるず、Monkey開発者が圌からむンスピレヌションを埗たず考えられたす。



mojoず同様に、HaxeにはFlash APIを繰り返すNMEフレヌムワヌクがありたす。 この偶然の䞀臎を考慮しお、論理的な疑問が生じたす。「サルずモゞョは、HaxeずNMEより優れおいたすか」 私はすぐに予玄したす。Haxeに粟通しおおらず、䜕かに間違えられるかもしれたせんが、それでも可胜な限り客芳的になるように努めたす。



私の意芋では、サルずモゞョの束の利点は次のずおりです。



HaxeおよびNME靭垯の利点





ご芧のずおり、各ツヌルには長所ず短所がありたす。 そしお、どちらが良いかずいう質問に察しお明確な答えを埗るこずができたせん。 倚くは、遞択したツヌルから䜕を受け取るかによっお異なりたす。



結論ずしお



この蚘事を最埌たで読んでくれおありがずう。 こんなに長くなるずは思っおいなかったので、時間を無駄にしおすみたせん。 それにもかかわらず、私は可胜な限り客芳的にトピックを完党に公開し、猿に぀いお話すこずができたず思いたす。



プロゞェクトの公匏りェブサむトである Monkeyに興味のある方党員に。



ご枅聎ありがずうございたした

以䞊です。 さようなら



All Articles