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.

PyStroke: Pre-alpha at last!

It’s been a long time coming, but I finally got my game engine properly online in a version controlled, browsable form. Say hello to PyStroke v0.02!

This isn’t an amazing success, or even much of a step forward, in terms of programming. I haven’t worked much on it since Ludum Dare, thanks to various assignments, including writing a twenty-page report on PyStroke and assorted research as part of my Final Year Project. However, I have met some nice people through Reddit and Twitter who are interested in reading the code and giving it a try. As well as that, I wanted to have a build online by Christmas. Unfortunately that wasn’t possible, given the aforementioned assignments taking up so much time, but less than two weeks later isn’t too bad, I don’t think. And technically, my Ludum Dare game included a build of the engine more than a week before Christmas, it just wasn’t very readable. So overall, I think I succeeded.

The code isn’t exactly pretty, but it is very, very much a work in progress – pre-alpha is even being a tad generous. I have used it to create games, but I don’t necessarily think it follows that someone else will be able to. In the next week, I hope to knock together an extremely simple game and write a little tutorial on how the engine is used, as I see it.

There is one semantic bug that isn’t going to go away for a little while – rotation of the ‘vex’ (or vector sprites) uses a slightly incorrect call to do some of its calculation. The rotation works, but under the hood it isn’t strictly right. I’ll need to give that some time as a priority in the coming days.

Anyway, I’m glad to have it finally out there! Feels good. Expect to hear more about it as January (and the year) continues.

Advertisements

Ludum Dare 25

My Final Year project has ballooned somewhat from a relatively simple idea to make an open-source game, to the considerably more complex idea to create a game framework for others to use. I’m not upset about this, though. I’ve discovered I really enjoy playing about with the bits that people will use to make games.

Last weekend was the 25th Ludum Dare competition. It was also, on Saturday, the time of my last exam this semester. So, as tempted as I was, I did not start a Ludum Dare game at 2am on Saturday like many other participants. I told myself that if the exam went well, and if I could make the current pre-alpha build of the library separate from the main sample game, that I would try to knock something together.

As it happened, the exam did go rather well. After some recovery time, that evening I sat down, without much hope, to try and extract the framework from the game without breaking it. Two hours later I had it working from a separate folder, and it wasn’t even close to bedtime. ‘I guess that’s it’, I thought. ‘I’m finally making a go of Ludum Dare.’ Armed with a couple of uncaffienated beverages and some paper, I set to work designing a game to fit the theme of LD25: You Are The Villain. At first I struggled, but then I had a flash of inspiration: a packet sniffer! It was simple, could have malicious intent, and could be gamified using the vector graphics style my framework revolves around.

Thence came IdentiThief, a game that took me about twelve hours of work and vindicated many of the niggling suspicions I had about the framework’s design, as well as highlighting a few new ones. Nevertheless, I was able to see my framework through the eyes of a developer at last, which was very valuable indeed. I went from concept to full design to first prototype in a matter of hours, and that was a lot of fun. At the end, I even had time to work in a separate menu and game state, which I have never done before in Pygame, let alone in my framework. I had to hack it a little to make it work, but it will definitely be a feature now.

All in all, I had a great time and gathered (somewhat) useful data on how I could improve my framework. Not to mention, I made a game in a day! Not too many people can say that.

Ryan ‘icculus’ Gordon on Tools for Open Source Game Development

Here is an hour-long video that I found in my research for my final year project. Ryan Gordon’s website, icculus.org, was the primary host for the Quake3 open source project (and similar projects) for quite some time, and he has been a big part of making the Humble Indie Bundle games run on multiple platforms.

In this video, Ryan talks about the plethora of free and open source libraries, languages and development tools that are available for game developers. It doesn’t start well, sound-wise, but if you skip to about the 2:20 mark the sound comes in perfectly from then. I encourage you to take an hour of your time and check this out, if you have even a passing interest in open source game development.

Articulation: it’s, em, it’s, uh, that thing. You know?

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.

My Final Year Project Description

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

Aims

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.

Significant Milestones

– 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

 

Some interesting articles/links on Open-Source Games Development

Just a few links I’ve come up with in my final year project research. I might edit this post in the coming days if something is really relevant, otherwise I may as well make a separate post.

This is a nice introduction for an aspiring open-source game developer. Short and easy to read. http://opensource.com/life/11/2/open-source-games-it%E2%80%99s-team-effort

This article gets quite technical on why threading is important, using Quake3 and the Ogre engine as examples. Although it reads a bit like an Intel advertisement, it is still interesting and understandable at least in concept. http://software.intel.com/en-us/articles/open-source-game-development/

FreeGameDev has a forum where designers or project leads try to get new contributors for their games. They also have some ‘featured projects’. http://forum.freegamedev.net/

GameDev.net is another forum with some interesting discussion on the ups and downs of various open-source game tools. This stuff is always good to read, even if it is a bit rough and ready at times. http://www.gamedev.net/page/index.html

But James, what IS this ‘FYP’ thing you keep talking about?

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.

Making a start

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.

Zeouterlimits's Blog

Just another WordPress.com weblog

Smaointe Lambo

Lambo's thoughts on Lambo's intrests.

Colm's Blog

Full of games, programming and overblown opinions

jester252

Just another WordPress.com site

xtremesolutionsie

Just another WordPress.com site

Project Management Blog

Learning in the module

Paul's Plethora of Peculiar Posts

Here be dragons (made of bad jokes, puns and weird imagery.)

Sophie O'Gara's blog

Creativity shall make dreams soar

Les Divagations d'une Jeunesse Imaginative

The ramblings of an imaginative youth

Phil's Blog

A blog about Philip and his opinions on Video Games, Art and just general Navel Gazing

Conor Murphy

Not sure if you know this but, I’m kind of a big deal

Some general vizardry

A novice programmer's musings

andruQuinn

Problem solving in programming. A blog to give new views into problem solving

Player Two

Ludology from a developer

William Laffan

A Portfolio blog

Not Your Blog

Let's go in there and take out that dragon!

Lukes-Site

Gravity-It's not just a good idea, it's the LAW!

wi11iamcb

The quite mutterings of a madman