Wednesday, November 2, 2011

In Control

Countdown, 7 weeks remaining. Funny to see the productivity rises as soon as there are deadlines and to-do lists. Yep, if you want your team (and yourself) not to be sleeping at the job, keep making (sub)targets and easy-to-follow plannings. Or as they would say in Full Metal Jacket, keep throwing hand grenades at Beastman to keep him sharp.

That felt a bit unnatural to me at first, cause basically you're asking your helpers to work hard(er), without giving them a salary in return. But trust me, it's better to push a bit and keep everyone at work rather than kindly asking if one could do asset X somewhere within the next 50 months, if he likes. Don’t forget why an artist joined you in the first place: to create awesome stuff! The more clear the targets, the more being produced, the more enthusiast people are to add their fifty cents.

As for my own progress, I pimped the water with some fluid-dynamics and pretty realistic ripples caused by particles or stuff falling in the water. Improved the parallax effect a little bit for some stone floor, fixed some annoying bugs, and currently I'm breaking my neck (again) at particle-lighting. There are dozens of ways to render particles, but usually the combination of overdraw and complex particle shaders (lighting & shadowMaps) quickly halts your performance. And blending all those damn sprites into a realistic "cloud" is tricky. With simple additive blending, your fog quickly becomes a radiating Fukushima cloud. With classic transparency the quads start biting each other and fade-out the background unpredictably. One second it looks good, the other second it looks as if the air was filled with pregnant flying elephants.

Blurry particle mess. Trying to use lights and shadows on them.

We'll talk again when/if I get those particles working properly. Usually when there is a problem or a new technique that has to be done, I start browsing the internet (really?!). And more than once, I stumble on the feature-lists, brief implementation details, or jealous-making screenshots of other A+ engines. Cryengine, UDK, 4A, Unity3D, Ogre, and so on. I could be proud that my own home-made-hobby engine somewhat approaches the (commercial) big players when it comes to rendering quality. Not saying "Engine22" looks better, but for some free-time plumbing, it isn't that bad.

Yet at the same time, I sometimes wonder why the hell I'm even trying to make my own engine. What's the point? You're not going to win it from the others. Why not making Tower22 with the Cryengine? All those cool water, fog, particle, lighting and whatever LSD tripping effect you’ll need, is ready to kick ass there. And asides from graphics, it has physics, sound, AI scripting, pathfinding, GUI, multiplatform support, editors / tools, documentation, and so on.

Ok, my budget of 100 euro is probably not enough to buy a Cryengine license, but there are cheap or even free engines out there as well. The point is, as a development team, you can actually focus on the game itself instead of an engine + tools that have to be made before you can even start. "Make games, not engines" (Plato, 347-428 BC), that's what they told us. Now why oh why Lord, why do we torture ourselves trying to make something that is A: outdated as soon as you take a crap for 5 minutes, B: takes an awful lot of time, C: unlikely to beat other existing products? Seriously, it reduces the chance of your game ever seeing daylight, unless you have a big team of nutty professors.

Are we just stubborn, or too pride maybe? For me, picking another engine (and throwing overboard my own stuff) feels like surrendering. It's like getting credit for something you didn't do yourself. It's like those modern cars that can automatically park themselves. Any man would say "Auto-parking my ass, watch this honey!".... (bump).

At times like that, I have to remind myself why I'm doing it again. And honestly I can't give a perfect answer, other than I like to program my own engine! If we would switch to a ready-to-use EngineX tomorrow, there is not much left for me. Tweaking some shaders, write some A.I. scripts... yawn. I would become like the redundant manager at the office. Walking around a bit, asking stuff... "Everything ok here?", "Need some coffee maybe?". I can't help the artists much, other than giving directions and feedback. Neither can I compose sound, or make awesome concept-art. And then we have an engine. No idea what really happens under the hood... It just works.

Nah. That sucks. Now I remember why I'm programming again; the need to learn new techniques. Moreover, I want full-control. If something needs to be tweaked, every last bit should be familiar stuff. I rather program my own devices just to be sure it works (or doesn't work) as expected. And I hate flying cause I don't have any control over it. Hmmm... sounds like some sort of psychological issue...

The same scene without particles.

"Make games, not engines". But the same people also say that modern engines are way too much focused on graphical wow-stuff rather than solid gameplay. I disagree that graphics aren't important at all. How about immersion? If Tower22 had to be played on a Wii without shaders to create a scary dark atmosphere and good looking monsters, it will probably suck. Hey, you don't watch Low-Definition TV either, do you? Nevertheless, they have a point of course.

Each engine has a certain feel. No matter what level you play, or which modification you download, certain mechanics and atmospheric aspects keep the same. IdTech has a sci-fi touch, Cryengine excels outdoors, UDK games have a blueish look, and all three are mainly made for first person action shooters. This may work out for game A, but not that well for game B. Although Crysis looks better than its predecessor "Far Cry" in every possible way, I enjoyed the old game much more. Subtle differences in controls, other game-rules, other map-design, different A.I., different pace, different overall look.

When building a game on a certain platform, you automatically inherit some of its DNA. Both the good and the bad aspects. When using Cryengine for T22, the look might be more crisp & flashy instead of a blurry nightmare. And I'm not so sure if I can make one big roaming world instead of loading separated levels. And how about the A.I.? T22 Monsters are completely different than stealthy North Korean soldiers... And how flexible is the engine when it comes to playing weird horror tricks? Like Demo1 that replaced the first room with another room after the monster-chase.

In short, T22 is a complete different game than the action shooters that gave birth to most of the popular engines. But since you can't make a racegame on a soccergame-engine either, I doubt if there exists any engine that does exactly what I want for T22. See? Need to be in full control.

Improved water. The snow that drops on the water creates ripples. Bigger ripples will result in actual 3D waves. Yeah I know, I still have to post another article about water.

So, making games or engines? That entirely depends on you. What is your ultimate target? Learning how to program a game, or (quickly) making the actual game? Are you willing to spend an awful lot of time in researching (new) graphical / A.I. / scripting / physical / whatsoever / techniques? How much time do you have anyway? In case you aim for a complex game, you can safely add at least 4 extra development years if you plan making your own engine. Or make it 8 years, in case you never did it before. Cause you'll be scrapping and redoing parts, if not the entire engine, several times. And last but not least, is there an existing engine that does the things you want?

Here, I made a little dr.Phill test for you.

1. Target?
----0 [a] Release a commercial game
----1 [b] Enjoy my (finished) game
----3 [c] Make a game & sharpen my skills
----5 [d] Learn how to make games
----6 [e] Make a (commercial) killer engine

2. Available time / release date?
----0 [a] 1..2 years
----1 [b] 2..4 years
----2 [c] 4..8 years
----3 [d] I can travel through time. It doesn't matter.

3. How much time can you spend on it each week?
----0 [a] Little. Other things to do
----1 [b] Not so much (5..10 hours)
----2 [c] Pretty much (10..20 hours)
----3 [d] Unlimited, I dream code.

4. Are you working alone, or together with artists that require tools?
----0 [a] Big team (10+)
----1 [c] A small team (<10)
----2 [b] Han Solo
----1 [d] Not relevant, no complex tools needed

5. How complex is your game?
----0 [a] Think in terms of Halflife4 & GTA7
----1 [b] Pretty complex
----2 [c] Pretty simple
----3 [d] Extremely simple. Atari stuff.

6. How important is the quality (graphics, physics, tools, and so on) for you(& team)?
----0 [a] Very, very. A+ quality only.
----1 [b] Pretty much, but I don't have to win
----2 [c] Make games, not graphics

7. Do you like building your own tools & editors
----0 [a] Boring
----1 [b] If I must...
----3 [c] Love it

8. Do you like reading technical papers?
----0 [a] My ass does
----1 [b] Not really, but if I must
----3 [c] Yummy

9. Do you have experience with coding engines?
----0 [a] Dieselengines? No.
----1 [b] A bit
----2 [c] No / a bit, but I'd like to learn
----3 [d] Sure.

10. Are there available (free or commercial) engines in the genre you're aiming for?
----0 [a] Yes, and I can get those
----1 [b] Yes, but I'm not sure if I want to pay for that
----3 [c] No / Yes but not in my budget

11. Where's your heart at?
----0 [a] The creative aspect (making game contents, maps)
----1 [b] Create / Tweaking the game (scripts, A.I., ...)
----3 [c] A mixture of both
----6 [d] The technical aspect (coding stuff)

Now sum the points (max = 35, my score was 22 btw). The outcome is based on absolutely nothing, but at least it got you thinking right?

0..12 points
You really don't have time for technical bullcrap. What you want is a game, not a technical course. Don't torture yourself too much with programming, cause it's likely bringing you nowhere. Don't forget to make fun in the first place. Grab the engine / platform that fits best, and realize your dreams.

13..18 points
The goal is to make a game, but you don't mind getting your hands dirty. Or maybe your type of game is pretty simple, so wrapping up your own code shouldn't be too much of a problem. Don't forget there are intermediates. XNA or Ogre for example will help you with the coding, but you are still in control.

19..26 points
Either you really like to learn how to make an engine, or the type of game you want to make simply forces you into making your own gearbox. An actual release of the game itself will be the cherry on the pie. Go out and play, but don't forget it's not a crime to ask for help or use some ready-to-use libraries.

27..35 points
Nerd ;) You don't give a shit about games really, you just want to do the stuff that the other big boys do, don't you? Whether you can realize a killer engine or not, go ahead and feed those brains.

1 comment:

  1. Awesome post, I scored 25 points! and its really correct!