User visible changes
- We now support excellent record/replay functionality, including export/import to XML. Record also contains paintings of robots, so you can replay them. Because recording is resource consuming, it is switched off by default, go to preferences dialog to turn it on.
- In UI we have new button for main battle log, where you can watch systems messages (if you don't like to look at system console). The dialog also contains tab with XML representation of last battle frame, which might help with debugging your robot.
- Robot dialog was enhanced by new tab page with dump of current robot properties. Hope you will love it, because you can add your own properties from your robot by calling setDebugProperty() method of your robot. See sample.PaintingRobot for example usage.
- Robot dialog could hint which robot is trying to paint something, paint button becomes green.
- Robot button was given life-bar + score-bar, so that you can easily see who is winning. You see small red bar on Corners sample button ? That's energy below 25 points. Blue bar is score.
Robot visible changes
- New method setDebugProperty()
- Classes of event arguments are more strict now. They are final, so you can't inherit from them, they also hide methods setPriority() and setTime() for security reasons.
- Team messages are deserialized on receiver robot thread.
- Robots which are wrong behaving are removed from repository and are not given other chance to run. This is for skipped turns, for unstoppable robots and for robots with class loading troubles.
- During painting robots can paint only such things which are Java Serializable.
Bug fixes & Feature requests
- [2214620] Robots are given unlimited time when recording, painting or debugging with -Ddebug=true
- [2117285] we now upload version of client and game mode with results from roborumble
- [2208374][2026098][1829282][1609494][1577588] are mostly described above
Implementation details
Communication from user robot to battle is 90% redesigned!
We use serializable messages instead of sharing and locking robot state and intentions.
We spend months to do it correct way. The presented solution was preceded by three unsuccessful trials. As reward we have cleaner architecture, less synchronization overhead, better security, better speed, code is much more readable I hope.
We have now potential to run robots in sandbox and let them communicate using IPC or over network in future versions.
The code is still in branch. We plan to merge it to trunk when we reach full release. We need YOUR feedback and testing support.
No comments:
Post a Comment