1 | ## ReadMe for Robocode |
---|
2 | |
---|
3 | Updated 06-Mar-2013 by Flemming N. Larsen |
---|
4 | |
---|
5 | Robocode Home Page: |
---|
6 | [http://robocode.sourceforge.net/](http://robocode.sourceforge.net/) |
---|
7 | |
---|
8 | ### TABLE OF CONTENTS |
---|
9 | |
---|
10 | 1. [What is Robocode?](#what-is-robocode) |
---|
11 | 2. [History of Robocode](#history-of-robocode) |
---|
12 | 3. [System Requirements](#system-requirements) |
---|
13 | 4. [Getting Started](#getting-started) |
---|
14 | 5. [Robocode API](#robocode-api) |
---|
15 | 6. [Robocode Repository](#robocode-repository) |
---|
16 | 7. [Community](#community) |
---|
17 | 8. [Challenges](#challenges) |
---|
18 | 9. [Competition](#competition) |
---|
19 | 10. [Command Line](#command-line) |
---|
20 | 11. [Links](#links) |
---|
21 | 12. [Reporting Defects](#reporting-defects) |
---|
22 | 13. [Feature Requests](#feature-requests) |
---|
23 | 14. [Versions](#versions) |
---|
24 | 15. [News](#news) |
---|
25 | 16. [How to contribute](#how-to-contribute) |
---|
26 | |
---|
27 | ### 1. WHAT IS ROBOCODE? |
---|
28 | |
---|
29 | Robocode is a programming game where the goal is to code a robot battle |
---|
30 | tank to compete against other robots in a battle arena. So the name |
---|
31 | Robocode is a short for "Robot code". The player is the programmer of |
---|
32 | the robot, who will have no direct influence on the game. Instead, the |
---|
33 | player must write the AI of the robot telling it how to behave and |
---|
34 | react on events occurring in the battle arena. Battles are running in |
---|
35 | real-time and on-screen. |
---|
36 | |
---|
37 | **The motto of Robocode is: Build the best, destroy the rest!** |
---|
38 | |
---|
39 | Besides being a programming game, Robocode is used for learning how to |
---|
40 | program, primarily in the Java language, but other languages like C# |
---|
41 | and Scala are becoming popular as well. |
---|
42 | |
---|
43 | Schools and universities are using Robocode as part of teaching how to |
---|
44 | program, but also for studying artificial intelligence (AI). The |
---|
45 | concept of Robocode is easy to understand, and a fun way to learn how |
---|
46 | to program. |
---|
47 | |
---|
48 | Robocode offers complete development environment, and comes with its |
---|
49 | own installer, built-in robot editor and Java compiler. Robocode only |
---|
50 | pre-requires that a JVM (Java Virtual Machine) to exist already on the |
---|
51 | system where Robocode is going to be installed. Hence, everything a |
---|
52 | robot developer needs to get started is provided with the main Robocode |
---|
53 | distribution file (`robocode-xxx-setup.jar`). Robocode also supports |
---|
54 | developing robots using external IDEs like e.g. |
---|
55 | [Eclipse](http://www.eclipse.org/downloads/), |
---|
56 | [IntelliJ IDEA](http://www.jetbrains.com/idea/), |
---|
57 | [NetBeans](http://netbeans.org/), |
---|
58 | [Visual Studio](http://msdn.microsoft.com/en-gb/vstudio/) etc., which |
---|
59 | supports the developer much better than the robot editor in Robocode. |
---|
60 | |
---|
61 | The fact that Robocode runs on the Java platform makes it possible to |
---|
62 | run it on any operating system with Java pre-installed, meaning that it |
---|
63 | will be able to run on Windows, Linux, Mac OS, but also UNIX and |
---|
64 | variants of UNIX. Note that Java 6 or newer must be installed on the |
---|
65 | system before Robocode is able to run. See the [System |
---|
66 | Requirements](#system-requirements) for more information. |
---|
67 | |
---|
68 | Be aware that many users of Robocode (aka Robocoders) find Robocode to |
---|
69 | be very fun, but also very addictive. :-) |
---|
70 | |
---|
71 | Robocode comes free of charge and is being developed as a spare-time |
---|
72 | project where no money is involved. The developers of Robocode are |
---|
73 | developing on Robocode because they think it is fun, and because they |
---|
74 | improve themselves as developers this way. |
---|
75 | |
---|
76 | Robocode is an Open Source project, which means that all sources are |
---|
77 | open to everybody. In addition, Robocode is provided under the terms of |
---|
78 | [EPL](http://www.eclipse.org/legal/epl-v10.html) (Eclipse Public |
---|
79 | License). |
---|
80 | |
---|
81 | ### 2. HISTORY OF ROBOCODE |
---|
82 | |
---|
83 | The Robocode game was originally started by **Mathew A. Nelson** as a |
---|
84 | personal endeavor in late 2000 and became a professional one when he |
---|
85 | brought it to IBM, in the form of an AlphaWorks download, in July 2001. |
---|
86 | |
---|
87 | IBM was interested in Robocode, as they saw an opportunity to promote |
---|
88 | Robocode as a fun way to get started with learning how to program in |
---|
89 | Java. IBM wrote lots of articles about Robocode, e.g. like |
---|
90 | [Rock 'em, sock 'em Robocode!](http://www.ibm.com/developerworks/java/library/j-robocode/) |
---|
91 | from AlphaWorks / developerWorks at IBM, a series of articles like |
---|
92 | [Secrets from the Robocode masters](http://www.ibm.com/developerworks/java/library/j-robotips/), |
---|
93 | and "Robocode Rumble / RoboLeague". |
---|
94 | |
---|
95 | The inspiration for creating Robocode came from |
---|
96 | [Robot Battle](http://www.robotbattle.com/history.php), a programming |
---|
97 | game written by Brad Schick in 1992, which should still be alive. Robot |
---|
98 | Battle was, in turn, inspired by |
---|
99 | [RobotWar](http://www.robotbattle.com/history.php), an Apple II+ game |
---|
100 | from the early 1980s. |
---|
101 | |
---|
102 | The articles from IBM and the Robocode community behind the RoboWiki made |
---|
103 | Robocode very popular as programming game, and for many years Robocode has been |
---|
104 | used for education and research at schools and universities all over the world. |
---|
105 | |
---|
106 | In the beginning of 2005, Mathew convinced IBM to release Robocode as |
---|
107 | **Open Source** on SourceForge. At this point, the development of Robocode had |
---|
108 | somewhat stopped. The community around Robocode began to develop their own |
---|
109 | versions of Robocode with bug fixes and new features, e.g. the |
---|
110 | [OpenSourceRobocode/Contributions](http://old.robowiki.net/robowiki?OpenSourceRobocode/Contributions) |
---|
111 | and later on the two projects, |
---|
112 | [RobocodeNG and Robocode 2006](http://old.robowiki.net/robowiki?RobocodeNG/Archive), by **Flemming N. Larsen**. |
---|
113 | |
---|
114 | Eventually, Flemming took over the Robocode project at SourceForge as |
---|
115 | administrator and developer in July 2006 to continue the original Robocode game. |
---|
116 | The RobocodeNG project was dropped, but Robocode 2006 was merged into the |
---|
117 | official Robocode version 1.1 containing lots of improvements. Since then, |
---|
118 | lots of new versions of Robocode have been released with more and more features |
---|
119 | and contributions from the community. |
---|
120 | |
---|
121 | In May 2007, the [RoboRumble](http://robowiki.net/wiki/RoboRumble) client got |
---|
122 | built into Robocode. RoboRumble is widely used by the Robocode community for |
---|
123 | creating up-to-date robot ranking lists for the 1-to-1, Melee, Team, and |
---|
124 | Twin Dual competitions. |
---|
125 | |
---|
126 | Since May 2010 a **.NET plugin** is provided for Robocode using a .NET / Java |
---|
127 | bridge, which makes it possible to develop robots for .NET beside developing |
---|
128 | robots in Java. This part was made by **Pavel Savara**, who is a major Robocode |
---|
129 | contributor. |
---|
130 | |
---|
131 | ### 3. SYSTEM REQUIREMENTS |
---|
132 | |
---|
133 | In order to run Robocode, Java 6 Standard Edition (SE) or a newer |
---|
134 | version of Java must be installed on your system. Both the Java Runtime |
---|
135 | Environment (JRE) and the Java Developer Kit (JDK) can be used. Note |
---|
136 | that the JRE does not include the standard Java compiler (javac), but |
---|
137 | the JDK does. However, Robocode comes with a built-in compiler (ECJ). |
---|
138 | Hence, it is sufficient running Robocode on the JRE. |
---|
139 | |
---|
140 | Also note that it is important that these environment variables have |
---|
141 | been set up prior to running Robocode: |
---|
142 | |
---|
143 | - `JAVA_HOME` must be setup to point at the home directory for Java |
---|
144 | (JDK or JRE). |
---|
145 | Windows example: `JAVA_HOME=C:\Program Files\Java\jdk1.6.0_41` |
---|
146 | UNIX, Linux, Mac OS example: `JAVA_HOME=/usr/local/jdk1.6.0_41` |
---|
147 | |
---|
148 | - `PATH` must include the path to the `bin` of the Java home |
---|
149 | directory (`JAVA_HOME`) that includes `java.exe` for starting the |
---|
150 | Java virtual Machine (JVM). |
---|
151 | Windows example: `PATH=%PATH%;%JAVA_HOME%` |
---|
152 | UNIX, Linux, Mac OS example: `PATH=${PATH}:${JAVA_HOME}/bin` |
---|
153 | |
---|
154 | You can read more details from here: |
---|
155 | |
---|
156 | - [System Requirements](http://robowiki.net/wiki/Robocode/System_Requirements) |
---|
157 | |
---|
158 | If you want to program robots in .NET or control Robocode from a .NET |
---|
159 | application, you need to install the Robocode .NET API plug-in on top of |
---|
160 | Robocode. The plug-in is installed by double-clicking the |
---|
161 | `robocode.dotnet-xxx-setup.jar` the same way as Robocode itself is |
---|
162 | installed. |
---|
163 | |
---|
164 | ### 4. GETTING STARTED |
---|
165 | |
---|
166 | Most documentation about Robocode is provided thru the |
---|
167 | [RoboWiki](http://robowiki.net), which contains the official |
---|
168 | documentation about Robocode, but which also hosts the community around |
---|
169 | Robocode. It is highly recommended to read the articles on the RoboWiki |
---|
170 | for getting started with Robocode. These articles are provided from |
---|
171 | here: |
---|
172 | |
---|
173 | - [Getting Started](http://robowiki.net/wiki/Robocode/Getting_Started) |
---|
174 | |
---|
175 | You should read about the anatomy of a robot, the game physics, scoring |
---|
176 | etc. |
---|
177 | |
---|
178 | To learn more about developing robots for .NET, these articles are a |
---|
179 | good starting point: |
---|
180 | |
---|
181 | - [Create a .NET robot with Visual Studio](http://robowiki.net/wiki/Robocode/.NET/Create_a_.NET_robot_with_Visual_Studio) |
---|
182 | - [Debug a .NET robot with Visual Studio](http://robowiki.net/wiki/Robocode/.NET/Debug_a_.NET_robot_in_Visual_Studio) |
---|
183 | |
---|
184 | ### 5. ROBOCODE API |
---|
185 | |
---|
186 | The Robocode API is provided as HTML pages for both the Java and .NET |
---|
187 | platform. |
---|
188 | |
---|
189 | - [Java Robot API](http://robocode.sourceforge.net/docs/robocode/) |
---|
190 | - [Java Control API](http://robocode.sourceforge.net/docs/robocode/index.html?robocode/control/package-summary.html) |
---|
191 | - [.NET Robot API](http://robocode.sourceforge.net/docs/robocode.dotnet/Index.html) |
---|
192 | - [.NET Control API](http://robocode.sourceforge.net/docs/robocode.dotnet.control/Index.html) |
---|
193 | |
---|
194 | The Robocode API actually consists of 3 different APIs. |
---|
195 | |
---|
196 | - **Robot API**: Within the Java package `robocode` and .NET namespace |
---|
197 | `Robocode`. |
---|
198 | The Robot API is used for developing robots, and is the only part of |
---|
199 | the API that robots are allowed to access. |
---|
200 | |
---|
201 | - **Robot Interfaces**: Within the Java package |
---|
202 | `robocode.robotinterfaces` and .NET namespace |
---|
203 | `Robocode.RobotInterfaces`. |
---|
204 | The Robot Interfaces are used for developing new robot types with a |
---|
205 | different API that the standard Robot API. |
---|
206 | **Note:** *The game rules and robot behaviors cannot be changed.* |
---|
207 | |
---|
208 | - **Control API**: Within the Java package `robocode.control` and .NET |
---|
209 | namespace `Robocode.Control`. |
---|
210 | The Control API is used for letting another application start up |
---|
211 | battles with selected robots in Robocode and retrieve the results. |
---|
212 | It is also possible to get snapshots of robots and bullets (like |
---|
213 | position, heading, energy level etc.) at a specific time in a battle. |
---|
214 | |
---|
215 | ### 6. ROBOCODE REPOSITORY |
---|
216 | |
---|
217 | If you want to try out new robots than the sample robots that come with |
---|
218 | Robocode, you should visit the [Robocode |
---|
219 | Repository](http://robocoderepository.com/). |
---|
220 | |
---|
221 | Robots are available under the |
---|
222 | [Bots](http://robocoderepository.com/Categories.jsp) section of the |
---|
223 | repository. |
---|
224 | |
---|
225 | The Robocode Repository is developed and maintained by David Lynn as a |
---|
226 | project independently of the Robocode project. |
---|
227 | |
---|
228 | ### 7. COMMUNITY |
---|
229 | |
---|
230 | The community around Robocode is using the RoboWiki as communication |
---|
231 | channel. At the RoboWiki, people share new ideas, code snippets, |
---|
232 | algorithms, strategies, and lots of other stuff about Robocode. New |
---|
233 | official documentation from the developers of Robocode will be put at |
---|
234 | the RoboWiki as well. |
---|
235 | |
---|
236 | On the RoboWiki, these strategies are provided: |
---|
237 | |
---|
238 | - [Radar](http://robowiki.net/wiki/Radar) |
---|
239 | - [Movement](http://robowiki.net/wiki/Category:Movement) |
---|
240 | - [Targeting](http://robowiki.net/wiki/Category:Targeting) |
---|
241 | |
---|
242 | The code snippets are also provided on the RoboWiki: |
---|
243 | |
---|
244 | - [Code Snippets](http://robowiki.net/wiki/Category:Code_Snippets) |
---|
245 | |
---|
246 | ### 8. CHALLENGES |
---|
247 | |
---|
248 | A good way to improve you self as a robot developer is to try out some |
---|
249 | real challenges. On the RoboWiki, two famous challenges exist for |
---|
250 | testing/studying a robots movement, targeting, and gun abilities: |
---|
251 | |
---|
252 | - [Movement Challenge](http://robowiki.net/wiki/Movement_Challenge_(original)) |
---|
253 | - [Targeting Challenge](http://robowiki.net/wiki/Targeting_Challenge_(original)) |
---|
254 | - [RoboRumble Gun Challenge](hhttp://robowiki.net/wiki/RoboRumble_Gun_Challenge) |
---|
255 | |
---|
256 | ### 9. COMPETITION |
---|
257 | |
---|
258 | If you want to challenge your robot(s) and yourself as robot developer, |
---|
259 | the [RoboRumble@Home](http://robowiki.net/wiki/RoboRumble) is the best |
---|
260 | way to do it. RoboRumble is the ultimate collaborative effort to have a |
---|
261 | live, up-to-date ranking of Robocode bots. It uses the power of |
---|
262 | available Robocoders' computers to distribute the effort of running |
---|
263 | battles and building the rankings. |
---|
264 | |
---|
265 | RoboRumble is actually 3 different rumbles: |
---|
266 | |
---|
267 | - **RoboRumble** (aka 1v1): One robot versus another robot - both |
---|
268 | picked at random. These two robots a alone on the battle field. |
---|
269 | - **MeleeRumble**: Ten robots picked at random all battle against |
---|
270 | each other.. |
---|
271 | - **TeamRumble**: One team versus another team - both picked at |
---|
272 | random. Each team consists of five or less robots. |
---|
273 | |
---|
274 | In order to get started with RoboRumble, you should read this page: |
---|
275 | |
---|
276 | - [Starting With RoboRumble](http://robowiki.net/wiki/RoboRumble/Starting_With_RoboRumble) |
---|
277 | |
---|
278 | Note that the RoboRumble@Home client is built into Robocode and can |
---|
279 | be started using the batch/shell/command files: |
---|
280 | |
---|
281 | | | Windows | UNIX / Linux | Mac OS | |
---|
282 | |-----------------+-------------------+------------------+-----------------------| |
---|
283 | | **RoboRumble** | `roborumble.bat` | `roborumble.sh` | `roborumble.command` | |
---|
284 | | **MeleeRumble** | `meleerumble.bat` | `meleerumble.sh` | `meleerumble.command` | |
---|
285 | | **TeamRumble** | `teamrumble.bat` | `teamrumble.sh` | `teamrumble.command` | |
---|
286 | |
---|
287 | Two other competitions exists which are: |
---|
288 | |
---|
289 | - [Twin Duel](http://robowiki.net/wiki/Twin_Duel): Two teams |
---|
290 | battle on an 800x800 field. Each team consists of two robots |
---|
291 | (twins). |
---|
292 | - [Hat League](http://robowiki.net/wiki/Hat_League): Two teams not |
---|
293 | knowing each other are paired together at random (like drawing |
---|
294 | names from a hat). Each team consists of two robots. These two |
---|
295 | teams must work together and defeat two other teams that have also |
---|
296 | been picked at random. |
---|
297 | |
---|
298 | ### 10. COMMAND LINE |
---|
299 | |
---|
300 | It is possible to specify options and predefined properties from the |
---|
301 | command-line when running Robocode. The usage of these can be listed by |
---|
302 | writing this from a command prompt or shell: |
---|
303 | |
---|
304 | robocode -help |
---|
305 | |
---|
306 | For example, it is possible to: |
---|
307 | |
---|
308 | - disable the graphical user interface (GUI). |
---|
309 | - disable security that is specific to Robocode (but does not |
---|
310 | override the security that comes with the JVM). |
---|
311 | - enable/disable the debugging mode, useful when debugging robots. |
---|
312 | - play a battle based on an existing Robocode .battle file. |
---|
313 | - replay a recorded battle visually. |
---|
314 | - save the results of battles in a comma-separated file. |
---|
315 | |
---|
316 | You can read more details here: |
---|
317 | |
---|
318 | - [Console Usage](http://robowiki.net/w/index.php?title=Robocode/Console_Usage) |
---|
319 | |
---|
320 | ### 11. LINKS |
---|
321 | |
---|
322 | Links relevant to Robocode are provided on the home page of Robocode: |
---|
323 | |
---|
324 | - [Home Page of Robocode](http://robocode.sourceforge.net/) |
---|
325 | |
---|
326 | Other links are provided from the RoboWiki - especially for challenges |
---|
327 | and competitions: |
---|
328 | |
---|
329 | - [RoboWiki](http://robowiki.net/) |
---|
330 | |
---|
331 | The is also a Wikipedia page available about Robocode, which provides |
---|
332 | good links to movement and targeting strategies, competitions, and other |
---|
333 | sites about Robocode: |
---|
334 | |
---|
335 | - [Robocode on Wikipedia](http://en.wikipedia.org/wiki/Robocode) |
---|
336 | |
---|
337 | ### 12. REPORTING DEFECTS |
---|
338 | |
---|
339 | If you discover a defect (bug) in Robocode you are encouraged to report |
---|
340 | the issue as soon as you discover it - the sooner the better. |
---|
341 | |
---|
342 | A bug report should be reported on the [Bugs](http://http://sourceforge.net/p/robocode/bugs//p/robocode/bugs/) |
---|
343 | page on the SourceForge site for Robocode. Each bug report will be |
---|
344 | prioritized among other bug reports depending on its impact on the game. |
---|
345 | |
---|
346 | It will be a great help if you describe how to see or which steps to do |
---|
347 | in order to reproduce the defect. You are very welcome to provide a |
---|
348 | screen shot, source code or anything else that will show the bug. It is |
---|
349 | also a very good idea to write which system and version of Robocode and |
---|
350 | Java you are using. |
---|
351 | |
---|
352 | If you are a registered user at SourceForge (register |
---|
353 | [here](http://sourceforge.net/account/registration/)) you will be able |
---|
354 | to add a "monitor" on your bug report. This way you will be able to |
---|
355 | receive notifications when someone add comments to your report, but will |
---|
356 | also be able to better track the current status of the bug, e.g. when |
---|
357 | the bug is fixed and with which version of Robocode the fix is |
---|
358 | available. |
---|
359 | |
---|
360 | If you are a developer yourself, and have a good idea of how the bug |
---|
361 | could be fixed, you are more than welcome to do so. By fixing the bug, |
---|
362 | you will become a contributor of Robocode yourself. You can learn more |
---|
363 | about how to contribute [here](#how-to-contribute). Note that we accept |
---|
364 | bug fixes under the terms of |
---|
365 | [EPL](http://www.eclipse.org/legal/epl-v10.html). |
---|
366 | |
---|
367 | ### 13. FEATURE REQUESTS |
---|
368 | |
---|
369 | If you got an idea for a new feature or improvement for Robocode, you |
---|
370 | are very welcome to share your idea by summiting a feature request. |
---|
371 | |
---|
372 | A feature request should be put on the |
---|
373 | [Feature Requests](http://sourceforge.net/p/robocode/feature-requests/) |
---|
374 | on the SourceForge site for Robocode. Each feature request will be |
---|
375 | prioritized among other feature requests. |
---|
376 | |
---|
377 | It will be a great help if you describe your idea in detail, and how you |
---|
378 | think it could be implemented into Robocode. For example, will it be |
---|
379 | possible to extend an existing feature with your idea? |
---|
380 | |
---|
381 | If you are a registered user at SourceForge (register |
---|
382 | [here](http://sourceforge.net/account/registration/)) you will be able |
---|
383 | to add a "monitor" on your request. This way you will be able to receive |
---|
384 | notifications when someone add comments to your request entry, but will |
---|
385 | also be able to better track the current status of your entry, e.g. when |
---|
386 | the feature has been implemented and with which version of Robocode it |
---|
387 | will be available. |
---|
388 | |
---|
389 | If you are a developer yourself, and have a good idea of how the feature |
---|
390 | could be implemented, you are more than welcome to do so if the feature |
---|
391 | is being accepted. By implementing the feature, you will become a |
---|
392 | contributor of Robocode yourself. You can learn more about how to |
---|
393 | contribute [here](#how-to-contribute). Note that we accept |
---|
394 | implementations under the terms of |
---|
395 | [EPL](http://www.eclipse.org/legal/epl-v10.html). |
---|
396 | |
---|
397 | ### 14. VERSIONS |
---|
398 | |
---|
399 | Robocode is continuously under development, and you should be aware that |
---|
400 | three different release types exist for Robocode: |
---|
401 | |
---|
402 | - **Alpha** version is an unofficial "snapshot" version of Robocode |
---|
403 | that is under development and not feature complete yet. It is |
---|
404 | normally provided for the person that has put a bug report or |
---|
405 | feature request on the tracker for Robocode, which needs to be |
---|
406 | verified. Alpha versions are not meant to be redistributed at all. |
---|
407 | |
---|
408 | - **Beta** version is an official release that is considered feature |
---|
409 | complete, and which intended for everybody to try out and test |
---|
410 | regarding all new features and changes, but which is also |
---|
411 | considered "unstable", and might contain some unwanted side-effects |
---|
412 | due to the changes made to this version compared to the last final |
---|
413 | version of Robocode. Defects or undesired behaviors should be |
---|
414 | reported as soon as they are discovered so the issues can be fixed |
---|
415 | before the final release. Everybody is encouraged to take part in |
---|
416 | the testing Beta versions of Robocode. |
---|
417 | |
---|
418 | - **Final** version is (as it says) the final version of a specific |
---|
419 | and official release of Robocode, and where new features and bug |
---|
420 | fixes have been tested. Note, that the release will not state |
---|
421 | "final" on the distribution files for Robocode like it is the case |
---|
422 | for Alpha and Beta versions. |
---|
423 | |
---|
424 | ### 15. NEWS |
---|
425 | |
---|
426 | News about Robocode is put on the blog spot for Robocode. Here it |
---|
427 | is possible subscribe to a RSS feed to receive news about Robocode. |
---|
428 | |
---|
429 | - [Robocode News](http://robo-code.blogspot.com/) |
---|
430 | |
---|
431 | You can also follow Robocode on Twitter and Facebook here: |
---|
432 | |
---|
433 | - [Twitter for Robocode](http://twitter.com/robocode) |
---|
434 | - [Robocode on Facebook](http://www.facebook.com/group.php?gid=129627130234) |
---|
435 | |
---|
436 | The RoboWiki can be followed on Twitter as well: |
---|
437 | |
---|
438 | - [Twitter for RoboRumble](http://twitter.com/robowiki) |
---|
439 | |
---|
440 | ### 16. HOW TO CONTRIBUTE |
---|
441 | |
---|
442 | If you want to contribute to Robocode with e.g. a new feature or bug |
---|
443 | fix, you should read the [Developers Guide for building |
---|
444 | Robocode.](http://robowiki.net/wiki/Robocode/Developers_Guide_for_building_Robocode) |
---|
445 | |
---|
446 | Note that we accept code changes under the terms of |
---|
447 | [EPL](http://www.eclipse.org/legal/epl-v10.html). |
---|
448 | |
---|
449 | There exist no or little documentation about the internals of Robocode, |
---|
450 | and the code base will need to be examined by a contributor in order to |
---|
451 | get an insight of how Robocode is implemented. Thus, it required a |
---|
452 | skilled Java developer to figure out how Robocode is put together. |
---|
453 | |
---|
454 | Robocode is divided into several modules. You can read Pavel Savara's |
---|
455 | blog to get a good overview of Robocode here: |
---|
456 | |
---|
457 | - [Robocode modules](http://zamboch.blogspot.com/2009/06/robocode-modules-as-in-version-17.html) |
---|
458 | |
---|
459 | Help for Robocode internals can be provided through the [Robocode |
---|
460 | Developers Discussion Group](https://groups.google.com/forum/?fromgroups#!forum/robocode-developers) |
---|
461 | where you can register yourself, and start up a new topic. This is the best |
---|
462 | way of getting information and asking about details for the internals in |
---|
463 | Robocode. |
---|
464 | |
---|
465 | If a contribution is a somewhat small change to involves under 10 files, |
---|
466 | then the preferred way is to provide the contribution as a patch file |
---|
467 | that can be applied to the existing Robocode sources. Otherwise, you can |
---|
468 | be granted a Subversion branch for your work, where you can commit your |
---|
469 | changes. Later, this branch needs to be merged into the trunk be the |
---|
470 | administrators of Robocode and tested carefully. Additional work might |
---|
471 | be done by other Robocode developers to finalize the work. |
---|