FicEngine: User Interface

Here it is people. This will be the final FicEngine update for awhile, because it’s now official:

FicEngine is now at 1.0.

What this means is that I am now devoting full time to designing games. This update was the final piece in what has actually become a very elegant system. *sniff* My baby is all growed up. However, reality check- remember my words from my first FicEngine post:

My goal is not to make an engine. It’s to make games. The first rule of the FicEngine is that the FicEngine is only a means to an end. The end goal will always be the next awesome game that rocks your face.

So while this is still a huge milestone for me, I’m not done by any means. All I’ve really done is allowed myself to start. And not a moment too soon. As with all software, the FicEngine has taken more time than I would have liked. I can’t express the excitement (and honestly, relief) I feel to now be working on actual gameplay.

With that out of the way, on to the Fic Engine User Interface.

It’s funny, since for such a boring side of videogames, User Interface design and coding has become something of a specialty for me. It was my whole job at Freeverse in NYC- when you play Marathon on your Xbox 360, the menus and terminals you see- that’s me. So between a straight year of nothing but UI design and coding, and adhering to Microsoft’s strict and sometimes arbitrary list of Technical Certification Requirements, I can modestly say I developed quite a talent for UI.

Along with talent of course, was the Fic User Interface, or FUI. It was a great system, but unfortunately was not very cross platform, and grafted pretty closely onto the rest of the Marathon code. Oh yeah, and not to mention it only works with Xbox 360 controllers. Buh.

So I salvaged what I could from the class hierarchy and from the ashes rose FUI2. Here’s the feature list:

  • Support for both mouse/stylus control and paddle/keyboard control. FUI2 can also switch quite nicely between the two at runtime, so you can, say, click your way to the options screen, set up your paddle controls, and then pick up your 360 controller and navigate your way to the game.
  • Cross platform. The UI doesn’t rely anymore on 360-specific code, so it’s very portable.
  • Tight integration with the rest of the engine. For example, the UI makes use of the Input Manager to register its own set of commands for navigation via 360 controller. Adding further mappings to the keyboard arrow keys literally took seconds. It is also tied to the graphics, sound, and even the game logic. They’re technically game objects like everything else, so I could even theoretically register them all with the Physics Manager and let them bounce around. Which begs the question: How many hitpoints should a Button have? ;)
  • Animation. Because everything is a game object now, adding animation to the UI was dead simple.
  • XML Driven. Yep, just like nearly everything else, FUI2 comes with Data Drives! Interfaces are laid out in XML, and can be changed without recompiling. The only thing I decided not to add was data driven animations- that’s still done in code, for the sake of simplicity.

So that’s FUI2. And that’s the FicEngine. As I mentioned in the last post I’ll continue to add improvements to it as I go, but from this point forward, the games will be taking center stage. On Monday I’m leaving for Boulder, Colorado for a week, and the change of scenery will help a lot in changing gears from Engine to Game development.

So stay tuned guys. Things are about to get heated up something fierce.

Saturday, November 10th, 2007 FicEngine

No comments yet.

Leave a comment