Added ^_^
Verwijderd
Heb me ook bij de institute aangesloten =)
Het is nu nog een starterbot, maar ben al bezig om een wat intelligenter botje te schrijven =)
Het is nu nog een starterbot, maar ben al bezig om een wat intelligenter botje te schrijven =)
Verwijderd
Ben inmiddels al even onderweg, ook maar Tweakers als institute bijgeplaatst. Ik had dankzij dit topic de wedstijd ook gevonden, waarvoor dank.
Ik heb mij ook aan geslotenBolukan schreef op dinsdag 11 maart 2014 @ 10:03:
Goed idee:
Tweakers Leaderboard
@Hieronder: he jammer, stond ik toch 2 minuten een keer bovenaan
Straks maar weer eens verder puzzelen om mijn AI slimmer te krijgen dan de rest

[ Voor 1% gewijzigd door Johnnei op 11-03-2014 14:01 . Reden: typo ]
They blur the lines and lead the way, their way!
Misschien nog een feature request voor AIGames: Het toevoegen van een mogelijkheid om bij 1 of meer groepjes/competities te horen waardoor je instituut niet hoeft te 'misbruiken' voor een soort eigen competitie. Een speler zou dan gewoon zijn opleiding of werkgever in kunnen vullen bij instituut, maar daarnaast een 'competitie' starten met vriendengroep of, zoals in dit geval, een andere community.
Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'
Altijd leuk zoiets ik ga ook eens een poging doen! Alleen hopen dat ik er genoeg tijd voor heb..
Oh jammer. Het is dus niet toegestaan om gewoon even een optimization toolbox te gebruiken. Bummer.Herko_ter_Horst schreef op zaterdag 08 maart 2014 @ 17:34:
Meestal zijn alleen standaard libraries toegestaan bij dit soort contests, in elk geval voor het deel dat je daadwerkelijk submit.
Maar als jij om de engine en jouw bot een UI heen wilt bouwen, moet je natuurlijk zelf weten wat je gebruikt.
Wat voor een optimization toolbox zou je willen gebruiken om de bot te schrijven? Ik denk niet dat dit een probleem is dat opgelost word met een standaard optimalisatie algoritme...Chip. schreef op donderdag 13 maart 2014 @ 00:52:
[...]
Oh jammer. Het is dus niet toegestaan om gewoon even een optimization toolbox te gebruiken. Bummer.
Ik heb me ook aan de Tweakers groep toegevoegd.
Jammer dat er alleen een Java starter bot is, als ze nou eens een Python starter bot hadden, dan zou ik er zeker mee beginnen. Gewoon een beetje aanklooien, want het zegt me allemaal nog niet zo heel veel
Ik was begonnen aan een Python bot, maar heb de laatste dagen niet bepaald tijd gehad om eraan te besteden. Op GitHub heb ik een soort-van-bijna-af bot staan die je wellicht als startpunt zou kunnen gebruiken, maar nog niet getest met de daadwerkelijke engine zelf, dus zal vast vol staan met fouten. Eh, het ding slaagt nog niet eens voor zijn eigen doctests.TheNephilim schreef op donderdag 13 maart 2014 @ 11:42:
Jammer dat er alleen een Java starter bot is, als ze nou eens een Python starter bot hadden, dan zou ik er zeker mee beginnen. Gewoon een beetje aanklooien, want het zegt me allemaal nog niet zo heel veel
Matlab of nog beter CPLEX van IBM. En je kan de gehele map gewoon als een graaf zien. Waarbij ieder land gewoon een bepaald gewicht heeft. Vervolgens zou je dus je troepen verplaatsing kunnen optimalizeren of waar je je troepen moet plaatsen. Eventueel zou je ook een model predictive controller kunnen maken, alleen moet je dan een soort algemeen model hebben voor je tegenstanders.Pete schreef op donderdag 13 maart 2014 @ 08:51:
[...]
Wat voor een optimization toolbox zou je willen gebruiken om de bot te schrijven? Ik denk niet dat dit een probleem is dat opgelost word met een standaard optimalisatie algoritme...
Ik heb me ook aan de Tweakers groep toegevoegd.
Verwijderd
Het is mogelijk om bij maximaal 3 'institutes' te horen. Voorlopig is dit gewoon de naam voor een apart groepje/competitie waar je bij wil horen. Omdat we uit het verleden weten dat dit vaak een school of bedrijf betreft, hebben we het zo genoemd. Maar je staat natuurlijk vrij om daar in te vullen wat je wil.Janoz schreef op dinsdag 11 maart 2014 @ 15:14:
Misschien nog een feature request voor AIGames: Het toevoegen van een mogelijkheid om bij 1 of meer groepjes/competities te horen waardoor je instituut niet hoeft te 'misbruiken' voor een soort eigen competitie. Een speler zou dan gewoon zijn opleiding of werkgever in kunnen vullen bij instituut, maar daarnaast een 'competitie' starten met vriendengroep of, zoals in dit geval, een andere community.
Dat is natuurlijk heel leuk bedacht, maar in de praktijk zou dat voor geen meter werken. En ja, ik weet wat die pakketten doen; ik ben een doctoraal onderzoeker in machine learning.Chip. schreef op donderdag 13 maart 2014 @ 12:59:
[...]
Matlab of nog beter CPLEX van IBM. En je kan de gehele map gewoon als een graaf zien. Waarbij ieder land gewoon een bepaald gewicht heeft. Vervolgens zou je dus je troepen verplaatsing kunnen optimalizeren of waar je je troepen moet plaatsen. Eventueel zou je ook een model predictive controller kunnen maken, alleen moet je dan een soort algemeen model hebben voor je tegenstanders.
Het eerste probleem is dat je het hebt over 'gewoon' een graaf met 'gewoon' een bepaald gewicht voor troepen verplaatsingen. Het probleem hier is dat je niet de volledige map kan zien (incomplete information) en dat er een hoop kansrekening aan te pas gaat op lokaal niveau voor het verslaan van tegenstanders.
Oftwel, zodra je het probleem snapt en doorgrond zul je zien dat graaf algoritmen je bijna niets zullen helpen. Misschien als je een basisbot hebt die al redelijk zelfstandig lokaal kan werken, maar niet als 'basis'-oplossing voor het probleem.
Het veroveren van regions is geen doel, maar een middel: belangrijkste doel van mijn ai is het her/veroveren van een superregion en daarmee maak je uiteindelijk Other een kopje kleiner. Een region meer of minder levert je verder niets op (basis aantal armies blijft 5). Daarom heb ik niet gekozen voor een graaf-aanpak. (Btw, ik heb er ook aan gedacht.)
Wel heb je ook een graaf nodig:
* Om je inland-armies naar het front te krijgen;
* Om de attractiviteit van elke superregion te bepalen: Hoeveel zetten en armies heb je naar verwachting nodig (versus wat krijg je ervoor/pak je ermee af.);
* Om te onthouden welke regions met elkaar zijn verbonden.
Wel heb je ook een graaf nodig:
* Om je inland-armies naar het front te krijgen;
* Om de attractiviteit van elke superregion te bepalen: Hoeveel zetten en armies heb je naar verwachting nodig (versus wat krijg je ervoor/pak je ermee af.);
* Om te onthouden welke regions met elkaar zijn verbonden.
Inderdaad zal iedereen een graaf implementeren. En waarschijnlijk zul je ook een shortest-path algoritme nodig hebben om troepen naar het front te verplaatsen.
Aan de andere kant, mijn shortest-path-algoritme en graaf implementatie is minder dan 20 regels van mijn code. Ter vergelijking, de io is al 300 regels
Welke talen gebruiken jullie? Ik heb mijn bot nu in C++ geschreven.
Aan de andere kant, mijn shortest-path-algoritme en graaf implementatie is minder dan 20 regels van mijn code. Ter vergelijking, de io is al 300 regels

Welke talen gebruiken jullie? Ik heb mijn bot nu in C++ geschreven.
Laten we proberen beste 'institute' te worden!
P.S. de finales zijn ook een maand vertraagd!
Ook zijn de regels een stukje veranderdAfter the finals are done, we now also have a prize (thanks to Starapple) for the best institute. The top 5 bots in the best institute will all get a -to be announced later- prize. Only institutes with at least 5 bots in it compete for this prize.
Alle wijzigingen zijn te vinden op http://theaigames.com/dis...4571/major-changes/1/showThere also was a change in the engine. In Conquest regions could attack/transfer as many times to the same region as there were armies on it. We changed this to 1 attack/transfer per region to the same region per round.
P.S. de finales zijn ook een maand vertraagd!
Vraagje: Je staat (met 2 legers) op Midden-Oosten en wilt Afrika veroveren. Heel Afrika bestaat uit neutrals met 2 legers. Wat is de beste taktiek? Graag met toelichting.
NB: De "Other" zit een beetje dom te rotzooien in een deel van Noord-Amerika en Azie tegelijkertijd en daar heb je geen rekening mee te houden.
NB: De "Other" zit een beetje dom te rotzooien in een deel van Noord-Amerika en Azie tegelijkertijd en daar heb je geen rekening mee te houden.
Pff, al dat gezeur over grafen, alsof de observatie dat het speelveld als graaf gemodelleerd kan worden automatisch een zinnige strategie oplevert. 

Ik heb ook honderden regels aan tooling, veel meer dan de daadwerkelijke speler code. Dat heb je altijd met dit soort projecten, omdat je toch een beetje flexible codebase wil opbouwen om mee te kunnen experimenteren.Pete schreef op vrijdag 14 maart 2014 @ 13:32:
Aan de andere kant, mijn shortest-path-algoritme en graaf implementatie is minder dan 20 regels van mijn code. Ter vergelijking, de io is al 300 regels
Inderdaad, precies mijn punt. De standaard optimalizatie-algoritmes voor grafen hebben hier heel weinig nut als strategie.Soultaker schreef op vrijdag 14 maart 2014 @ 17:42:
Pff, al dat gezeur over grafen, alsof de observatie dat het speelveld als graaf gemodelleerd kan worden automatisch een zinnige strategie oplevert.
Oeh, sneaky ons onze beste tactieken proberen te ontfutselenBolukan schreef op vrijdag 14 maart 2014 @ 16:27:
Vraagje: Je staat (met 2 legers) op Midden-Oosten en wilt Afrika veroveren. Heel Afrika bestaat uit neutrals met 2 legers. Wat is de beste taktiek? Graag met toelichting.
NB: De "Other" zit een beetje dom te rotzooien in een deel van Noord-Amerika en Azie tegelijkertijd en daar heb je geen rekening mee te houden.

En voor de mensen die hun Matlab formules op een graaf willen toepassen, zo moeilijk zal het toch niet zijn om implementaties in je favoriete taal te vinden voor de formules die je in Matlab zou gebruiken.
Ik heb wel een formule die ik mis uit matlab: nbininv. Helaas is daar echt niet makkelijk een C++ oplossing voor te vinden....
Ik heb er wel een hoor, maar dat is echt een hack.
Ik heb er wel een hoor, maar dat is echt een hack.
Voor C++ programmeurs is het ook handig dat C++11 (grotendeels) ondersteund wordt:TheDevilOnLine schreef op vrijdag 14 maart 2014 @ 16:05:
Alle wijzigingen zijn te vinden op http://theaigames.com/dis...4571/major-changes/1/show
* Soultaker gaat maar eens z'n codebase herschrijven om daar gebruik van te maken.C++ now compiles with the "c++0x" flag
Ik gebruik een inverse normaal, met ipv ½ als continuity correction een paar gezochte waardes, daarmee zit ik er nooit meer dan 1 leger naast en 99% van de tijd is het gewoon correct. Ik heb niet eens gezocht naar iets als nbininv. Misschien toch gaan doen. Of gewoon de niet inverse binomial berekenen en kijken of ik goed zit, maar goed dan zal het al snel net zo hacky zijn als wat jij al hebt.Pete schreef op vrijdag 14 maart 2014 @ 18:35:
Ik heb wel een formule die ik mis uit matlab: nbininv. Helaas is daar echt niet makkelijk een C++ oplossing voor te vinden....
Ik heb er wel een hoor, maar dat is echt een hack.
[ Voor 4% gewijzigd door _js_ op 14-03-2014 23:05 ]
Sharky (met bot Punisher) in het huis! Sta ik meteen op de 1e plek van Tweakers... jeuj! :-)
Less = more
Nog 23 punten Sharky..... Thee?YoIWriteCode schreef op zaterdag 15 maart 2014 @ 13:54:
Sharky (met bot Punisher) in het huis! Sta ik meteen op de 1e plek van Tweakers... jeuj! :-)



Verwijderd
Vanaf vanochtend zijn we officieel gaan samenwerken met Warlight.net 
Dit is waar de competitie van is afgeleid en heeft al jaren een zeer uitgebreide communitie van over de hele wereld. We hopen dan ook de concurrentie voor jullie ietsje uit te breiden
Maar meer users betekent dat wij ook meer kunnen werken aan de website, dus meer competities, grotere prijzen en vooral ook meer fun!
Veel succes met jullie bots jongens!
Dit is waar de competitie van is afgeleid en heeft al jaren een zeer uitgebreide communitie van over de hele wereld. We hopen dan ook de concurrentie voor jullie ietsje uit te breiden
Veel succes met jullie bots jongens!
Ondertussen al 90 deelnemers, zeer nice. Succes allemaal
[ Voor 4% gewijzigd door bReChThOu op 18-03-2014 22:08 ]
Waar vinden jullie welke modules gebruikt kunnen worden in de code?
zo kan ik bijvoorbeeld de random.py module niet gebruiken.
Is dit gewoon uitproberen, of zijn er ergens hints te vinden?
zo kan ik bijvoorbeeld de random.py module niet gebruiken.
Is dit gewoon uitproberen, of zijn er ergens hints te vinden?
Ze gebruiken vaak iets verouderde versies van compilers en zo, ook van Python. Er staat wat op http://theaigames.com/dis...b45be/report-a-bug/1/show
Waarschijnlijk is het het makkelijkst om zelf een simpele PRNG te maken.
Python 2.7.3
Mono 2.10.8
GCC 4.6.3
Waarschijnlijk is het het makkelijkst om zelf een simpele PRNG te maken.
Python 2.7.3
Mono 2.10.8
GCC 4.6.3
Ik zit al een tijdje te lurken hier. De Ant AI challenge van Google was ook erg leuk....
Maar als ik zie hoeveel tijd ik daar in heb gestoken..
Geen tijd hiervoor atm.. zo jammer
Maar als ik zie hoeveel tijd ik daar in heb gestoken..
Geen tijd hiervoor atm.. zo jammer
Ik ga maar een poging wagen. Ik kan het gewoon niet laten.
while (me.Alive) {
me.KickAss();
}
I will find you... And I will conquer you! ;-)IWriteCode schreef op zaterdag 15 maart 2014 @ 13:54:
Sharky (met bot Punisher) in het huis! Sta ik meteen op de 1e plek van Tweakers... jeuj! :-)
AIJim, kun je tweakers niet bovenaan zetten in de lijst van Institutes: we zijn nog de enige met 5 of meer deelnemers 
Leaderboard Institutes
Leaderboard Institutes
[ Voor 32% gewijzigd door Bolukan op 19-03-2014 19:07 ]
Verwijderd
Nice! na te lang onderaan te hebben gestaan is de klimtocht omhoog begonnen, m'n nieuwe bot (v22) heeft nog geen game verloren =)
Ben benieuwd waar de weerstand begint te komen.
Echt slim is m'n bot namelijk nog niet.
Ben benieuwd waar de weerstand begint te komen.
Echt slim is m'n bot namelijk nog niet.
Het gaat hard... 125 bots nu... Meer competitie is op zich leuk... maar je merkt wel dat alles langzamer wordt... de code staat langer in de wacht om gecompileerd te worden... en het aantal gespeelde wedstrijden per bot zal ook omlaag gaan...
Dan toch maar vertrouwen op mijn eigen lokale competitie... :-) Beetje balen alleen dat m'n oude versies beter zijn dan de nieuwe versies...
Dan toch maar vertrouwen op mijn eigen lokale competitie... :-) Beetje balen alleen dat m'n oude versies beter zijn dan de nieuwe versies...
code:
1
2
3
4
5
6
7
8
9
| 1 bot-v123 1696 2 bot-v125 1693 3 bot-v219 1677 4 bot-v140 1676 5 bot-v127 1673 6 bot-v126 1662 7 bot-v208 1644 8 bot-v189 1624 9 bot-v129 1622 |
Less = more
Ik ben met mijn bot aanbeland bij versie 36, die gebruikmaakt van breadth-first pathfinding naar de "frontlinie". Ik stuiter al een paar dagen heen en weer tussen positie 10 en 15 in de rankings. Om hoger te komen zal ik mijn wegingen van de frontlinies moeten aanpassen... 
Ik realiseer me nu dat ik niet meer heb geantwoord op mijn forumthread over .NET 4. Ik hou m'n bot op .NET 3.5.
[ Voor 29% gewijzigd door CodeCaster op 20-03-2014 09:28 ]
https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...
Dit ging goed totdat een aantal bots op een of andere manier meer dan 500MB aan geheugen wilden hebben: OutOfMemoryError. Dan is het wachten totdat de consumer weer opnieuw opgestart is.IWriteCode schreef op donderdag 20 maart 2014 @ 09:11:
Het gaat hard... 125 bots nu... Meer competitie is op zich leuk... maar je merkt wel dat alles langzamer wordt... de code staat langer in de wacht om gecompileerd te worden... en het aantal gespeelde wedstrijden per bot zal ook omlaag gaan...
Dan toch maar vertrouwen op mijn eigen lokale competitie... :-) Beetje balen alleen dat m'n oude versies beter zijn dan de nieuwe versies...
code:
1 2 3 4 5 6 7 8 9 1 bot-v123 1696 2 bot-v125 1693 3 bot-v219 1677 4 bot-v140 1676 5 bot-v127 1673 6 bot-v126 1662 7 bot-v208 1644 8 bot-v189 1624 9 bot-v129 1622

Zodra de engine IO een patch krijgt om hier netjes overweg te gaan, loopt alles weer vlekkeloos.
Volgens mij hebben ze detectie of iemand zit te kijken naar de game-log... Ik zit al een hele tijd te kijken... maar al 150+ potjes... geen Dominator bot in actie
Zooo zielig...
Less = more
ben ook bezig met een C# botje, maar loop bij "setup_map neighbors" tegen de maximale input voor Console.Readline van 256 tekens (bron: http://stackoverflow.com/...nsole-readline-max-length) aan (input is 354 in mijn geval)...
Iemand een idee hoe dit op te lossen? Ik ben begonnen met de starterbot voor C#.
ps. ook op het forum van Conquest geplaatst: http://theaigames.com/dis...max-256-characters/1/show
pps. op stackoverflow wordt wel een oplossing genoemd, maar vroeg me meer af of het niet anders op te lossen was.
Iemand een idee hoe dit op te lossen? Ik ben begonnen met de starterbot voor C#.
ps. ook op het forum van Conquest geplaatst: http://theaigames.com/dis...max-256-characters/1/show
pps. op stackoverflow wordt wel een oplossing genoemd, maar vroeg me meer af of het niet anders op te lossen was.
[ Voor 29% gewijzigd door Kips op 20-03-2014 15:46 ]
Kips, kun je een link naar de dump erbij zetten? Dan ga ik die vanavond eens proberen.
@hieronder, ik zat aan opponent_moves te kijken...., zelfde oplossing als bReChThOu gebruik ik
@hieronder, ik zat aan opponent_moves te kijken...., zelfde oplossing als bReChThOu gebruik ik
[ Voor 36% gewijzigd door Bolukan op 20-03-2014 16:05 ]
dump is default, want volgens mij zijn de neighbors altijd hetzelfde...Bolukan schreef op donderdag 20 maart 2014 @ 15:51:
Kips, kun je een link naar de dump erbij zetten? Dan ga ik die vanavond eens proberen.
Klopt, op windows zit je met deze limiet in de console.Kips schreef op donderdag 20 maart 2014 @ 15:39:
ben ook bezig met een C# botje, maar loop bij "setup_map neighbors" tegen de maximale input voor Console.Readline van 256 tekens (bron: http://stackoverflow.com/...nsole-readline-max-length) aan (input is 354 in mijn geval)...
Iemand een idee hoe dit op te lossen? Ik ben begonnen met de starterbot voor C#.
ps. ook op het forum van Conquest geplaatst: http://theaigames.com/dis...max-256-characters/1/show
pps. op stackoverflow wordt wel een oplossing genoemd, maar vroeg me meer af of het niet anders op te lossen was.
Ik debug niet via de console, maar ik paste de log in een textfile en lees deze uit en stuur dan lijn per lijn naar de parser.
Voor de werking op de servers van de wedstrijd is dit geen probleem, want mono op linux kent dit probleem niet:
C#:
1
| Console.WriteLine("Your input was: " + Console.ReadLine() + " characters long"); |
C#:
1
2
3
| /opt/mono-2.11/bin/mono bReChTbOt.exe setup_map neighbors 1 2,4,30 2 4,3,5 3 5,6,14 4 5,7 5 6,7,8 6 8 7 8,9 8 9 9 10 10 11,12 11 12,13 12 13,21 14 15,16 15 16,18,19 16 17 17 19,20,27,32,36 18 19,20,21 19 20 20 21,22,36 21 22,23,24 22 23,36 23 24,25,26,36 24 25 25 26 27 28,32,33 28 29,31,33,34 29 30,31 30 31,34,35 31 34 32 33,36,37 33 34,37,38 34 35 36 37 37 38 38 39 39 40,41 40 41,42 41 42 Your input was: 354 characters long |
[ Voor 3% gewijzigd door bReChThOu op 20-03-2014 16:25 ]
Dit werkt bij mij:
C#:
1
2
3
4
5
| private void Test() { String[] lines = File.ReadAllLines(@"C:\Users\Kips\Documents\test.dump", Encoding.UTF8); foreach (String line in lines) parser.Parse(line); } |
The site lijkt down...
Less = more
FF een simpel vraagje: kan je je bot in een willekeurige package stoppen, en zoekt 'ie gewoon de eerste main() ofzo? Dat kan ik zo niet op de site vinden. Of moet de bot 'bot.Bot' heten?
https://niels.nu
Het ligt aan de taal. Voor C++ heb ik gemerkt dat er een toplevel file moet zijn met een main(). Voor php zeggen ze "include __main__ in your main PHP file, so our compiler can recognize it". De naam haalt denk ik nooit uit.
Vervelend met C++ is dat ze niet de top-level map aan het include-path toevoegen. Oftewel, ik heb al mijn headers in dezelfde map staan, omdat dingen anders niet werken...
Het is iig beter dan met codecup waar je al je code altijd in 1 bestand moet proppen.
Vervelend met C++ is dat ze niet de top-level map aan het include-path toevoegen. Oftewel, ik heb al mijn headers in dezelfde map staan, omdat dingen anders niet werken...
Het is iig beter dan met codecup waar je al je code altijd in 1 bestand moet proppen.
[ Voor 14% gewijzigd door Pete op 21-03-2014 09:44 ]
Ik ben bezig in Java (op dit moment alleen maar met de engine om ook wat output te krijgen waar ik wat mee kan).
https://niels.nu
@Hydra ik heb alle mongodb zaken eruit gesloopt... en gewoon naar text files geredirect. Zijn maar paar kleine aanpassingen voor nodig.
Less = more
Ja, ik heb 't al draaien.IWriteCode schreef op vrijdag 21 maart 2014 @ 11:19:
@Hydra ik heb alle mongodb zaken eruit gesloopt... en gewoon naar text files geredirect. Zijn maar paar kleine aanpassingen voor nodig.
Maar heeft iemand antwoord op die vraag? Je kunt alleen een zip uploaden, ik weet zo niet hoe hij er verder mee omgaat. Hij start een bot met "java bot.BotStarter" maar ik kan nergens vinden of dat vast is of dat 'ie dat zelf uit probeert te vogelen en of je het in een .jar kunt stoppen. De engine krijgt dat van buiten op de commandline mee.
[ Voor 38% gewijzigd door Hydra op 21-03-2014 11:41 ]
https://niels.nu
Dat is sowieso niet zo heel standaard. Files includen van je eigen project doe je meestal met quotes ipv angle brackets.Pete schreef op vrijdag 21 maart 2014 @ 09:44:
Vervelend met C++ is dat ze niet de top-level map aan het include-path toevoegen. Oftewel, ik heb al mijn headers in dezelfde map staan, omdat dingen anders niet werken...
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
Ik ben niet zo ervaren met c++, dus het kan dat ik het fout heb. Maar bijvoorbeeld, ik heb headers voor mijn wiskundige berekeningen en headers voor mijn strategieën. Ik wil ze in de folders math en strategy plaatsen. Nu is het ok om vanuit een top-level file ze te includen ("#include "math/cdf.h"), maar niet om vanuit de strategy headers de math headers te includen. Wat ik in een normaal project zou doen is de top-level map toevoegen aan het include-path om "#include math/cdf.h" te kunnen doen in andere mappen..oisyn schreef op vrijdag 21 maart 2014 @ 11:44:
[...]
Dat is sowieso niet zo heel standaard. Files includen van je eigen project doe je meestal met quotes ipv angle brackets.
offtopic:
It sucks om over programmeren te schrijven in het Nederlands
It sucks om over programmeren te schrijven in het Nederlands
Eerste (standaard starter) bot gedeployed. Heb alles behalve bot.BotStarter naar m'n eigen sourcedir verplaatst, een zip gemaakt en deze geupload, dus dat werkt. Mijn v0 versie is al lekker aan 't dalen in de stats
https://niels.nu
Ben ik de enige die al snel de start-up kit eruit werkt in z'n codebase? Het was nuttig om een beeld te krijgen van hoe dingen (ongeveer) zouden moeten werken, en met een set unittests kan je wat veiliger bouwen, maar verder? Ik bedoel: de opzet van de parser van C#-starterbot was niet heel erg best imho.
Enfin, ik heb een redelijk nuttige strategie te pakken, maar er moet nog wel veel getweakt worden. Zijn er al mensen die iets over hun gevoerde strategie willen verklappen?
Enfin, ik heb een redelijk nuttige strategie te pakken, maar er moet nog wel veel getweakt worden. Zijn er al mensen die iets over hun gevoerde strategie willen verklappen?
while (me.Alive) {
me.KickAss();
}
Java doet het niet meer:
Alle java bots vallen als bakstenen in de charts
code:
1
| /bin/run_ai: 2: /bin/run_ai: ./java: not found |
Alle java bots vallen als bakstenen in de charts
[ Voor 29% gewijzigd door IWriteCode op 21-03-2014 20:11 ]
Less = more
Het was even puzzelen, maar ik heb toch nog wat gehad aan numerieke wiskunde. Ik heb nu eindelijk een goede schatting van mijn win - en verlieskansen. Om wille van de snelheid het resultaat ook maar gecached. Met cache, testrun 4 seconde, zonder cache 19 seconde.
Bij anderen nog nuttige ontwikkelingen?
Bij anderen nog nuttige ontwikkelingen?
while (me.Alive) {
me.KickAss();
}
Ik itereer over alle zichtbare regio's die niet van mij zijn, en bepaal vanaf welke door mij bezette buur/buren ik die regio zou willen aanvallen, met hoeveel legers en waarom (enum). Het aantal legers voor de gewenste aanval hangt af van de kleur van het doel (neutraal / vijandelijk) en de kleur van en (laatst geziene) legers op erachter gelegen regio's en of deze regio's vanaf andere door mij bezette regio's bereikbaar zijn.Corniel schreef op vrijdag 21 maart 2014 @ 20:02:
Zijn er al mensen die iets over hun gevoerde strategie willen verklappen?
Dit gebeurt vóór de place_armies-move al, zodat ik weet welke regio het meest in paniek is, want deze komt het meeste legers tekort om alle gewenste aanvallen uit te voeren.
Daarna itereer ik over alle gewenste aanvallen per superregio die niet in mijn bezit zijn, aflopend op verhouding van mijn bezit, oplopend op aantal regio's binnen de superregio (superregio waarvan 2/4 van de regio's van jou zijn proberen over te nemen is doorgaans makkelijker dan een met 3/6), om te kijken of de aanvallen mogelijk zijn, en zo ja, dan worden die gequeued.
Ik probeer daarna legers te plaatsen per superregio, en plaatsen gebeurt in de verhouding (gevraagde legers / totaal gevraagde legers * plaatsbare legers), behalve wanneer een regio onder zware belegering ligt; dan krijgt 'ie ze gewoon allemaal. Dit laatste zie je helaas bij veel bots, waardoor je 100 beurten lang legers tegenover elkaar aan het stacken bent terwijl de rest van de kaart neutraal blijft.
Uiteindelijk hou ik per regio bij hoeveel legers er nog beschikbaar zijn voor de betreffende beurt, en indien > 0, verplaats ik deze via breadth-first pathfinding richting de dichtstbijzijnde frontlinie (= een van mijn regio's met neutrale of vijandelijke buren). Wanneer voor een gewenste aanval een significant deel van de legers bij de buren niets staat te doen, worden deze richting de aanvallende regio getrokken, hetzij ter verdediging, hetzij om de aanval in de volgende beurt te versterken.
Het geheel werkt met een stel lijsten met in deze beurt mogelijke en gewenste aanvallen, en een lijst met "gewenste aanvallen in de volgende beurt". Indien een aanval vanuit een bepaalde regio in laatstgenoemde lijst staat, laat de logica de legers op die regio met rust.
Verder werkt het een en ander met diverse wegingen, zoals het aantal buren van een land (een neutral met de meeste neighbors heeft de eerste voorkeur om aangevallen te worden), het percentage van de superregio dat in mijn bezit is, het aantal legers dat benodigd is, enzovoorts.
Fixes die ik nog wil toepassen:
• Nóg sterkere focus op superregio's. Ik zie zo nu en dan nog steeds aanvallen naar nieuwe superregio's gedaan worden, terwijl de superregio vanwaar de aanval komt nog niet eens geheel in mijn bezit is.
• Opgeven. Als ik links een superregio dreig te verliezen maar rechts enorm aan het oprukken ben, blijft mijn bot toch aan de linkerkant (bijna) alle legers bijplaatsen, zelfs al zit ik nog maar met 1 leger op 1 region in een verder volledig door de tegenstander bezette superregion.
• Een beter verdeelde frontlinie. De legers concentreren zich nu erg op één regio, zeker wanneer de tegenstander ook op één regio veel legers heeft staan, waardoor ik via mijn buren van die regio (met ieder 1 leger...) nogal gemakkelijk onder de voet gelopen kan worden.
• Terugtrekken. In de top-10 zit een aantal bots dat een aanval uitlokt door al zijn legers terug te trekken van de frontlinie, waardoor jouw bot enkel regio's ziet met 1-3 legers en dus aanvalt. Ik weet niet of dat bewust is gedaan, maar het lijkt regelmatig te werken.
• Neutrals aanvallen vanaf een regio die belegerd wordt indien er dan genoeg legers overblijven om te verdedigen.
• Meerdere "onmogelijke" aanvallen doen vanaf regio's die één of slechts enkele vijandelijke (of neutrale) regio's omringen. Als je 150-200-150 staat, kun je proberen met tweemaal 149 die 200 aan te vallen.
• Inschatten wat de andere bot heeft, krijgt, kan en wil. Hier doe ik nu nog zeer weinig mee. Je weet hoe groot de map is, dus je kunt schatten hoeveel (super)regio's de tegenstander kan hebben en hoeveel legers hij per beurt kan plaatsen. Met de output van opponent_moves kun je verplaatsingen van en aanvallen naar regio's zien die buiten jouw viewrange liggen. Daarnaast kun je met (ver)plaatsingen van legers ongeveer zien waar de aandacht van de tegenstander in ieder geval de vorige ronde naar uitging.
• Bottlenecks (Zuid-Amerika <-> Zuid-Afrika, Nieuw-Zeeland <-> Azië, Groenland <-> IJsland, ...) herkennen en verdedigen, en doodlopende wegen (Zuid-Amerika, Zuid-Afrika, Australië) herkennen en fanatieker de legers laten laten verplaatsen.
Maar ik voorzie nogal wat problemen om deze logica in mijn "lijstensysteem" te integreren, dus dat gaat voor de volgende versie weer op de schop.
Ik heb de Java-starterbot omgebouwd naar C# en er steeds meer uitgesloopt. Het enige dat nog bestaat is de parser, de gamestate en de models ((Super)Region, Map).Corniel schreef op vrijdag 21 maart 2014 @ 20:02:
Ben ik de enige die al snel de start-up kit eruit werkt in z'n codebase?
Ik heb een server die twee bots tegen elkaar laat spelen in code (er komt geen consoleverkeer aan te pas, enkel voor server- en bot-debug-output):

Deze server draait op textfiles, één voor de map (ik gebruik nu nog enkel de standaardmap, maar bij het ontwikkelen was een kleinere map wel prettig) en één voor de eventuele gamestate. Een state bestaat uit de update_map en opponent_moves voorafgaand aan een bepaalde ronde, waardoor ik rare situaties uit replays snel kan nabootsen.
Indien geen state wordt geladen, worden ook de startregio's bemiddeld met de bots.
Stond de map al ergens? Zo nee, bij dezen:

Ik vraag me overigens wel af of we voor de finals nog op dezelfde map spelen, of dat er een of enkele nieuwe maps worden geïntroduceerd. Veel grotere of kleinere maps lijken me wel interessant.
[ Voor 9% gewijzigd door CodeCaster op 22-03-2014 14:01 ]
https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...
@CodeCaster: Roep jij Java-code aan, of heb je de server zelf geïnterpreteerd?
while (me.Alive) {
me.KickAss();
}
Het blijft dezelfde kaart tot en met de finale. Als ze weer een competitie doen met hetzelfde spel dan doen ze mogelijk wel >2 spelers en meerdere kaarten.CodeCaster schreef op zaterdag 22 maart 2014 @ 13:47:Ik vraag me overigens wel af of we voor de finals nog op dezelfde map spelen, of dat er een of enkele nieuwe maps worden geïntroduceerd. Veel grotere of kleinere maps lijken me wel interessant.
Ik heb een eigen implementatie van de server in C#.Corniel schreef op zaterdag 22 maart 2014 @ 17:13:
@CodeCaster: Roep jij Java-code aan, of heb je de server zelf geïnterpreteerd?
De uiteindelijke bot die ik oplever draait in een ConsoleServer, die de console-commands vertaalt naar API-calls op de bot, en vertaalt de responses daarvan weer naar regels om naar de console te schrijven.
Duidelijk, bedankt._js_ schreef op zaterdag 22 maart 2014 @ 17:52:
[...]
Het blijft dezelfde kaart tot en met de finale. Als ze weer een competitie doen met hetzelfde spel dan doen ze mogelijk wel >2 spelers en meerdere kaarten.
[ Voor 12% gewijzigd door CodeCaster op 22-03-2014 18:20 ]
https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...
@CodeCaster: zoiets was ik zelf ook bijna gaan schrijven, maar voor je het weet heeft je server een andere implementatie dan de echte server, en dan optimaliseer je onhandig.
Enfin, iets wat deze contest mist is een seed setting die je binnen krijgt.
Daar heb ik voor de testbaarheid maar op de volgende manier opmheen gewerkt:
Je gebruikt dus de gegeven gebieden om een seed van te maken. Wellicht dat anderen daar hun voordeel mee kunnen doen.
En Shortest path is natuurlijk heel eenvoudig hier. Ik heb een statitische Int[42,42] met de afstand tot de verschillende landen. Je hoeft dus alleen maar naar je buurman toe (ook statisch bekend, map verandert niet) die een kortere afstand heeft volgens de ze matrix.
Ik heb het idee dat het beheersen van regio's die aan aan een andere super regio grenzen vrij belangrijk is. Hopelijk heb ik dat juist. Verder staat mijn code helemaal vol met Linq-expressies.
Om dit makkelijker te maken implementeert zowel de Map, als een SuperRegion bij mij IEnumarable<Region>. Je krijgt dan dit soort code:
Enfin, iets wat deze contest mist is een seed setting die je binnen krijgt.
Daar heb ik voor de testbaarheid maar op de volgende manier opmheen gewerkt:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
| public void SetRandom(IEnumerable<Int32> ids) { int shift = 0; int step = Math.Max(1, 32 / ids.Count() + 1); foreach (var id in ids) { this.Seed ^= (id << shift); shift += step; } this.Rnd = new Random(this.Seed); } |
Je gebruikt dus de gegeven gebieden om een seed van te maken. Wellicht dat anderen daar hun voordeel mee kunnen doen.
En Shortest path is natuurlijk heel eenvoudig hier. Ik heb een statitische Int[42,42] met de afstand tot de verschillende landen. Je hoeft dus alleen maar naar je buurman toe (ook statisch bekend, map verandert niet) die een kortere afstand heeft volgens de ze matrix.
Ik heb het idee dat het beheersen van regio's die aan aan een andere super regio grenzen vrij belangrijk is. Hopelijk heb ik dat juist. Verder staat mijn code helemaal vol met Linq-expressies.
Om dit makkelijker te maken implementeert zowel de Map, als een SuperRegion bij mij IEnumarable<Region>. Je krijgt dan dit soort code:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| /// <summary>Gets the defenders.</summary> public static IEnumerable<Region> GetDefenders(this IEnumerable<Region> regions, bool withStackPotential) { return regions .GetFrontiers() .Where(r => r.IsSuperRegionBorder) .OrderBy(r => Combat.GetWinningChange(r.Neighbors.GetEnermyAttackForce(withStackPotential), r.Armies)); } ... var defenders = this.Map.GetDefenders(true); var defenders2 = this.Map.Europe.GetDefenders(false); var defender3 = regions.GetDefenders(false); ... |
[ Voor 43% gewijzigd door Corniel op 22-03-2014 19:38 ]
while (me.Alive) {
me.KickAss();
}
Hoe de server zich gedraagt is aardig gedocumenteerd, dus dat heb ik gewoon nagebouwd tot ik lokaal hetzelfde kon naspelen als op hun server gebeurt. Ik gebruik mijn server voornamelijk om bepaalde situaties na te spelen die zich op de officiële server hebben voorgedaan, om te kijken waarom mijn bot bepaalde beslissingen neemt. Daarnaast test ik regelmatig met een lege map, om te zien hoe en in hoeveel beurten alle regio's worden overgenomen.
Omdat mijn server en bot initiëel de gamestate deelden, waar je bot deze op de officiële server uiteraard zelf moet bijhouden, ging er tussen versie 26 en 35 van mijn bot wel het een en ander mis.
Tip: noteer welke versie van je bot het beste presteerde, en upload deze versie als een nieuwere versie zich misdraagt.
Wat de afstanden tussen landen betreft: om je legers te kunnen verplaatsen, moet er wel een pad zijn via landen die van jou zijn, of die dat worden voordat de legers erover moeten. De mogelijke paden kunnen zodoende iedere beurt weer anders zijn.
Omdat mijn server en bot initiëel de gamestate deelden, waar je bot deze op de officiële server uiteraard zelf moet bijhouden, ging er tussen versie 26 en 35 van mijn bot wel het een en ander mis.

Wat de afstanden tussen landen betreft: om je legers te kunnen verplaatsen, moet er wel een pad zijn via landen die van jou zijn, of die dat worden voordat de legers erover moeten. De mogelijke paden kunnen zodoende iedere beurt weer anders zijn.
[ Voor 6% gewijzigd door CodeCaster op 22-03-2014 20:43 ]
https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...
Hmm... weer wat nieuwe bots die goed presteren... dan toch nog maar wat tijd in optimalisatie(s) steken... :-)
Less = more
Hoe gaan jullie om met het feit dat je niet weet waar de vijand zijn legers plaatst tot de volgende? Ik ben een aantal van mijn losses aan het analyseren samen met de output en ik kom tot de volgende statering (uitgelegd met een concreet voorbeeld):
2 aangrenzende regio's: 1 van mij met 2 legers, 1 van de vijand (dus niet neutral) met ook 2 legers.
Ik plaats 5 armies op mijn regio, en de vijand plaatst ook 5 armies op zijn regio. Dat laatste krijg ik echter niet van de server terug tot de update_map NA alle stappen van de huidige ronde. Dus als mijn bot de transfer/attack binnen krijgt is het voor hem een 7-2 situatie (zeer gunstig) terwijl het in werkelijk eigenlijk een 7-7 situatie is (zeer ongunstig).
2 aangrenzende regio's: 1 van mij met 2 legers, 1 van de vijand (dus niet neutral) met ook 2 legers.
Ik plaats 5 armies op mijn regio, en de vijand plaatst ook 5 armies op zijn regio. Dat laatste krijg ik echter niet van de server terug tot de update_map NA alle stappen van de huidige ronde. Dus als mijn bot de transfer/attack binnen krijgt is het voor hem een 7-2 situatie (zeer gunstig) terwijl het in werkelijk eigenlijk een 7-7 situatie is (zeer ongunstig).
Ja, die stappen zijn gelijktijdig, dus je weet inderdaad niet wat er in de beurt gebeurt totdat het is gebeurd.
Maar je weet wel ongeveer hoeveel legers de tegenstander mag plaatsen, dus gewoon er van uitgaan dat die allemaal op het land komen dat jij aan wilt vallen, of worst case, dat die allemaal op elk land komen waar je buren mee bent.
Maar je weet wel ongeveer hoeveel legers de tegenstander mag plaatsen, dus gewoon er van uitgaan dat die allemaal op het land komen dat jij aan wilt vallen, of worst case, dat die allemaal op elk land komen waar je buren mee bent.
Worse case is me te defensief, dan verlies je ook. Een ding waar ik aan heb gedacht is om de plaatsingen van de afgelopen 2 beurten te gebruiken als voorspelling van de taktiek van de "other" en dat wel als voorspelling mee te nemen
Verderop in het spel, wanneer je allebei veel regio's hebt wordt het mogelijk nog riskanter. Jij kan een regio met 1 leger hebben, en er 7 legers bijzetten. Je vijand heeft een aangrenzende regio met 2 legers waar hij 12 legers opzet. Je bot denkt dan 8 - 2, terwijl het in feite 8 - 14 wordt. Als je elk 10+ regio's hebt wordt het moeilijk om te voorspellen waar de legers bijkomen, en van een worst case scenario uitgaan op elke aangrenzende regio blokkeert je gewoon.
Een keer mis hebben, is niet erg. Maar als je beide gaat opzetten kun je beter de andere als eerste laten aanvallen
spoiler:
en jouw eventuele move/attack aan het einde van de queue plaatsen
[ Voor 6% gewijzigd door Bolukan op 24-03-2014 11:46 ]
Als je alles worst case benaderd heb je natuurlijk wel een probleem: dan blijf je verdedigen (en komt dan niet meer aanvallen toe) of je geeft alle regio's op.
Ik ben gisteren opnieuw begonnen trouwens. Was niet heel erg tevreden met wat ik had. Vooral omdat ik in mijn oude opzet geen ruimte had om beter om te gaan met mogelijk gedrag van mijn tegenstander.
Ook lekker trouwens: Een crash en dan in rond 99 alsnog verliezen: http://theaigames.com/com.../533007f84b5ab211edffbd75
Ik ben gisteren opnieuw begonnen trouwens. Was niet heel erg tevreden met wat ik had. Vooral omdat ik in mijn oude opzet geen ruimte had om beter om te gaan met mogelijk gedrag van mijn tegenstander.
Ook lekker trouwens: Een crash en dan in rond 99 alsnog verliezen: http://theaigames.com/com.../533007f84b5ab211edffbd75
[ Voor 17% gewijzigd door Corniel op 24-03-2014 11:28 ]
while (me.Alive) {
me.KickAss();
}
wil je deze beschikbaar stellen?CodeCaster schreef op zaterdag 22 maart 2014 @ 18:18:
Ik heb een eigen implementatie van de server in C#.Die spreekt de bots aan in code, via een interface, dus ik kan gemakkelijk beide bots en de server tegelijk debuggen (al heb ik die laatste al even niet meer aangeraakt
).
Ik zal 'm nog even proberen te fatsoeneren en in de loop van deze week (
) op GitHub zetten.

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...
@CodeCaster: Dat zou mooi zijn. Wellicht dat anderen dan ook een contributie kunnen leven.
while (me.Alive) {
me.KickAss();
}
Lekker de concurrentie een handje helpen...
Ik moet nog wat dode code verwijderen, een stukje refactoren en iets meer commentaar plaatsen, dan durf ik 'm (inclusief de vanuit Java omgebouwde StarterBot) wel te delen.
https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...
dan zien we 'm vanavond wel verschijnenCodeCaster schreef op maandag 24 maart 2014 @ 13:33:
Lekker de concurrentie een handje helpen...Ik moet nog wat dode code verwijderen, een stukje refactoren en iets meer commentaar plaatsen, dan durf ik 'm (inclusief de vanuit Java omgebouwde StarterBot) wel te delen.

Grmbl... competitie wordt echt wel sterker... een voordeel... ben in elk geval niet meer de Joop Zoetemelk van theaigames.com ...
Kwam op het forum van warlight.net nog een interessant draadje tegen met een strategy guide. Veel ligt vrij voor de hand, maar misschien toch interessant leesvoer: http://warlight.net/Forum/Thread?ThreadID=34678
Kwam op het forum van warlight.net nog een interessant draadje tegen met een strategy guide. Veel ligt vrij voor de hand, maar misschien toch interessant leesvoer: http://warlight.net/Forum/Thread?ThreadID=34678
[ Voor 45% gewijzigd door IWriteCode op 24-03-2014 15:42 ]
Less = more
En we hebben na een zeer lange tijd een nieuwe bot op de eerste plaats!!
krijgen jullie ook parse-errors bij het kiezen van regio's? de bot die het vanmiddag nog prima deed geeft nu zelfs een error
Geen problemen hiero... wat is de foutmelding?
Less = more
IWriteCode schreef op maandag 24 maart 2014 @ 21:28:
Geen problemen hiero... wat is de foutmelding?
code:
1
| Parse error: Region id input incorrect ()Parse error: preferred starting regions: Chosen region is not in the given pickable regions list ()settings starting_armies 5 |
ik heb trouwens al een vermoeden waar het mis gaat. Mijn nieuwe bot geeft na elk input een output (ook als deze leeg is), denk dat de server daar over valt... wordt vervolgd!
edit: dat was inderdaad het probleem.......
[ Voor 4% gewijzigd door Kips op 24-03-2014 21:32 ]
Daar valt de server inderdaad over, hij verwacht alleen output na pick_starting_regions en go.
Edit: dat was al geëdit.
Edit: dat was al geëdit.
[ Voor 11% gewijzigd door CodeCaster op 24-03-2014 21:43 ]
https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...
Goed bezig! :-) Mijn is van de 2e plek naar de 15e gezakt... die 'optimalisatie' was toch niet zo'n succes... Nu is m'n bot stuck in de compilation queue.Kips schreef op dinsdag 25 maart 2014 @ 07:57:
oooh, zie mijn bot eens langzaam de rankings beklimmen
Edit: heel de competitie lijkt stil te liggen...
[ Voor 8% gewijzigd door IWriteCode op 25-03-2014 08:18 ]
Less = more
ik krijg nog nieuwe matches in m'n log...IWriteCode schreef op dinsdag 25 maart 2014 @ 08:10:
[...]
Edit: heel de competitie lijkt stil te liggen...
edit: nog steeds down IWriteCode?
Top 50 binnen gekomenKips schreef op dinsdag 25 maart 2014 @ 07:57:
oooh, zie mijn bot eens langzaam de rankings beklimmen
[ Voor 34% gewijzigd door Kips op 25-03-2014 11:25 ]
Ik heb m'n C#-server en -starterbot op DropBox gezet. Feedback welkom.
Het project werkt in ieder geval in Visual Studio Express for Web en Desktop 2012 en 2013.
Het project werkt in ieder geval in Visual Studio Express for Web en Desktop 2012 en 2013.
https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...
Super dat je het beschikbaar stelt. Het lijk me erg leuk om mee te doen. Als ik nog wat tijd vind ga ik er eens naar kijken.
Ik lees er wellicht gruwelijk over heen, maar welke PHP versie wordt nou gebruikt?

[ Voor 12% gewijzigd door Voutloos op 25-03-2014 23:24 ]
{signature}
Stuur een script in dat phpinfo() aanroept en je kunt alle info die je nodig hebt uit de gamelog halen...?
Op verzoek een titlechange gedaan:
[Wedstrijd] Conquest >> [Wedstrijd] Warlight AI Challenge
[Wedstrijd] Conquest >> [Wedstrijd] Warlight AI Challenge
There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.
Je eigen tweaker.me redirect
Over mij
@CodeCaster: heb je ook een github?
while (me.Alive) {
me.KickAss();
}
Ja. Als het project in die ZIP voor anderen ook werkt en een beetje begrijpelijk is, wil ik 'm daar wel uploaden. Dus: is dat het geval?
[ Voor 10% gewijzigd door CodeCaster op 27-03-2014 17:02 ]
https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...
@CodeCaster: Helder. Ik wil er vanavond mee aan de slag. Heb zelf ook wat ideeen dus ik wil eventueel wel wat bijdragen.
while (me.Alive) {
me.KickAss();
}
Hij staat er inmiddels op: https://github.com/CodeCasterNL/AIGames.Warlight
https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...
@CodeCaster: Ik heb net een pull request gedaan. Ik heb een 'Arena' geschreven die middels naming convension verschillende bots kan inladen en tegen elkaar kan laten spelen. Hij houdt ook ratings bij van verschillende bots, herkent versies, en je kan middels een ^(z+.)? prefix bots uitzetten.
Wat ik nog niet gedaan heb is het daadwerkelijk runnen van de twee bots. Ik wil eerst een nieuwe werkende versie van mijn nieuwe aanpak afronden. Wellicht dat jij kan kijken naar hoe dit te laatste te doen? Ik beloof bij deze dat ik de exe's van mijn eerste 13 versies allen beschikbaar stel aan anderen om te testen.
Wat ik nog niet gedaan heb is het daadwerkelijk runnen van de twee bots. Ik wil eerst een nieuwe werkende versie van mijn nieuwe aanpak afronden. Wellicht dat jij kan kijken naar hoe dit te laatste te doen? Ik beloof bij deze dat ik de exe's van mijn eerste 13 versies allen beschikbaar stel aan anderen om te testen.
while (me.Alive) {
me.KickAss();
}
In mijn nieuwe aanpak (waarbij ik meerdere states doorreken) eindelijk het grootste lek boven. Er gaan nog steeds behoorlijk onhandige dingen mis, maar het begint ergens op te lijken. Ik kom 18 ply diep en bereken zo'n 23k stellingen per seconde.
while (me.Alive) {
me.KickAss();
}
Zijn anderen nog een beetje acitef?
while (me.Alive) {
me.KickAss();
}
Ik, en veel andere spelers die ik heb gesproken krijgen plotseling rare resultaten. Na analyse van de logs gebeuren er rare dingen op de server. Bij lokale debug worden de logs van de hele wedstrijd binnen de 2 seconden gepared. Echter, volgens de Warlight server zou een pick_starting_regions al meer dan 2 seconden duren. Vreemd. Zijn er nog mensen die er last van hebben?
code:
1
2
3
4
5
| Not running yet (write) pick_starting_regions 2000 8 1 11 13 14 16 22 25 36 28 42 39 Timed out Parse error: Region id input incorrect (Timed out) Parse error: preferred starting regions: Chosen region is not in the given pickable regions list (Timed out) |
Verwijderd
Onze server heeft een reset nodig denk ik. Morgen first thing in the morning. Anders verdubbel ik de timeout voor pick_starting_regions en alles zou weer moeten werken.
Verwijderd
Heren! De finale komt nu wel heel dichtbij zoals jullie weten.
Iemand van Warlight heeft een leuk initiatief genomen om een Warlight AI Challenge livestream te organiseren. De top spelers zijn uitgenodigd om commentaar te geven op hun botjes/wedstrijden en ook wat top "normale" Warlight spelers zullen hun commentaar geven. Zelf zal ik er ook zijn om het een en ander te vertellen. Hieronder zijn bericht.
Hebben jullie de nieuwe (Beta) Omaha competitie al gezien trouwens?
Iemand van Warlight heeft een leuk initiatief genomen om een Warlight AI Challenge livestream te organiseren. De top spelers zijn uitgenodigd om commentaar te geven op hun botjes/wedstrijden en ook wat top "normale" Warlight spelers zullen hun commentaar geven. Zelf zal ik er ook zijn om het een en ander te vertellen. Hieronder zijn bericht.
Deze zondag om half 5 dus. Een week later tijdens de finale zelf is er nog een uitzending. Zeker de moeite waard om te kijken denk ik.I'll be hosting a livestream this coming Sunday, 1st of June.
The plan is to just chat about the ai challenge with different commentators. Analyze some of the more interesting games from the first part of the challenge.
The semi-finals will kick off later that same day, so we can also take a look at the rankings and talk about what bots have a bigger chance of winning.
I'm trying not to clash with the wargamming live stream usual schedule.
Here is the link to the official time of the event:
http://www.timeanddate.co...s%20Kick-Off%20Livestream
Ofcourse hosting this alone would be fucking boring, so i'm asking you folks who usually host/commentate on WGL (Lolowut, Fridge, Latnox, TWM, Pushover) if you want to join me commentating, it would bring in the prespective of the warlight veteran who has no clue how to code the bot, so it would pop some more interesting / relevant questions for folks who don't code and might be watching.
I'm also asking folks who developed a bot (Norman, Trogatog, 125ch209, Garrett, GreenTea, Ikalgo, Muli, Odin, Z-Dog, pedrito) to join in and contribute talking about the strategy behind their bots, so if you're reading and not camera shy, now is the time to clear your schedule and add 'psenough' on your skype contacts.
I would also like to have jim (one of the organizers of the compo) present if he's able. Please let me know if you're available.
And last but not least would be cool if Fizzer could announce the broadcast while we're broadcasting. I'll announce this on a forum thread in the following days ofcourse, but would be nice to have more live viewers.
I'll try to setup twitch.tv to record the whole broadcast so it can be shared later on and such.
This will be a test-run for also covering the final live later in the final weeks of June when it takes place.
Hebben jullie de nieuwe (Beta) Omaha competitie al gezien trouwens?