ok, after reading your answer I was able to get something "interesting" : TestBotAI.prototype.OnUpdate = function(){ var gameState = new GameState(this); var test = gameState.updatingCollection("test", Filters.byClass("Worker"), gameState.getEntities()); test.forEach(function(ent) { if( ent.owner() == gameState.player ) { ent.setHitpoints(0); // see below warn( ent.hitpoints() ); } }); warn(test.length);};this code create a collection (named test) of workers and then I set the hitpoints of each entity in test to 0 trough ent.setHitpoints(0). The line, warn( ent.hitpoints() );print 0 as espected, but in game my entities hitpoints aren't updated. I guess it's because the collection copy the values, from the real "entity" value. So now, my first question : it is possible to change hitpoints of an entity trough the AI script ? I guess no, I guess I have to write some code like cheat code and using Engine.PostCommand. So this lead me to another qusetion, it would be more slow to read the true data of the entity ? I mean there is not possible to use a pointer to the true data ? in such case it would be possible to read and write in real time (I mean without having to update the collection). Because right now, if we have to update each "turn" all collections, one for knowing the hitpoints of each entity, it would cost CPU time for nothing if in the game no hitpoints were modified. and moreover collections are using memory (I guess not a big deal). I'm using JS since today, during my break time... so I guessed a lot...