Name of opponent algo

Is there a way to let my algo see the name of the opponents algo?

ah that’s too bad, so no special algo for every worthy opponent

Given the way the game communicates with the algo via stdin/stdout, any player info would have to be included as part of the initial game config. As far as I’m aware, the replay files show the same chatter your algo gets during the match. So you could checkout out what it is told in the first line of any replay you have.

The categories it gives us today are: debug, unitInformation, timingAndReplay, resources, and mechanics.

At the end of the match, it spits out end stats that does include algo name:

"player2": {
	"stationary_resource_spent": 109.0,
	"dynamic_resource_spoiled": 5.3,
	"crashed": false,
	"name": "WINFASTER",
	"dynamic_resource_destroyed": 117.0,
	"time_damage_taken": 0,
	"dynamic_resource_spent": 117.0,
	"stationary_resource_left_on_board": 14.0,
	"timeout_death": false,
	"points_scored": 0.0,
	"total_computation_time": 27781
},

But that would no longer be useful in what you were hoping to accomplish!

On a different note, the mechanics section may hint at possible future game play variations:

"mechanics": {
	"basePlayerHealthDamage": 1.0,
	"damageGrowthBasedOnY": 0.0,
	"bitsCanStackOnDeployment": true,
	"destroyOwnUnitRefund": 0.5,
	"destroyOwnUnitsEnabled": true,
	"stepsRequiredSelfDestruct": 5.0,
	"selfDestructRadius": 1.5,
	"shieldDecayPerFrame": 0.15,
	"meleeMultiplier": 0.0,
	"destroyOwnUnitDelay": 1.0,
	"rerouteMidRound": true,
	"firewallBuildTime": 0.0
}

1 Like

Without a response from C1, we probably won’t get very far speculating. But I’ll do it anyway :wink:

If they really were abandoned features, I would have expected them to have dropped it (but certainly real-world software development leaves vestigial features from time to time).

The game engine has no dependency on the consuming algos and the starterkit only consumes the unit and resource config data. So if they dropped them from game play, it’d be trivial to drop them from the initial game engine config, especially if the decision was made prior to actually going live.

From another thread:

So maybe these remnants are from those internal discussions about variations they played with but weren’t ready to fully rule out?

It is a good thing that you can’t get your opponent name, it would be to easy to just copy a strategy that has worked before against each algo.

You can still try to do this yet by trying to identifie the algo by their unit placement, and then try to replicate a winning strategy from a downloaded match database, but being a few turns late. I have already done that kind of thing with success in another programming tournament that has a kind of battleship game, crushing every opponent that did not randomize the placement of their ships. But I feel like in Terminal the few first turn are way too important, so I don’t know if that would work.

The mechanics increases robustness and allows some game mechanics that are essentially constant variables be easily adjusted, if we wanted to do something like a competition with unique rules (Which would force algos in said competition to design around the rule changes). We have some ideas for how we might make use of it and possibly altered configs in the future, but its not used right now.

To confirm the answer to the original question, you should not be able to get the name of the opposing algo during the game.

1 Like