Tuesday, August 19, 2008

== August 19 == The day after.

Hehe, it was a close one! I wasn't even sure myself, but at the end I made it... just narrowly squeezed in. It was a really interesting experience to code 1k lines or so in the last couple of days, then debug, playtest, debug some more, and finally tidy it up. Intense!! There's nothing like the smell of burning asphalt in the morning...

On a more technical note, here's how it's looking right now:
1) A working client, with game-world representation of both RFTS and Risk.
2) Several semi-working algorithms to play RFTS.
3) A fully functional Risk bot, which successfully plays the game, with some moderately complex control-flow, and decision making algorithms.
4) A "genetic" framework, which reads, writes, and decodes "genome" files, which specify bot behavior.

Here's what's missing:
1) An "evolutionary framework", to automatically pit bots with different genomes against each other, and slowly breed a set of successful solutions. For now, I'll provide a guide of how to manually tweak genome-files, to affect the robot's behavior in a desirable way.

Here's what needs more work:
1) Certain core algorithms in the bot need to be scrutinized further, to tweak them to the desired condition.
2) Re-visit the genetic framework, such that it would allow for different genetic formats between rulesets.

All in all, and with due humbleness and realization of its shortcomings and such, I feel that presently the project is in decent shape. In the few days that remain of summer, I'll work on tweaking the project further in the desired direction of... taking over the universe! (or is it multiverse by now? whichever.)

As to my experience of GSoC, it was such a booster and catalyst of my rather modest skills. After all, I'm a second-year CS student (3 Java courses, 3 math and theory courses behind me), and taking on a project of this magnitude and difficulty was somewhat of a gamble. I also really enjoyed interacting with the Thousand Parsec community. Hope this project prospers, and lives to see true exposure in the public. The open source community was a new thing for me, both software and concept wise, and I do feel priviliged to have entered this community as a contributor, with some responsibility on the shoulders.

Well, thanks for baring with me. This might just be the last post here (unless there's something important and relevant to say later on) . So long, and thanks for all the fish!

____________________

Victor Ivri (vi1985)
You can find the project in the git repo here: REPO

Tuesday, August 12, 2008

== August 12 == Final 100 meters...

This would be the time to say "hooray, I did it!", but I didn't; not just yet. I still have several things to tinker with, but if I really push it (like I already did several times before), the 18th is definitely a realistic deadline. I'll make it, because... because I have to :). So stay tuned, there will be more news on Friday!

Later,
Victor.
____________________

Victor Ivri (vi1985)
Blog address: BLOG
You can find the project in the git repo here: REPO

Friday, August 1, 2008

== August 1 ==

Hi all,

Well, I can say that all ~preparations~ to start coding for Risk are finished; the libraries are now nice and generic (framework is tested-working for RFTS), the ruleset is set up and working on my local server. Hell, even the protocol has been patched up for Risk recently (thanks, Kryzstof!). Now I've got two small, insignificant tasks ahead of me (namely, creating game-world representation for Risk, and making the actual AI logic...), and some two-plus weeks to do it. Sounds like a job for... never mind, I'll do it myself ;). And the best part is, I'm going white-water canoing until Monday (inclusive), and will start work only on Tuesday. But hey, I'll stock up on Redbulls and sugar-pills, and hack the remaining 2 weeks away, like they were... like they were one week! Well, wish me luck on the rapids (or, better yet, skill!), and I'll be with you again shortly ;).

Till later,

Victor.
____________________

Victor Ivri (vi1985)
Blog address: BLOG
You can find the project in the git repo here: REPO

Tuesday, July 29, 2008

== July 29 == Risky Business!

There has been an unexpected turn of events last week, which significantly altered the nature and scope of the project. Long story very short, I've been asked to look into creating an AI for the Risk ruleset (currently under development by a fellow GSoCer), which I gladly accepted, due to the persistence of a nasty bug in RFTS (unable to utilize colonized planets), which refuses to get mended. So what I've decided to do, is leave all the support for RFTS in my client, and add to that libraries, which will represent the game-world of Risk, and play it.

This presented an unexpected challenge, and a sobering realization. I really did try to organize the project into logical units, which were "modular", and meaningfully connected to each other, but what I realized when beginning to make this whole thing more generic (to allow for more than one ruleset), is that the overall design was far from optimal. This required a substantial re-organization of the different classes and libraries, which I'm still in the process of finishing. This was a really interesting and even somewhat enlightening experience, one which made me re-think the way I normally do things. (Definitely more planning from now on!)

This process should not take more than an additional day or two, and from then on I'll have to start building logic and game-world representation into the Risk modules... did anyone say that the project's due on the 18th of August?


Later!
____________________

Victor Ivri (vi1985)
Blog address: BLOG
You can find the project in the git repo here: REPO

Friday, July 18, 2008

== July 18 == TP04 Support

The midterm rush is over, and I'm a bit ashamed to admit that this week I took a bit of a rest, compared to the usual pace. I spent my working hours this week on moving from a client that supports TP03 to a client that supports TP04. A good part of it is done, but I'll need to spend some time on interpreting Objects next week. Also, I added some logic to the normal operation of the game, and locally set up tpserver-cpp 0.5.1. Seems to be working just fine! ;-]. Next week I'm hoping to finish the move to TP04 as fast as possible, and continue on the AI logic.

Till then!
____________________

Victor Ivri (vi1985)
Blog address: BLOG
You can find the project in the git repo here: REPO

Friday, July 11, 2008

== July 11 == Midterm Report

This time I'll be brief.
For the past week I've been working over-time to get the project in great shape for the midterm. This included work on pretty much everything...
I'll let the 'official midterm report' do the rest of the talking : <<>>

There's a screenshot there as well, for the graphically oriented ones ;]


Till later,
____________________

Victor Ivri (vi1985)
Blog address: BLOG
You can find the project in the git repo here: REPO

Friday, July 4, 2008

== July 4 == Ye Famous Travelling StarFleet Problem :)

It's that time 'o week again for me to write about my progress. The previous post is only three days old, but I got some stuff to blah about ;].

So, for the most part I've been splitting my time between getting the client ready, and preparing the actual robot for some action. I've been having some issues with the ruleset and the low-level library (see last post), but mostly they've been resolved (except for the annoying bug of being unable to colonize!), and now it's a matter of some time until the client gains complete functionality.

In parallel to that, I've started to work on the actual AI mechanism and infrastructure (by infrastructure, I mean creating the necessary framework for the robot to function). I have decided to forgo the original plan of running a natural-selection mechanism for actions on each and every move for the sake of a simpler, more conventional, but still (I think) very elegant solution (which still implements a genetic selection process, only this time during its creation).

The reason for this was twofold: first of all, I discovered a couple of problems in the design that were hard to overcome; the simulation of each move would've been a real issue, and the mechanism for illegal-move sifting would not have been very difficult to implement, due to "hypothesizing" game-eventualities many moves ahead. Another, equally important reason for me to change the plan, is that this was really a two-fold project, as I had to spend (and still do, to some extent) an incredible amount of work on getting the Java client started, even before getting started on the robot. Hence, de-facto I've only started work on the robot almost at the midterm-point, and I need to simplify the design a bit to get it in good shape before the fat lady sings! ;].

I'll have much more to say on the alternative solution by next Friday, but in short it will be a four-part project: a) the client and game library, b) robot logic, c) a robot-factory for creating new robots, and d) an evolutionary framework for optimizing them. Each robot will have 'behavioural characteristics', by which its behavior will be guided, and which will be susceptible to mutation in the evolution-simulator.

Here, I guess that's it for this week.

PS - Do check out the code in the repo in the "ActionMethods" class for a home-brewed solution of Ye Famous Travelling StarFleet Problem + some mathematical analysis on it! (It's not very tested yet, but I've got faith in it).


Till the dolphins leave,
____________________

Victor Ivri (vi1985)
Blog address: BLOG
You can find the project in the git repo here: REPO