Sunday, July 31, 2011

Making of an Arcade Frontend - Part 1

Ah, time to take a break from work and dealing with ASP.NET web applications, continuous integration servers and all that fun (but boring to talk about) crap. Time, for The Making of an Arcade Frontend!

H'okay. So, like any good software project, my arcade frontend needs a plan. And any good plan starts with a set of goals. A bunch of things the frontend is required to do. In other words, software requirements. Woo! Exciting! Sounds like something out of a college software quality course eh? Well, at least a good software quality course would discuss requirements. After all, it's hard to tell whether your software is "right" or "good' if you don't even know what right or good are.

There are a few ways of going about making software requirements. You can write up a paragraph of what you want the program to do. Or you could make a checklist of features. Or you could draw a bunch of pictures. Or you could write a formal SRS document. The choice is yours.

I tend to favor brevity when coming up with goals for my software. It reduces the amount of effort I expend on the requirements stage dealing with contradictory requirements and other general issues. It also helps avoid falling into the trap of writing requirements as a set of instructions on how the program will work; instead of what the program needs to accomplish. If you do fall into the trap of writing a how-to for your program you'll regret it when you find that the design won't work with real code. Good requirements say nothing of how they get achieved. For a large project I tend to go with a short paragraph describing each requirement. A couple sentences does the trick quite nicely. Small projects only really need a set of bullet points. There's no hard and fast rules on what is or isn't descriptive enough for a given project. It really depends on the size of the projects and who is working on it. Practice makes perfect.

So, what are the requirements for my arcade frontend? Here they are.
  • Hide the regular Windows front-end. It should appear as soon as the computer becomes usable.
  • Allow the user to shut down the computer without exiting to Windows
  • Allow an administrator to exit to windows (e.g. to install more games)
  • Support launching any game/program, not just MAME
  • Allow rapid selection and launching of games using arcade controls (not keyboard and mouse)
  • Display a preview of the selected game
  • Display a list of games that can be played. Preferably in a manner that looks pretty (e.g. like how DDR displays its song list)
  • Display a marquee for the game... somewhere near the screenshot
  • Absolutely no hard transitions. Everything must have an animation to go with it
  • Alter control-key mappings to support games without configurable controls 
See, nothing all that complicated at all. So, now that I know what I want to do, I need to decide how to do it. That's for another article.

No comments:

Post a Comment