Gamemakerは、優れたRADを可能にする優れたツールです。ただし、かなりの欠点があります。それらの1つは、優れた標準ライブラリの欠如です。
確かにあなたは「ds_*」タイプのメンバーを持っていますが、それらはかなり欠けています。たとえば、優先キューは1回限りのタイプです(プロセスで破棄されます)。リストのソート機能は、ひどい遅い方法を使用しています。(公式には発表されていませんが、バブルソートを使用していると思われます)。そして、リンクリストの組み込みメソッドはありません。その上、単純なメンバーアクセスは本来よりも遅くなります。
これで、実際にそれらを母国語で作成できるようになりました。ただし、かなり遅くなります(インタプリタが遅いため)。つまり、クイックソート/ヒープソートの作成は、多くの場合、組み込みのソートよりも遅くなりました。ノードごとに特別なオブジェクトを使用して、独自の「リンクリスト」を作成すると、オーバーヘッドが大きすぎました。(ゲームメーカーの各オブジェクトは、各ステップで多くのことを行います)。
そこで、今は標準ライブラリ用のC++レイヤーの作成を検討しています。いくつかの機能を追加し(ハッシュテーブルとリンクリストが主なターゲットです)、より良いアルゴリズムを可能にしたいと思っています。1つの大きな問題を除いて、ほとんどの問題について、私はすでにそれに取り組む方法を考えています。
すべてのC++ライブラリは、「イテレータ」を使用してアイテムを識別します。Gamemakerでは、ダブル(またはcスタイルの文字配列)をdllとの間でのみ受け渡すことができます。
これをどのように回避しますか?アイテムのインデックスを返さないのは非常にばかげているので、これらのイテレータをdoubleにマップする方法を見つける必要があります。
これの良いアイデアは何ですか?すべてのデータ構造を単純に書き直して、イテレータが1対1のマップを2倍(または実際にはdouble +データ構造インデックス)にすることが保証されるようにするのが最善ですか?それとももっと良い方法がありますか?
PSなぜゲームメーカーのタグがまだそこにないのですか?