2017-05-14 6 views
0

メモリに問題があります。私のすべてのデータ(オブジェクトではありません)を保存する必要がありますが、時々リセットされます。 例:Screeps - メモリのプロパティがリセットされます

Memory.creeps_idx = 0; 

module.exports.loop = function() { 

    console.log("c_idx:", Memory.creeps_idx, Game.time); 

    if(Memory.creeps_idx==0) 
    { 
     Memory.creeps_idx+=1; 
    }  
} 

これはコンソールから出力されます。

[13:41:01]c_idx: 0 1115 
[13:41:03]c_idx: 1 1116 
[13:41:05]c_idx: 0 1117 
[13:41:07]c_idx: 1 1118 
[13:41:09]c_idx: 1 1119 
[13:41:11]c_idx: 1 1120 
[13:41:13]c_idx: 1 1121 
[13:41:15]c_idx: 1 1122 
[13:41:17]c_idx: 0 1123 
[13:41:19]c_idx: 1 1124 
[13:41:21]c_idx: 1 1125 
[13:41:23]c_idx: 1 1126 
[13:41:25]c_idx: 1 1127 

creeps_idxが値を0に変更する理由を教えてください。 (これはシミュレータでテストされた)

答えて

0

私は解決策を自分で見つけました。

module.exports.loop = function() { 
    if (!Memory.creeps_idx) Memory.creeps_idx = 0; 
    console.log("c_idx:", Memory.creeps_idx, Game.time); 

    if(Memory.creeps_idx==0) 
    { 
     Memory.creeps_idx+=1; 
    } 
} 
2

基本的に、module.exports.loop以外のものは、数ダニごとに1回実行されます。このため、元の例でcreep_idxがリセットされ、ソリューションが動作する理由がわかります。

メインモジュールの実行方法が新しくなりました。古いスタイルのアーキテクチャーでは、すべてのティックごとに実行され、そこから必要とされるすべてのモジュールも毎回実行されます。新しいアーキテクチャでは、メインモジュールにゲームループで実行されるmodule.exports.loop関数が含まれている必要がありますが、残りのメインモジュールの内容は新しいグローバルがインスタンス化された後にのみ実行されます。

http://support.screeps.com/hc/en-us/articles/204825672-New-main-loop-architecture

関連する問題