問題タブ [game-maker]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
game-maker - ゲームメーカー言語改行
私は GML スクリプトを書いていて、次の行にメッセージを表示する方法を知りたいと思っていました:
元。
出力:
c++ - ゲームメーカーがC++標準ライブラリを処理できるようにするラッパーdllを作成する
Gamemakerは、優れたRADを可能にする優れたツールです。ただし、かなりの欠点があります。それらの1つは、優れた標準ライブラリの欠如です。
確かにあなたは「ds_*」タイプのメンバーを持っていますが、それらはかなり欠けています。たとえば、優先キューは1回限りのタイプです(プロセスで破棄されます)。リストのソート機能は、ひどい遅い方法を使用しています。(公式には発表されていませんが、バブルソートを使用していると思われます)。そして、リンクリストの組み込みメソッドはありません。その上、単純なメンバーアクセスは本来よりも遅くなります。
これで、実際にそれらを母国語で作成できるようになりました。ただし、かなり遅くなります(インタプリタが遅いため)。つまり、クイックソート/ヒープソートの作成は、多くの場合、組み込みのソートよりも遅くなりました。ノードごとに特別なオブジェクトを使用して、独自の「リンクリスト」を作成すると、オーバーヘッドが大きすぎました。(ゲームメーカーの各オブジェクトは、各ステップで多くのことを行います)。
そこで、今は標準ライブラリ用のC++レイヤーの作成を検討しています。いくつかの機能を追加し(ハッシュテーブルとリンクリストが主なターゲットです)、より良いアルゴリズムを可能にしたいと思っています。1つの大きな問題を除いて、ほとんどの問題について、私はすでにそれに取り組む方法を考えています。
すべてのC++ライブラリは、「イテレータ」を使用してアイテムを識別します。Gamemakerでは、ダブル(またはcスタイルの文字配列)をdllとの間でのみ受け渡すことができます。
これをどのように回避しますか?アイテムのインデックスを返さないのは非常にばかげているので、これらのイテレータをdoubleにマップする方法を見つける必要があります。
これの良いアイデアは何ですか?すべてのデータ構造を単純に書き直して、イテレータが1対1のマップを2倍(または実際にはdouble +データ構造インデックス)にすることが保証されるようにするのが最善ですか?それとももっと良い方法がありますか?
PSなぜゲームメーカーのタグがまだそこにないのですか?
game-maker - ゲームメーカーが変数を認識しない
GameMaker8 Pro で MMO スタイルのゲームのターゲティング配列を設定しようとすると、プレイヤーのキャラクターの作成イベントに次のコードが含まれています。これは完全に正常に実行されています。
次に、プレイヤー キャラクターのステップ イベントで次のコードを実行します。
次のエラー メッセージを返します。
敵の作成イベントにこれがありますが:
そして、私はこの種の構文をいたるところで使用しました:
ヘルプ?Game Maker が変数を認識しない理由はありますか?
c++ - Win32 リスト ボックス コントロールに項目を追加できません
バックストーリー: 人気のあるゲーム開発スイートである Game Maker の拡張機能を作成しています。拡張機能は、組み込みのスクリプト言語に新しい機能を追加する DLL ですが、C や Pascal などで記述されています。通常、ゲームが外部ライブラリを使用できるようにするために使用されます。
私の場合、FMOD サポートを追加しています。これは関係ありません。関連するのは、デバッグの目的で、ライブラリの内部状態を示す実行時に表示するダイアログも追加していることです。このウィンドウについて助けが必要です。私は文字通り、今日まで生の Win32 フォーム プログラミングをまったく行っていません (.NET WinForms 4eva)。
ともかく。リストボックスがあり、リスト ボックスに項目を追加したいのですが、追加しようとすると失敗します。私のコード:
DebugDialog
は、ウィンドウをラップする単純なクラスであり、外部から操作できるようにします。基本的に、他の時点で、私はこれを行います:
そして、興味深いことを実行して実行するときは、次のようにします。
でloadedSound
、リストボックスに「やあ、ここに項目があります。どうぞ、追加してください」というメッセージを送ったところ、エラーは返されませんでした。ただし、ボックスには何も追加されません。呼び出すたびに0を返します。ドキュメントによると、0 は、インデックスが 0 のアイテムが追加されたことを意味します。ただし、そのアイテムは存在しません。
なぜそれが機能しないのかについて、私は理論を持っています。Game Maker が実行するメッセージ ポンプを制御することはできません。そのため、おかしな動作をしていても、それについてはわかりませんし、変更することもできません。とはいえ、ダイアログの移動、[閉じる] ボタンのクリック、リストボックス内のマーキーのマウスによる描画など、ダイアログに関する他のすべての機能が動作します。
誰か、私がひどく間違っていることを教えてください:(
編集:誰かが構造体について尋ねたFMODGM_Sound
ので、ここにあります:
特に派手なものはありません。
dll - -staticなしでコンパイルすると、mingwでコンパイルされたGame Maker拡張機能が終了時にクラッシュするのはなぜですか?
mingw 4.5.0でDLLをコンパイルし、GameMaker8.0拡張機能として使用します。GameMakerは動的にdllをロードします。すべてが機能しているように見えますが(dll関数が呼び出され、正しい戻り値を提供します)、Game Makerを閉じると、「Microsoft Visual C ++ランタイムライブラリ」、「このアプリケーションはランタイムに異常な方法で終了するように要求しました。 「」その後、プロセスはバックグラウンドで数秒間残り、その後消えます。
これは、dllの関数が実際に呼び出されていない場合にも発生します。はなくDllMain
、すべての静的/グローバル変数は基本的なデータ型またはですstd::string
(実際には、std :: stringsを削除したときにも発生します)。
dllはzlibおよびlibpngと静的にリンクします。ランタイムを静的にリンクするリンカーに-staticを渡すと、問題は解消されるようです。ただし、これによりDLLのサイズが大幅に大きくなり、何が起こっているのかを理解するまでは、せいぜい回避策になります。
原因は何かについてのアイデアはありますか?
更新:実際、問題は2つのエクステンソンがGame Makerにロードされた場合にのみ発生するようです。1つは-staticにリンクされたdllを使用し、もう1つは使用しません。-staticを使用せずに両方をリンクすると、問題が解消されます。ただし、dllが直接相互作用したり、データ構造を共有したりすることはないため、私はまだ問題を理解していません。
アップデート2:最近、これがGameMaker自体の奇妙な動作に関連している可能性があることを発見しました。DLLのロード時にグローバル変数が正しく初期化されていないようです。これにより、グローバルオブジェクトが所有していないメモリを解放しようとすると、アンロード時にクラッシュが発生する可能性があります。つまり、-staticは、グローバルが関連付けられている初期化されていないメモリの値を変更する単なるランダムな要因でした。
アップデート3:アップデート2のように関連している可能性が高いため、これがゲームメーカーの拡張機能に関する情報を含むように上記を変更しました。
c++ - リソースを単一の実行可能ファイルに埋め込む方法は?
Game Makerというツールを使ったことがあるなら、それは少し似ています。サウンド、画像、その他すべてのものを取り込んで、単一の C++ 実行可能ファイルに埋め込むことができるようにしたいと考えています。ゲーム メーカーには組み込みのエディターがあり、画像が .gmk ファイルに埋め込まれており、それを開くと、画像が読み込まれ、ゲームに表示されます。彼は画像を画像としてではなく、純粋なデータとして .gmk ファイルに保存し、エディターまたは .exe に書き込まれたインタープリターによって解釈したと考えています。似たようなものを作るにはどうすればよいですか?
c++ - C++ での GameMaker のような機能
若い頃、ゲームメーカーというツールをよく使っていました。そこからプログラミングを学び始めました。私は今それをはるかに超えていますが、振り返ってみると、その機能とデザインのいくつかは非常に興味深いものです. C++ を使用して、このツールと同様の機能を実装するにはどうすればよいでしょうか。私は疑問に思っています:
- オブジェクト/クラス
Game Makerには、作成する「オブジェクト」のリストがありました。これらは、基本的にすべてが同じ基本クラス(今はゲームオブジェクトと呼びます)から派生した単なる異なるクラスであり、オブジェクトタイプを取る「instance_create」と呼ばれるシステム関数です。パラメータとして。C++ では、これは次のようになります (ただし、構文的には非常に正しくありません)。
それを実装するにはどうすればよいですか?
- システム変数/関数
ゲーム・メーカーには、どこからでもアクセスできるシステム変数と関数がありました。限目。どこでも。私はグローバルを考えていますが、それが悪い設計であることは知っています。私はグローバルクラスを持ち、変数/関数を静的として持っていると考えていますが、それらは変更できません。どうすればいいですか?
- 変数
Game Maker には var という 1 つのデータ型しかありませんでした。文字列、整数、小数など、何でもかまいません。そして、それらの間の変換のためのシステム関数がありました。
最後に、ある種のスクリプトでオブジェクト タイプを定義するにはどうすればよいでしょうか。たとえば、新しいタイプのオブジェクトを追加したい場合は、新しいスクリプトを作成しますか? C++ は実行時にオブジェクト型を作成できないと思いますが、どうすればよいでしょうか?
ruby - GameMakerのGMLおよびRPGMakerXPRGSSのテキストファイル保護
私はゲームメーカー8で作られたプログラムとRPGツクールXPで作られたRPGの2つのプロジェクトに取り組んできました。私がやろうとしていることの1つは、RPGツクールXPにゲームメーカーで作られた「スコアファイル」を読み取らせることです。 、スコアファイル自体は、ゲームメーカープログラムとRPGツクールXPゲームの両方がデータを収集するために読み取る基本的なテキストファイルです。
私が直面している問題は、誰かがこのスコアファイルをメモ帳などのテキストエディタで開くと、データを変更して「チート」する可能性があることです。そのため、私がやろうとしているのは、ファイルを暗号化して、一見したところ、判読不能、GameMakerとRPGMaker XPにファイルを復号化させ、ファイルからすべてのデータを引き出してから暗号化します
ただし、問題が発生しました。GameMakerで使用していた.dllは、スコアファイルの暗号化/復号化が異なるようです。同じテキストを含む2つの同一の.txtファイルを作成して、.dllをテストし、 2つのプログラムでは、内容が完全に異なっていました。つまり、GameMakerで暗号化されたRPGMaker XPでファイルを復号化しようとすると、失敗します。
私は他の.dllを試しましたが、RPG Maker XPでは機能しないようです。私が理解していることから、RGSSはRubyのクラスです。つまり、Rubyで機能するコードはRPGMakerXPおよびRubyとGameの間で機能します。 MakerのGML、Cは、2人が.dllを使用できる一般的な言語です。
だからここに私が求めているものがあります、.dll、スクリプト、コードなどはありますか?これを使用して、テキストファイルのデータをGameMakerおよびRPGMakerXPの外部で編集されないように保護できます。
トロイ「メモ-X」メモ
PS:.phpプログラムでも機能するメソッドがあれば、それも素晴らしいでしょうが、それができない場合は回避できます
game-maker - 2D エッジの色あせた雲を作成
こんにちは、申し訳ありませんが、ここでこの質問をすることについて誤解した場合. 私はゲーム メーカーと仕事をしていますが、最近解決できない問題にぶつかりました。雲のスプライトがあり、プレイヤーがその上を歩く崖がいくつかあります。崖の上の雲を、私が言う部分 (崖の始点と終点) だけをレンダリングする方法で表示したいのですが、次に主な問題は、雲が x ベクトルの開始位置の終わりに向かうときです。その部分をフェードさせるものがないため、醜いスライスピースになります。最初の部分はやりましたが、フェードのためにできませんでした。
掘るのがちょっと難しいのはわかっていますが、その人には申し訳ありません。私が言及したものが得られなかった場合は、画像を置くことができます。要するにスライスした部分にフェード効果を出す仕掛けが欲しい。