外部プログラムと値の受け渡しについて

ホーム フォーラム CF2.5使用法全般 外部プログラムと値の受け渡しについて

  • このトピックには7件の返信、2人の参加者があり、最後にASDにより6年、 8ヶ月前に更新されました。
8件の投稿を表示中 - 1 - 8件目 (全8件中)
  • 投稿者
    投稿
  • #14184
    ZAKUII
    参加者

    複数の外部プログラムを1本のソフト内で使用したい場合、どうしても変数を共用したい場合があると思うのですが具体的にはどう処理すれば良いのでしょうか?
    例えば、
    エリア1.exe , エリア2.exe
    というプログラムがあり互いに行き来するような仕様でもゲーム進行上のパラメータ等が入っている変数はどこかでもっている必要があると思います。
    どの外部プログラムからでもアクセスできるような変数の作り方、または外部プログラム間での受け渡し方法などがありましたらご教示願います。

    #14190
    ASD
    キーマスター

    >>ZAKUIIさん
    複数の方法があります。

    1.ビルドタイプを『サブアプリケーション』に設定してビルドし、サブアプリで実行する。
    『サブアプリケーション(.ccn)』としてビルドしたファイルはサブアプリケーションオブジェクトで実行することができます。複数のccnファイルで構成されたアプリケーションでも、プレイヤーはメインのexe1つで実行していると認識することができます。

    2.『共有データオブジェクト』を使用する。
    同時に起動している複数のアプリ間で値や文字列を共有することができます。欠点は共有対象を指定できないので、全く無関係のアプリも同じオブジェクトを持っていた場合、それとも共有されてしまいます。

    3.エクステンションの『Instance Communicator』を使用する。
    上記『共有データオブジェクト』と同じような仕組みのものですが、こちらはIDによって同じアプリであることを指定することができます。

    4.外部ファイルに値を書き出し、複数のアプリで同じファイルにアクセスする。
    INIオブジェクトなどで一旦外部へ内容を書き出し、別のアプリでそのファイルへアクセスする方法です。アプリが同時起動でない場合はこの方法になるでしょう。

    #14192
    ZAKUII
    参加者

    お答えいただきありがとうございます。
    1番か4番の方法でいきたいと思っております。
    正直、4番の方法は考えていたのですが実行ファイルが複数あり、どのファイルを起動しても起動してしまうようでは困ります。
    例えばエンディングだけ見れてしまうような…。
    もちろんそうならないように細工をすればいいのでしょぅが、そこに時間を取られるのはどうかと判断しました。
    そのようなことからきちんと1番のような方法で作るのが良いかと思いました。
    試してみたいと思いますが、不明な点がありましたらまた質問させてください。

    #14197
    ASD
    キーマスター

    CF2.5ユーザーであれば、ツールを起動してccnファイルを実行できてしまいます。
    そこで私がしている対策ですが、グローバル文字列にランダムな文字でパスワードを設定して、ccn実行時にメインexeからそれを渡すようにします。ccn側で開始時にグローバル文字列の内容を調べて、パスワードの文字列が入っていればそのまま続行、入っていなければ即終了するようにしています。

    後、注意点として、ccn側でアクティブオブジェクトや背景オブジェクトなど以外の、いわゆるエクステンションが使用されている場合、メインexeにも同じオブジェクトが存在している必要があります(ccnではエクステンションファイル(.mfx)を含まずビルドされるため)。

    #14202
    ZAKUII
    参加者

    もしかしてなんですが、ccnファイルに変換するとき、外部ファイルを含めて変換することってできませんか?
    例えば動画ファイルとか音楽ファイルとか…

    #14206
    ASD
    キーマスター

    外部ファイルはアプリケーションプロパティの『外部ファイルを含める』をチェックするか、『データエレメンツ』の『バイナリデータ』に含めたいファイルを追加してビルドすると含まれます。

    ccnの場合は、『バイナリデータ』に追加して含める方法は使えますが、『外部ファイルを含める』のオプションでは含めてビルドすることができません。『外部ファイルを含める』を使用する場合は、ccnファイルを実行する親アプリで、同じファイルを参照しておき(オブジェクトは『開始時に作成』を外して不使用でOK)、親アプリで『外部ファイルを含める』をチェックしてビルドすることで含めることができます。

    サウンドの再生方法には『サウンドを再生』と『サウンドファイルを再生』の2種類がありますが、『ファイル』の付かない方のアクションを使用するとサウンドファイルはアプリケーションに含まれる仕様となっております。

    #14224
    ZAKUII
    参加者

    「バイナリデータ」として外部ファイルを埋め込む件は解決しました。
    ありがとうございました。

    肝心の変数による値の共有化という件ですが具体的にはどうようにするのでしょうか?
    今現在、メインで作成したグローバル変数「HP」というのがあります。
    それをサブアプリケーション(ccn)で使用するにはどうするのでしょうか?
    ccn側ではその変数名が「グローバル変数 A」などという名前に変わってますがここは「HP」にはならないのでしょうか?
    またさせるにはどのようにしたらよいのでしょうか?

    #14225
    ASD
    キーマスター

    サブアプリケーションのプロパティでグローバル変数を共有する設定にしてください。
    名前が一致していなくてもインデックス(指定している変数の位置番号)が同じであれば関係ありません。変えたいのであればccn側のmfaを開いて名前を変更してからビルドすれば良いでしょう。

8件の投稿を表示中 - 1 - 8件目 (全8件中)
  • このトピックに返信するにはログインが必要です。