Visit the APOCALYX BLOG!
| || ||
An interview with Caos, author of Tango
by Samuel J. Grabski
I have a unique opportunity to talk to Caos - author of the famous
Tango. His robot appeared in December 2002 immediately causing a
huge sensation. It won Double category breaking long-standing
IonStorm's hegemony. Recently, it shook Veteran's Arena by winning
(In April 2004, a few months after the publishing of this interview,
Tango's career in the Veteran's League reached the top with a
triple-victory. In the past history of JROBOTS this enterprise
succeeded only to the great KillerBees and IonStorm)
Samuel: Could you tell us how have you got involved with Jrobots and what
motivated you to enter the Arena?
Caos: When I was in a University, the local chapter of the IEEE organized a
tournament where players had to program some kind of fighting automats.
Since the concept was pretty interesting (plus we needed to learn C for a
subject) a several classmates and I decided to participate. After a few
weeks, we went into a classroom, and had a very funny competition that
lasted 4 or 5 hours. We were all together, laughing a lot at ourselves,
watching those strange things which each of us invented. It was quite funny,
and the best thing was that we have learned basics of C without being aware
Due to the fact that I have not programmed anything for years, a year ago I
decided to acquire some basic concepts of Java. Since I remembered my funny
experience with C, I decided to search the Internet and check if the old C
simulator had evolved to other languages. And ... I found Jrobots! Without
any hesitation, I downloaded the Arena and began to write my first version
of Tango. It was named Tango because its first movements resembled dancing
in the rhythm of the popular music of my country.
Stimulated by the relative success of Tango on its first incursion into the
Arena, I decided to challenge the top robots of that time. The results were
pretty good ... until IonStorm woke up. We were fighting very hard for a
while, upgrading bots frequently, but the modifications introduced by Alan,
showed me clearly that my concepts and wishes alone were not sufficient to
get to the very top place. A lot of work was necessary to tune the details,
to improve lots of things... and my free time and energy (after several hard
months) were exhausted.
A few months ago, I was stimulated to come back with an upgrade of Tango due
to positive changes in the Arena. Some new and very interesting robots were
coming. They introduced new movement styles and more precise shootings,
which caused Tango to decrease its performance. I felt it was time to make
the second version.
To be honest, I have not learnt advanced Java, but I discovered a great
Samuel: Your robot is the only one, which can successfully challenge the
"All Mighty". Have you made it specifically to be Anti-IonStorm?
Caos: I think if you want to obtain good results in this game, you must
program your robot to obtain good results against every other robot in the
Arena. It is a game where results are measured statistically, so it is not
enough to be the best against a specific robot, or a particular type of
It is not possible to win a game just winning with a particular robot and
theoretically, one could win the game, even without beating IonStorm. Of
course, being practical, I think you should not just beat IonStorm on the
individual fights (very hard work, indeed), but your robot should be as
efficient as IonStorm is against the others, or even better, to win a
So, I am not anti-IS, but I do not have another choice to try to win a game.
Fortunately, in general, I like challenges and the strength of IonStorm is
an excellent stimulus to improve my robot.
I would like to see the other "Mighty" (HeadHunter, KillerBees and Mouth) to
wake up from the "lethargy", to make things even more interesting! I
consider it is commendable to be in the top positions, without any change
for so long.
Samuel: Many players are curious what is needed to get to the top of the
Veterans list. What particularly helped you to achieve this goal?
Caos: From my point of view I think that at the beginning you need to work
on a particular concept or strategy, which allows you to quickly build a
base of relatively good results. It should encourage you to continue to work
on other details. For me it was very important to feel that I could do it!
After that, you should continue to work using common sense and to watch lot
of fights in order to detect mistakes of your robot or to learn new things
from better bots.
Whenever you can, use methods, formulas and mathematical concepts to resolve
problems without reinventing the wheel (scanning, estimation, patterns).
You need to be very persistent, and overcome the frustration. Sometimes,
after days of sterility, suddenly you feel that you have found THE idea, ...
but when you implement it, you realize it does not work at all, ... or even
worst, weeks later you realize it does work, but on the first attempt, you
were not patient enough.
I could not give advice to the veterans, because probably, they could give
advice to me. But a beginner may consider the following:
|Tango dancers||Tango fighters|
Samuel: That was great advice, thank you! And what could you tell me about
Caos: I was born in a small town in the south part of Argentine, near the
Andes, in a region called Patagonia. I grew up away from the big cities, in
a region that produced tons of apples (no Mac), pears, grapes and wine.
There, I have learnt to enjoy sports, mountains, lakes, barbecues and
- The movements are as important as the shooting.
I feel there is a general trend to concentrate too much work around
shooting, without being aware that it is as important to beat, as not
to be beaten.
- Do not trust the Scan.
You should be careful, because it is not precise enough to support
complex predictions without some previous work over collected data.
- You must develop a "700 meters" method.
It is needed in all the modes but especially essential in Team and
- Each mode requires its own tactics.
Being good in one mode, does not assure success in the others.
Anyway, I believe it is a necessary condition to have a good single
mode to in order improve the other 2 modes, but it is not a sufficient
- Be flexible.
Do not stick to bad concept until death. Sometimes you need to change
in order to grow up.
- Be persistent.
You will need a high level of patience. Sometimes the solutions in this
game are closer than expected.
After my teenager years, I moved to a bigger city to study in a University,
where I obtained a degree in Computer Science. I began working as programmer
for small software companies that provided solutions for different
industries. After that, in a bigger company, I performed task of Analyst and
Project Leader in projects related to the financial sector. Following this
line of professional development, I have been the Project Manager of an IT
company for many years (in a very time and responsibilities exigent
Today, I am living in Uruguay, a country very close (geographically and
culturally) to Argentine.
I live with my girlfriend (... she hates Jrobots!) in a flat near the beach,
and we have a small pet (a Beagle), who "supports" me when I work late on my
computer with another pet (Tango), trying to improve something. In general I
am an easy but very active person and sometimes I am a bit critical and
exigent about things, and about myself.
Samuel: Could you tell me about your passions, favorite pastime, good books
Caos: Generally speaking, I rarely have a free time or at best not as
frequently as I would expect. Sometimes my job is quite time consuming.
I like sports in general and in particular I have played tennis for years. I
try to play it with friends 3 times a week. In the past I have played
volleyball, paddle (sport very popular in my country many years ago), soccer
and basketball. Sometimes I watch the NBA on TV (I like Spurs), and of
course, I try to watch the tournaments of the ATP tour.
Reading books is not my preferred activity, so I often read them with a
practical purpose in mind. I have a lot of them not finished on my bed
table. However, I love music! Particularly, live music connects me with the
right side of my brain (responsible for sensations, feelings, etc.). I am
open minded to different styles, but restricted to those of good quality.
Even though it sounds contradictory in some sense, I do not like Tango
I love going to the cinema too, and again, I like a wide range of type of
films. I like those that shock or shake me, and help me to change a point of
view, or to reevaluate my actual perception of things. I love
good Sci-Fi too, but it is a pity that good Sci-Fi movies are not so common.
I spend some time studying Management ... and English too, though I would
prefer more structured languages ;-)
Samuel: Obviously you have demonstrated already twice that it is possible to
beat top robots. How difficult would be to beat Tango?
Caos: Sometimes, the Tops seem to be so far of the rest, that depending on
the moment and your emotional state, it can be an encouraging element or a
negative factor. I really hope that a few victories of Tango, can act as a
positive incentive to the rest of the players.
I think that at this moment we need to equilibrate things, and I suppose it
would be better for the game to have a group of robots in a similar high
level of competitiveness, to increase the level of interest. If you are near
the goal, or you see that it is possible to reach, it is much easier to go
on than if you do not see light at the end.
I think that the game and bots have room to grow up, because in a very
competitive environment it should be uncommon to have very long time of
hegemonic situations like current one, especially if you realize how
different are the three modes of the game! Of course, it is our
responsibility to work hard to reach the standard level set by IonStorm.
In my second version of Tango, I incorporated some new features in the
movement to make it more difficult to hunt my robot, and introduced some
extras to the scanning and prediction process. My next step will be to
refine the new characteristics to improve winning percentage points.
I am not in a position to make a new monster, but I am just trying to
equilibrate things with IonStorm ...
Samuel: Which category (Single, Double or Team) do you like the most?
Caos: I do not know exactly the reason, but I have always preferred Single
mode. Freud could say, it is due to my first experience in this field
(CRobots), but I believe it could be due to the symmetry of conditions of
the starting point or perhaps because it is easier and faster to probe or
because it is the basic foundation for the other modes.
I have almost not invested time in Team mode, because it does not run at an
acceptable speed on my machine, but I have plans to improve the performance
in this mode in the near future.
Samuel: Which robot had caused you the most problems?
Caos: Without any doubt IonStorm is the hardest to beat, since it manages
all the situations in a smart and neat way. It has a great maturity level in
its movements and its shooting is very precise, no matter the distance. In
general it is very disappointing to try a lot of tricks with the same
result - you end up dead.
New robots bring new problems to Tango, because it has not enough code to
face the variety of styles.
Samuel: Which missing feature would you like to implement in Tango in the
future? Of course, do not tell the trade secrets :) !
Caos: Sometimes, I want to begin from Zero, because I am often limited by
some old parts of the code. I think with the current experience, having a
wider vision of the game, I should be able to build a robot over more solid
and neat basis, and I hope, smaller and faster too.
In Double and Team modes, I am sure Tango could improve its performance by
sharing more information with its partners, or directly using the
information collected by other better placed robots in the Arena. I would
like to expand the history log of movements of every enemy, and to refine
the data collected by the scanner to use some new information that I need to
Perhaps using vectors could result in a more maintainable code.
Samuel: How would you classify the Jrobots game? Is it a programming game,
an artificial intelligence game, an intellectual discovery or a
Caos: It is very difficult to categorize it. I would define it as a kind of
strategy and tactic game, where to be clever is very important.... like
chess! Programming is just the tool to implement the tactic, and the results
are neither strictly related to good programming abilities (I am the living
proof) nor to the formalization of rules but to the discovery or invention
of the clever ways to resolve some situations in an automatic way.
Samuel: If you could wish for a change in rules, simulator features or in
the Jrobot's community what it would be?
Caos: From a conceptual point of view, I think we should have more
information available to the beginners. The current information is not rich
enough to speed up the initiation process. The forum has little activity and
there are not deep discussions about mathematical methods to use or common
problems like the precision of the scan, how to avoid walls, advantages of
using vectors or not, usefulness or not of some speeds (8x), alternative
ways to debug the robots, etc.
This lack of information and weak forum activity may transmit to a rookie
the false impression of being a hermetic group or a game not being mature
Regarding the simulator, I think that a lot of interesting things could be
done and some of them have been already discussed at the forum.
If I could choose, I would like to see more realistic and smooth movements,
possibility to use classes (!), more precise Scan (without the 1 and 20
degrees limit), longer matches to have enough time to predict patterns (it
could be easily done by decreasing the power of the missile impact), ability
to keep historical data after each game in order to used it in the next
games, capability to build alliances in Team mode, sharing common methods
among enemies, etc. I suspect that there are many other fascinating things
that could be done but I am worried about just one thing: Time.
Even without any additional features, with the current number of veterans, I
spent lot of hours just to verify if small change in my code has or not any
impact on the results. I usually use nights to do it (at 100% CPU), but it
is quite boring and de motivating to wait so long for result of each change.
I think, that this is a problem that could prevent beginners from reaching
the specific level of enthusiasm required to make a good robot and people
who reached that level could lose interest because it is too time expensive
to maintain or improve their robots.
Furthermore, just with the current number of veterans, I suspect that the
amount of games played in a typical month may not be statistically high
enough to ensure correctness of the final order in an equilibrated
Samuel: These are very interesting comments, which should stir some
responses from our community. Thank you Caos for your time and many good
fights for Tango!
Caos: Actually, I want to thank you, Leonardo, Alan and those who have
contributed with personal sacrifices to maintain this interesting game
alive! I support your initiative of interviewing people behind the bots, and
I think it could be very interesting to know more about the rest of the
|Images from Patagonia|
|Fitz Roy Hill||Lake||Fall|
| || |
| || || |