L'Arena

JRobot e' un gioco che simula la guerra tra robot: ogni autore sviluppa un codice (in Java) contenente l'intelligenza artificiale del proprio robot; viene poi simulata un'arena virtuale in cui 2 robot vengono piazzati e fatti combattere fra di loro.
L'autore ha a disposizione comandi come scan(dir, range) (determina la posizione del nemico) o cannon(dir) (spara un missile), con i quali il proprio robot puo' interagire con l'ambiente.


Il.Tristo.Smorzatore

Il mio JRobot, Il.Tristo.Smorzatore (Beta), ha un'autorevole efficienza del 95%. Ho impiegato 8 ore per realizzarlo, di cui 3-4 al simulatore. Eccone la storia:

Ho iniziato questo JRobot mettendolo a confronto con KillerBees, il jrobot che da 3 mesi e' dominatore incontrastato di tutte e 3 le categorie; ben presto mi son accorto che KillerBees non era adeguato per testare il robot che stavo progettando, infatti KB e' un jrobot anomalo: e' stato sfornato da 2 ingegneri, che ci hanno infilato tecniche avanzate; in particolare KB e' in grado di "comprendere" il pattern dei movimenti dell'avversario, adeguando la mira di conseguenza.

Da allora ho usato NeoMonty (2° in classifica) per mettere sotto torchio Il.Tristo.Smorzatore, fregandomene di KB, e con lo scopo quindi di arrivare 2°.

Alla fine ne e' venuto fuori un JRobot in grado di surclassare tutti i JRobot in gara (una trentina), tranne KB. Ora, KB e' ottimo, pero' non vince contro tutti, e quindi (come, a dire il vero, speravo), ho superato in classifica anche lui!

Tutto cio' in modalita 1-on-1, perche' nelle modalita' 2vs2 e 4vs4+4+4 Il.Tristo.Smorzatore e' proprio un cesso! Diciamo che non ho ancora implementato nessuna routine per il gioco in team: Il.Tristo.Smorzatore crede sempre che vi sia solo un altro jrobot nell'arena, che quindi deve essere il nemico.
Di conseguenza, se cosi' non e', oltre a presentare gravissimi errori nel puntamento, ha il coraggio di sparare ai membri della propria squadra: 'Hey, same team!' :)
Cmq, ho grandi idee al riguardo, che nessuno finora ha implementato (rimando tutto al prossimo mese).

Anche nell'1vs1 devo aggiungere parecchie cose, per ora ho solo realizzato lo scheletro e, a parte l'AntiAliasing veloce dei dati campionati, e le techniche di difesa e attacco adattative, non c'e' nulla di speciale.

Quindi consiglio a tutti coloro che conoscono Java/C++ di provare a costruire il proprio JRobot: in meno di 1 ora se ne puo' costruire uno semplice, che se progettato sulla base di una buona idea, puo' essere migliore di un robot perfezionato al massimo (ed altri autori sono di questo stesso parere).
Diciamo che i problemi a cui si va in contro sono quello di dover lavorare con uno scanner e un cannone che hanno una bassa risoluzione (1 grado) e quello delle temporizzarioni altrettanto imprecise.


Classifica finale ( Apr 2001 )

Duelli ( vinti / fatti )
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
KillerBees
IlTristoSmorzatore
* Myst
NeoMonty
Fish
MontyZ
Pulse1
LvRDumber
Dragon
Tiny
Marvin3
Kamikaze
Jimbo
Epa1
KafeBot
DareDevil
MarmotteAgile
MarukoV4
Topotun
Vampire
SaD
Marvin
DynaBlaster
Phalanx
Ciaky
Stinger
Platoon
Sharks
NamcoAI
NamcoAImkA
SnorkKamikaze
ColdMadBrain
104/111
100/107
52/56
84/115
64/88
68/95
67/95
68/107
64/104
56/92
63/104
66/109
50/88
51/90
49/93
53/103
37/77
45/99
45/100
44/101
44/101
44/101
47/108
34/105
31/98
30/98
29/102
30/109
26/105
19/91
19/113
12/128
93,69%
93,46%
92,86%
73,04%
72,73%
71,58%
70,53%
63,55%
61,54%
60,87%
60,58%
60,55%
56,82%
56,67%
52,69%
51,46%
48,05%
45,45%
45,00%
43,56%
43,56%
43,56%
43,52%
32,38%
31,63%
30,61%
28,43%
27,52%
24,76%
20,88%
16,81%
9,38%

Resto della Classifica Finale [Apr 2001] - (Copia locale dal sito di JRobots)
Colpo di c... [Gen 2002] - A distanza di 9 mesi, in che posizione mi ritrovo?


Storia di un Lamer (Aggiornamento del 9 Maggio 2001)

Ritiro molto di quanto detto sopra (era l'8 Aprile 2001), in particolare vi sconsiglio di sviluppare il vostro JRobot, ed io stesso non terminero' il mio: troppo poca competizione e troppo Lamer Walter N. (l'unico dei 2 autori di KillerBees ancora attivo)

Infatti ho spaccato culi (efficienza 93.5%) nonostante Il.Tristo.Smorzatore non fosse ancora terminato (e con una tendenza al suicidio contro i muri) e nonostante la lamerata di Walter di aggiungere all'arena Myst (una variante di KB) con lo scopo di abbassare il Kill-Ratio del mio ITS.

Ma cio' che ha trasformato Walter, da mio ex idolo, a Lamer dei Lamer, e' il fatto che per modificare KB ha copiato dal mio ITS, ottenendo un JRobot che supera KB (LOL). Ed allora e' stato cosi' ingenuo da rivelare che sotto il falso nick di Mysty c'era lui! CHE SPASSO!

Segue il post di Walter sulla newsletter di JRobots (testo in inglese) con la mia risposta (in italiano). Se sei un alieno che viene in pace non leggere 'sta bambinata.

> First of all, congratulations Leonardo, you came very very close
> to the truth about the Myst...erious robot which topped KillerBees
> in 2 categories.

Credo che Leonardo abbia intuito molto piu' di quello che tu pensi,
esattamente quello che io ho capito fin dai primissimi secondi del
primo match che ho fatto fare a Myst contro IlTristoSmorzatore.
Non ti sei chiesto perche' Leonardo abbia tollerato un rip da KB,
per lo piu' senza venire a chiedere il tuo parere riguardo al plagio?

> But Myst is just an experimental version of KillerBees developed by
> me and launched to test the effectiveness of the circling movement
> in the current arena.

L'unico scopo di Myst era quello di abbassare il Kill-ratio del mio
IlTristoSmorzatore, che altrimenti avrebbe vinto su KB: infatti la
presenza di Myst ha diminuito il kill-ratio de IlTristoSmorzatore di
0.5*100/32=1.56% (statistico) ed aumentato di altrettanto quello di
KB (32 e' il # di robot nell'arena, 0.5 tiene conto del fatto che
Myst ha giocato per meta' torneo).

Il moto circolare ti serviva solo per assicurarti che KB non perdesse
mai contro Myst.

> And i'm a bit disappointed with the results, because Myst performed
> a lot better than expected, since it had some VERY important
> features of KillerBees turned off.

Anche questi handicap ti servivano solo per abbassare il kill-ratio
di Myst, in modo che se ne stesse non notato nelle posizioni basse
della ladder, continuando a fare il suo sporco lavoro.

> It was IlTristoSmorzatore who inspired me to do this test... [CUT]

Ma non mi dire

> But, which one is the strongest robot, the one who wins 80% of the
> matches against ALL the robots, or the one who scores 90% in the
> arena just because it's deadly against simple robots, but it NEVER
> wins against the one above mentioned?

Ma stai scherzando?
Il migiore e' chi arriva primo, e siccome e' una ladder, chi ha il
kill-ratio maggiore.

E comunque, giusto per frenare la tua arroganza (la tua mi sembra piu'
un'affermazione che una domanda), ti faccio vedere come una piccola
modifica ad IlTristoSmorzatore (moto random anziche' circolare)
permette di ottenere un KB/Myst-killer.
Te lo invio via e-mail? O lo aggiungo all'arena, cosi' abbasso il
kill-ratio di KB e Myst? :)

> try to put in a small league only the first 3 players in Single play,
> and you will see that KillerBees will score higher than 90% and with
> a big big lead on the second one, Myst or IlTristoSmorzatore.

Ma per forza, Myst e IlTristoSmorzatore (sto' usando copia e incolla :P)
seguono un pattern regolare, e quindi KB se li mangia a colazione. E' la
particolarita' di KB che apprezzo di piu': riesce ad adeguare la mira se
l'avversario segue pattern circolari o a zig-zag.

(cmq, secondo sarebbe sicuramente Myst, non ci arrivi?)

> And another thing which emerged is that with speed set at 1X,
> flocking in Team mode is not effective anymore, as witnessed by Myst
> score which is KB without flocking in Team; i think that is because of
> the increased CPU power every robot gets in Team, they're better
> fighting by their own rather than taking some more damage in the
> gathering phase and by "area damage" once gathered...

Stai attendo a quello che scrivi: quel 'i think' verifica quanto ho
detto: tu non hai 'progettato' un robot migliore, tu hai solo cercato
di peggiorare KB ed ora che hai visto i risultati cerchi di 'dedurre'
perche' Myst e' migliore di KB.

E il bello e' che le tue deduzioni sono sbagliate: il ragruppamento
rimane utile in team mode (e tu lo hai tolto da Myst sempre per
evitare di intaccare KB); quello che rende piu' effecace Myst e' il
moto circolare; e' il miglior pattern di spostamento, te lo assicuro,
e nonostante i timings di Myst siano errati, offre cmq un margine di
difesa maggiore.

> Do you wanna an improved Myst as a KillerBeesII?

Tutto questo post e solo un tentativo (molto ingenuo) di rimediare
all'errore che hai fatto: quello di esserti dato la zappa sui piedi
uploadando (usando un fake nick) un bot che surclassera' KB.

> I'm not very happy with it, to be true, for the above reasons.

Ti credo pienamente :)

> I will ask what BingleFish thinks of it, then we will see, but i
> have lost some interest in the competition, and i'm looking
> forward to JerkFighters.

E le tue lamerate hanno fatto perdere a me l'interesse in questa
competizione: tu mi hai donato la piu' grande delle vittorie: vedere
il mio principale rivale, nonche' ex idolo (per l'ottimo KB),
trasformarsi in lamer per causa mia!

> Ciao

Hi
[mb]
FAQ

D: Ho provato a far combattere il tuo JRobot con altri robot, ma vinceva solamente con i pił scarsi della classifica. Come mai?

R: Perche' IlTristoSmorzatore ha l'intelligenza di una mummia dopo una lobotomia :)

A parte gli scherzi, la cosa non mi sorprende: il gioco JRobot e' thread-based, ed e' risaputo che il comportamento dei vari robot e' fortemente influenzato da: 1) hardware 2) JVM 3) OS, su cui l'applet viene fatta girare.

In particolare se l'HW e' lento (<200MHz), la JVM e' quella del Netscape, l'OS e' il Solaris, IlTristoSmorzatore va' che e' una merdina (sono avvantaggiati i robot che fanno meno calcoli).

Come avrai intuito, il Java e' multipiattaforma solo sulla carta:

"...that's why Java isn't being used for very much production software development. This is the problem when a language is designed by a company with vested interests (in Java's case, Sun's goal was to gain control over developers' code, so they could make money licensing Java to OS vendors). This never works, because they always end up crippling the thing for silly reasons. Programming languages are best designed by cool guys who don't plan to use the language to gain control over something." - Tim Sweeney (Epic's Lead Programmer)

C# e' la naturale spiaggia di approdo per chi vuole abbandonare il Java.


Classifica Finale [Apr 2001] - (Copia locale dal sito di JRobots)
Colpo di c... [Gen 2002] - A distanza di 9 mesi, in che posizione mi ritrovo?
Battle Applet - Arena per seguire i match e le classifiche (ScreenShot)
Sito di JRobots - Partecipa anche tu!
Download JRobots SDK - Contenente software, istruzioni e regolamento.


HomePage | WinBode | ClothSim | 3GYPT | JavaSimplex | Unreal Museum | Unreal Comic | WebMaster
N i n j aK i l l e r