私はもともと、PythonとSFMLでゲームを作成することを考えていました。PythonはC ++と比較して遅いことを理解していますが、ゲームメーカーと比較してどうですか?
私が尋ねる主な理由は、最近、コンピューターでかなり悪いフレームレートで実行されたGame Makerゲーム(The Iconoclasts)をプレイしたことです(GMA 950)。Python / SFMLでも同様のパフォーマンスの問題があるのではないかと心配しています。
私はもともと、PythonとSFMLでゲームを作成することを考えていました。PythonはC ++と比較して遅いことを理解していますが、ゲームメーカーと比較してどうですか?
私が尋ねる主な理由は、最近、コンピューターでかなり悪いフレームレートで実行されたGame Makerゲーム(The Iconoclasts)をプレイしたことです(GMA 950)。Python / SFMLでも同様のパフォーマンスの問題があるのではないかと心配しています。
回答:
「PythonはC ++と比較して遅い」と言うことは、多くの現実世界の実用性を無視する一般化であり、通常は頼るには不十分な判断です。本当にやりたいことは、特定の言語や技術がニーズに応じて何をもたらすことができるかを調べ、同様に、その技術の潜在的な落ち込みをニーズに対して評価することです。
この種の質問をしなければならない場合、作成するゲームのパフォーマンスの制限要因は、テクノロジーの選択そのものではなく、あなた自身になる可能性が非常に高いです。したがって、最適な選択は、あなたに最も力を与えるもの、言い換えれば、あなたがすでに最もよく知っているテクノロジーまたは言語です。
あなたがプレイしたGame Makerゲームのパフォーマンスの低さについては、Game Makerのツールまたはスクリプト言語を介して記述された特定の貧弱なコードなど、そのゲームに固有のいくつかの要因に起因する可能性があります。それは必ずしもゲームメーカー自体のせいではありません。
あなたがプレイしたゲームが非常に遅いという最大の理由を推測しなければならなかった場合、それはゲームメーカーのゲームではないが、そのゲームメーカーは非プログラマーに特化して販売している。非プログラマーがゲームを作成しているため、問題のゲームは非常に非効率的なアルゴリズムを使用しているため、実行速度が遅くなる可能性が高くなります。
ほとんどの場合と同様に、言語の速度はプログラムの全体的なパフォーマンスにわずかな影響しか与えません。人々が「この言語は他の言語よりも50%遅い」と言って、どちらの場合も速度がまだ愚かで速い場合、エンドユーザーにはほとんどまたはまったく違いがわかりません。
Game Makerは初心者向けの優れたツールです。ただし、以前にプログラミングの経験がある場合は、より大きくより良いプログラムに移行することをお勧めします。大学の2Dゲーム開発コースでGameMakerを使用しました。使いやすくて使いやすいドラッグアンドドロップシステムがあります。ただし、問題は、プログラムのドラッグアンドドロップが最も効率的な(または論理的な)コマンドを使用しないことです。さらに、ドラッグアンドドロップは、プログラムが実行できる高度なコマンドの多くをサポートしていないため、プログラマーはそれを使って創造性を発揮するか、コードを学ぶ必要があります。ただし、GameMakerコードの使用方法を学べば、比較的簡単にそれを回避できます。
ただし、忙しいスケジュールで1つのプログラムのコードを習得するのは難しい場合があります。これが、パフォーマンスの低下を経験した理由のほとんどです。
しかし、Kort Plecoが以前に述べたように、ほとんどの言語速度は顕著に異なるわけではありません。それはすべて、コードがどのように書かれ実行されるかに依存します。多くの冗長性により、かなり遅くなる可能性があります。これは通常、コーディングの経験がないためです。
受け入れられた答えはまだありませんが、私はGMユーザーとして2セントをほぼ8年間追加したかっただけです。
GMは最適化に関して多くの問題を抱えていたため、正当な懸念があります。非推奨のメソッド* _variable_existsのグループがありますか?Gamemaker pre-studioに存在していたもの。この便利な方法のため、GM用に作成されたほぼすべての考えられるライブラリと拡張機能で活用されました。これらの方法はひどく高価であり、大規模なゲームを実行するときに大きな問題を引き起こしていたことが判明しました。
そのため、GMが本当に悪い場合が多くありますが、適切な知識と注意深い使用により、GMは他のどの方法(unity2d、pygameなど)よりも正当です。ゲームを作って楽しんでください。