SummerOfCodeProposal jdmunro
Contents
Introduction
Name: James Munro
Age: 21
Education: Final year Games Computing BSc (Hons), progressing to MSc Advanced Games Computing at the University of Lincoln, UK
Wesnoth Forum ID: jdmunro
IRC ID: jmunro
GNA ID: jdmunro
Email Address: james AT jamesdesign.org
Basics
I am James Munro, a student at the University of Lincoln in the United Kingdom. I am in the final year of Games Computing BSc (Hons) and after graduation I will be taking the MSc Advanced Games Computing award at the same university and department.
I taught myself to program in C++ before attending university, working on personal projects related to game development. Since attending university my skill set has increased and I have learned to employ many different programming languages for different purposes.
In my spare time I like to contribute to open-source projects (with emphasis on games) when I can by testing, bug-reporting and developing code. Recently I had my first patch accepted on the open-source game Teeworlds. This was a proud moment for me and I am thoroughly looking forward to contributing to more games in the future.
I am applying to GSoC so that I may learn and develop my skills. Specifically, I am looking forward to the opportunity of working closely as part of a team and to benefit the open-source/gaming community.
Experience
As previously mentioned, my first accepted patch was for the open-source game Teeworlds. Most of my development time has been focused on university assignments developing a range of game-related implementations. I consider my knowledge of C and C++ to be competent but I am always looking to learn new skills and improve my knowledge of the language.
For my university dissertation I focused on analysing the architecture of open-source game engines, in particular the Quake-series. The practical section consisted on a selection of smaller implementations including bringing concurrency/parallel execution to older engines using OpenMP and also a hard-coded approach. I also investigated enhancing an older engine (Quake II) with modern features such as native 64-bit support.
From this experience I learned a good deal about the architecture of game engines and finding my way around fairly large code bases (approximately 250,000 SLOC). I understand the principles of source/version control systems and have personal experience with SVN and also Git (see http://github.com/jdmunro).
Over the summer of 2008 I worked as a member of the Centre for Research in Open Source Software at my university on the CODEX project. I researched and developed an Ubuntu-based LiveCD for use by university students wishing to develop software for the OLPC XO-1 project and its Sugar interface. The project was successful and subsequently gained mention in the BCS magazine ITNOW and is the subject of a research paper published at The 5th International Conference on Open Source Systems (OSS 2009) in Sweden. Whilst not directly related to games, the CODEX project demonstrates my commitment to open-source and the ability to see a project through from conception to completion.
Communication skills
English is my native language and so I will have no problems communicating efficiently. I am also familiar with IRC communication and have used the protocol for many years.
As a game player myself, I am experienced at communicating with fellow gamers and whilst the scope of this project may not require this, it is still a good skill to posses.
I believe that constructive criticism is the key to improving your own skills and abilities. I genuinely enjoy the process of improving my work and gaining feedback is valuable to this process. I would hope to receive feedback from fellow developers and eventually end-user gamers concerning the results of my implementation.
I am happy to be contacted via email at any time and will be on IRC at reasonable GMT hours (9AM to 9/10PM). I would also accept telephone calls however this would probably be on a pre-determined schedule, such as a weekly meeting or summary. In the event of me not being on IRC, I have an IRC bouncer that will take private messages on my behalf (identified by [a] postfix on my nickname).
Gaming Experience
I am a huge fan of gaming and games technology and play many games when time permits. I enjoy a diverse range of games on many platforms as I feel it is important to have a wider understanding, rather than just limiting yourself to the games you like. I have played Battle for Wesnoth and enjoyed working through the single-player campaigns. I do not partake in multiplayer matches as I feel that I would lose frequently!
Example Work
I am making my best efforts to complete one of the EasyCoding tasks listed on the main GSoC page. Unfortunately I am extremely busy with university work as I am now in my final month before graduation, I'm sure you can appreciate that I'm wrapped up with completion on my dissertation and also exam revision.
- I understand that failure to complete one of these tasks could mean losing the opportunity to be the chosen student. In this event I would like to say that I'm still very interested in contributing to Battle for Wesnoth (see http://james.blogs.lincoln.ac.uk/2009/02/10/contributing-to-open-source-games/ ) and will stick around regardless of the success of my application.
Project Details
I would like to implement improvements to the WML system to help decrease overall memory usage by Battle for Wesnoth.
First Steps
My first steps would be to identify and understand the process that was used to profile memory usage as identified in this post: http://dave.wesnoth.org/?p=9 in order to replicate the results.
From this starting point I will attempt to identify various areas for optimisation. In addition to WML I will keep my eye out for other potential performance problems (whilst avoiding over-optimisation!) that may have been overlooked.
I may need to spend some time developing my understanding of certain things. In particular I will need to gain better knowledge of the WML component, but also techniques for reducing memory consumption. These are technical areas that I thoroughly enjoy studying, hence the focus on my dissertation.
Objectives
The objectives of the implementation are summarised below:
- Identify and understand profiling technique/process.
- Identify and assess any other bottlenecks found in addition to WML.
- Study and understand relevant optimisation/memory reduction techniques.
- Implement optimisation changes into the codebase.
- Assess the impact of the changes (hopefully an improvement).
Proposed Timeline
The timeline below is fairly abstract. In the event of my selection I would produce a more detailed timeline with my mentor with regularly scheduled progress meetings (I have found this process to work particularly well in the past)
- Now - Preliminary research.
- April 20th to May 23rd - Community bonding (getting to know the players and developers!).
- May 23rd - Initial development begins - continued research.
- July 6th - Basic work completed for mid-term evaluation.
- August 10th - Aim to finish implementation, begin wrapping up.
During the bonding period I feel that it is really important to get to know the players and developers well, particularly my mentor. Having a good working relationship with a mentor is important to any type of project and can really help give the resultant work the 'x' factor.
Blog
During the project I would like to maintain a development log for personal reflection and also feedback purposes. I currently maintain a general student/games development blog (http://james.blogs.lincoln.ac.uk) and would dedicate a section to Wesnoth development. I discovered that blogging was an extremely valuable tool during my work on the CODEX project, particularly for open-source projects.
Holiday Absence
Unfortunately I will be unavailable for 2 weeks (13th-27th June) due to a pre-booked family holiday. However, during this time I will have access to both a laptop and internet access and so development work can still continue at a reduced pace.