Created
May 8, 2013 22:09
-
-
Save andreimacavei/5544052 to your computer and use it in GitHub Desktop.
I, GameBot
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <i>"The three laws of gamebots":</i> | |
| <ol> | |
| <li>A gamebot may not harm or infect in any ways the host mother, which in this case is the online contest platform. | |
| <li>A gamebot must obey the orders given to it by human participants, except where such orders would conflict with the <b>First Law</b> – no <u>hacking bots</u> please :) ! | |
| <li>A gamebot's source code must be visible to other contest participants at least after the contest has ended. <i>One must not kill the spirit of the open source</i>. | |
| </ol> | |
| <p>Hello,<p> | |
| I am Andrei Macavei and together with my mentor Dan Serban, we started to develop from scratch a platform for game algorithm competitions called <b>"I, Gamebot"</b>, that is free and open source. | |
| <p> | |
| How is this different from other contest platforms? Most of them allow participants to hide their algorithms even after the contest ended, thus preventing players to learn from each other. | |
| <p> | |
| "I, Gamebot" will encourage participants to build their algorithms in the open and evolve their game bots by learning from and improving upon each other's code. | |
| <p> | |
| My objectives were: | |
| <ul> | |
| <li>Implement the game engine for TicTacToe and Planet Wars in the programming language of my choice | |
| <li>Create the leaderboards for both games | |
| <li>Build an extensible web interface for the game engines | |
| </ul> | |
| As I started to work on the game engine, I also went through the <u>Test Driven Development</u> methodology, which is an essential part of this project. This was a bit hard in the beginning because I had to adapt not only to the new programming language I've chosen, but also to this style of software development. | |
| <p> | |
| Even so, I'm not complaining, it was a great way to learn something which now is used by many companies in the software industry. | |
| My mentor says that a software project should be shippable every 1-2 weeks, if you develop it in a test-driven manner and in small increments. | |
| <p> | |
| Going back to our project, I didn't manage to finish all my objectives, mostly because I was too busy with school and also there wasn't any code to improve, me and my mentor Dan had to put down the bricks one by one and build the infrastructure for the game engine. This meant creating the failing test-cases and the game engine itself that is responsible for game consistency and interaction with players' game bots. | |
| <p> | |
| What I have learned by working on this project: | |
| <ul> | |
| <li>learned how to develop software with TDD and RED-GREEN-REFACTOR mantra | |
| <li>learned how to write code in a dynamic programming language, in this case Python, and learned to use the Python console which makes possible an incremental and iterative development style, with fast feedback | |
| <li>gained deep understanding of UNIX named pipes | |
| <li>learned how to contribute to an open-source project with Github (pull requests, code reviews, issues) | |
| <li>learned to love Vim :) | |
| </ul> | |
| <p> | |
| It was a nice way to spend the Saturdays, I thank Dan for staying later than he should have just so we can advance more on our project. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment