The benefits of prototyping in software development, and more particularly game development, are well documented.
And although our tiny team have always appreciated the merits of the endeavor, we often disagree on what form a prototype should take in order to demonstrate the key features of the product while remaining as time efficient as possible.
There was nothing for it but to call on the wisdom of Wooly, who promptly pointed us in the direction of research. This led us to understand that there are several types, each with distinct advantages.
Categories of prototype:
Illustrative prototypes take a lo-fi approach, using disposable images or sketching outlines on paper to share ideas quickly. Very handy when time is tight, when you are still very unsure of how a concept will hang together or when technical skills required for a software working demo will take time to master.
E.g. a slideshow, a paper-based demo, index cards swapping etc.
These are used when the team needs to determine the development effort involved. It is sometimes necessary to allow a developer to study the feasibility and usefulness of specific features and this is when exploratory prototypes come into play.
An exploratory prototype could use whatever quick hacks are necessary to produce the desired sample of the product, with the focus at this stage on the look and feel rather than fully functional code.
As the code produced may be disjointed into several smaller test pieces, it will not be in the final product, so it can be seen by some as expensive.
The idea here is to build a first version rapidly, then when you have learned the lessons from this early version, start building a clean release version. This allows developers to power through at the start, and learn from past mistakes as they go, rectifying these when a version has been completed. The released software is usually very stable with this method, but a fully working prototype that will then be scrapped can be an expensive system depending on project size.
Prototyping methods that create software that will end up in the final product:
After product features have been assessed and prioritized, those at the top of the list are developed in the first iteration. This is a scrum-like prototyping method, with a shippable product, albeit a mere sample of the full feature set, created at the end of a short sprint of development.
This is a type of ‘rudimentary’ prototyping method. Here your prototype will contain all features required in a very basic form, with the team then refining or evolving them over a series of post-prototype iterations. An example of an evolving ‘profile creating’ feature would be: in the prototype version, allow the user to enter only a name, then later a photo from a website, then a photo upload from PC and finally full drag-and-drop picture adding functionality.
Discovering these definitions has brought clarity to our prototyping, providing us with a toolkit of methods we can use on different occasions depending on the project needs.
Now that our team debate has been solved, we’re off to do some proto-trippin! :D