Category Archives: Final Year Project
Anything pertaining to my Final Year Project in the Computer Science and Information Systems Department at the University of Limerick.
You may have read my post from a few minutes ago, in which I published my FYP description. Apologies for the blog spam, but when the mood takes me to write, I have learned to let it happen.
I’ll be honest. I have been worried about this FYP topic for the last week. When I thought of it initially, a long time ago, it was a small, vague idea. The meeting with my supervisor opened my eyes to how much I didn’t know about my own motivations. In the last week I have been forced to examine and re-examine what I want to do, and importantly, why I want to do it. That proposal form was the catalyst for a lot of this concentration, and I’m very glad it was mandatory. At last I feel like I can explain to someone what it is that I hope to balance my degree on.
I hadn’t really thought about it before, but I think I articulate myself a lot better on paper (or, I suppose, on pixel). Having words locked down in front of me is very useful, especially when I can see that I’ve already written something once and don’t need to repeat myself. (I’m not going to make any lame meta-jokes here where I write that sentence again, but I’m letting you know that I know I could have.)
It’s possible to infer from the above that I talk a lot. When I speak in person, I can find it difficult to stop once I’ve reached my point. I know this. It’s very annoying, because now I know about it I keep noticing it, and then I of course mention it, and suddenly I’m ten minutes into a monologue on how annoying this trait of mine is. It’s funny, except when it makes me look like an idiot. Or perhaps it’s just always funny.
Something like that is very hard to eliminate at the source. I have no idea what the source is, because I don’t even know how long I’ve been doing it. Perhaps I genuinely feel as though continuing to belabour the point of the day is helpful. Perhaps I crave the attention. Perhaps my short-term memory is a factor. I wish I knew. All I can do at this stage is try to catch myself doing it, and stop.
Open-source game projects, although common enough, are not that easy for beginners to join and actually be useful. There is a certain amount one can help by testing and giving feedback, but to keep my interest I wanted to be useful in a more direct, practical way – by developing. Unfortunately, this is no mean feat. Many open-source games are huge, groaning monstrosities of obfuscated code and incomprehensible design. I am under no illusions – I am sure that proprietary games are like this, too. But I think it would be extremely valuable to have a project to point beginners at as an easily-extensible example. I would like to try and make that example, or at least make something that could eventually become that example.
Since I am proposing my own project topic for the Final Year Project, my department want to be sure I know what I’m doing. To that end, I must write some 500 words on the subject and submit it as part of a Proposal Form this week. Below is a draft of that description.
Title: An Open-Source Game Using Open-Source Tools
The main aim of this project will be to create an open-source video game for the major personal computer platforms (Microsoft Windows, Apple MacOS, and GNU/Linux). The game should be relatively simple to play and understand. It should not be overly abstract, or complex to the level of simulation. Most importantly, it should be designed and developed in such a way as to afford extension by the addition of new game elements, such as new enemy classes, new game mechanics, etc. The goal is for a player to play the game, have an idea for a new game element, and be able to download the source code and implement their idea with the minimum of barriers.
Background Research to Date
I have been playing open-source video games for at least five years. Some examples are AssaultCube, WarSow, SpringRTS, Gunroar (and other games by Kenta Cho), as well as many others. The communities behind such games have always interested me. In communities for proprietary, in-development games like Minecraft, or on a larger scale, League of Legends, there isn’t much players can do when a bug is encountered or a feature is required. Open-source games offer the possibility, even if it is not always exercised, for players to see the code, find the problem, and submit a fix or new feature to the core development team. In preparation for this project I have read articles on beginning open-source game development, as well as a book on the subject by Will McGugan (Beginning Game Development with Python and Pygame, 2007).
Special Resources Required
This project was envisioned with Python and Pygame (a Python library for game development) in mind. Both of these work well with relatively low resources such as RAM, graphics cards, and hard drive space. As such, there is no real need for a high-end computer for either development or testing. A powerful computer would still be useful to develop and test on, especially if a more impressive demo can be constructed to run on one, but it is not at all a requirement. The only other requirement for the project is that it use open-source technologies – operating system, programming language, software libraries, editors, integrated development environments, etc. These requirements are already filled either by the Computer Science and Information Systems Department’s computers, and by my own computers.
The project also requires that it be hosted at some point as an open-source project on a service such as GitHub, which allows users to browse the code, read what the developer has to say about it, and make their own versions. This is a simple, free service that can easily be accessed from my own computer.
– Create a simple game engine in which to build the game
– Write a design document for the game
– Develop a demo to test the concept
– Take feedback on the demo from a group of peers
– Develop more of the game, possibly to an agreed end point
– Submit the game to GitHub or a similar open-source project hosting service and direct people to it
– Analyse any modifications people make or user-created content people contribute to the game using this service
A question nobody has asked. But maybe I should explain in any case.
At the University of Limerick, students in most undergraduate degree programmes must complete a major project in their general area of study. Usually this project is done in the final year, but some courses have it in other years.
‘General area of study’ is used here to indicate that the students can pick the topic of the project themselves with a great degree of freedom. In my course, Multimedia and Computer Games Development, this means that people can make fully-featured games, technical demos, game designs, three-dimensional models, and many other things. These projects may draw on knowledge gained over the course of the undergraduate degree, or any pre-existing knowledge. Students are also encouraged, within reason, to do a project on a topic that is new to them.
My topic is ‘An Open-Source Game Using Open-Source Tools’. I have been playing and enjoying open-source video games for more than five years. I began to use GNU/Linux, an open source operating system for computers, about five years ago. As I did with any computer system at the time, I made sure to sample as many video games as I could find for it. Almost all of these games were open-source, and I remember being so impressed that a group of people, who didn’t know each other personally, were coming together to build games over the internet.
In my personal game development work, I have always been willing to share code if anyone wants it, even putting one of my earlier games’ code online at http://just-evasion.googlecode.com, for anyone to read and use. I would like to continue this policy to a greater degree with my final year project. At the moment, the broad idea is to develop an open-source game, using open-source applications, that affords extension by the players who are so inclined. For this, I will have to be as clear as possible in documenting and commenting code. and keep the design to a decent level of complexity.
I chose this project because I want to see what the world of the open-source developer is like. Whatever I do in the future, I hope to be involved in at least one open-source project in my own time. Also, I am a big believer in giving back to the community who make all the free software we use possible. Hopefully, my way of giving back can be to make fun things for the community to play with.
I had a pretty productive weekend. I did a good bit of reading on Pygame, and finally started laying foundations for the actual game I plan to make. What I have developed in Pygame up to now are just tech demos, toys, and things that I wanted to try. None are really going anywhere, and so I could afford to just abandon them at any time. Now, though, I have crossed that arbitrary divide into ‘real FYP work’. Created a folder called ‘fyp’, did a very simple design, and put together some equally simple classes to make sprites appear and move around using the keys. I have done more complex things in the past, but the very fact that I have named this folder ‘fyp’ inspires me to take it seriously and continually try to improve what I have.
Of course, so much more is to come. I have a lot of ideas for this project, and I am pragmatic enough to know that many will simply not make it to the finish line. But this early time of fizzing thoughts and optimistic plans is to be cherished. I’m certainly enjoying it so far.