| Matthew's profileMatthew Leach - The Geek...PhotosBlogLists | Help |
Matthew Leach - The GeekdomGame Development... amongst other things... |
|||||||
|
|
June 22 Bit of a ShuffleYou may have noticed that I've shuffled my blog around a bit - added a few things and taken some away. I've renamed my SkyDrive public folder, which seems to have broken the links in all my previous blog posts, but I've added a quick link to it on the left hand side now. Go there to browse around if you want to grab something I've mentioned for download. I'll be adding some more things here soon, as I complete things for my game development course. I've also added a feed of my development blog for 'Holy Diver' (working title), a small 2D puzzler/platformer that I'm working on now and then. June 10 Busy Busy Busy...Its been a long time since I posted anything, and this post is going to be rather short too. I just wanted to post something to keep this site active in my mind. If you're looking for more regular ramblings, you could try following me on twitter. (http://twitter.com/DrDethUK) March 20 Collabtive ForkI've been working on modifying Collabtive - a really nice looking open source collaborative project management tool - to work with PostgreSQL. This is mainly for my own purposes, but if running it on Postgres sounds useful to you then you're welcome to try it out. You can get the latest version here: Currently, I've eliminated most of the errors generated by my port but it hasn't been thoroughly tested yet. FarseerPhysics PolyUnion Test MovedThis is just a note to let everyone know that I've started to reorganise my SkyDrive, so the PolyUnion Text project has been moved into the FarseerPhysics folder. February 26 Subjugated by "That which shall not be named!"Its been almost two months since my last update. This is mainly due to the fact that I haven't actually had much to say. Lately, my life has been ruled by 'a game that shall remain nameless' - it has enslaved me, bound me to it and makes me do bad things like, I haven't done any new work on any of my projects. That is until about a week ago when I finally opened up my level editor and began to browse around my code. In other news, about two weeks ago, the extensions that I wrote for Farseer Physics have finally been incorporated into the engine for the 2.1 release. I was quite excited about this as its the first time that my work has actually been recognised to that degree. I was beginning to think that the things that I do are useless to anyone but me. I don't know why that matters, but I guess its that I want the software that I create to make other people's lives easier or more enjoyable. I just need to keep reminding myself that my games will entertain someone other than me at some point, and to work towards that point. January 08 Taking it to the Next LevelI've been thinking about my level data a lot lately. Originally, I had a single-layered, tiled level definition allowing you to create a flat level with a background image. While this would serve the purpose for many platform games, it was just not easy to make decent looking levels unless I added some nifty 'features' and a whole lot more tiles. I came up with the solution of adding multiple tile layers, so that you could stack tile layers during drawing, and give the game a bit more depth perception - while the game would still only be played on the 'middle' layer, you could have sections where the player can go behind or in front of other tiles. This would add something to my game, and make a lot more interesting levels possible. So, I started working on a level editor. As always happens when I'm coding something, images of the final product are constantly playing in my mind and evolving as I go - this allows me to keep things extensible for when I want to add features. I was thinking about the work I had previously done with the Farseer Physics engine, and about how I would use my extensions in the level editor to group overlapping tile collision geometries to simplify and optimise the physics objects, when suddenly I came to a huge realisation - an epiphany of sorts! It was this... My game didn't have to be tile-based anymore! Why was it even tile-based to begin with? Probably because it seemed easier - which still may be the case and I'll explain why in a moment. So, by simply turning my layers into 'sticker-boards' and turning my tiles into freeform, freely position-able 'sprites', I can attach images to foreground and background layers to add detail to levels (much more than boring square tiles). Then by creating a more versatile 'polygon editor' for the 'game layer', I can define the physics objects in the editor, and place items, enemies, and any object freely as well. Level editing becomes so much quicker and easier... And here's where I get back to why the original tile-based approach may be easier... Using the new approach, level editing is easier, IF you have the art you need for the levels. If you've been following my blog, you may have picked up on just how loathe I am to do any of my own graphics - I am no good as an artist. BUT, luckily for me, the new approach has a hidden bonus - I don't actually need any graphics to get the game working!! I can use arbitrary shapes (with a bit of imagination) to get stuck into the game logic right away. Sounds good to me... December 08 FarseerPhysics Extensions v1.2Here's a new version of my FarseerPhysics extensions. It now includes polygon intersections and polygon simplification. I hope that you find it useful. Any feedback or bugs can be posted in the Polygon Operations Feedback topic in the discussions on the FarseerPhyscis project.
December 05 FarseerPhsysics Extensions v1.1Here's a new version of my FarseerPhysics extensions. It now includes polygon subtraction. I hope that you find it useful. Any feedback or bugs can be posted in the PolyUnion Feedback topic in the discussions on the FarseerPhyscis project.
December 04 The Beginnings of a Platform GameA while ago, I mentioned My Current Project. Shortly after that my life got pretty busy with other things, but I still kept on coding and developing the project. Not long ago, I decided to halt development and call it a prototype - the more I went on, and the more features I wanted to add, the more I came to the conclusion that I need a physics engine to get the game to where I want it to be. So, as I explained in a previous post, I had to find a physics engine and in order to put a physics engine in, I would need to redesign the internals of the game from the ground up. At about this time, I thought that if I was starting from scratch I'd replace the graphics with some nice animated graphics too. So, I shelved the old project for reference and got stuck into the tasks at hand. Finding the physics engine wasn't too difficult. I'd looked at a lot of the 2D physics engines before, so it was just a matter of getting a refresher on my favourites and seeing what new features had been implemented, as well as how active the projects had been. I settled on the FarseerPhysics engine and got slightly distracted with helping out on the project. [I am now playing with Polygon subtractions for inclusion in Farseer 2.1...] The redesign of the game internals went quite quickly and has actually been pretty much in it's final form for a while now. You can take a look at it's current [at the time of writing] form below. This 'framework' will make it easy for me to create the game I want, as well as allow for extensibility. For instance, I could extend the Enemy class to add new enemies with different behaviours. Similarly, I could do this with the Player class to add different player classes - ninja, soldier, muppet, etc. - or the Pickup object to make magic mushrooms that run away from the player. The last task - finding new graphics - is not going so well, despite the amount of time I have actually spent on it. I just cant find any decent animated sprites for use in the game. I'm going to have to work on my programmers graphics skills or beg someone with talent to make them for me. November 20 Polygon Union Test I've uploaded my test project for Polygon Unions using the Farseer Physics Engine. Q,W and E create 'circles' with a different number of sides (8, 16, and 32). A creates a square. S creates a wide rectangle. D creates a high rectangle. Use the mouse to drag polygons around and position them. Space performs the polygon union. Get it here: November 04 Back in the Saddle It's been a long time since I've written anything. Thats the sort of thing that happens when you pack up all your things and ship yourself off to another country. (So much for bastions of hope and development, eh?) All of your usual interests get shoved onto the back burner while you're building a confortable pad for your family to inhabit - all the while going insane that you cant get the hundreds of ideas you have out of your head and into code. Anyway, I'm passed that now. A lot of things have been happening in the interim while I've been otherwise occupied. Probably the biggest piece of news is that XNA GS 3.0 was released and the community games has gone live. The XNA Creators clubs website is also no longer in beta. Good news all around. I haven't been idle either. I've totally redesigned the internals of my puzzle game - it now has a much sounder object model that makes me feel all warm and fuzzy inside. I have also decided to use the FarSeer Physics engine - I wasnt really happy with the 'triangular' way the player jumped before, and when I wanted to make it possible to push rocks around it just made up my mind that I needed physics. So, a few quick tests with FarSeer confirmed things, but after building a test level, I found some functionality that I wanted that wasn't there and decided that, rather than look elsewhere or build a quick application to help me define the collision shapes for my levels, I'd take the longer route and implement the functionality in FarSeer itself - and give back to the community, which is what I've been up to for the past week or so. With limited spare time, I must admit that I haven't gotten very far, but I'll definitely have something for the 2.1 release. Once I've completed the Polygon Union functions, it should be fairly quick to get back to where I was in my project with FarSeer integrated and my new object model. The next step after that is redesigning the way levels work, but I'll blog about my ideas for that closer to the time. July 23 News UpdatesYou may have thought that I crawled under a rock somewhere to hide. You may be right. There isn't much news or updates from me about the various projects I'm working on, but this week there are a few nice little tidbits of news that are worthy enough to drag me out of the shadows. Microsoft announced at GameFest 2008 that Games For Windows - Live would be free as of yesterday. It's now free to use for developers looking to add PC multiplayer functions to their games and now the Xbox Live-style functions are available for free for both developers and players. This includes Achievements, enhanced TruSkill matchmaking, cross-platform play with XBOX 360 (in games that support it), voice and text chat, a friends list, etc. Now we just have to wait for the developers toolkit to be made available, or the XNA Team to put something together. Another big announcement from Microsoft, though not as immediately gratifying, is DirectX 11. There's a lot of new features planned and my sources tell me that the hardware manufacturers have already started with cards and drivers. Back to XNA, The Creators Club has two new announcements. First, the official announcement of XBox Live Community Games. Second is a follow up to the 2D video tutorials, the 3D Game Creation Video Tutorial - go and check it out now. June 20 Updates on Life, the Universe and EverythingA lot has been happening the past few days in my little XNA world. Firstly, the XNA Creators Club website has been updated with a whole host of fixes and aesthetic changes to make things prettier for everyone. Secondly, the Roleplaying Game Starter Kit got another tutorial added enitled 'Re-using the Tile Engine'. No doubt you can figure out what that's all about - it shows you how to use the Tile Engine from the starter kit in your own game. Nifty. Things are moving along nicely on the XNA front. At least someone is doing something constructive - I haven't been very active, though. Another big update I have is around my previous posts regarding XNA in SA. Andy Dunn (the Z-Man himself) left a comment on one of my posts offering to help. I felt like throwing myself to the floor and chanting "We're not worthy!" like Wayne and Garth when they met Alice Cooper. I replied, starting a discussion around XNA in SA. Andy roped in Pieter Germishuys to help out too. It was a rather quick discussion and I came to much the same conclusion that I did in my last post on the subject - its up to us to spread the word. This isn't really a bad thing, and though its been rather frustrating for me in the past, I can see more and more people looking at XNA. Its a slow process, but I think that I have finally come to terms with that. Now, I may be ready to try Home Affairs... June 18 My Current ProjectI've taken a time-out from my forays into 3D to go back to basics and work on a small 2D platformer. Inspired by Lost Garden's rapid prototyping tilesets, its working title is Princess Quest but will probably change. I wanted to make a simple puzzle game that my daughter could play and would enjoy playing - hence the theme. The gameplay is simplistic with minimal controls - collect the gems on each stage, and get to the exit to progress to the next level. I plan to integrate a cute storyline to give the player a reason for mindlessly collecting gems, but I've only thought about the overall storyline so far. In-game Screenshot:
You can check out the video here: Comments would be great! May 22 Contacting Microsoft - Post MortemI recently received this message from Christian: [sic]
Here is my reply:
While it is frustrating a lot of the time living on the far side of the planet you have to understand that, from a business perspective, South Africa is such a small percentage of market share that a lot of the time it doesn't make sense to include it in massive roll-outs. This is something you need to get used to when living here. What the large international companies need to realise though is that Africa is an untapped gold mine. Why not start a gold rush? May 21 Woohoo! I'm Famous!The brand new XNA Creators Club web site has gone live, albeit in beta, but it looks amazing. Its now much easier to search for content in specific areas, like 2D Graphics; 3D Graphics; Shaders; Physics; etc. Also, you can check out XBox Live Community Games - Create, Submit, Peer Review, Play! Unfortunately, this seems to be limited to the US currently, but hopefully that will be sorted out when everything isn't marked as Beta anymore. There's even a brand new Starter Kit available - The Role Playing Starter Kit which looks like a great example of how to put a full game together from start to finish. I'd love to play with this - a lot - but I'm not going to even think about it - I have a game to finish! (Shhh... its all very hush hush at the moment...) So, why am I famous, you may ask? Well, my blog made it onto the Community Resources page, filed under 'Tutorials and Education'. Well, I'm honoured but in all honesty I think someone just grabbed most of the links from the XNA Wiki which means that I just managed to sneak in there - like a ninja. I think the entire XNA Team has done an excellent job thus far. Keep up the great work, guys! It is really appreciated. May 20 New XNA Creators Club Online web site
May 16 Talking about Game State ManagementWhile I've been hard at work completely rewriting the XNA Game State Management sample to include Windows and standard controls, Stephen Styrchak - a tools programmer for the XNA team - has been busy writing a Visual Studio designer to easily create menu screens. This would make building your menu screens a whole lot easier - and faster! This is something that I've been thinking about writing myself, although I must admit that I probably wouldn't have implemented a designer - purely because I've never done it before and it would be quicker for me to go another route. However, seeing the integration with Visual Studio in Stephens project has made me want to learn. It would be great to not have to swap between applications and be able to do everything in Visual Studio. GarageGames should take note for their Torque X Builder! Still, this is one of those nice-to-have's for my GSM and will get put on the list of 'stuff to do if I get time someday'... Quote Game State Management for N00bs Like Me May 05 Physics TestLately I've been testing a couple of physics engines for use with XNA. My requirements are quite strict in that the engines must be written in entirely managed code, ie. they cant just be a wrapper to a native code library, in order for it to work on an XBox 360. While there are quite a few well known and esteemed engines out there that have managed code ports, I've found many of them to be confusing or difficult to implement, keeping in mind that I want to implement almost everything as a GameComponent or Service within my games. Mostly, physics engines aren't designed for this kind of modularity. Even a lot of the physics engines written (or ported) specifically for XNA don't take this into account, and their demo applications are written completely in the base Game class - something that irks my built-in object oriented senses. However, there is one physics engine that I've found to be extremely simple to use, and easy to implement in my various GameComponents - BEPUPhysics. BEPUPhysics is written specifically for XNA, and is extremely simple to use. While the demo application is one huge mish-mash of code in the Game class, I've still managed to abstract the ideas of the demo application into GameComponents that have their own physical properties. What you'll see is a bunch of blocks falling under gravity, and being 'shot' away with the click of a button. April 23 GDC 2008 Presentations AvailableMicrosoft has released their GDC 2008 presentations on MSDN covering many various topics such as XAudio2, the XDK, Multicore programming, Direct3D 10, Performance Tools, Debugging Managed Code, and much more. Head on over to the XNA Team Blog for the annoucement or the XNA Presentations page to get the presentations. April 18 TileSet Tool
A handy re-sizable grid with 'snap-to-grid' functionality make it easy to drag out new tiles, and a nifty property grid allows for easy fine-tuning of existing tiles. You can even zoom your image to get a better look at things. If you think you may find this useful, you can download it here: TileSet Tool I will be creating a custom content processor to automatically import TileSets into your XNA project for easy use. Disclaimer: This tool is provided as-is without any warranty. It is an initial release and may contain bugs. If you find any, please let me know so I can fix them. January 03 No DrawableGameComponent Item?Something thats been bothering me for a while is the lack of a 'Drawable Game Component' item in the XNA project items list. There's a 'Game Component' item and while its not too much work to make it inherit from DrawableGameComponent instead of GameComponent, it does get rather tedious to do when you're writing a lot of game components. I'm not sure why it wasn't included in the first place, but I've created my own 'Drawable Game Component' item that I can use. Its rather easy to do.
public class DrawableGameComponentTemplate : Microsoft.Xna.Framework.DrawableGameComponent /// <summary> /// Loads any component specific content /// </summary> protected override void LoadContent() { // TODO: Load any content base.LoadContent(); } /// <summary> /// Allows the game component to draw itself. /// </summary> /// <param name="gameTime">Provides a snapshot of timing values.</param> public override void Draw(GameTime gameTime) { // TODO: Add your drawing code here base.Draw(gameTime); } Once you've created your template, it should show up in the 'Add New Item' dialog items list. Even though the template options has an option to load the template into Visual C#, I had to close and restart Visual C# before the template was available. The item template appears in the 'My Templates' section below all of the regular item templates. Creating templates can be a huge time saver when you repeatedly create similar classes. Check the MSDN documentation on project and item templates too - you can modify your templates after you've created them and use special keywords/tokens to automatically replace text. Getting Started with DevelopmentA lot of people are really excited about making games. There is something alluring about creating something that other people will enjoy, but more importantly something that you yourself enjoy. Its your creation and has all of your ideas in it - all of the best things that you enjoy in a game. So why not? But its not the motivation that people struggle with. A lot of people have come to me asking, "Where do I start?" At this stage I start pointing them in the direction of the XNA Creators Club and related downloads, and start getting worried looks. Its these looks that have caused me to falter in the past. You see, the worried looks are not because people are worried about learning the XNA framework - its because they have never touched a programming language in their lives. Its a little scary that people want to make games without knowing how to program anything - even though there are some great beginner tools out there. Still, I'm here to help people learn, and if I can get people involved and teach from the very beginning, that's great too! Here are some resources to get you started with C#: December 13 XNA Game Studio 2.0 Released!Ok, so maybe this post is a bit premature, but I cant actually contain myself. XNA Game Studio 2.0 will be released later today! The XNA Creators club website has been updated with all of the XNAGS 2.0 information, however none of the download links are active yet. Instead there is a small notice stating, "XNA Game Studio 2.0 will be available early morning, Thursday Dec 13th, 2007 PST.". PST = GMT-8. CAT = GMT+2. So there's 10 hours difference between us making it an evening release over here? - I'm assuming that we're waiting for a dev monkey to amble into the office, get a cup of coffee and flip a switch. Also assuming that they start work at 8am, that makes it a 6pm release for us. Whatever. I'll be refreshing the page every minute until then, so keep an eye out for the release later today. In related news, the Dream-Build-Play competition is back for next year, but right now there is a Warm-up challenge with some awesome prizes - including the opportunity to interview for an internship with Microsoft Research, Rare Ltd or Lionhead Studios. Entries will be accepted from the 20th December till the 27th January. Check it out! November 26 RuleForge - My Open Source ProjectWhile not exactly related to XNA or game development, I thought I'd give my little open source project a bit of the limelight here because it is related to me and what I've been doing. RuleForge started about six months ago when I first received my license for Fantasy Grounds and wanted to get my own rule system in so that I could have a few roleplaying sessions with some friends overseas. With the initial version of Fantasy Grounds, creating custom rulesets was very much a matter of editing a simple XML database - which spawned the RuleForge Database Editor - but with the release of Fantasy Grounds version 2.0, rulesets and the amount of customisation available became a whole lot more complicated - which spawned RuleForge! RuleForge allows you to easily create and modify rulesets for Fantasy Grounds v2. So, if you're into RolePlaying, check out Fantasy Grounds and if you have your own (or lesser known) system - or you just feel like coding something - then check out RuleForge! |
|
|||||
|
|