Research!

Some of you might wonder what I've been up to lately. Besides having a sprint on the site adding support for Twitter login I've been busy starting a research project at the university where I have my daytime job. The general idea is to take some of the experiences (10+ years) from game development and make further experiments to expand, enhance and validate & verify my findings in a scientific way. The result of this process will be a thesis and I'll become a Ph.D. Smiling

And without further adue I present my "hyper thesis", a.k.a. vision Sticking out tongue

Enhancing Quality of Software Architecture in Computer Games

The driving requirement of software architecture in computer games has since long been performance. However, focusing on performance alone often leads to problems in other areas; the software cannot be maintained or changed in an agile way and it becomes hard for developers to react to market changes or advances in hardware. Testing is hard or even impossible in many cases and reuse of code and design is minimal.

Modern approaches to software architecture in computer games, e.g. a modification of the model view controller (MVC) pattern, bear other qualities like changeability, maintainability, testability, and reusability without sacrificing performance. This is shown for a number of game types ranging from casual games to multi-player action titles. A standardized software architecture throughout many projects also enhances programmer productivity and project scalability.

Feel free to comment Smiling

users avatar

Sounds very interesting! I'm

Sounds very interesting! I'm sure many would need to adopt this Smiling

---------------
Solid Core Entertainment
Developer of Roadclub and Sense: Survival Prelude (Developer blog)

users avatar

I wholeheartedly agree with

I wholeheartedly agree with your vision. The sad part is that outside of small indie-developers the opinion differs, not from the developer standpoint, but from other sources. (Investors, marketing, management etc.) At least this is the view I have, for companies to adopt better practices like clean code, good design, and such we as developers need the tools to quantify the benefits of these things. Since most of the time they give very little direct benefits but in the long run they are essential, at least that is my view on it, but since I can't quantify it I can't make anyone except other developers agree with me. Sticking out tongue

Also, on a footnote I'd like to add a very nice little quote about optimization. "We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil." - Donald Knuth

I'm not saying one shouldn't optimize of course, but one should only do so after a performance issue/bottleneck is found. This is true for most game related development anyhow. Real time systems are a different matter, and I suppose even graphics engines probably need more focus on these things than the rest of the game software. But most people don't work on bleeding edge graphics engines, so I'll generalize and say don't worry about performance unless you actually run into performance issues.

Anyway, good luck with your thesis, I'll look forward to reading about your progress!
______________________________________________________________
There's no kill like an overkill!

users avatar

Although if you can do

Although if you can do something two ways and one is more efficient but takes a few seconds extra i'll rather have the nicer code. like everything its about balance.

---------------
Solid Core Entertainment
Developer of Roadclub and Sense: Survival Prelude (Developer blog)

users avatar

Indeed, I haven't met a

Indeed, I haven't met a developer yet that doesn't agree with this. But developers rarely are the ones in charge except in smaller indie-companies, thus the whole point of my post.

There are even a few solid studies that show that it's better to develop things with good quality than to try and patch it up later, but those studies tend to only state that it's better in the long run.

Without any way to quantify the difference you'll have a hell of a time convincing the people in charge that you want to refactor something (that works, but is ugly) for two months because it's better in the long run, because I bet they'll rather shorten the time to market, or add more features, or...

Although I believe hObbE's study is more aimed at early high-level design? In which case it's naturally good to think it through properly, but even then mistakes can be made that are only discovered later. And some of those mistakes will never be prioritized high enough to get corrected as other things will be more important, like specific bugs/issues, new content/DLC, porting to a new platform etc.

______________________________________________________________
There's no kill like an overkill!

users avatar

I agree, refactor something

I agree, refactor something for two months with the same end results won't appeal to anyone holding the money Smiling I meant that there's no use not coding as good as you can the first time making something if it doesn't affect the timeplan. Its probably not good to just simplify your code and throw everything sane out the window just because it goes 1% faster all the time. Not saying you should start any big detours just to get something nicer but you should keep following sane programming practises from the start. Badly coded loops and such can be made well the first time so you dont have to clean up that mess later when it wouldnt have taken you much longer to get it right from the beginning.

Keeping track of what runs once and what runs continuosly can also help optimizing in the right places and saving time. I usually dont bother much with the run-once code since its fast enough usually without any tricks.

---------------
Solid Core Entertainment
Developer of Roadclub and Sense: Survival Prelude (Developer blog)

users avatar

Cool discussion Although my

Cool discussion Smiling Although my project is not 100% outlined the goal is to further test and experiment with the ideas of immediate mode and model view controller architecture and compare different parameters (performance, maintainability, changeability etc) with other architectures in different scenarios/game genres. Hence it's more about up-front high-level design.

This is probably nothing that will revolutionize game development, game tech heads have a tendency for an "I know best" mentality and I agree that it will be hard to make the experiments convincing enough for a major developer to try out. And as you say Malice there are a lot of other ppl making decisions with completely different agendas and priorities than top notch architecture/code.

I do hope that we'll find an industry partner that could help shape experiments and scenarios and provide some more "realism" to the project.

users avatar

Yeah unless it proves

Yeah unless it proves something in a larger production it may not hold much value to those "i know best"-types. Although it may give higher-ups an incentive to say "hey have you tried this MVC thing. sounds good. now rewrite that engine of ours. i wanna see input and output goddammit!". well, maybe not EXACTLY like that.

---------------
Solid Core Entertainment
Developer of Roadclub and Sense: Survival Prelude (Developer blog)

users avatar

Scarifying performance?

I hate to be nitpicking, but "... without scarifying performance." makes my brain hurt.

dictionary.reference.com agrees with me:

scar·i·fy   [skar-uh-fahy] Show IPA
–verb (used with object), -fied, -fy·ing.
1.
to make scratches or superficial incisions in (the skin, a wound, etc.), as in vaccination.
2.
to lacerate by severe criticism.
3.
to loosen (the soil) with a type of cultivator.
4.
to hasten the sprouting of (hard-covered seeds) by making incisions in the seed coats.
5.
to break up (a road surface).

users avatar

How about:

  • killifying performance
  • deadinating performance
  • deadlifying performance
  • hurtinating performance
  • painifying performance

Laughing out loud

/johno
"you can't stop the change"

users avatar

I like hurtinating Should

I like hurtinating Smiling

Should actually be sacrificing.

Good of you to spot it and tell me Kwissus! Thanks!

users avatar

Wow this time it actually

Wow this time it actually wrote something that made kinda sense.

---------------
Solid Core Entertainment
Developer of Roadclub and Sense: Survival Prelude (Developer blog)

users avatar

No problem! The text looked

No problem!

The text looked copy-pasted from your actual documents, so I figured you might want to correct it. I wouldn't bother correcting a blog/news post...

users avatar