I’ve done a menu in XNA before, so working from that code and the gamestate management sample as examples of how to proceed, I built the following menu. Getting all of the animations and transitions right was a surprisingly long trial and error process. Of course, there is a bunch of game state code that needs to be written in order for the menus to do anything, and that was a big part of the time cost, it’s not just a GUI.
The background is animated and consists of several layers. The menu entries are animated. The blue glow behind the selected entry is a particle effect. (Which looks really cool by the way, although its hard to make particle effects that don’t look cool.) The black tentacle background is procedurally created (and cached) on the fly, so creating new menus is just a matter of a few lines of code — which should greatly speed things up later, when I want to use these menus for in-game operations.
I worked from some concepts written in my binder of ideas (if I was just winging it, this would have taken a lot longer!):
Game Programming Gems 5 chapter 1.17 “Choose Your Path — A Menu System” was also helpful in designing something clean and reusable, using the factory model of a menu manager that produces menus on request.
I’ve also started defining how the game engine will be organised, which is also something that I’ve had plenty of time to think about over the last couple of years.