2

新しい GameMaker 2 アップデートでは、多くの大きな変更があります: https://help.yoyogames.com/hc/en-us/articles/360011980018

このエンジンでゲーム ( https://store.steampowered.com/app/733460/First_Feudal/ ) を 3 年間開発しました。以前は状態を処理する方法が他にありませんでした: 配列のみでした。構造体とモデル オブジェクトはありません。

したがって、ゲームには非常に多くの配列があります。1 次元と 2 次元の配列を使用します。これからは、GML には 1 次元配列のみがあり、2 次元またはその他の多次元配列は 1 次元配列の 1 次元配列です。

今のところ、GameMaker を 2.2 から 2.3 にアップデートした後、アレイは正常に動作する可能性があります。しかし、いくつかの問題があります。まず、一部の配列関数は次のバージョンで非推奨になります。また、それらの一部 (array_height_2d など) は、1 次元と 2 次元のロジックを混在させると、異なる方法で動作する場合があります。

では、2 次元配列を新しい 2.3 形式に更新し、廃止された関数を後で使用しないようにするにはどうすればよいでしょうか?

4

2 に答える 2

0

まず、スクリプトを使用して(vbsまたはpowershellで)実行したいのですが、ファイルを開いて書き換える最良の方法の問題により、このアイデアには多くの時間がかかります。書き換え後のファイル コード形式に問題がある可能性があります。+それらの正規表現を調査する時間。また、いくつかのログシステムが開発されています(どのファイルがどのように変更されたかを知るため)。正規表現検索がないため、GMS だけを使用することはできません。

したがって、私にとって最良の方法は Notepad++ ( https://notepad-plus-plus.org/downloads/ ) でした。

まず、すべての [i,j] を [i][j] に置き換えます

  • メモ帳++を開く
  • プロジェクト フォルダのドラッグ アンド ドロップ
  • 職場のフォルダーを右クリック > ファイル内を検索..
  • [ファイル] タブで検索
  • 何を見つける:([\w])(\[\s*)([^\]\[]+)(\s*,\s*)([^\[\]]+)(\s*\])
  • と置換する:\1\[\3\]\[\5\]
  • フィルター:*.gml
  • 正規表現ラジオボタン
  • すべてのサブフォルダー内のチェックボックス
  • [すべて検索] ボタン
  • 見つかったすべての場所を調査し、すべて OK の場合は [ファイルで置換] ボタンをクリックします。

次に、[[i][j],k] を [[i][j]][k] に修正することを考えます。

  • 前と同じですが、
  • 何を見つける:([\w])(\[\s*)([^\]\[]+\]\[[^\]\[]+\])(\s*,\s*)([^\[\]]+)(\s*\])
  • と置換する:\1\[\3\]\[\5\]
  • 難しいロジックがある場合は問題になる可能性があります

次に、すべての array_height_2d を array_length に置き換えます

  • 前と同じですが、
  • 何を見つける:array_height_2d\(
  • と置換する:array_length\(
  • array_height_2d の存在を確認する

3番目に、すべてのarray_length_2dをarray_lengthに置き換えます

  • 前と同じですが、
  • 何を見つける:(array_length_2d\(\s*)([^\(]+)(\s*,\s*)([^\)]+)(\s*\))
  • と置換する:array_length\(\2\[\4\]\)
  • array_length_2d の存在を確認します (array_length_2d チェック内でスクリプトを使用している場合がある可能性があります)

最後に、すべての array_length_1d を array_length に置き換えます

  • 前と同じですが、
  • 何を見つける:array_length_1d\(
  • と置換する:array_length\(
  • array_length_1d の存在を確認する

また、2 次元配列の作成に問題がある可能性もあります。アクセサーを使用する場合は、プロパティにアクセスする前に配列を完全に初期化する必要があります。(以前は、アクセサ自体が配列サイズを増やしていました)

次に、その他のコーナー ケースを修正します。

于 2020-09-06T16:56:22.613 に答える