March 19th, 2012 | Published in Google Open Source
FreedroidRPG is an open-source role playing game that has been around for a few years, written by a dedicated small team. The project participated in the Google Summer of Code program in both 2010 and 2011 with a total of 7 students over the two years, and we set out to offer the best possible learning experience for our students. Our goals were twofold: we wanted to acquire new, regular contributors, and we wanted to share our passion for writing a free software game. Our participation in Google Summer of Code was quite a success and taught us a lot about how to make newcomers feel welcome and encourage them to speak their mind and contribute.
Mentoring students requires a lot of time and patience, so your project participants have to be ready to invest a significant amount of time. As with all investments, it may or may not turn out to be “profitable” - many people are attracted to game development but after they’ve taken part they realize that it’s not as easy as they thought. As a result, it is to be expected that not every student will be a good match for your project - not all students will stay after the program ends. Our advice to mentors is to define precisely what the goals of the project’s participation in Google Summer of Code are. Only when you know what you want can you accurately drive your project in the right direction.
This year, we made the decision not to apply to Google Summer of Code for a couple of reasons. The first is that we feel that other organizations deserve their turn and after two summers and a presentation at FOSDEM’12, FreedroidRPG appears to be quite a relevant open source game, and others should be given a chance to acquire the kind of success that we’ve had. The second is that the mentors have spent the last two years investing their time mentoring students and did not have much chance to actually write any computer code. We like free software a lot which is why we don’t wish to stop writing code and spend all of our time mentoring students. So in 2012 we will be taking care of our own passion for code, hopefully coming back in future years to Google Summer of Code with exciting new project ideas and top-level mentors!
We believe that video games are a great way to discover the world of computer programming because it is appealing to so many of us. At FOSDEM’12, I made a presentation in the games developer room aimed at showing a few of the technical problems that we face every day when writing FreedroidRPG. Hopefully the video can help the readers understand why I love writing games so much.
By Arthur Huillet, FreedroidRPG lead developer and Google Summer of Code mentor/org admin
Below is the testimony from Alexander Solovets, one of our students from Google Summer of Code 2010. He worked on a project called “random dungeon generation”, and I’ll let him explain what it was and how he feels about Google Summer of Code.I heard about Google Summer of Code for the first time two years ago. I was finishing my senior year at university and was looking for a summer occupation. After reading the announcement of Google Summer of Code I thought it would be great: there was no need to relocate, I could work on open-source projects and solve real problems all in the same role. I started reading articles describing the experience that students had in previous years. There was a lot to read, but the most helpful advice I learned was that the odds of being selected and successfully completing your project is much higher if you are really interested in the project and organization as a whole. That is how I met Freedroid.
This organization had an ideal combination of algorithms and game development, two things I like a lot. I took a brief look at other organizations and when the time came I applied to FreedroidRPG. Several months earlier a classmate of mine had shown me the NetHack game, which carried me away for a long period (and I still play it from time to time today). The most exciting feature in NetHack was the randomness of all kinds: you would never know what to expect after the next door. I was amazed to see that FreedroidRPG proposed a project called “random dungeon generation” and right then and there I decided that no one but I would work on this project!
I began collaborating with the organization while working on my application document. I tried to elaborate on several parts: project decomposition on sub-tasks, time schedule, algorithms description. My would-be mentor asked potential participants to complete small tasks of their choice in order to confirm their ability to work with the code, a common practise among free software organizations. There was also a technical interview over IRC which is a bit unusual for Google Summer of Code and is not strictly required, but it was very interesting for me and very helpful as it turned out. Generally speaking, the student selection process varies a lot and depends on the organization.
When I started to work on my project random levels where quite simple, as you can see in the screenshot below.
It was tedious for players to roam within the dungeons so the aim of my project was to make it more clear and I used various techniques in order to do this. First, I split some of the dungeon rooms with a bit of empty space so they did not look adjacent anymore. Next, I made themed rooms that contained various types of objects. Finally, I turned some rooms into corridors so the level did not just look like a bunch of cells. The final look is illustrated below.
The last part of my project was devoted to the brand new random level types - random open areas. Though I initially marked it as an extra project in my plan (a “bonus” project), I managed to complete it before the summer was over. Along with dungeons there are open levels in the game mostly containing natural objects: why can’t we have those be random as well? For generating these levels types I used a fractals-based approach yielding natural looking areas based on an initial shape that is preserved. On the following screenshot you can see how a random level can be generated with a shape describing a path:
Apart from the priceless experience in learning how to write free software, there was another positive element in my participation to Google Summer of Code: I significantly improved my English. The reason was my strict mentor who was adamant on having me correct the grammar mistakes in my code comments as well as in regular chat conversations. I believe I do not have to insist on the importance of English in the field of software development. Finally, I think that the experience and the title of Google Summer of Code student substantially helped me find a full-time job after graduation. I had two on-site interviews with one of the world’s most famous corporations and finally got a great offer from a local company. I wish every student developer had the opportunity to be a Google Summer of Code student at least once.
By Alexander Solovets, Google Summer of Code 2010 student