OpenTTD Programmeer Challenge

Pagina: 1 2 Laatste
Acties:

Acties:
  • 0 Henk 'm!

  • Sjaaky
  • Registratie: Oktober 2000
  • Laatst online: 12-09 10:25
Programmeer Challenge OpenTTD

Na het succes van vorig jaar organiseert het bedrijf waar ik werk voor de tweede keer een programmeer challenge. Dit jaar is het de bedoeling dat engines van verschillende deelnemers het spel OpenTTD tegen elkaar spelen.

Transport Tycoon

Transport Tycoon is een succesvol computerspel uit 1994 waarin de speler een transportbedrijf bestuurt en het moet opnemen tegen rivaliserende bedrijven in de strijd om het grootste transportimperium. Door passagiers en goederen te vervoeren over de weg, via het spoor, over het water en door de lucht komen er inkomsten binnen waarmee nieuwe infrastructuur en vervoersmiddelen kunnen worden aangekocht.

Transport Tycoon is in feite een businesssimulator op transportgebied. Het spel begint in 1930 (in de originele versie) of in 1950 (in de Deluxe-versie) en het is de bedoeling om zoveel mogelijk geld te verdienen en de concurrentie voor te blijven. In het begin kunnen alleen wat ouderwetse vrachtwagens, boten, treinen en vliegtuigen worden gekocht, maar in de loop van de tijd komen daar steeds nieuwere vervoersmiddelen bij.

De charme van het spel zit in het opzetten van een zo efficiënt mogelijk transportnetwerk. Er is namelijk maar een beperkte hoeveelheid ruimte waar zoveel mogelijk tegelijk over vervoerd dient te worden.

De open source-variant van het spel, Open Transport Tycoon Deluxe, wordt gebruikt als basis voor de Challenge.

De wedstrijd

  • Er wordt gespeeld op een kaart van 512x512 velden.
  • Het spel start in 1 januari 1998 en duurt tot en met 31 december 2007 binnen OpenTTD.
  • Engines worden maximaal met zijn 8'en op een kaart geplaatst en spelen tegen elkaar.
  • Alle engines starten tegelijkertijd.
  • De wedstrijdleiding verzorgt de indeling waarbij er geprobeerd wordt zoveel mogelijk partijen met 8 engines te spelen.
  • De kaarten worden door de wedstrijdleiding verzorgd en worden niet van tevoren beschikbaar gesteld.
De engine die aan het einde van de speelduur de hoogste 'company value' heeft, wint de partij.

De engine

De deelnemer gebruikt de scripttaal Squirrel om een engine te schrijven voor het NoAI framework. De engine zal als AI het spel OpenTTD spelen.

Het NoAI framework is momenteel nog in ontwikkeling, zorg ervoor dat je altijd met de meest recente (svn-)versie werkt. Zie voor meer informatie over de ontwikkeling van dit framework: http://wiki.openttd.org/index.php/AI:Main_Page. Uiterlijk 2 weken voor de finale zal van de main branch worden afgestapt en een stabiele versie beschikbaar gesteld worden op de website van de challenge.


Restricties

  • Er mag uitsluitend gebruik worden gemaakt van wegvoertuigen. Gebruik van schepen, vliegtuigen, treinen, en trams is niet toegestaan.
  • Er mogen uitsluitend wegen gebouwd worden. Gebruik van (tram)rails en boeien is niet toegestaan.
  • AI spelers hoeven geen rekening te houden met andere AI spelers qua geheugen en CPU gebruik. Het thread systeem van NoAI is herschreven zodat elke AI evenveel CPU tijd krijgt.
  • De engine mag geen gebruik maken van externe resources, zoals databases of internet.
  • De source code van de engine is maximaal 10 megabyte.

Configuratie OpenTTD

De partijen zullen gebruik maken van de volgende OpenTTD instellingen:
  • Een maximale lening van €200.000
  • Een rentepercentage van 4%
  • Hoge gebruikskosten (voertuigen)
  • Hoge constructiekosten
  • Een subsidie multiplier van 2.0
  • Stabiele Economie
  • Geen inflatie
  • Geen rampen
  • City council's attitude towards area restructuring op permessive
Voor de overige instellingen worden de standaard instelling gebruikt.

Meedoen

Je kunt je inschrijven door een email te sturen naar challenge (at) tjip.com.

We hebben 2 introductiebijeenkomsten (niet verplicht).
De eerste is op zaterdag 24 mei in de vestiging in Helmond.
De tweede op zaterdag 7 juni in de vestiging in Delft.

De finale wordt gehouden op zaterdag 20 september in de vestiging in Delft.

Meer informatie en het reglement vind je op deze site: http://www.tjip.com/tjip-challenge.html

FAQ

Hoe kom ik aan de originele bestanden/grahpics?
De originele TTD kunnen worden gedownload via http://webserver.tjip.com...008/ttd_original_data.zip. De organisatie heeft toestemming van Atari om deze ter beschikking te stellen aan de deelnemers aan de challenge.

Wie mag er meedoen?
Iedereen mag mee doen. Je kan alleen meedoen of als team. Werknemers van Tjip en mensen die op de finaledag niet aanwezig kunnen zijn, zijn echter uitgesloten van de (hoofd)prijzen.

Hoe kom ik aan de sources van OpenTTD mét NoAI ondersteuning?
Het makkelijkste gaat dat met Subversion. Via svn://svn.openttd.org/branches/noai haal je de NoAI branch op.

Waar vind ik documentatie?
Squirrel: http://squirrel-lang.org/doc/squirrel2.html
OpenTTD: http://wiki.openttd.org/
NoAI: http://wiki.openttd.org/index.php/NoAI
API: http://devs.openttd.org/~noai/aidocs/

ps. Er is toestemming van de Crew.

[ Voor 9% gewijzigd door Sjaaky op 20-06-2008 15:07 ]


Acties:
  • 0 Henk 'm!

  • llevering
  • Registratie: September 2000
  • Laatst online: 13-09 18:56
Leuke game, interessante competitie! Geen idee of ik genoeg tijd ga vinden om serieus mee te doen, maar ik ga iig is naar het NoAI framework kijken.

Mocht ik meedoen, moet je fysiek aanwezig zijn bij de finale? Ik woon namelijk niet in NL.

Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 01:39
Extreem gaaf idee. :) Ik ga proberen weer mee te doen. Leuk dat het dit keer een heel ander soort spel geworden is.

Een vraag echter: het probleem met OpenTTD is altijd dat je de originele bestanden van Transport Tycoon Deluxe nodig hebt om het te kunnen draaien. Is daar een work-around voor of wordt aangenomen dat iedereen daar op eigen initiatief wel aan kan komen (lees: illegaal downloaden)?

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Soultaker schreef op maandag 28 april 2008 @ 22:40:
Een vraag echter: het probleem met OpenTTD is altijd dat je de originele bestanden van Transport Tycoon Deluxe nodig hebt om het te kunnen draaien. Is daar een work-around voor of wordt aangenomen dat iedereen daar op eigen initiatief wel aan kan komen (lees: illegaal downloaden)?
Je zou het spel legaal kunnen aanschaffen? :+

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Soultaker schreef op maandag 28 april 2008 @ 22:40:
Een vraag echter: het probleem met OpenTTD is altijd dat je de originele bestanden van Transport Tycoon Deluxe nodig hebt om het te kunnen draaien. Is daar een work-around voor of wordt aangenomen dat iedereen daar op eigen initiatief wel aan kan komen (lees: illegaal downloaden)?
Wij (TJIP B.V.) hebben hiervoor met de licentiehouder afgestemd en uitsluitend voor deelnemers aan deze wedstrijd toestemming gekregen. De wijze waarop je daar dan aan komt (van ons na inschrijving, of zelf ergens vandaan) doet er verder niet toe.

Acties:
  • 0 Henk 'm!

  • Corniel
  • Registratie: April 2002
  • Laatst online: 31-03 14:56

Corniel

De wereld is gek!

Ook dit jaar ben ik betrokken bij dit project. Dit jaar echter zal ik - samen met een andere collega - ook (buiten mededinging, dan dan weer wel :() meedoen als deelnemer.

We zijn al een keertje - onder het genot van een goede maaltijd, een biertje en chips toe - bij elkaar geweest. Brainstormen over een goede strategie.

Vorig jaar was die wel duidelijk: bruteforce zo veel mogelijk stellingen door. Dit jaar kom je er niet mee. Zeer belangrijk is natuurlijk een goed pathfinder. Daar is genoeg documentatie over te vinden natuurlijk. Bijvoorbeeld: Wikipedia: Pathfinder Networks.

Maar een goed beslissingsmodel is andere koek. Wij hebben iets leuks bedacht, maar of het gaat werken is natuurlijk vers twee. Er zijn heel veel dingen waar je rekening mee kan houden, maar wat heeft nut, en wat niet?

Wat ik me ook afvraag hoe groot de verschillen (in speelsterkte) tussen de sterkste en de zwakste engines gaan zijn. Ik hoop op een minstens zo leuke challenge als vorig jaar, met een groot aantal enthoussiaste deelnemers. (Die natuurlijk allemaal door onze engine NOCAB vreslagen gaan worden O-) )

while (me.Alive) {
me.KickAss();
}


Acties:
  • 0 Henk 'm!

  • Ruudjah
  • Registratie: November 1999
  • Laatst online: 06-09 20:58

Ruudjah

2022

Op Tjip.nl staat:
Bouw vrachtwagens, bussen, wegen en stations. Transporteer goederen en personen en maak winst! Maar wees gewaarschuwd: je bent niet alleen en je concurrenten zullen er alles aan doen om jou te dwarsbomen, terwijl ze zelf hun imperium uitbouwen.
Foutje?

TweakBlog


Acties:
  • 0 Henk 'm!

  • Corniel
  • Registratie: April 2002
  • Laatst online: 31-03 14:56

Corniel

De wereld is gek!

Er vanuitgaande dat je doelt op het bouwen van stations: Busstations en overlaadstations bouwen is toegestaan. Treinstations zijn uitgesloten. Maar een goed punt, die tekst is wellicht niet helemaal duidelijk. Aan de andere kant, de strekking is duidelijk en je quote niet het reglement natuurlijk. ;)

while (me.Alive) {
me.KickAss();
}


Acties:
  • 0 Henk 'm!

  • DeadLock
  • Registratie: December 2005
  • Laatst online: 00:20

DeadLock

Vastlopen is relatief....

Uit het reglement:
1.5 Deelnemer
1.5.1 Een persoon of team van personen van 18 jaar of ouder en wonende in Nederland, die zich heeft ingeschreven voor deelname aan de TJIP Challenge.
Ik zou graag meedoen (samen met iemand anders), maar ik woon in België. Als ik goed begrijp is dit dus niet toegestaan door het reglement? Dit zou best wel jammer zijn, het lijkt me een enorm leuke wedstrijd :o. Kan iemand van de organisatie hier iets over zeggen ?

Strava


Acties:
  • 0 Henk 'm!

  • Martao
  • Registratie: September 2001
  • Laatst online: 23-08 14:23
Beste Evert,

We begrijpen dat jij (en mogelijk anderen) dit jammer vinden. We hebben intern een kleine discussie hierover en zullen het hier laten weten zo gauw we meer weten!
In ieder geval bedankt voor je enthausiasme!

Martin (Organisatie TJIP Challenge)

Acties:
  • 0 Henk 'm!

  • corné
  • Registratie: Juni 2002
  • Laatst online: 14-11-2024
Ziet er heel interessant uit :D Ik ga me hier eens in verdiepen, maar ik denk niet dat het een echte deelname gaat worden :)

Heeft iemand misschien een mirror van squirrel & openttd, want sourceforge werkt nu al 2 dagen niet :'(

[ Voor 39% gewijzigd door corné op 30-04-2008 12:22 ]


Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 01:39
Waar heb je SourceForge voor nodig? Pak gewoon een nightly build of check de Subversion source uit svn://svn.openttd.org/branches/noai.

(Let op dat je de NoAI branch gebruikt; de trunk lijkt momenteel geen support te hebben voor NoAI.)

[ Voor 88% gewijzigd door Soultaker op 30-04-2008 13:49 . Reden: NoAI branch gefixt. ]


Acties:
  • 0 Henk 'm!

  • Corniel
  • Registratie: April 2002
  • Laatst online: 31-03 14:56

Corniel

De wereld is gek!

Soultaker schreef op woensdag 30 april 2008 @ 13:40:
Let op dat je de NoAI branch gebruikt; de trunk lijkt momenteel geen support te hebben voor NoAI.
Da's idd een wijs advies. Met de main branche gaat het niet werken. (Wellicht dat dat nog komt voor de finale, maar reken er niet op) Mocht je het bugs tegen komen in NoAI (of OpenTTD) meldt ze dan - liefst via de geeigende kanalen.

while (me.Alive) {
me.KickAss();
}


Acties:
  • 0 Henk 'm!

  • DeadLock
  • Registratie: December 2005
  • Laatst online: 00:20

DeadLock

Vastlopen is relatief....

Martao schreef op dinsdag 29 april 2008 @ 17:04:
Beste Evert,

We begrijpen dat jij (en mogelijk anderen) dit jammer vinden. We hebben intern een kleine discussie hierover en zullen het hier laten weten zo gauw we meer weten!
In ieder geval bedankt voor je enthausiasme!

Martin (Organisatie TJIP Challenge)
Heb je hier al verder nieuws over ?

Strava


Acties:
  • 0 Henk 'm!

  • Corniel
  • Registratie: April 2002
  • Laatst online: 31-03 14:56

Corniel

De wereld is gek!

Ja daar is nieuws over. Het is geen probleem. Voor ons is het belangrijk dat iedereen die meedoet ook daadwerkelijk fysiek aanwezig is tijdens de finale op 20 september in Delft, en daar is, lijkt me, niets op tegen.

[ Voor 4% gewijzigd door Corniel op 19-05-2008 14:07 ]

while (me.Alive) {
me.KickAss();
}


Acties:
  • 0 Henk 'm!

  • McKaamos
  • Registratie: Maart 2002
  • Niet online

McKaamos

Master of the Edit-button

Ik doe niet mee, maar heb wel een tijd lang OTTD gespeeld. Zeer interessante challenge :)
Komt er ook iets van een film oid waar in we de AI aan het werk zien? Dat lijkt me namelijk wel extreem gaaf :)

Iemand een Tina2 in de aanbieding?


Acties:
  • 0 Henk 'm!

  • Calamor
  • Registratie: Oktober 2004
  • Laatst online: 13-09 22:40
Dat lijk me ook echt leuk om te zien hoe de AI te werk gaat.
misschien is het ook wel leuk om de beste AI tegen mensen te spelen.

Acties:
  • 0 Henk 'm!

Verwijderd

-NMe- schreef op maandag 28 april 2008 @ 23:27:
[...]

Je zou het spel legaal kunnen aanschaffen? :+
*abandonware bestaat legaal niet, dus ondanks dat er een toezegging schijnt te zijn dat je het spel op minder legale wijze mag verkrijgen voor deze contest hoef je niet naar een site met illegale content te linken*

[ Voor 32% gewijzigd door Creepy op 19-05-2008 16:47 ]


Acties:
  • 0 Henk 'm!

  • Martao
  • Registratie: September 2001
  • Laatst online: 23-08 14:23
evert_ schreef op donderdag 15 mei 2008 @ 11:51:
[...]


Heb je hier al verder nieuws over ?
Oh sorry, ik dacht dat er een mail naar jou verstuurd was. Aannames, aannames... :)

Acties:
  • 0 Henk 'm!

  • Corniel
  • Registratie: April 2002
  • Laatst online: 31-03 14:56

Corniel

De wereld is gek!

Verwijderd schreef op maandag 19 mei 2008 @ 16:44:
Abandonware bestaat legaal niet, dus ondanks dat er een toezegging schijnt te zijn dat je het spel op minder legale wijze mag verkrijgen (..)
Mensen die zich bij ons aanmelden krijgen de gewraakte files van ons. Dat lijkt mij de meest legale wijze.

while (me.Alive) {
me.KickAss();
}


Acties:
  • 0 Henk 'm!

  • Horeamus
  • Registratie: Mei 2007
  • Laatst online: 04-08 16:36
Hoelang duurt het eigenlijk voordat je die files krijgt dan? Ik heb me namelijk ingeschreven voor de wedstrijd en we hebben een mailtje gekregen dat er nog contact met ons opgenomen zou worden, maar over die files heb ik totaal niets gehoord :-) (Niet dat het er in mijn geval echt toe doet, ik heb het spel reeds legaal, maar gewoon out of curiosity)

edit: nvm, kreeg net (2 minuten geleden) een mail met alles wat ik maar mogelijkerwijs zou kunnen willen weten for now, inclusief een link naar de originele bestanden. Netjes geregeld moet ik zeggen

[ Voor 22% gewijzigd door Horeamus op 21-05-2008 11:54 ]


Acties:
  • 0 Henk 'm!

  • Corniel
  • Registratie: April 2002
  • Laatst online: 31-03 14:56

Corniel

De wereld is gek!

Hmm, dat is was niet zo netjes. Anyway:

De originele TTD kunnen worden gedownload via http://webserver.tjip.com...008/ttd_original_data.zip.

Leuk dat je meedoet. Hoe ver was je met je engine? Mijn collega en ik moeten nogsteeds beginnen met proggen. :S

while (me.Alive) {
me.KickAss();
}


Acties:
  • 0 Henk 'm!

  • Horeamus
  • Registratie: Mei 2007
  • Laatst online: 04-08 16:36
Wij (doe het samen met een studievriend) moeten met het eigenlijke programmeren ook nog beginnen. We hebben beiden (open)TTD amper gespeeld dus we zijn ons eerst een beetje aan het oriënteren.

Acties:
  • 0 Henk 'm!

  • Horeamus
  • Registratie: Mei 2007
  • Laatst online: 04-08 16:36
Even een vraag in het algemeen. Die kick-off meet is verplaatst naar 7 juni (zaterdag aanstaande) maar hoelaat ed? Heb er verder niets meer over gehoord naast de vraag of we wilden komen dan. Heb net even op website gekeken maar kon er zo snel even niets over vinden.

Acties:
  • 0 Henk 'm!

  • Corniel
  • Registratie: April 2002
  • Laatst online: 31-03 14:56

Corniel

De wereld is gek!

Horeamus schreef op woensdag 04 juni 2008 @ 20:02:
Die kick-off meet is verplaatst naar 7 juni (zaterdag aanstaande) maar hoelaat ed? (..)
Zaterdag 7 juni a.s. om 13:00 wordt in Delft de kick-off van de OpenTTD Challenge 2008 gehouden. Zie Routebeschrijving Delft.

Er zal wat worden verteld over Transport Tycoon. Daarnaast wordt e.a. uitgelegd over OpenTTD, en hoe een AI te schrijven voor OpenTTD.

Daarna is LAN-en geblazen. De aanwezigen mogen de multiplayer mode van OpenTTD tot het uiterste testen. Dus neem je laptop mee.

@Horeamus, mocht je nog geen uitnodiging ontvangen hebben, voel je dan bij deze uitgenodigd!

while (me.Alive) {
me.KickAss();
}


Acties:
  • 0 Henk 'm!

  • Horeamus
  • Registratie: Mei 2007
  • Laatst online: 04-08 16:36
De volgende dag kreeg ik een mail erover. Ben er ook geweest. Was gezellig en het was ook koel dat 2 van de ontwikkelaars van openttd er waren (en laten we vooral niet de heerlijke broodjes vergeten ;-)) Viel me wel op dat wij de enige studenten waren van een andere uni dan Delft.

Acties:
  • 0 Henk 'm!

  • Corniel
  • Registratie: April 2002
  • Laatst online: 31-03 14:56

Corniel

De wereld is gek!

Zoals ik afgelopen zaterdag al beloofde, een stukje code dat A* implementeert voor OpenTTD. Geschreven door mijn collega Morloth.

C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
/**
 * This class will take care of all pathfinding features.
 */
class RoadPathFinding 
{
    road = null;    // We'll use AIRoad to manage building / managing roads
    map = null; // The map we're currently playing
    
    constructor(map, road) {
        this.map = map;
        this.road = road;
    }

    /**
     * We need functions to calibrate penalties and stuff. We want functions
     * to build the *fastest*, *cheapest*, *optimal throughput*, etc. We aren't
     * allowed to write C++ so we need to script this information :).
     */
    function CreateRoad(roadList);      // Create the best road from start to end
    function GetCostForRoad(roadList);  // Give the cost for the best road from start to end
    function FindFastestRoad(start, end, allowenceSavings, excludeList, ai);
}

/**
 * Store important info about a path we found! :)
 */
class PathInfo
{
    roadList = null;        // List of all road tiles the road needs to follow
    travelDistance = null;      // The total number of squares of road (multipy by 429 to get km)
    speedModifier = null;       // The 'cost' of the road (taking into account all the slopes, etc) 
                    // <-- The average velocity can be calculated by multiplying this value with 
                    // the speed of the vehicle...
    roadCost = null;        // The cost to create this road

    constructor(roadList, travelDistance, speedModifier, roadCost) {
        this.roadList = roadList;
        this.travelDistance = travelDistance;
        this.speedModifier = speedModifier;
        this.roadCost = roadCost;
    }
}

/**
 * Create the fastest road from start to end, without altering
 * the landscape. We use the A* pathfinding algorithm. 
 *
 * The allowenceSavings is used to specify how much longer a road 
 * may be if it saves on the costs of building roads. The value 
 * must be between [0..1], 0 meaning NO detour may be made to 
 * lower the costs, 1 means that any means must be exploited to 
 * lower the cost as much as possible (existing roads are 
 * considered to be free).
 */
function RoadPathFinding::CreateRoad(roadList, ai)
{
    if(roadList == null || roadList.len() < 2)
        return false;

    // Build the entire tile list! :)
    local i = roadList[0];
    local j = roadList[1];

    // Check the initial direction
    local currentDirection = j - i;

    // We want to build entire segments at once. So if our road goes North
    // 5 times we want to build it with one command, instead of calling
    // BuildRoad 5 times (saves time! :)). So we keep track of the direction.
    local direction = null;
    local lastChecked = null;

    /**
     * We use an iterating process. We monitor if each sequential tile
     * heads in the same direction as the previous tile, if not we 
     * construct the road found so far and continue the process in 
     * the new direction.
     */

    // Skip list till we find a tile with an other direction
    for(local a = 2; a < roadList.len(); a++)       
    {
        lastChecked = j;
        j = roadList[a];

        // If the road changes direction, create that part of the road
        // and change the direction we're heading
        if(j != lastChecked + currentDirection)
        {
            local result = road.BuildRoad(i, lastChecked);


            // You may want to do some fixing if the road couldn't be build.

            // Update new direction information for the next
            // iteration
            currentDirection = j - lastChecked;
            i = lastChecked;
        }
    }

    
    // Build the last part (if any)!
    if(i && j)
        road.BuildRoad(i, j);
    
    return true;            
}

/**
 * Plan and check how much it cost to create the fastest route
 * from start to end.
 */
function RoadPathFinding::GetCostForRoad(roadList, ai)
{
    local test = AITestMode();      // Switch to test mode...

    local accounting = AIAccounting();  // Start counting costs

    this.CreateRoad(roadList, ai);      // Fake the construction

    return accounting.GetCosts();       // Automatic memory management will kill accounting and testmode! :)
}

/**
 * A* pathfinder to find the fastest path from start to end. The allowenceSavings
 * is used to specify how much longer a road may be if it saves on the costs of
 * building roads. The value must be between [0..1], 1 meaning NO detour may be
 * made to lower the costs, 0 mean that any means must be exploited to lower the
 * cost as much as possible (existing roads are considered to be free).
 * Update X and Y values! :)
 * start and end are always an AIAbstractList.
 * The excludeList contain tiles that mustn't be evaluated during pathfinding.
 */
function RoadPathFinding::FindFastestRoad(start, end, allowenceSavings, excludeList, ai)
{
    // Now, for the interresting part... :)
    // Road can only be build from North to South and from West to East, we
    // use the Manhattan distance as heuristic (faster and as good as squared
    // distance) for our algorithm. Every tile is stored in a priority queue.

    local pq = null;
    local expectedEnd = null;

    // Calculate the central point of the end array
    local x = 0;
    local y = 0;

    for(local i = end.Begin(); end.HasNext(); i = end.Next()) {
        x += AIMap.GetTileX(i);
        y += AIMap.GetTileY(i);
    }

    expectedEnd = AIMap.GetTileIndex(x / end.Count(), y / end.Count());
    print("Found: " + expectedEnd);
    
    // We must also keep track of all tiles we've already processed, we use
    // a table for that purpose.
    local closedList = {};

    // We keep a seperate list for start tiles
    local startList = {};

    if(excludeList) 
        foreach(val in excludeList)
            closedList[val] <- val;
    
    // Start by constructing a priority queue and by adding all start
    // nodes to it.
    pq = PriorityQueue(start.Count() * 2);
    for(local i = start.Begin(); start.HasNext(); i = start.Next()) {

        // Check if we can actually start here!
        if(!Tile.IsBuildable(i))
            continue;
 
        AISign.BuildSign(i, "START");
        local annotatedTile = AnnotatedTile(i, null, 0, AIMap.DistanceManhattan(i, expectedEnd), null);
        pq.insert(annotatedTile);
        closedList[i] <- i;
        startList[i] <- i;
        AISign.BuildSign(i, "Start");
    }


    // Now with the open and closed list we're ready to do some grinding!!!
    while(pq.nrElements != 0) 
    {
        local at = pq.remove();

        // Why is this needed!? Don't know but for some reason tiles are put in the priority queue without
        // me wanting it. May want to refactor this code....
        if(closedList.rawin(at.tile) && !startList.rawin(at.tile))
            continue;

        // Check if this is the end already!!
        if(end.HasItem(at.tile)) {

            // Check we can actually end here...
            if(!Tile.IsBuildable(at.tile))
                continue;

            // determine size...
            local tmp = at;
            local tmp_size = 1;
            while(tmp.parentTile != null) {
                tmp = tmp.parentTile;
                tmp_size++;
            }

            // Create the result list
            local resultList = array(tmp_size);
            resultList[0] = at.tile;

            // We want to return a PathInfo object, we need it for later
            // assesments! :)
            local avg_speed = 0;
            local lastDirection = at.direction;

            tmp_size = 1;
            // Construct result list! :)
            while(at.parentTile != null) {
                at = at.parentTile;
                resultList[tmp_size] = at.tile;
                tmp_size++;

                // Check speed,
                // TODO: FIX SLOPES!
                if(lastDirection == at.direction)
                    avg_speed += 1;
                else
                    avg_speed += 0.5;
            }

            return PathInfo(resultList, tmp_size, avg_speed / tmp_size, null);
        }
        
        // Get all possible tiles from this annotated tile (North, South, West,
        // East) and check if we're already at the end or if new roads are possible
        // from those tiles.
        local directions = Tile.GetTilesAround(at.tile, false, null);

        // Squirrel doesn't support inline functions? :(
        // Check if we can access those directions and add them to the list! :)
        for(local i = 0; i < directions.len(); i++) {

            // Check if we can actually build here and if we haven't checked this
            // tile already. If we've already checked it, we know there is a already
            // faster route to this tile (else it wouldn't have come first).
            if(closedList.rawin(directions[i])) {

                // Don't include tiles we can't build on anyways.
                if(!AITile.IsBuildable(directions[i])) {
                    closedList[directions[i]] <- directions[i];
                }
                continue;
            }

            // Try to build it, slopes or other obstacles may prevent this...
            // TODO: Need NoAI extention to catch WHY a road couldn't be
            // build. (ie. because of vehicles, wrong slopes?)
            if(!AIRoad.AreRoadTilesConnected(at.tile, directions[i]))
            {
                local testAI = AITestMode();
                if(!AIRoad.BuildRoadFull(at.tile, directions[i]) ||
                    !AIRoad.BuildRoadFull(directions[i], at.tile))
                    continue;
            }

            // Calculate the cost for building this road
            /**
             * We want to build roads as straight as possible, because bends slow
             * verhicles down 50%. So they are 2 times as 'expensive' for the
             * heuristic function.
             * TODO: Take slopes into account
             */
            local roadCostFromStart = 0;

            // No direction choosen or we're traveling in the same direction
            if(at.direction == i || at.direction == null)
                roadCostFromStart = 1;
            // We're heading in an other direction so make the cost twice as expensive
            else
                roadCostFromStart = 2;
            
            // If it's a road, we might add a discount! :)
            if(!road.IsRoadTile(directions[i]))
                roadCostFromStart *= 1 + (1 - allowenceSavings);
            roadCostFromStart += at.distanceFromStart;

            // Add the tile to the queue! (remove the * 2 later when we've completed regions! :)
            pq.insert(AnnotatedTile(directions[i], at, roadCostFromStart, AIMap.DistanceManhattan(directions[i], expectedEnd), i));
        }

        // Done! Don't forget to put at into the closed list
        closedList[at.tile] <- at.tile;
    }

    // Oh oh... No result found :(
    print("No path found!");
    return null;
}

/**
 * Util class to hold a tile and the heuristic value for
 * pathfinding.
 */
class AnnotatedTile 
{
    tile = null;            // Instance of AITile
    parentTile = null;      // Needed for backtracking!
    distanceToEnd = null;       // Distance from this tile to the end tile
    distanceFromStart = null;   // Distance already travelled from start tile
    direction = null;       // Which way is this road going to?

    // A Tile is 429km on a side :)

    constructor(tile, parentTile, distanceFromStart, distanceToEnd, direction)
    {
        this.tile = tile;
        this.parentTile = parentTile;
        this.distanceFromStart = distanceFromStart;
        this.distanceToEnd = distanceToEnd;
        this.direction = direction;
    }

    function getHeuristic() {
        return distanceToEnd + distanceFromStart;
    }
}


Hij heeft e.a. ook toegelicht op devs.openttd.org. Let wel, er wordt geen rekening gehouden met heuvels/hellingen.

Ik probeer deze week ook nog een geschreven samenvatting te geven van m'n verhaaltje van afgelopen zaterdag. Maar eerst moet er weer gewerkt worden.

while (me.Alive) {
me.KickAss();
}


Acties:
  • 0 Henk 'm!

Verwijderd

Horeamus schreef op zondag 08 juni 2008 @ 10:03:
(..)

Viel me wel op dat wij de enige studenten waren van een andere uni dan Delft.
ik ga ook meedoen en op het moment dat ik besloot mee te doen nog net student in Utrecht (nu afgestudeerd), telt dat ook? ;)


weet iemand hoe je in het noai framework iets kunt wegschrijven naar/uitlezen van een bestand? Ik kon het nergens vinden, en evenmin in squirrel zelf.

Acties:
  • 0 Henk 'm!

  • Corniel
  • Registratie: April 2002
  • Laatst online: 31-03 14:56

Corniel

De wereld is gek!

Verwijderd schreef op maandag 09 juni 2008 @ 16:50:
weet iemand hoe je in het noai framework iets kunt wegschrijven naar/uitlezen van een bestand?
Wellicht dat je het hier kan vinden: Squirrel Library: 2. The Input/Output library.

while (me.Alive) {
me.KickAss();
}


Acties:
  • 0 Henk 'm!

Verwijderd

had ik al naar gekeken, maar ik kwam er niet echt uit. Volgens iemand op het ottd forum heeft het NOAI framework geen file io. (zie hier)


wat ik me afvroeg, is of 10 spel-jaren niet wat kort is? Met zo'n korte periode hoef je je bv. niet druk te maken over vervanging van voertuigen.

[ Voor 13% gewijzigd door Verwijderd op 10-06-2008 14:11 ]


Acties:
  • 0 Henk 'm!

  • Horeamus
  • Registratie: Mei 2007
  • Laatst online: 04-08 16:36
Dat was volgens mij juist een van de redenen om er voor te kiezen om een spel 10 jaar te laten duren :-)

Wat ik mij eigenlijk afvraag is of je wel naar bestanden mag schrijven/lezen volgens de regels van de challenge. Valt dat (het lezen iig) dan niet onder het gebruik maken van externe resources?

En ja, wat mij betreft telt dat ook als UU. Jeuj :p Kijken of we delft kunnen verslaan

[ Voor 13% gewijzigd door Horeamus op 12-06-2008 11:35 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Horeamus schreef op donderdag 12 juni 2008 @ 11:33:
Dat was volgens mij juist een van de redenen om er voor te kiezen om een spel 10 jaar te laten duren :-)
ja, dat bedacht ik me later ook..scheelt een hoop werk. (Nu maar hopen dat de leiding niet ineens op verkeerde gedachten gebracht is :-) )
Wat ik mij eigenlijk afvraag is of je wel naar bestanden mag schrijven/lezen volgens de regels van de challenge. Valt dat (het lezen iig) dan niet onder het gebruik maken van externe resources?
ik heb het niet nodig tijdens de challenge, maar voor die tijd, om het ontwikkelen te vergemakkelijken. Tijdens de challenge kan ik alles wat ik nodig heb gewoon in m'n AI source code zetten. Zo kan je bv. een look-up tabel eerst genereren en dan copy-pasten naar je code, om maar een voorbeeld te noemen.
En ja, wat mij betreft telt dat ook als UU. Jeuj :p Kijken of we delft kunnen verslaan
mooi, ik zie uit naar de overwinning 8)

(ik laat tactisch in het midden wiens overwinning)

als jullie ook studenten zijn uit Utrecht, dan ken ik jullie wellicht. Wat studeren jullie, en waar?

[ Voor 8% gewijzigd door Verwijderd op 12-06-2008 15:46 ]


Acties:
  • 0 Henk 'm!

  • Horeamus
  • Registratie: Mei 2007
  • Laatst online: 04-08 16:36
Beiden informatica aan de UU. Ook beiden eerstejaars dus denk eerlijk gezegd dat je ons niet kent ;-)

Acties:
  • 0 Henk 'm!

Verwijderd

Horeamus schreef op donderdag 12 juni 2008 @ 21:41:
Beiden informatica aan de UU. Ook beiden eerstejaars dus denk eerlijk gezegd dat je ons niet kent ;-)
nee, inderdaad niet. Ik ben net afgestudeerd CKI'er

Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op dinsdag 10 juni 2008 @ 14:08:
[...]


had ik al naar gekeken, maar ik kwam er niet echt uit. Volgens iemand op het ottd forum heeft het NOAI framework geen file io. (zie hier)
Het is niet mogelijk om in het bestaande framework van NoAI library functies aan te roepen van Squirrel. Want om dit te kunnen doen moeten deze libraries in de VM geladen worden en dat gebeurd momenteel niet. De functie waar het om gaat is 'sqstd_register_iolib', maar gezien dit een open source project is en jullie uitstekende programmeurs kunnen jullie dit natuurlijk zelf inbouwen als jullie deze functionaliteit nodig hebben tijdens de ontwikkelfase (vergeet deze echter niet eruit te slopen, het is een beetje jammer als je AI in de eerst 10 seconden zelfmoord pleegt ;)).

Succes!
- Bram

Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op zondag 15 juni 2008 @ 11:40:
[...]


Het is niet mogelijk om in het bestaande framework van NoAI library functies aan te roepen van Squirrel. Want om dit te kunnen doen moeten deze libraries in de VM geladen worden en dat gebeurd momenteel niet. De functie waar het om gaat is 'sqstd_register_iolib', maar gezien dit een open source project is en jullie uitstekende programmeurs kunnen jullie dit natuurlijk zelf inbouwen als jullie deze functionaliteit nodig hebben tijdens de ontwikkelfase
ik ben niet zo'n C-held en zie het ook niet zo zitten om helemaal in de noai code te duiken, maar ik heb al een andere --zeer cratieve-- omweg gevonden m.b.v. Java.

Maar nu loop ik tegen het maffe probleem aan, dat elke willekeurige AI (bv. de standaard "wrightai") crasht als ik "reload AI" indruk. Op het openttd forum zijn ze er nog niet helemaal over uit waar het nu precies door komt, helaas (http://www.tt-forums.net/viewtopic.php?f=65&t=37947). En het gekste is, dat juist de binaries die gemaakt waren om het probleem te onderzoeken, nu juist net niet de crash opleveren.
(vergeet deze echter niet eruit te slopen, het is een beetje jammer als je AI in de eerst 10 seconden zelfmoord pleegt ;)).
If I'm going out, I'm going out with style :)

een heel andere vraag: er komt steeds meer voorbeeldmateriaal beschikbaar (zoals Convoy en wrightai en de recent toegevoegde libraries). Hoe zit het met het gebruiken van die code? Gelden Convoy en WrightAI als materiaal dat je gewoon kan gebruiken in de tjip-wedstrijd?

Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op zondag 15 juni 2008 @ 12:18:
[...]


ik ben niet zo'n C-held en zie het ook niet zo zitten om helemaal in de noai code te duiken, maar ik heb al een andere --zeer cratieve-- omweg gevonden m.b.v. Java.
Hmmz... klinkt interessant, hoe heb je dat opgelost dan als ik vragen mag? :)
Maar nu loop ik tegen het maffe probleem aan, dat elke willekeurige AI (bv. de standaard "wrightai") crasht als ik "reload AI" indruk. Op het openttd forum zijn ze er nog niet helemaal over uit waar het nu precies door komt, helaas (http://www.tt-forums.net/viewtopic.php?f=65&t=37947). En het gekste is, dat juist de binaries die gemaakt waren om het probleem te onderzoeken, nu juist net niet de crash opleveren.
Geen idee wat hier gaande is, ik ben momenteel op vakantie dus ben bang dat ik volgende week pas weer up-to-date ben met de laatste gang van zaken.
een heel andere vraag: er komt steeds meer voorbeeldmateriaal beschikbaar (zoals Convoy en wrightai en de recent toegevoegde libraries). Hoe zit het met het gebruiken van die code? Gelden Convoy en WrightAI als materiaal dat je gewoon kan gebruiken in de tjip-wedstrijd?
Waarom niet? Al deze code valt onder de GPL licentie dus wie zijn wij om dat te verbieden? ;)

Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op donderdag 19 juni 2008 @ 11:09:
[...]

Hmmz... klinkt interessant, hoe heb je dat opgelost dan als ik vragen mag? :)
na de wedstrijd vertel ik je al de geheimen van mijn code 8)
[...]

Waarom niet? Al deze code valt onder de GPL licentie dus wie zijn wij om dat te verbieden? ;)
da's mooi.

Acties:
  • 0 Henk 'm!

  • compufreak88
  • Registratie: November 2001
  • Laatst online: 02-05 17:51
Lijkt mij leuk om mee te doen, alhoewel ik hier weinig kaas van gegeten heb. Ik ben een beetje bezig om te verkennen hoe je het beste een bedrijf op kan bouwen met alleen maar vrachtwagens/bussen.

Acties:
  • 0 Henk 'm!

  • Corniel
  • Registratie: April 2002
  • Laatst online: 31-03 14:56

Corniel

De wereld is gek!

FAQ toegevoegd.

Verder belooft een kort verslagje van mijn bevindingen tijden de kick-off. Ik vond het gezellig! het was idd leuk dat er twee OpenTTD (NoAI) developers waren.

Zelf hield ik een presentatie:
  1. OpenTTD, olé, olé
    • Clone van Transport Tycoon Deluxe
    • Grotere kaarten
    • Multiplayer mode (LAN & internet)
    • Betere/krachtigere pathfinding
    • Betere gameplay
    • Extra graphics
    • Het NoAI-Framework
  2. Transport Tycoon for Dummies
    • Een zeer beknopte introductie (..)
  3. Slimme jongens, die computers - Sterke & zwakke punten
    • Rekenkracht (+)
    • Consequent (+)
    • Perfect geheugen (+)
    • Onbenullig (-)
    • Voorspelbaar (-)
    • Leercurve (-)
  4. Van A naar B(eter)
    • A*
    • Dijkstra’s algorithme e.a.
    • Penalties
    • Aanleg
    • Reistijd
  5. Big brother is watching you
    • Wat is er gaande
    • Resources
    • Opponenten
    • Subsidies
    • Routes
    • Voertuigen
    • Cashflow
  6. Regeren is vooruitzien
    • Wat doe je wel en wat niet
    • Onderhoud voertuigen
    • Tegenstanders blocken
    • Nieuwe routes
    • Aflossen schuld
De liefhebbers kan ik de daadwerkelijke PP wel doen toekomen. Moraal van het verhaal: Zorg dat je een goede PathFinder gebruikt. Ga niet het wiel opnieuw zitten uitvinden, er zijn genoeg goede implementaties. De crux zit hem in het waarderen van de mogelijkheden en het kiezen welke daarvan uitgevoerd dienen te worden. Sommige combinaties leveren 'extra' op, andere juist minder.

Volgende week ga ik zelf ook maar eens aan de implemantatie van NoCab werken.

while (me.Alive) {
me.KickAss();
}


Acties:
  • 0 Henk 'm!

Verwijderd

ik zag op het openTTD forum iemand spreken over trams. Ik wist niet dat die in openTTD zaten, en heb eigenlijk ook geen idee hoe je die tevoorschijn tovert.

Mogen trams wel of niet meedoen bij de TJIP wedstrijd?

Acties:
  • 0 Henk 'm!

  • corné
  • Registratie: Juni 2002
  • Laatst online: 14-11-2024
Verwijderd schreef op vrijdag 20 juni 2008 @ 18:16:
ik zag op het openTTD forum iemand spreken over trams. Ik wist niet dat die in openTTD zaten, en heb eigenlijk ook geen idee hoe je die tevoorschijn tovert.

Mogen trams wel of niet meedoen bij de TJIP wedstrijd?
Zit ook niet standaard in OpenTTD. Mensen kunnen eigen dingen maken op het NewGRF systeem ofzo en daar zijn trams voor gemaakt.

Acties:
  • 0 Henk 'm!

  • Ruudjah
  • Registratie: November 1999
  • Laatst online: 06-09 20:58

Ruudjah

2022

Zit ook niet standaard in OpenTTD. Mensen kunnen eigen dingen maken op het NewGRF systeem ofzo en daar zijn trams voor gemaakt.
Vanaf 0.6 wel. Je kan trams bouwen (mits de server dat toestaat) door de wegenbouw knop ingedrukt te houden. Net als je dat doet bij rail, lectrified, monorail en maglev.

Note dat trams allemaal een ro-ro (roll on, roll off) station nodig hebben, en niet kunnen werken met 'eindstations'. Dat kan bij bussen en treinen wel.

[ Voor 20% gewijzigd door Ruudjah op 20-06-2008 20:34 ]

TweakBlog


Acties:
  • 0 Henk 'm!

Verwijderd

Ruudjah schreef op vrijdag 20 juni 2008 @ 20:33:
[...]

Vanaf 0.6 wel. Je kan trams bouwen (mits de server dat toestaat) door de wegenbouw knop ingedrukt te houden. Net als je dat doet bij rail, lectrified, monorail en maglev.
In dat geval is het even de vraag of ze wel of niet meedoen in de wedstrijd?

Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op zaterdag 21 juni 2008 @ 13:55:
[...]


In dat geval is het even de vraag of ze wel of niet meedoen in de wedstrijd?
Er mogen uitsluitend wegen gebouwd worden. Gebruik van (tram)rails en boeien is niet toegestaan.

Acties:
  • 0 Henk 'm!

  • Corniel
  • Registratie: April 2002
  • Laatst online: 31-03 14:56

Corniel

De wereld is gek!

Los van of het zou mogen, kan het niet. NoAI ondersteund geen treinen, laat staan trams.

while (me.Alive) {
me.KickAss();
}


Acties:
  • 0 Henk 'm!

Verwijderd

Corniel schreef op maandag 23 juni 2008 @ 14:40:
Los van of het zou mogen, kan het niet. NoAI ondersteund geen treinen, laat staan trams.
NoAI ondersteund gewoon trams. Treinen worden nog niet ondersteund, maar zullen wel worden toegevoegd in de toekomst.

Acties:
  • 0 Henk 'm!

  • Calamor
  • Registratie: Oktober 2004
  • Laatst online: 13-09 22:40
Als jullie testen gaan jullie dan ook flimpjes er van maken? Zal wel leuk zijn om te zien hoe goed het gaat. En hoeveel teams doen er aan mee?

Acties:
  • 0 Henk 'm!

  • Corniel
  • Registratie: April 2002
  • Laatst online: 31-03 14:56

Corniel

De wereld is gek!

Natuurlijk gaan treinen ondersteund worden, maar de ontwikkelaars verwachten niet dat dát op korte termijn gaat lukken. (Het is namelijk zeer complex om een trein te laten rijden ivm seinen e.d.)

En de reden dat we nu alleen oto's doen is omdat schepen en vliegtuigen te 'makkelijk' zijn, en veel meer winst genereren.

En die fimpjes, dat lag wel in de bedoeling.

[ Voor 22% gewijzigd door Corniel op 23-06-2008 15:25 ]

while (me.Alive) {
me.KickAss();
}


Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op vrijdag 20 juni 2008 @ 13:05:
[...]


na de wedstrijd vertel ik je al de geheimen van mijn code 8)


[...]


da's mooi.
Voor hen die nog wel behoefte hebben aan IO functionaliteit in Squirrel: kijk niet verder dan op deze pagina:

http://devs.openttd.org/~noai/morloth/samples/squirrel_io/

Ik heb er ook een voorbeeld bij geschreven dat 5 integers in een bestand zet en vervolgens weer uit leest.

Note: Nogmaals, wees er zeker van dat er geen IO code achterblijft in je uiteindelijke oplossing!

Succes!

Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op vrijdag 27 juni 2008 @ 11:04:
[...]

Voor hen die nog wel behoefte hebben aan IO functionaliteit in Squirrel: kijk niet verder dan op deze pagina:

http://devs.openttd.org/~noai/morloth/samples/squirrel_io/

Ik heb er ook een voorbeeld bij geschreven dat 5 integers in een bestand zet en vervolgens weer uit leest.

Note: Nogmaals, wees er zeker van dat er geen IO code achterblijft in je uiteindelijke oplossing!

Succes!
bedankt, maar nu heb ik al een omweg via Java gevonden :)
Maar ik kan me voorstellen dat er meer mensen zijn die hier wat aan hebben. Misschien wordt de IO wel aan de noai branch toegevoegd?

Acties:
  • 0 Henk 'm!

  • Ruudjah
  • Registratie: November 1999
  • Laatst online: 06-09 20:58

Ruudjah

2022

En die fimpjes, dat lag wel in de bedoeling.
Er bestaat een webcomponent die een google-maps style representatie van een game weergeeft in een browser. Dat kan live gekoppeld worden aan een game. Als ik me niet vergis bestaat er een uitbreiding voor waarbij je dus een lijstje met savegames laad. Die savegames zijn dan allemaal van één game, die bijvoorbeeld om de maand gesaved is. Zo kan je de ontwikkeling over tijd zien van de hele map.
Ik heb het zelf een keer geschreven, maar die code is oud en werkt niet meer met de huidige versie. Iemand van OpenTTDCoop heeft het idee toen verder uitgewerkt, en heeft me ook een paar demo's laten zien. Zag er erg aardig uit, moet ik zeggen.

Misschien een idee om op die manier de wedstrijd online te zetten :).

TweakBlog


Acties:
  • 0 Henk 'm!

  • corné
  • Registratie: Juni 2002
  • Laatst online: 14-11-2024
Mijn AI project ligt alweer een maand stil, dus het wordt tijd om hier weer eens wat mee te gaan doen :P

Acties:
  • 0 Henk 'm!

Verwijderd

Ruudjah schreef op vrijdag 27 juni 2008 @ 18:37:
[...]

Er bestaat een webcomponent die een google-maps style representatie van een game weergeeft in een browser. Dat kan live gekoppeld worden aan een game. Als ik me niet vergis bestaat er een uitbreiding voor waarbij je dus een lijstje met savegames laad. Die savegames zijn dan allemaal van één game, die bijvoorbeeld om de maand gesaved is. Zo kan je de ontwikkeling over tijd zien van de hele map.
Ik heb het zelf een keer geschreven, maar die code is oud en werkt niet meer met de huidige versie. Iemand van OpenTTDCoop heeft het idee toen verder uitgewerkt, en heeft me ook een paar demo's laten zien. Zag er erg aardig uit, moet ik zeggen.

Misschien een idee om op die manier de wedstrijd online te zetten :).
Dat lijkt volgens mij op het tournooi systeem dat TrueLight ontwikkeld heeft, zie hier

Acties:
  • 0 Henk 'm!

  • Ruudjah
  • Registratie: November 1999
  • Laatst online: 06-09 20:58

Ruudjah

2022

Oei, ik weet niet meer wie die ontwikkelaar was, alleen dat ie uit een scandinavisch land kwam :D. Deze variant heb ik nog niet gezien, maar het is ook alweer een tijdje geleden dat ik ermee bezig ben geweest. De applicatie als die was destijds was 100% hetzelfde als Google maps, draggen om in grote maps bepaalde gebieden te bekijken, zoomen etc werkte gewoon. Er zat dan een button bij om van tijdsperiode te veranderen, wat nog omgezet zou worden in een slider.

Ik moet zeggen dat die nieuwere versie er impressive uitziet.

TweakBlog


Acties:
  • 0 Henk 'm!

Verwijderd

deze?
http://dev.myottd.net/
Geloof dat Bjarni dat ontwikkeld heeft

edit: SpComb uit finland waar blijkt het te zijn

[ Voor 27% gewijzigd door Verwijderd op 28-06-2008 21:46 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op donderdag 19 juni 2008 @ 11:09:
[...]

Waarom niet? Al deze code valt onder de GPL licentie dus wie zijn wij om dat te verbieden? ;)
Betekent dat dat we delen van de code van wrightAI en Convoy in onze code mogen hebben? Dit lijkt in tegenspraak met het reglement, waarin staat: "De engine is zelf geschreven (door de organisatie aangeleverde voorbeeld code mag hergebruikt worden)."

En voor zo ver ik weet zijn wrightAI en Convoy niet door de organisatie aangeleverd. (En misschien zijn er nog wel meer AI-codes te vinden.)

Acties:
  • 0 Henk 'm!

  • Corniel
  • Registratie: April 2002
  • Laatst online: 31-03 14:56

Corniel

De wereld is gek!

AI's die in de branch zelf wordt aangeleverd vallen tot nader orde ook onder de 'voorbeeld code'. Het controleren op het hergebruik van andere AI's zal zeker plaats vinden. Als blijkt dat er daar wel heer erg inspiratieloos ge-ctrl-c-v-t is, zal worden ingegrepen. Anders niet.

Merk op dat in WrightAI niet heel veel staat wat je kan gebruiken. Vliegtuigen mogen immers niet. ;)

while (me.Alive) {
me.KickAss();
}


Acties:
  • 0 Henk 'm!

Verwijderd

Zo, verdorie, ik zie de challenge nu pas!

Ik zou wel mee willen doen, vrees dat ik (te) weinig tijd heb helaas. Gisteren nog wel even een bus-lijn-bouw unit gemaakt die winstgevende busverbindingen maakt :)

Misschien dat ik stiekem toch mee doe, maar dan moet ik nog wel een paar dagen erin kunnen steken..

Hoe doen jullie het tot nu toe?

Acties:
  • 0 Henk 'm!

Verwijderd

even een praktische vraag over de map. Er staat dat ie 512x512 is en dat de standaard instellingen worden gebruikt. Betekent dat dat we er voor deze wedstrijd vanuit mogen gaan dat de map random gegenereerd wordt, en een gematigd klimaat heeft? Vallen die twee zaken ook onder de standaard instellingen?

en ik zag ook dat het maximum aantal wegvoertuigen op 500 ofzo staat. Dat is uiteraard veel te laag.

[ Voor 14% gewijzigd door Verwijderd op 28-07-2008 14:33 ]


Acties:
  • 0 Henk 'm!

Verwijderd

"uiteraard." :) Wat vind jij dan een goed maximum? De computer moet ook nog 8*max_aantal_bussen aankunnen naast de AI's laten rekenen. Ik heb nog geen idee wat een goed aantal is, misschien moet ik eens een AI gaan bouwen. ;)

Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op maandag 28 juli 2008 @ 18:57:
"uiteraard." :) Wat vind jij dan een goed maximum? De computer moet ook nog 8*max_aantal_bussen aankunnen naast de AI's laten rekenen. Ik heb nog geen idee wat een goed aantal is, misschien moet ik eens een AI gaan bouwen. ;)
in 10 jaar kan mijn AI best meer dan 500 bouwen. Dat ontdekte ik omdat ie na een jaar of 6-7 crashte op 500. Nu was het niet de meest effectieve AI en werden er 200 bussen op één route gegooid (foutje van het management ;) ) maar het kan makkelijk.

Acties:
  • 0 Henk 'm!

  • Corniel
  • Registratie: April 2002
  • Laatst online: 31-03 14:56

Corniel

De wereld is gek!

Tja, wij hebben de grens van 500 niet bedacht. Dust tot nader orde zal je het er mee moeten doen. ;) Zal wel eens informeren of deze grens kan worden opgerekt.

while (me.Alive) {
me.KickAss();
}


Acties:
  • 0 Henk 'm!

Verwijderd

Corniel schreef op dinsdag 29 juli 2008 @ 14:42:
Tja, wij hebben de grens van 500 niet bedacht. Dust tot nader orde zal je het er mee moeten doen. ;) Zal wel eens informeren of deze grens kan worden opgerekt.
die grens staat gewoon ergens in de config file (openttd.cfg) en kan dus makkelijk verhoogd worden. De vraag is, of er voor de wedstrijd een bepaald maximum wordt gekozen en hoe hoog dat dan wordt.

Acties:
  • 0 Henk 'm!

  • Corniel
  • Registratie: April 2002
  • Laatst online: 31-03 14:56

Corniel

De wereld is gek!

Learn to live with the defaults. ;) Zoals gezegd, ik zal eens informeren of het zin/nut heeft dan wel wenselijk is om hier vanaf te wijken. Mstassen kaarte niet voor niets aan dat de server 8 * max_aantal_bussen aan moet kunnen.

while (me.Alive) {
me.KickAss();
}


Acties:
  • 0 Henk 'm!

Verwijderd

Zie nu voor het eerst de libraries. Is het toegestaan deze te gebruiken bij de Tjip Challenge?

Er is nu zelfs een complete pathfinder library http://wiki.openttd.org/index.php/AI:Pathfinder , nog geen idee hoe goed deze is, maar een goede pathfinder bouwen vond ik altijd een van de grootste uitdagingen in de challenge. Nu lijk je deze dus kant en klaar te kunnen aan roepen. Wel of niet toegestaan?

Acties:
  • 0 Henk 'm!

  • Corniel
  • Registratie: April 2002
  • Laatst online: 31-03 14:56

Corniel

De wereld is gek!

Verwijderd schreef op woensdag 06 augustus 2008 @ 09:31:
Zie nu voor het eerst de libraries. Is het toegestaan deze te gebruiken bij de Tjip Challenge?
Ja dat mag. Wat niet weg neemt dat je natuurlijk ook een eigen pathfinder implementatie mag schrijven. ;)

while (me.Alive) {
me.KickAss();
}


Acties:
  • 0 Henk 'm!

Verwijderd

In de spelregels en het reglement staat nu: "De engine is geschreven in Squirrel."
Zou Squirrel niet in NAIL moeten worden veranderd, als ik deze thread juist interpreteer?

Acties:
  • 0 Henk 'm!

  • Corniel
  • Registratie: April 2002
  • Laatst online: 31-03 14:56

Corniel

De wereld is gek!

Nope. NAIL is nog (lang) niet klaar. En gaan niet klaar zijn - voor zover mij bekend - ten tijde van de finale.

while (me.Alive) {
me.KickAss();
}


Acties:
  • 0 Henk 'm!

Verwijderd

Ok, maar ik kreeg de indruk dat in de nieuwe versies van het noAI-spel, de AI-codes al als NAIL werden geinterpreteerd. Heb ik blijkbaar verkeerd begrepen.

Acties:
  • 0 Henk 'm!

Verwijderd

In de eerste post staat dat (uiterlijk 2 weken!) voor de finale de definitieve versie waarin onze AI's gaan spelen wordt vastgesteld en geplaatst op de website van de challenge.
Ik kan echter nergens vinden in welke versie we het tegen elkaar moeten opnemen, ik ga ervanuit dat het nog niet op de site staat. Zou de versie zo spoedig mogelijk bekend gemaakt kunnen worden? Dat komt de duidelijkheid ten goede. Het is al zo'n complex spel. ;)

Wat ook belangrijk is voor de duidelijkheid is dat alle opties, maar dan ook alle, gespecificeerd worden vooraf. Tot nu toe was het "default, met de volgende aanpassingen:...", maar aangezien ik wel eens een optie heb veranderd, en dat bij het laden van een nieuwe versie niet alles op default wordt gezet, of de default misschien per versie kan verschillen, lijkt het me een goede zaak om alle opties in de configuratie te vermelden. Maak desnoods een aantal screenshots van de instellingen zoals ze bij de finale worden gebruikt, overtikken is misschien wat veel werk. Ik telde in de gauwigheid zo'n 136 opties. :P Zo zal niemand zich tekort gedaan voelen, omdat die een bepaalde optie net anders had staan om wat voor reden dan ook.

Nog een vraagje: Wordt de wedstrijd in het Engels of in het Nederlands gespeeld?

Acties:
  • 0 Henk 'm!

  • Corniel
  • Registratie: April 2002
  • Laatst online: 31-03 14:56

Corniel

De wereld is gek!

Bij deze hopelijk een compleet overzicht van alle settings die er gebruikt worden.

::Build
NoAI v14329

::Patch
http://webserver.tjip.com/challenge2008/finale_patch.zip

::Speloties
Valuta: Euro
Voertuigen: Rechtsrijden
Automatisch opslaan:Uit
Schermresolutie:1680x1050
Voertuignamen:standaard
Meeteenheden: metrisch
Plaatsnamen: Nederlands
Taal: Nederlands
Screenshotformaat:PNG

::Moeilijkheid
Maximaal aantal tegenstanders: variabel
Starttijd tegenstanders:meteen
Aantal steden: normaal
Aantal industrieën: normaal
Maximale lening: Euro 200.000
Startrente: 4%
Brandstofkosten: hoog
Bouwsnelheid tegenstanders: erg hoog
Inteligentie van tegenstanders: hoog
Voertuigdefecten: uit
Vermenigingsvuldigingsfactor subsidies: 2x
Bouwkosten: hoog
Tereinsoort: plat
Hoveelheid zee/meren: laag
Economie: stabiel
Treinen draaien om: aan het einde van het spoort, en in stations
Rampen: uit
Houding van gemeente mbt landschapsaanpassingen: tollerant

::Patches-Economie
Infaltie: uit
Omkopen van de gemeente toegestaan: aan
Kopen van exclusieve transportrechten toegestaan: uit
Geld geven aan andere bedrijven toegestaan:uit
Stop spel in: 2008
Vloeiende economie inschakelen: uit

::Patches-Tegenstanders
Treinen voor de computer uitschakelen: aan
Wegvoertuigen voor de computer uitschakelen: uit
Vliegtuigen voor de computer uitschakelen: aan
Schepen voor de computer uitschakelen: aan

::Nieuw spel
“Normaal landschap”
Mapgrootte: 512x512
Aantal steden: normaal
Aantal industrieën: normaal
Datum: 1 janunari 1998
Landgenerator: TeraGenesis
Bos algoritme: verbeterd
Tereintype: plat
Zeeniveau: laag
Gladheid: vlak

[ Voor 0% gewijzigd door Corniel op 15-09-2008 16:00 . Reden: linkje werkte niet ]

while (me.Alive) {
me.KickAss();
}


Acties:
  • 0 Henk 'm!

Verwijderd

Dank u voor de uitgebreide reactie. Het valt me op dat ik nog best wel wat dingen moet veranderen aan mijn defaults. Bijvoorbeeld dat voertuigdefecten uit staat. Ik ging ervan uit dat dat aan zou staan, misschien anderen ook.

Ik weet overigens niet hoe ik aan NoAI v14329 kan komen. Volgens deze pagina is de laatste nightly build (nu) r14325 en de laatste release is r14222.

Ander probleem is dat de link naar de patch op de tjip-server het niet doet. (Ook niet als ik challege in challenge verander.) Wat staat er eigenlijk in zo'n patch?

Ik mis trouwens nog de opties voor ::Patches-Constructie, ::Patches-Voertuigen en ::Patches-Stations. Daar staan volgens mij ook een aantal opties die van belang zijn voor de wedstrijd.


edit: Aha, ik zie dat de link naar de patch net is aangepast :)

[ Voor 4% gewijzigd door Verwijderd op 15-09-2008 16:19 ]


Acties:
  • 0 Henk 'm!

Verwijderd

::Patches-Tegenstanders
Treinen voor de computer uitschakelen: aan
Wegvoertuigen voor de computer uitschakelen: uit
Vliegtuigen voor de computer uitschakelen: aan
Schepen voor de computer uitschakelen: aan
Deze opties zijn nutteloos in de NoAI branch, ze worden nergens gebruikt. Om dit effect te bereiken moet je onder patches-Voertuigen de opties "Maximaal aantal treinen/wegvoertuigen/vliegtuigen/schepen per speler" instellen.

Helaas kan ik er zaterdag niet bij zijn, maar veel plezier iedereen die er wel is. Ik ben erg benieuw hoe alle AIs het doen en hoop dat alle deelnemers hun AI publiceren na afloop.

Acties:
  • 0 Henk 'm!

Verwijderd

Corniel schreef op maandag 15 september 2008 @ 15:00:
Bij deze hopelijk een compleet overzicht van alle settings die er gebruikt worden.

(..)

Tereintype: plat
Zeeniveau: laag
Gladheid: vlak
is dit default? Ik dacht dat default een wat moeilijker terein was. Op deze manier is pathfinding (veel te) makkelijk, lijkt mij.

p.s. ik weet niet zeker of ik mee kan doen. Door drukte en medische omstandigheden ben ik niet echt aan openttd toegekomen de laatste maand :-( Wellicht dat er nog een klein wondertje gebeurt de komende dagen.

Acties:
  • 0 Henk 'm!

  • Corniel
  • Registratie: April 2002
  • Laatst online: 31-03 14:56

Corniel

De wereld is gek!

Wat betreft het terein: het kan op alle punten makkelijker. Wellicht dat we in overleg met de deelnemers gedurende de volgende ronden het terein moeilijker maken.

Ik hoop wel dat je nog meedoet Wilco. Als ie ook maar iets doet, is het al goed wat mij betreft. ;)

while (me.Alive) {
me.KickAss();
}


Acties:
  • 0 Henk 'm!

Verwijderd

Corniel schreef op dinsdag 16 september 2008 @ 10:13:
Wat betreft het terein: het kan op alle punten makkelijker. Wellicht dat we in overleg met de deelnemers gedurende de volgende ronden het terein moeilijker maken.
dat is wel een leuk idee!
Ik hoop wel dat je nog meedoet Wilco. Als ie ook maar iets doet, is het al goed wat mij betreft. ;)
ik hoop het ook! Ik ga een paar dagen rust nemen (retraite in Limbug, nou ja, bij familie langs :) ) en hopelijk heb ik dan wat meer gelegenheid en rust om nog wat te schrijven.

en uiteraard is het goed als het "iets" doet, zeker als jij één van de tegenstanders bent ;) . Voor mij is het pas goed als het "iets goeds" doet 8)

Acties:
  • 0 Henk 'm!

Verwijderd

Ik had in mijn "defaults" zeeniveau op "erg laag" staan. Ziet er toch een stuk anders uit.
Het is belangrijker dan ik dacht om echt alle opties te specificeren. Dus daarom herhaal ik mijn vraag aan de organisatie om dat ook te doen voor ::Patches-Constructie, ::Patches-Voertuigen en ::Patches-Stations.

En weet iemand hoe je een bepaalde nightly build moet opvragen? Ik denk dat een paar revisies meer of minder niet zo heel veel uitmaken, maar toch.

Acties:
  • 0 Henk 'm!

  • kuifware26
  • Registratie: Maart 2004
  • Laatst online: 29-11-2024
Corniel schreef op dinsdag 16 september 2008 @ 10:13:
Wat betreft het terein: het kan op alle punten makkelijker. Wellicht dat we in overleg met de deelnemers gedurende de volgende ronden het terein moeilijker maken.
Hoeveel deelnemers zijn er (ongeveer) en hoe zijn de ronden van de wedstrijd eigenlijk opgezet?

Ik ben overigens niet zo een groot voorstander van moeilijk terrein, tenzij je elke wedstrijd één keer op makkelijk en één keer op moeilijk terrein speelt.

Acties:
  • 0 Henk 'm!

  • Corniel
  • Registratie: April 2002
  • Laatst online: 31-03 14:56

Corniel

De wereld is gek!

Zoals het zich nu laat aanzien zijn er zo'n 10 deelnemende teams. Dus dat zijn twee 'borden' te gelijk met 5 spelers.Volgens mij heb ik alle specs wel opgegeven nu.De rest van de patching gaat namelijk over hoe de GUI regageert op menselijke input.

O ja, dat nog wel vergeten: 5000 voertuigen is de max.

while (me.Alive) {
me.KickAss();
}


Acties:
  • 0 Henk 'm!

  • YopY
  • Registratie: September 2003
  • Laatst online: 13-07 01:14
Misschien leuk om te melden, naar aanleiding van dit topic (met daarin de kennis dat een AI schrijven voor OpenTTD mogelijk is) heb ik een AI schrijven voor OpenTTD voorgedragen aan de leraar / studenten van het vak Kunstmatige Intelligentie, en dit is geaccepteerd :). We gaan met 2 of 3 teams van 2 een AI schrijven en die tegen elkaar laten spelen.

Helaas niet meer voor deze wedstrijd, maar zelfs dan is het nog leuk (lijkt me).

Worden de AI's die aan de hand van deze wedstrijd gemaakt worden overigens ook toegevoegd aan de AI's die nu bij OpenTTD zijn, danwel op de wiki geplaatst? Zou misschien een leuke boost voor de TTD community zijn.

Acties:
  • 0 Henk 'm!

  • Horeamus
  • Registratie: Mei 2007
  • Laatst online: 04-08 16:36
Verwijderd schreef op dinsdag 16 september 2008 @ 12:06:
... En weet iemand hoe je een bepaalde nightly build moet opvragen?
Onder linux (met svn geinstalleerd) "svn co -r 14329 svn://svn.openttd.org/branches/noai /naar/de/goeie/map"

Onder windows, download een programma zoals toirtoisesvn en gebruik als source van de repository svn://svn.openttd.org/branches/noai (heb zelf geen ervaring met tortoise, of welk anders windows programma op dat terrein. Weet alleen dat de uni dat gebruikt)

Je moet dan nog wel zelf compileren, dus is niet echt een bepaalde nightly build :-) Maar dit is het dichtste bij wat ik kan komen.

Acties:
  • 0 Henk 'm!

Verwijderd

@Corniel,
5000 voertuigen? :o Eerder in deze thread leek het nog bij 500 te blijven. Het is geen typfout?
(Volgens mij gaat trouwens alleen ::Patches-Interface over de GUI.)

@yopy,
Aha, OTTD-AI programmeren voor studiepunten, klinkt goed. 8)
Ik weet niet of het een hele grote boost zal geven aan de OTTD community. De meeste AI's zijn natuurlijk specifiek voor deze wedstrijd geschreven. (En misschien in het Nederlands.) En het doel is ook niet om leuk tegenspel te bieden voor mensen, maar ik denk dat ze er toch wat aan zullen hebben. Veel deelnemers hebben al toegezegd dat ze hun code na de wedstrijd zullen openbaren.

@Horeamus,
Bedankt. Ik zal eens kijken of het lukt.

Acties:
  • 0 Henk 'm!

  • Corniel
  • Registratie: April 2002
  • Laatst online: 31-03 14:56

Corniel

De wereld is gek!

Nee Misha, je leest het goed: 5000, er waren klachten. ;)

@yopy: de deelnemers zijn zelf eigenaar van de code. Het is aan hen of ze het wel of niet delen.

Hier is de config die ik nu gebruik. Tenzij mensen goede argumenten hebben waarom e.a. niet klopt, zal dit de config van de finale zijn.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
[misc]
display_opt = SHOW_TOWN_NAMES|SHOW_STATION_NAMES|SHOW_SIGNS|FULL_ANIMATION|FULL_DETAIL|WAYPOINTS
news_ticker_sound = true
fullscreen = false
language = dutch.lng
resolution = 1680,1028
screenshot_format = 
savegame_format = 
rightclick_emulate = false
small_font = 
medium_font = 
large_font = 
small_size = 6
medium_size = 10
large_size = 16
small_aa = false
medium_aa = false
large_aa = false
sprite_cache_size = 4
player_face = 0
transparency_options = 0
transparency_locks = 0
invisibility_options = 0
keyboard = 
keyboard_caps = 

[music]
playlist = 0
music_vol = 0
effect_vol = 0
custom_1 = 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
custom_2 = 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
playing = false
shuffle = false
extmidi = timidity

[win32]
display_hz = 0
force_full_redraw = false
fullscreen_bpp = 8
window_maximize = false

[difficulty]
max_no_competitors = 7
competitor_start_time = 0
number_towns = 2
number_industries = 3
max_loan = 100000
initial_interest = 4
vehicle_costs = 2
competitor_speed = 4
competitor_intelligence = 2
vehicle_breakdowns = 0
subsidy_multiplier = 1
construction_cost = 2
terrain_type = 1
quantity_sea_lakes = 1
economy = 0
line_reverse_mode = 0
disasters = 0
town_council_tolerance = 0
diff_level = 3

[game_creation]
town_name = dutch
landscape = temperate
snow_line = 56
snow_line_height = 7
starting_year = 1998
land_generator = 1
oil_refinery_limit = 32
tgen_smoothness = 1
generation_seed = 4160062532
tree_placer = 2
heightmap_rotation = 0
se_flat_world_height = 0
map_x = 9
map_y = 9

[vehicle]
road_side = right
realistic_acceleration = false
mammoth_trains = true
never_expire_vehicles = false
max_trains = 500
max_roadveh = 5000
max_aircraft = 500
max_ships = 500
servint_ispercent = false
servint_trains = 150
servint_roadveh = 150
servint_ships = 360
servint_aircraft = 100
wagon_speed_limits = true
disable_elrails = false
freight_trains = 1
plane_speed = 4
dynamic_engines = false
extend_vehicle_life = 0

[construction]
build_on_slopes = true
autoslope = true
extra_dynamite = false
longbridges = true
signal_side = true
road_stop_on_town_road = true
raw_industry_construction = 0

[station]
always_small_airport = false
join_stations = true
nonuniform_stations = true
station_spread = 12
modified_catchment = true
adjacent_stations = true

[economy]
town_layout = 1
station_noise_level = false
inflation = false
multiple_industry_per_town = false
same_industry_close = false
bribe = true
exclusive_rights = false
give_money = false
smooth_economy = true
allow_shares = false
town_growth_rate = 2
larger_towns = 4
initial_city_size = 2
mod_road_rebuild = false
dist_local_authority = 20
town_noise_population = 800,2000,4000

[pf]
forbid_90_deg = false
roadveh_queue = true
pathfinder_for_trains = 2
pathfinder_for_roadvehs = 2
pathfinder_for_ships = 0
wait_oneway_signal = 15
wait_twoway_signal = 41
wait_for_pbs_path = 30
reserve_paths = false
path_backoff_interval = 20
opf.pf_maxlength = 4096
opf.pf_maxdepth = 48
npf.npf_max_search_nodes = 10000
npf.npf_rail_firstred_penalty = 1000
npf.npf_rail_firstred_exit_penalty = 10000
npf.npf_rail_lastred_penalty = 1000
npf.npf_rail_station_penalty = 100
npf.npf_rail_slope_penalty = 100
npf.npf_rail_curve_penalty = 1
npf.npf_rail_depot_reverse_penalty = 5000
npf.npf_rail_pbs_cross_penalty = 300
npf.npf_rail_pbs_signal_back_penalty = 1500
npf.npf_buoy_penalty = 200
npf.npf_water_curve_penalty = 25
npf.npf_road_curve_penalty = 1
npf.npf_crossing_penalty = 300
npf.npf_road_drive_through_penalty = 800
yapf.disable_node_optimization = false
yapf.max_search_nodes = 10000
yapf.rail_firstred_twoway_eol = true
yapf.rail_firstred_penalty = 1000
yapf.rail_firstred_exit_penalty = 10000
yapf.rail_lastred_penalty = 1000
yapf.rail_lastred_exit_penalty = 10000
yapf.rail_station_penalty = 1000
yapf.rail_slope_penalty = 200
yapf.rail_curve45_penalty = 300
yapf.rail_curve90_penalty = 600
yapf.rail_depot_reverse_penalty = 5000
yapf.rail_crossing_penalty = 300
yapf.rail_look_ahead_max_signals = 10
yapf.rail_look_ahead_signal_p0 = 500
yapf.rail_look_ahead_signal_p1 = -100
yapf.rail_look_ahead_signal_p2 = 5
yapf.rail_pbs_cross_penalty = 300
yapf.rail_pbs_station_penalty = 800
yapf.rail_pbs_signal_back_penalty = 1500
yapf.rail_doubleslip_penalty = 100
yapf.rail_longer_platform_penalty = 800
yapf.rail_longer_platform_per_tile_penalty = 0
yapf.rail_shorter_platform_penalty = 4000
yapf.rail_shorter_platform_per_tile_penalty = 0
yapf.road_slope_penalty = 200
yapf.road_curve_penalty = 100
yapf.road_crossing_penalty = 300
yapf.road_stop_penalty = 800

[order]
gotodepot = true
no_servicing_if_no_breakdowns = false
timetabling = true
improved_load = true
selectgoods = true
serviceathelipad = true
gradual_loading = true

[gui]
colored_news_year = 1980
ending_year = 2008
autosave = off
vehicle_speed = true
status_long_date = true
show_finances = false
autoscroll = false
reverse_scroll = false
smooth_scroll = false
measure_tooltip = false
errmsg_duration = 5
toolbar_pos = 0
window_snap_radius = 10
population_in_label = true
link_terraform_toolbar = false
liveries = 2
prefer_teamchat = false
scrollwheel_scrolling = 0
scrollwheel_multiplier = 5
pause_on_newgame = false
advanced_vehicle_list = 1
timetable_in_ticks = false
loading_indicators = 1
default_rail_type = 4
enable_signal_gui = false
drag_signals_density = 4
semaphore_build_before = 1975
train_income_warn = true
order_review_system = 2
lost_train_warn = true
autorenew = false
autorenew_months = 6
autorenew_money = 100000
always_build_infrastructure = false
new_nonstop = false
keep_all_autosave = false
autosave_on_exit = false
max_num_autosaves = 16
bridge_pillars = true
auto_euro = true
news_message_timeout = 2
show_track_reservation = false
default_signal_type = 0
cycle_signal_types = 0
console_backlog_timeout = 100
console_backlog_length = 100
network_chat_box_width = 700
network_chat_box_height = 25

[ai]
ai_in_multiplayer = true
ai_disable_veh_train = true
ai_disable_veh_roadveh = false
ai_disable_veh_aircraft = true
ai_disable_veh_ship = true

[locale]
currency = EUR
units = metric

[network]
max_join_time = 500
pause_on_join = true
server_bind_ip = 0.0.0.0
server_port = 3979
server_advertise = false
lan_internet = 0
player_name = 
server_password = 
rcon_password = 
default_company_pass = 
server_name = 
connect_to_ip = 
network_id = e3522299d690ada9e85af747505a09df
autoclean_companies = false
autoclean_unprotected = 12
autoclean_protected = 36
max_companies = 8
max_clients = 10
max_spectators = 10
restart_game_year = 0
min_players = 0
server_lang = ANY
reload_cfg = false
last_host = 0.0.0.0
last_port = 0

[currency]
rate = 1
separator = "."
to_euro = 0
prefix = ""
suffix = " credits"

[news_display]
arrival_player = full
arrival_other = full
accident = full
company_info = full
open = full
close = full
economy = full
production_player = full
production_other = full
production_nobody = full
advice = full
new_vehicles = full
acceptance = full
subsidies = full
general = full

[version]
version_string = r14288M-noai
version_number = 070037D0

while (me.Alive) {
me.KickAss();
}


Acties:
  • 0 Henk 'm!

Verwijderd

Ah, die config file is een stuk handiger en duidelijker dan alles overtypen. :)
Ik vroeg me af wat ik zou doen als ik de 500 wagentjes zou halen. Maar met 5000 hoef ik me niet al te veel zorgen te maken denk ik. ;) Maakt het weer wat makkelijker.

edit: misschien nuttig voor anderen: In de OpenTTD-map (waar meestal ook de map met save-games in zitten, in my documents) bevindt zich de file openttd.cfg. Stuk van Corniel even copy-pasten en alle wedstrijdinstellingen zijn overgenomen.

[ Voor 32% gewijzigd door Verwijderd op 16-09-2008 16:30 ]


  • Horeamus
  • Registratie: Mei 2007
  • Laatst online: 04-08 16:36
Corniel, klopt het dat die patch in feite niets belangrijks veranderd, alleen statistieken bijhoud? Anders hebben we hier een klein probleem (of een extra klusje) aangezien we hier linux gebruiken en er alleen een wijziging gedaan wordt in de win32_fiber.cpp (ookal moet ik zeggen dat het niet echt een super interresante wijziging lijkt, inplaats van mogelijk true altijd false returnen :-))

  • Corniel
  • Registratie: April 2002
  • Laatst online: 31-03 14:56

Corniel

De wereld is gek!

Die patch zorgt er voor dat het onder windows niet krak zegt, en dat de score gelogd wordt. Niet heel spannend.

while (me.Alive) {
me.KickAss();
}


  • kuifware26
  • Registratie: Maart 2004
  • Laatst online: 29-11-2024
Vraagje: kan de patch op tt-forums voor AIRoad.CanBuildConnectedRoadPartsHere ook worden toegevoegd? (deze patch zit trouwens ook in revision 14357 nu) Zonder deze patch geeft deze functie -- die vrij essentieel is voor een (custom) path finder -- soms een verkeerd antwoord, vooral bij het einde van town roads.

Acties:
  • 0 Henk 'm!

Verwijderd

Ik kan me van de challenge van vorig jaar herinneren dat er op de wedstrijddag tussen de rondes door soms nog het een en ander aan de programma's werd gesleuteld. En dat dat werd toegestaan. Is dat dit jaar weer zo? Even wat parameters veranderen om nog meer winst te maken of een nooit opgemerkte bug die tijdens de wedstrijd de AI laat crashen verhelpen. Of reageren op een bepaalde tactiek van de tegenstander in een eerdere ronde.

Ik ben niet echt voorstander van toestaan, maar als het wordt toegestaan zal ik waarschijnlijk wel nog tussendoor willen sleutelen.

Acties:
  • 0 Henk 'm!

Verwijderd

Ik steun trouwens kuifware26's voorstel om die patch toe te voegen.

Acties:
  • 0 Henk 'm!

  • Corniel
  • Registratie: April 2002
  • Laatst online: 31-03 14:56

Corniel

De wereld is gek!

Hij is toegevoegd. Ik moet alleen de patch die we ter download aanbieden nog updaten.

Ik heb de patch (finale_patch.zip) ook aangepast:
- fix voor AIRoad.CanBuildConnectedRoadPartsHere
- fix voor multithreading onder Windows
- logging finale score

[ Voor 58% gewijzigd door Corniel op 19-09-2008 10:31 . Reden: toezeggingen ingelost ]

while (me.Alive) {
me.KickAss();
}


Acties:
  • 0 Henk 'm!

  • kuifware26
  • Registratie: Maart 2004
  • Laatst online: 29-11-2024
Bedankt voor het toevoegen van de CanBuildConnectedRoadPartsHere patch, Corniel. Verder wens ik iedereen succes die nog aan het sleutelen is aan zijn programma!

Acties:
  • 0 Henk 'm!

Verwijderd

Bedankt, ik zal er zeker nog aan moeten sleutelen. (Nu kan ie nog geen simpele route aanleggen. :| ) Maar we hebben nog bijna 24 uur. :)

Acties:
  • 0 Henk 'm!

  • Martao
  • Registratie: September 2001
  • Laatst online: 23-08 14:23
Zoals het er nu naar uit ziet zal sleutelen op zich toegestaan worden, al is het maar de vraag in hoeverre daar tijd voor is.

Acties:
  • 0 Henk 'm!

Verwijderd

Martao schreef op vrijdag 19 september 2008 @ 14:01:
Zoals het er nu naar uit ziet zal sleutelen op zich toegestaan worden, al is het maar de vraag in hoeverre daar tijd voor is.
en als de wedstrijd maar uit één of twee rondes bestaat, zal het ook niet zo zinvol zijn.

Acties:
  • 0 Henk 'm!

  • Corniel
  • Registratie: April 2002
  • Laatst online: 31-03 14:56

Corniel

De wereld is gek!

Ik zal de wedstrijdplanning even toelichten: afhankelijk van hoe laat alle deelnemers een eerste OK-versie hebben beginnen tussen 12:00 en 14:00 met de kwalificaties. Tijdens de kwalificaties mogen er naar hartelust updates worden ingeleverd. De beste zeven kwalificeren zich voor de finale. Die bestaat uit twee ronden. Ik verwacht dat de finale rond 17:00 zal beginnen, wellicht iets eerder.

Maar ik ga dat morgen verder uitleggen. Nu zelf even zorgen dat onze engine morgen niet failliet gaat... (Want dat levert strafpunten op!)

while (me.Alive) {
me.KickAss();
}


Acties:
  • 0 Henk 'm!

Verwijderd

Hoe lang duurt zo'n wedstrijd dan in gewone tijd? Wordt het versneld afgespeeld? (Of delen versneld?)

En nog een vraagje over als iemand failliet gaat: In mijn AI komt er dan een plaatsje vrij die dan wordt ingenomen door een willekeurige AI. Hoe is dat te voorkomen? Soms wil ik die AI's helemaal niet.

Trouwens jammer dat OTTD-site net nu gehackt is...

Acties:
  • 0 Henk 'm!

Verwijderd

mag de AI signs plaatsen? bv. om te laten zien wat er gebeurt en hoe er gepland wordt??

  • kuifware26
  • Registratie: Maart 2004
  • Laatst online: 29-11-2024
@mstassen: ik denk dat de AI's het beste gestart kunnen worden met start_ai in de in-game console (allemaal tegelijk en voordat de game van pause afgehaald wordt). De setting 'max. competitors' kan dan gewoon op 0 staan.

Acties:
  • 0 Henk 'm!

Verwijderd

Zouden de uitslagen misschien gepost kunnen worden? Ik wil de namen en getallen nog wel eens terugzien.
Pagina: 1 2 Laatste