Posts Tagged engine design

Two-character mechanics (#2) and tilesets

I spent most of my time this week working on editor improvements, and more two-character support. One of my first steps was to pull code out of the Player class into unique classes for each of the player characters. As a result, only one of the two characters can use a grappling hook, as intended. Next, I need to start building the other character’s special ability :)

The editor work mostly went into loading art assets and properly handling levels with missing assets, since i’ve been getting more tiles from my artist of varying sizes and shapes. I ended up building a simple XML-based file format for describing tilesets, based on my serialization framework, so that I can easily point the engine at multiple textures to pull tiles from.

It works pretty well, despite only being a couple hundred lines of code, and can easily be adapted to work with the XNA content pipeline, so it’s likely I’ll stick with it. I’m considering adapting the approach to also work for character sprites, since right now I have to manually tag sprite frames with specially-colored pixels in an image editor, which is extremely awkward and easy to get wrong. Here’s a snippet from one of my tilesets:

            <TileStrip key="7" typeId="1">
                <Id>prison_column_ornate_{index}</Id>
                <Filename>prison_columns.png</Filename>
                <TileSize width="32" height="208" />
                <Border left="0" top="0" right="384" bottom="0" />
            </TileStrip>
            <TileStrip key="8" typeId="1">
                <Id>prison_column_wood_{index}</Id>
                <Filename>prison_columns.png</Filename>
                <TileSize width="24" height="208" />
                <Border left="100" top="0" right="292" bottom="0" />
                <Margin left="0" top="0" right="8" bottom="0" />
            </TileStrip>

Simple enough syntax to be easy to write by hand in a text editor, but also not too difficult to load at runtime. I’m pretty happy with it.

One of the challenges in making use of the new art assets is getting all my tiles to line up properly. They have a large variety of sizes, so the algorithm I’m currently using to select tile positions isn’t a very good fit for my needs. Right now I’ve been having to make minor adjustments to my tile positions after I place them, but in the long run I’m going to want to come up with a tile placement technique that works well for tiles of all sizes.

Tags: , , ,

Fury² Post-post-mortem: Lessons learned

Warning: This is an incomplete draft. I haven’t found time to edit this down and fix mistakes yet.

Starting at the beginning of high school, through my few years of college, and into the first year of my professional career, I spent a significant portion of my free time building and maintaining a toolset and game engine called Fury². It was built as a way for me to quickly prototype games and ideas, to learn about game design and engine design, and most importantly, to let me build games that I didn’t think I could create using any of the tools that were already out there.
It was a long and painful development project, and by the end, I realized that I had made numerous mistakes; despite that, I also gained many valuable lessons and learned things that I might not have learned any other way, and with the clearer perspective that hindsight brings, I consider it one of the things that made it possible for me to start a career doing things that I love without having to struggle with debt or worry about how I’m going to afford my next meal. For me, this project embodies the famous Nietzsche quote, ‘What does not kill me, makes me stronger‘.

Learning how much sheer effort goes into the process of creating even a simple piece of software has changed me for the better in many ways, so I’m writing this article in hopes that I can share some of the lessons I’ve learned with others. Unfortunately, the benefit of hindsight also brings with it the fact that I don’t remember many of the things that happened during the 8 or so years I spent developing the project. I hope that despite this, you can benefit from what I’ve learned as much as I have.

Of course, I must preface the contents of this article with a warning: It’s written in fairly technical terminology, and does not have any particular narrative structure. I have tried to compile the most important issues and triumphs from the history of the project, and present them in a form that a programmer can understand. Regardless of whether you’re a programmer or not, I encourage you to respond via email or comments and let me know what parts of this you couldn’t understand, so that I can improve this article and make it worthy of your time.

- Kevin Gadd


The Fury² Game Development System: A post-post-post-mortem

This article is inspired by the format of and spirit behind the many wonderful ‘Postmortems’ published in Game Developer magazine. I will attempt to collect the most significant failures and successes that occurred during the life of my project, and try to give you a glimpse of what the project looked like and how it felt to use it.

Read the rest of this entry »

Tags: , , , , ,

luminance is Digg proof thanks to caching by WP Super Cache