I feel like Han Solo with his Millennium Falcon, where, in the face of outright criticism, he says, "She may not look like much, but she's got it where it counts, kid. I've made a lot of special modifications myself."
However, recent events in the game industry as well as in my personal and professional life have given me reason to consider building a brand new game engine from the ground up. The motivation for this new system is driven by two major influences:
- The strengths and weaknesses of MHFramework.
- The known challenges and opportunities of current and future projects and platforms.
At the moment, all I can do is speculate on the features and qualities that I want to create in the new engine. After all, I want to avoid the mistakes I made in MHFramework, such as the lack of a comprehensive architecture, the lack of portability, and the lack of cohesion that is especially evident in some of the older modules. Diving in head-first would simply be repeating the failures of the past.
So let's figure out which qualities will truly matter in this new system so that we can design a solution that will perform under the pressures that are currently storming their way down the pipe. Let's run down the list and consider the priorities of each with regard to the high-level software architecture.
Attribute | Priority | Rationale |
---|---|---|
Functionality | Medium | In reality, functionality is priority number 1. Though it will not be a heavy influence on the architecture, it will obviously play a huge part in component design. |
Usability | Low | As the engine will be driven by a code library rather than a GUI, this attribute gets a low priority. However, the interfaces to classes will place a very high value on usability, and consistent documentation will receive focus throughout. |
Reliability | Medium | Again, reliability is an obvious desire, but not an influence on the architecture. Like functionality, it will be addressed at the component level. |
Performance | High | Typical of most game engines, the performance of the real-time player experience is crucial. Many decisions in the development of MHFramework did not prioritize performance, and instead favored usability and supportability. In the new engine, I would like to find better compromises between these equally valid aims. |
Supportability | High | MHFramework did a great job of allowing open extension of engine classes, and also left many decisions up to the programmer regarding which engine parts to use and which to ignore or replace. I want to maintain that same degree of freedom in the new engine. Also, portability will be a top concern because I want the engine to enable games for the PC in full-screen exclusive mode as well as in a window, games to be played in a web browser, games for Android smartphones, and, of course, games for the upcoming OUYA console. |
So, by this reasoning, the highest initial priorities, in order, will be:
- Portability
- Performance
- Extensibility
TL;DR: I'm going to build a new game engine that emphasizes portability, performance, and extensibility.
No comments:
Post a Comment