In my latest work on Ore War I’ve added a number of new features including random generation of destructible solar systems, simple orbital mechanics, and a custom paged memory pool. Check out the included video for a demonstration:

While these developments are certainly neat to look at, my upcoming work will focus on some less visible changes. I’ve decided that adding multi-player support should be my next goal, as significant changes to the architecture will only become more difficult as development progresses.

First, It will be necessary to ensure that updates to the game model are performed in discrete steps so that state can be more easily synchronized between client and server. To accomplish this I’ll be using a multi-threaded approach where the game model continually updates in a separate thread from all rendering operations using a fixed delta time step as Glenn Fiedler describes here (the whole series on physics is well worth reading). To avoid synchronization issues between the game model and rendering threads, the rendering thread will store a duplicated game model which reads serialized delta updates through a synchronized message queue before rendering each frame. The game model will use a similar approach to integrate deltas coming from the multi-player server.

Second, I’ll need to design and implement a network protocol to use between client and server. Since this is a fast paced shooter where delays will be very noticeable, I’ll be using a binary UDP protocol to exchange game state and user input. For this I’ll be drawing most of my inspiration from the Source engine’s net-code implementation, which I feel provides one of the better client side experiences. In this system clients only send user input data to the central server, and all authoritative simulation is performed on the server side. After each discrete physics update, the server generates serialized delta packets for each client based on the last state acknowledged by the specific client. This means that the server must buffer all unacknowledged game states so that deltas can be generated. However, these buffered states also allow for lag compensation as the server is capable of viewing the “past” game state to validate hit detection.

These changes will mark some of the first significant technical challenges to overcome in the Ore War project, and hopefully will provide me with some interesting material to write about in the upcoming weeks.

Work is steadily continuing on Ore War. Since the last update I’ve implemented health and energy for all game entities, as well as a weapon system allowing for the player (and enemies) to carry and use an arbitrary number of weapons. I’ve also implemented a “rope anchor launcher”, which allows the player to launch a projectile which they can grapple on to and swing around. A demonstration of this is in the gameplay video posted below:

Updates to this blog has certainly been slow since my server box melted down early last year. Luckily, the site has now been moved to a dedicated hosting solution thanks to a generous door prize from iWeb Technologies that I won at this year’s Canadian University Software Engineering Conference. I’ve yet to get SVN running on the new server, so for the time being I’ve simply provided source distributions of the most recent revision of each of my projects.

I’ve recently been working on a 3D, 6 degree of freedom space shooter that I’ve named Ore War. Ore War aims to be a competitive, skill-oriented, multiplayer game. My primary goals with this project are to further familiarize myself with C++, and to experiment with using the open source OGRE graphics rendering engine. As with all my previous projects Ore War is open source, and my most recent work can always be accessed from my GitHub page.

A screenshot of Ore War

A screenshot of Ore War.

With the end of the school term comes the end of the term project. Pacman’s Perilous Predicament has now reached a more or less final release, although I may continue to maintain the project if there is any interest. The completed version can be found on the Google Code site. I found this project to be an interesting and enjoyable experience, and I’m quite proud of the final result. The gameplay could have a lot of potential, and all it needs now is some talented level designer to replace the default level pack.

Here are some screen shots of the final version:

Pacman's Perilous Predicament Screenshot

Screenshot of Pacman's Perilous Predicament

If you do check out Pacman’s Perilous Predicament, drop a comment or send me some of your custom levels!

As part of the Software Engineering program at Carleton, all students need to complete a group software development project during their second year. This year’s project is to create a turn based puzzle implementation of Pacman using Java. Work started on the project about 6 weeks ago, and I feel that at this point it’s ready to be showcased.

Screenshot of Pacman's Perilous Predicament

Pacman’s Perilous Predicament is the result of my work with my fellow second year students Robert Gillespie and Alexander Dinardo. The purpose of this project was primarily to practice the use of design patterns and to learn techniques and software used to collaborate with other developers. I also feel that this project makes a good example of the quality of my code. My primary responsibilities have been the model used for storing levels, the Java2D graphical display, and most of the external documentation. However, as the dev team is only three people the work tends to all blend together so that everyone has some small hand in most aspects of the program. The full source as well as milestone releases are available at the google code site and will also be mirrored here once the project has reached a non-beta release.

In other news, the Universal Peer-to-Peer project which I’ve been working on has been accepted to show a demo at the World Wide Web Conference 2009 in Madrid, Spain. This means that my work on this project will be stepping up for the next two months in order to get the interface ready to demo. In particular, this is giving me some very solid motivation to work on my web development and programming skills, and hopefully my upcoming work will reflect that.

It looks like I’m going to be doing some volunteer work for the Universal Peer to Peer project being developed in Carleton’s Network Management and Artificial Intelligence lab. I was given a brief demo on Wednesday and it seems like some pretty neat stuff. As I understand it, it’s essentially a web app built on top of the Gnutella protocol which allows users to set up their own file sharing communities for specific file types, which in turn allows members of these communities to search for the files they want using more specific search meta data than typical file sharing allows. One example I was shown was a community for sharing Shakespeare’s plays, which allowed users to search for plays by the names of the characters. All of the file sharing is peer to peer, and mostly transparent to the end user. I’ll most likely be working on improving the client interface, which should give me some nice experience with web applications that I desperately need.

I’ve also uploaded one of my more recent incomplete projects called Assault Squadron Elite. I’d like to expand it further, but it’s starting to get a little tedious and time consuming, particularly the art work. As anyone who looked at the screenshots can tell, I’m certainly no artist. If anyone would like to give me a hand with any aspect of the project, I’d more than welcome the help.

I spent this past weekend in Montreal attending the Canadian University Software Engineering Conference 2009, and it was absolutely awesome. On top of being a cheap three day trip to Montreal with likeminded individuals (read: nerds), CUSEC is an amazing chance to meet some important and cool people in the software industry. Each day was filled with interesting presentations, although the pub night was one of the main highlights of the event. Some of the speakers I found more interesting:

Giles Bowkett: Evil Genius, and maintains a well read blog.

Wow, what a presentation. Similar to Zed Shaw last year, Giles taught us that we shouldn’t be aiming to write Java for some big corporation for the rest of our lives, but that we should be out there trying to write the code we want to write. This seemed to be an ongoing theme throughout the conference. Well, that, and that Ruby is AWESOME. Specifically, Giles was at CUSEC showcasing Archaeopteryx, his Ruby midi sound library. Pretty neat stuff, but Giles’ presentation skills stood out more than anything. Hopefully a video will be up on the CUSEC site eventually, as it’s definitely worth seeing.

Joey deVilla: Microsoft Tech Evangelist

Not in a million years did I think I would see someone open a conference talk by playing “Hit Me Baby One More Time” on an accordion, but alas, here we are. Joey runs a blog called The Adventures of Accordion Guy in the 21st Century, and gave a very interesting talk about his career to date (which includes interviewing at a porn studio, of all things). More importantly, he showed us a video of a bottle rocket misfiring from a bodily orifice, and closed the talk by playing “Head like a Hole” on his accordion. Maybe everyone at Microsoft isn’t that evil after all. We all got to hear a few more epic accordion songs as Joey was very active with the conference participants, and came out to pub night as well as a few meals with us. More on his shenanigans later.

Richard Stallman

Of all the presentations this year, this was the one I was most looking forward too. Stallman gave a long (almost double his allotted time) talk about the role of copyright in the digital age. While I agree with Stallman’s ideals (you’ll notice the majority of the code on this side is GPL’d), I found that the strength of his militancy and his alarmist phrasing turned off a lot of the crowd. The crowd was dead silent for the first half of the presentation, but by the end many in the crowd were openly mocking Stallman. I thought that it was very clear that Stallman’s ideas are very well reasoned and took a long time to think out, even if they do come off as radical. The highlight of the talk, and maybe even CUSEC itself, came at the end of the talk when Joey deVilla (the Microsoft rep) walked away with a plush GNU that Stallman auctioned off to raise funds for the FSF. The entire event is chronicled in Joey’s blog.

All in all, CUSEC was an amazing experience, and I highly recommend that anyone who is in a position to do so considers going next year. Hopefully I’ll see you there!

Welcome to my programming blog. This site serves primarily to showcase the various programming projects that I’ve undertaken in my spare time, as well as to share some of programming related experiences. I am a software engineering student at Carleton University, and I’m currently in my second year of studies. The work on this site is created as a hobby, and as a way to further develop my programming skills. All of the code on this site is open source, and I hope it can be used as an example (sometimes of what not to do) for other beginning developers. My primary development platform is Windows, however, I try to make my work as cross platform as possible.

© 2011 The Craig Repository Suffusion theme by Sayontan Sinha