Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Writing functional specifications for games

I've been reading Joel on Software recently and so I've become pretty sold on the idea of writing functional specifications before getting too involved in development.

I'm about to have a go at creating a simple 2D game (not too simple mind), and I can really see the gain - in the past I've just jumped into writing extremely simple games and I've found myself getting stuck or rewriting the same bits over and over again as I suddenly realise I have no idea how my level should be defined, or I realise that I want to be able to jump but that means completely re-thinking my collision detection.

Anyway, so I've started coming up with a functional specification but I'm struggling a little - I can see and understand the point of it, but I've not really written many functional specifications before and so I don't really know how to start. The examples that I've found on the internet are great, but they are mostly process-based (user submits form A, then form B) etc... which doesn't really apply much to the structure of a game.

Does anyone have any advice /examples on how to strucutre / write specifications for games?

like image 608
Justin Avatar asked Feb 02 '10 10:02

Justin


People also ask

What are specifications in a game?

Specification gaming is a behaviour that satisfies the literal specification of an objective without achieving the intended outcome. We have all had experiences with specification gaming, even if not by this name.

What is a functional specification example?

Examples of functional requirements include company information, start date, list of services, the purpose of the product, audience, organization, how it works, competition, and budget/deadline. Other possibilities include context, user requirements, a data flow diagram, and a logical data model.


2 Answers

It's quite simple at the basic level. You just have to spell out your features each in terms of a specification. Given a certain situation or event, what should the system do?

Game developers are notorious for having a feature in some other game as their mental specification (eg. I want to be able to jump like Mario, or rotate blocks like in Tetris) but those specs are only as good as your own understanding of the system you're copying. (This reminds me of the browser wars where people would say that Firefox was rendering something wrongly because it didn't do it the way that Internet Explorer did - Mozilla couldn't formulate a spec for their IE emulation mode that was better than "look like IE" because nobody outside of Microsoft could possibly know the exact rules IE was using.) So you should try and make sure that your specifications for a feature would make sense to someone who's never played a game similar to yours, and therefore stand alone. That will force you to dig deeper into the detail and find the sort of corner cases that Joel is suggesting you'll find.

like image 158
Kylotan Avatar answered Sep 21 '22 13:09

Kylotan


Make you sure that each point specified is empirically verifiable.

For example, in a 2D shooting game, don't just specify "Weapons". This can mean a lot of things. Explicitly specify "Player can shoot weapons", or "Player can pick up weapons", etc.

This means you can easily put down concrete objectives, and then make sure you accomplished them.

like image 31
Joseph Salisbury Avatar answered Sep 20 '22 13:09

Joseph Salisbury