モバイルデバイスのゲームロジックにLuaを使用する必要がありますか?


33

上記のように、

暇なときにAndroidベースのゲームを書いています(Androidは無料で、商業的なことをしたいという本当の願望がないため)。

ゲームロジックは、エンティティが存在し、コンポーネントがアタッチされ、メッセージをやり取りして物事を実現する非常に典型的なコンポーネントベースのモデルに基づいています。

明らかにそれを実際に実行するためのレイヤーは薄く、このアプリのiPhoneバージョンを作成する場合、Objective Cで(このコンポーネントベースのシステムの)レンダラーとコアドライバーを書き直す必要があります。

エンティティは、追加するコンポーネントの名前を決定する単なるフラットファイルであり、コンポーネント自体は、エンティティのロジックを含む単純な単一目的のオブジェクトです。

今、これらのコンポーネントのすべてのロジックをJavaで記述した場合、iPhoneに移植することにした場合は、Objective Cでそれらを書き直す必要があります。アプリケーションロジックの大部分はこれらのコンポーネントに含まれているため、理想的な世界では、プラットフォームに依存しない言語/スクリプト/ DSLで記述され、どのプラットフォームのアプリにもロードできます。

しかし、これは理想的な世界ではなく、モバイルデバイスでのLuaのパフォーマンスなどはまだゼロではないこと、オーバーヘッドが大きすぎること、後で問題が発生することを信じるようになりました。そのルートを下った?

これは実際にそうですか?明らかにこれは単なる架空の質問であり、Javaで簡単に作成できるので、すべてをJavaで書いてうれしいですが、実際にこのゲームを作るのは楽しいと言っていますさまざまなモバイルデバイスで)商業的に実行可能なゲームを作りたかった-Luaを使用するのか、それとも移植の際にヒットしてすべてのコードを書き直すのか

回答:


17

スクリプト言語に関する限り、Luaは非常に高速ですが、他のプロセッサと同様にプロセッサによって異なります。たとえば、Luaは非常に分岐する傾向があり、一部のコンソールプラットフォームの分岐が非常に遅いため、コンソールプラットフォームではあまり適していません。あなたの質問に最もよく答えるために、いくつかのベンチマークを実行することをお勧めします。Luaがデバイスでさまざまなアルゴリズムを実行する速度を確認します。スクリプトコードで大量の計算や反復を行わない限り、大丈夫だと思います。(とにかくそうするべきではありません。それらはスクリプトです。エンジンで計算を行います。)

とはいえ、スクリプトはプラットフォームに依存しないための特効薬ではありません。動的コードの実行に関するAppleの制限のため、iPhoneに移植する場合は、とにかくObj-Cで書き直す必要があります。リンクをすぐに手に入れることはできませんが、読む価値はあります。Apple マネージコードをほとんど許可しません(特別なディストリビューションを実行するには特別な許可が必要です)。ほとんどの場合、アプリストアへのLua実装は許可されません。

[編集]どうやらiPhoneのLuaについて間違っていたようです。以下のコメントをご覧ください。


9
LuaはiPhoneアプリケーションで広く使用されており、それを許可する用語に変更が加えられました。こちらをご覧ください:appleoutsider.com/2010/06/10/hello-lua
Colin

5
多くのコンソールアプリは実際にLUAを使用します。はい、分岐します-しかし、高レベルのロジックを制御する場合は問題ではありません。レンダーループから呼び出さないでください;)私の知る限り、ゲームのLUAは、開発者契約の最近の変更で問題ありません。LUAによって駆動されるゲームはたくさんあります。ただし、クローズドプラットフォームでの開発と同様に、プラットフォームの所有者(つまりApple)に明確な回答を求めてください。また、Obj-Cは必要ありません。iPhoneではC / C ++が問題なく使用できます。(ただし、Obj-CでUIKitを実行することをお勧めします。痛みの要因を軽減します)
レイチェルブルーム

7
魔法の石鹸箱に行ってください。Luaは頭字語ではなく名詞です。JAVAを書くことはありません。ルアは月を意味します。MOONは書かないでしょう。ありがとう-ラウ・ナチ。
deft_code

2
悲しいことに、「JAVA」を書いている人をたくさん知っています。

1
NDSでluaを多用しましたが(これはiPhoneほど強力ではありません)、非常に高速に動作しました。1つのゲームのロジックの半分以上を直接luaで作成できるほど高速です。
クライム

7

LuaのC実装は、組み込みデバイスで実行するように特別に設計されています。小さくて高速です(スクリプト言語の場合)。少なくとも軽い作業には問題ないと思っていたでしょう。


4

はい。スクリプトロジックがボトルネックになることはほとんどありません(実際にSharkまたはInstrumentsでプロファイルを作成しますか?)。ゲームロジックに多くのLuaを使用したMaroonedのiPhoneバージョンに取り組みました。私は多くのパフォーマンスチューニングを行いましたが、基本的にLuaは0%でした。

(LoonはMaroonedをリリースしたときは灰色の領域でしたが、iOS開発には公式に祝福されています。)



1

ゲームロジックのどの程度がスクリプトに埋め込まれているによって多少異なります。一般に、LUAは高レベルの接着剤として使用されますが、多くのうっとうしい作業はC(++)を介して行われます。はい、LUAはスクリプト言語に関しては高速です-まだ30〜50倍のネイティブ言語と比較して速度が低下しているので、LUAでどれだけのことが起こっているかによって異なります。


0

実際にゲーム全体をLuaで記述し、Java / ObjectiveC / C / C ++を完全に避けることができます。

クロスプラットフォーム開発にはCoronaを使用します。App StoreまたはAndroid Marketplaceに出荷するまで無料で使用できます。

iPhone / Pad / Touchをターゲットにしたい場合は、ワックスを見てください

サイドノート@Sean Edwards:ニンテンドーDS、Wii、Sony PSP、およびXbox360を対象とした5つのタイトルの出荷に携わってきました。これらはすべて同じエンジンを使用し、Luaでスクリプト化されました。コンソールやモバイルで広く使用されています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.