Wednesday, August 19, 2009

Game Design Patterns / Rules

Well, as with my last post, this post focuses on patterns and rules for game design. Note, that all of this in many ways is common knowledge to any decent writer or programmer, but I wanted to write something about some internet browsing I did the other day.

So here is the first of the links:

Game Interaction Design Patterns Library

This link will take you to a small and quaint page describing the basics of what the page is for. It will describe what a pattern is, etc. It then has several links. This, in my opinion, is the meat of the this small site. Each of the links (the ones which are not outdated or broken mind you) will take you to a site that discusses patterns, namely "interaction patterns". Now, for the standard software engineer or designer, this may not have any bearing to you. So, here is what an interaction pattern is (referenced from Wikipedia:

"Interaction design patterns are a way to capture optimal solutions to common usability or accessibility problems in a specific context. They document interaction models that make it easier for users to understand an interface and accomplish their tasks."

So, what these patterns often provide are common UI solutions and HCI (Human Computer Interaction) solutions for dealing with and interacting with user input and feedback. There are many more links and better resources out there for you, just read the Wiki article or visit some of the referenced sites from the first site posted. With these, common UI tasks and design you may have been thinking of but didn't know if it would work well (both aesthetically and in usability terms) can be solved for you, leaving you just with the means of implementing that solution.

So, the second site I found and got a kick out of, which is also referenced from the first site, is this one:

Current Rules Master List

This site goes over a list of 400 rules (really only 112 currently) for game design. Now, you may wonder where this comes from, and it is in fact explained very well on the site. The idea was that if 400 unique rules could be created that described everything needed for game design, then game design could be "closed" under those rules. What closed means is it could be fully described, discussed, and elaborated on, as with what closed means in discrete mathematics.

While many of these are common sense based or the basis of basic creative writing and player interactions, they are a good reference for any game designer, as they do actually cover many interesting and varying rules that can be applied to various aspects of game design.

Tuesday, August 18, 2009

Why Not Common Programming Patterns?

So, I was reading an article today which piqued my interest, in some ways disturbingly:

http://m.computerworld.com.au/article/314817/nicta_wins_race_secure_l4

Now, the article sites a grand achievement for a micro-kernel, especially for one focused on security. That is not my problem. The line in the article that says this was a problem for me, however:

"For example, the microkernel is impervious to buffer overflows, a common form of software attack where hackers take control of programs by injecting malicious code."

Now, I know what you may be thinking: yeah, that's great. So what?

Well, I am in many ways appalled that this is still one of the major programming security problems to date, especially since it goes back since programming first started in many ways. So, I did some research to actually see how big a problem this still is.

Turns out, if you look up buffer overflow on Google, Bing, Yahoo, etc, you end up not only getting the Wikipedia definition and status of it, but you also get tons of security firms trying to sell you solutions and training to handle this problem. And the majority of these errors comes from a single aspect of the software: lack of proper boundary checking and the size of data being written to the buffer.

Now, having gone through multiple programming courses, with focuses on Java, C, C++, and many scripting languages, this is horribly surprising that in my recollection, we never once really touched on handling a simple situation such as making sure your buffer is bounded and checked correctly.

So, this got me to thinking: shouldn't there be, at least in pseudo-code somewhere, be some list of programming patterns or such for something like this? Maybe some actual class / object patterns for this, etc?

It turns out there are, but most of them are locked in some obscure text books or completely out of the way or unrelated websites. Such as, there are patterns for a Fixed Size Buffer for Real-time Systems (example here). However, like most of these tidbits of knowledge, they are either obscured to the specific domain in which they belong, making them inaccessible to many programmers and engineers, or they are just described and no actual psuedo-code or structure is given for ideas.

So, I ask my question, why not have some common programming patterns, that everyone can find, interpret, and use?

I personally may start amassing a few of my own I've used quite often and start noting them down here and there. It may be worth someones time, and eventually, it could be compiled for more people to use.

If anyone has any ideas on some good patterns that may match this, shoot me a comment or an email, and I'll make sure to note it. I really think this is something that could be helpful to not just new programmers, but to even older programmers who often have to re-invent the wheel or remember how to do something nifty and elegant, yet simple, that they did before.

Thursday, August 6, 2009

Neverwinter Nights 2 Mod - Lands of Neremier

So, I've finally gotten around to working on a mod I've been planning. I originally started the the mod concept when I bought Neverwinter Nights: Platinum Edition. However, it was a while afterward that I finished most of the design planning on my limited schedule, by which time Neverwinter Nights 2 was just around the corner. So, I waited to that I could try the new Electron Toolset. Once I got knee deep in classwork and working co-ops, this got pushed to a back burner project, which I finally started formally yesterday.

So, I've begun working on the areas for the first few areas of the mod, doing some pretty extensive design work on the first areas of the mod where the players start. I will try to post some screenshots of the current areas when I get some time and may make a section of my portfolio on my site dedicated to my Neverwinter Nights 2 mod.

Sunday, August 2, 2009

New Opportinities - Working on Gaming Articles

So, in the past few weeks, I've been working on a new job I've gotten, which is for a website called FreeMMOGamer. For the site, I've been hired to work on review articles, opinion articles, and anything that comes to mind (with approval of course). Hopefully, in the next few months, I'll have several new articles published here, which will give some of my opinions on current and upcoming MMOs.

For my articles, I'm also thinking of adding a little bit of a developer perspective, to give the articles some new flare and perspective, which will be unique.

We'll see how this goes.

About Me

Software engineer, game developer, writer, and student. My work revolves around games, algorithms, real-time development, and creative works.