No, it was here actually.

Truebrain used to run an AI tornament, but (presumably due to his inactivity), it is now offline.
Any chance of getting it back?
Moderator: OpenTTD Developers
It's moderately easy to setup one yourself; just seethis thread where Roujin started with one, but also subsequently other Battle Royals were added; such thing took me usually a full evening, though. Choose a map, choose a list of AIs and just start the game. Make sure to enable debuging in the AIs and possibly to document the game from time to time. AI authors will love you, if you give valuable feedback based on that experience.There more such runs are made, the better the overall ability to assess the strengths and weaknesses of the AIs; that may depend very much upon the settings.Lord Aro wrote:A long time ago, in a galax...
No, it was here actually.
Truebrain used to run an AI tornament, but (presumably due to his inactivity), it is now offline.
Any chance of getting it back?
I basically just chose settings which I like. Somewhat rough landscape, not too many newgrf... it really depends. Important is actually only that you know and state the important game settings which make a differenceLord Aro wrote:Ok, i sort of guessed i might get the "do it yourself" sort of answers.
I could do that, but my slow computer usually means it would take a whole day!
Some questions:
- how was truebrains tornament different?
- how hard would it be to set up again (e.g. on a home computer)?
- if i were to do a AI Battle Royale (or whatever), what sort of settings are involved? (e.g. no. of yrs, difficulty setting, etc)
can't because it in my bedroomKogut wrote:Or you can leave computer for night.
Lord Aro wrote: Some questions:
- how was truebrains tornament different?
- how hard would it be to set up again (e.g. on a home computer)?)
It ran from a script and had some custom code to open some windows upon starting OpenTTD, to make screenshots and to stop at a particular time. So the major difference is that TrueBrain's tournament ran mostly automatically.Lord Aro wrote:- how was truebrains tornament different?
Not that hard, you just need to know how to open the windows, how to make the screenshots and how to stop OpenTTD.Lord Aro wrote:- how hard would it be to set up again (e.g. on a home computer)?
ok, can i get a copy of the last/latest version from anywhere?Rubidium wrote:It ran from a script and had some custom code to open some windows upon starting OpenTTD, to make screenshots and to stop at a particular time. So the major difference is that TrueBrain's tournament ran mostly automatically.Lord Aro wrote:- how was truebrains tornament different?Not that hard, you just need to know how to open the windows, how to make the screenshots and how to stop OpenTTD.Lord Aro wrote:- how hard would it be to set up again (e.g. on a home computer)?
Code: Select all
the_overlord@Toby-Linux:~/tournament-hg-3c6aa93c9223$ ./run.py
|-- Tournament (group) running (18 AIs)
Traceback (most recent call last):
File "./run.py", line 53, in <module>
res = tournament.run(2, configure = ["cfgs/default.cfg", "cfgs/default.cfg"], seed = [random.randint(0, 2147483647), random.randint(0, 2147483647)], years = years)
File "/home/the_overlord/tournament-hg-3c6aa93c9223/tournaments/group/game.py", line 38, in run
return self.runTournament(1, self.ai_list, rounds, configure = configure, scenario = scenario, seed = seed, years = years)
File "/home/the_overlord/tournament-hg-3c6aa93c9223/tournaments/group/game.py", line 58, in runTournament
poule.run(rounds = rounds, configure = configure, scenario = scenario, seed = seed, years = years)
File "/home/the_overlord/tournament-hg-3c6aa93c9223/tournaments/group/poule.py", line 24, in run
matches[i].run(configure = configure[i], scenario = scenario[i], seed = seed[i], ticks = years * 366 * 74 + 20)
File "/home/the_overlord/tournament-hg-3c6aa93c9223/lib/match.py", line 37, in run
out_file = open("game/scripts/game_start.scr", "w")
IOError: [Errno 2] No such file or directory: 'game/scripts/game_start.scr'
Code: Select all
........
tournament
run.py
*other tournament related files*
game
*others*
scripts
game_start.scr
Code: Select all
Index: src/economy.cpp
===================================================================
--- src/economy.cpp (revision 15254)
+++ src/economy.cpp (working copy)
...*other stuff*....
@@ -1481,6 +1485,13 @@
st->time_since_unload = 0;
/* handle end of route payment */
+ switch (v->type) {
+ case VEH_TRAIN: GetCompany(v->owner)->deliver_rail += cp->count; break;
+ case VEH_ROAD: GetCompany(v->owner)->deliver_road += cp->count; break;
+ case VEH_AIRCRAFT: GetCompany(v->owner)->deliver_air += cp->count; break;
+ case VEH_SHIP: GetCompany(v->owner)->deliver_ship += cp->count; break;
+ default: break;
+ }
Money profit = DeliverGoods(cp->count, v->cargo_type, cp->source, last_visited, cp->source_xy, cp->days_in_transit, &industry_set);
cp->paid_for = true;
route_profit += profit; // display amount paid for final route delivery, A-D of a chain A-B-C-D
Code: Select all
void CargoPayment::PayFinalDelivery(const CargoPacket *cp, uint count)
{
if (this->owner == NULL) {
this->owner = Company::Get(this->front->owner);
}
/* Handle end of route payment */
Money profit = DeliverGoods(count, this->ct, this->current_station, cp->SourceStationXY(), cp->DaysInTransit(), this->owner, cp->SourceSubsidyType(), cp->SourceSubsidyID());
this->route_profit += profit;
/* The vehicle's profit is whatever route profit there is minus feeder shares. */
this->visual_profit += profit - cp->FeederShare();
}
Code: Select all
const Vehicle *v = this->front;
Code: Select all
[SRC] Compiling date.cpp
/home/the_overlord/coding/OTTD/ottdsrc/trunk/src/date.cpp: In function ‘void IncreaseDate()’:
/home/the_overlord/coding/OTTD/ottdsrc/trunk/src/date.cpp:278: error: ‘FOR_ALL_COMPANIES’ was not declared in this scope
/home/the_overlord/coding/OTTD/ottdsrc/trunk/src/date.cpp:278: error: expected ‘;’ before ‘{’ token
/home/the_overlord/coding/OTTD/ottdsrc/trunk/src/date.cpp:361: error: expected ‘}’ at end of input
/home/the_overlord/coding/OTTD/ottdsrc/trunk/src/date.cpp:361: error: expected ‘}’ at end of input
/home/the_overlord/coding/OTTD/ottdsrc/trunk/src/date.cpp: At global scope:
/home/the_overlord/coding/OTTD/ottdsrc/trunk/src/date.cpp:191: warning: ‘void OnNewYear()’ defined but not used
/home/the_overlord/coding/OTTD/ottdsrc/trunk/src/date.cpp:229: warning: ‘void OnNewMonth()’ defined but not used
/home/the_overlord/coding/OTTD/ottdsrc/trunk/src/date.cpp:251: warning: ‘void OnNewDay()’ defined but not used
make[1]: *** [date.o] Error 1
make[1]: Leaving directory `/home/the_overlord/coding/OTTD/ottdsrc/trunk/objs/release'
make: *** [all] Error 1
Code: Select all
Index: src/date.cpp
===================================================================
--- src/date.cpp (revision 20632)
+++ src/date.cpp (working copy)
...*other-stuff*....
@@ -271,6 +273,64 @@
/* increase day, and check if a new day is there? */
_tick_counter++;
+ if (*VideoDriver_Null::GetCurrentTicks() == *VideoDriver_Null::GetTicks() - 10) {
+ Company *c;
+ FOR_ALL_COMPANIES(c) {
+ int32 profit_ship, profit_road, profit_train, profit_air;
+ int32 deliver_ship, deliver_road, deliver_train, deliver_air;
+ int32 amount_cash, amount_loan, amount_company;
+ int32 town_rating, cargos;
+
+ profit_ship = 0;
+ profit_road = 0;
+ profit_train = 0;
+ profit_air = 0;
+
+ {
+ Vehicle *v;
+ FOR_ALL_VEHICLES(v) {
+ if (v->owner != c->index) continue;
+ if (v->IsPrimaryVehicle()) {
+ switch (v->type) {
+ case VEH_SHIP: profit_ship += v->profit_last_year; break;
+ case VEH_ROAD: profit_road += v->profit_last_year; break;
+ case VEH_TRAIN: profit_train += v->profit_last_year; break;
+ case VEH_AIRCRAFT: profit_air += v->profit_last_year; break;
+ default: NOT_REACHED();
+ }
+ }
+ }
+
+ profit_ship >>= 8;
+ profit_road >>= 8;
+ profit_train >>= 8;
+ profit_air >>= 8;
+ }
+
+ deliver_ship = c->deliver_ship;
+ deliver_road = c->deliver_road;
+ deliver_train = c->deliver_rail;
+ deliver_air = c->deliver_air;
+
+ amount_cash = c->money;
+ amount_loan = c->current_loan;
+ amount_company = CalculateCompanyValue(c);
+
+ cargos = CountBits(c->cargo_types);
+ town_rating = 0;
+
+ Town *t;
+ int towns = 0;
+ FOR_ALL_TOWNS(t) {
+ town_rating += t->ratings[c->index];
+ towns++;
+ }
+ town_rating /= towns;
+
+ printf("%d %d %d %d %d %d %d %d %d %d %d %d %d %d\n", (byte)c->index, profit_ship, profit_road, profit_train, profit_air, deliver_ship, deliver_road, deliver_train, deliver_air, amount_loan, amount_cash, amount_company, cargos, town_rating);
+ }
+ }
+
if (_game_mode == GM_MENU) return;
_date_fract++;
Users browsing this forum: No registered users and 7 guests