Saturday, March 29, 2014

Animation / FBX / Script kid needed

As announced in a previous post, I wanted to write a "post-mortem-game-review". But I figured it has been a while since I gave you updated about Tower22 itself. So, here a short post (and request!).

Honestly, I haven't been programming a lot on T22 the last 2 months. Mainly because of work. Doing overhours is one thing, but at some point your brain just refuses to keep switching from one task to another. It's full, and all you can do is sitting in the couch like Al Bundy, watching Al Bundy. But no worries, the extra work won't be forever. Although... some other activities in- and around our house are planned...

Anyway, to the point. The major roadblock, stuck like a sticky fat turd in the rectum. We made pretty much all ingredients for a nice new demo that will be used to attract new people, eventually launch a kickstarter campaign, and everything. If it wasn't for you meddling Scooby Doo kids, erh I mean FBX animations. God damn, what an annoyance. We successfully imported some FBX files, including rigs and animations. But the SDK changed again (of course), and for some reason Maya decides to export its files very different once using more advanced techniques such as IK or curves. It's all in the FBX file, but I wouldn't know where.

If I had a bit more time to concentrate on that bloody FBX SDK, I may figure it out. But as said, it's busy in my upperchamber, plus I just hate figuring out someone else his shit. The FBX SDK isn't just a file loader, you can reprogram the universe with it. Or something. Anyhow it's big, and I'm not patient enough anymore to figure out big stuff for just importing a freak'n animation.

If you are reading this and think "Hey, but I know how FBX works!" or "Hey, but I know how to write Maya file-exporter scripts!", you're more than welcome giving a helping hand on that! Or if you know Collada very well, we could use that instead as well.

So, basically we're chasing our FBX quest, although I'm thinking to make a temporary fix by just using MD5 animations instead for now. It's old (Doom3 era), but at least that file format made sense to me. Once we get our animations imported properly, I expect the animator needs 1 or 2 months to get his work done for this demo.

* If you use the message-form on the website but don't get a reply within a few days, please drop a note here below. The contact form should work, yet I'm not 200% sure, so apologees if it doesn't!

Saturday, March 22, 2014

Null pointer exception

If you ever tried to make a game, look at this:
AVGN: Big Rigs
Amazing, isn't it? I know, my jaw too felt on the ground. Not necessarily because of the awesome quality, but because this masterpiece actually ended up in a store, as a game, something a consumer can spend his money on. There are bad games, ugly games, unfair games, frustrating games, stupid games, dumb games, horrible games. But this jewel...

If you ever TRIED to make a game, this title should be a true feast of recognition. Like babies, games start as unfinished, incomplete, erh, chunks in a womb called your local hard-drive. One of my very first "game" experiments in Delphi, was a top-down view image where you could drive a tank on top. Or well, drive... pressing the arrow keys would simply move the tank image 1 cell left/right/up/down. There were no animations or physics such as velocity. And oh, collision detection was nowhere to be detected either. Just drive over that house dude. It all made perfect sense because A: it was an experimental piece of programming, and B: that’s what tanks do, running over houses.

Unfortunately, my "Tank" game was never commercially released. Not even after adding some sound effects when firing the cannon! Oh well, at least we learned how NOT to make a game (I just used a bunch of TImages, TTimers and a TMediaplayer in Delphi, not OpenGL/DirectX or whatsoever). As a 15 year old, I found it quite impressive nonetheless.

But seriously, even at that age I was smart enough to realize this program couldn't be considered a game, or a sellable object in general. Of course not, silly pants. The makers of "Big Rigs: over the road racing" thought different though... Apparently this game was in a box, on a shelve, for sale, in a game store. Really if you didn't click the link above, just watch for 3 seconds and then pull out your hair.

OT: We had some fun with wallpapers

Alpha Beta Gamma release
Can't judge the technical insights my hero "Angry Video Game Nerd" has, but in general people take stuff like *working* physics, solid game-logic, or even a seemingly simply main-menu for granted. If you made games yourself, you know that you’ll get nothing for free. Your premature baby doesn't have sound effects or animations. It doesn't look good at all, Access violations all over the place, and physics will go ape for sure. Even in a more advanced stage, your babies still drop through floors, get stuck in walls, or get launched with infinite velocity into binary dimensions no-one has been before. It happens because physics are hard. Making nice animated graphics is hard. Even making a robust framework to show some stupid buttons and text-labels for a main-menu takes time, and is likely to remain unfinished for a long time. And don't even begin about game-logic.

I'll be honest, Tower22 technically isn't a game yet. Because you can't win or lose, or beat a level for that matter. That sounds lame, but this kind of basic logic requires a big foundation. You can't lose if there aren't bad guys with working AI to kill you. You can't win if there is no start- and end destination. To make this working a bit, you will need a world, maps, inventory systems, enemies that can think, puzzles to solve, scripts that decide what happens when, and being able to climb a stair without triggering "array out of bounds" errors would be nice too. Some games need a bigger foundation than another. Obviously Pong or a Tennis game doesn't require complicated worlds, puzzles or batteries of enemies. Nevertheless, Pong still isn't Pong if basic elements, such as bouncing a ball and keeping a score, fail.

No worries, it's natural that games in development don't feel or even look like a game for a long period. I believe I posted this before, but just have a look at the development of Doom for example. It perfectly shows how fragile a game is. Just remove the sound of a gun, or disable the dead-animation of your foes, and the whole game suddenly feels like unfinished garbage. Walking through a wall immediately breaks the illusion of you being in a "real" world. Glitches can be fun if well hidden, but otherwise they ruin the immersion obviously.

You may remember a somewhat better screenshot of this "hydra monter" scene. Early alpha versions had poor performance, no ragdoll physics, different foes & guns, half half maps with holes, and purple water. People complain Halflife3 is taking forever, but trust me, if they would release it rushed or unfinished like this, you won't like it. Really.

Well, fortunately most programmers understand you can't deliver a half-finished product, whether that's a game or an office application. Less fortunate is that many "hobby" game attempts will stick somewhere in this early-pre-pre-alpha phase. Besides "Tank", I made quite some more half-baked games before, a long time ago. So when looking the "Big Rigs" video link above, it brought back some warm memories. Of course a truck can drive upon a 89 degrees slope. Just put the height coordinate according to the height map, and of you go! The flickering water & road polygons? Easy, just paste 2 surfaces on top of each other, so the computer precision is too low to decide which layer should be rendered first. Opponent truck not driving? Of course not. If I would make that game, I would first focus on my own truck. The timers being rendered outside the box? Pfff, who cares. GUI & HUD is easy, so I'll fix that some other day, it doesn't spoil the fun. Head light sprites misplaced? Oops, probably something with coordinate conversions or something. "You're winner!"(is that English?) after getting beat by the opponent? Meh, don't be a nit-picker. Like I said, first I want the trucks to drive, and render some cool maps.

Yep, that game exactly looks how I did a similar (3D) racing game somewhere early in the 21th century. Except that... my game was never released, nor did it have a credits-screen with 9(!) men (including a sound FX guy for making 1 single engine effect). Or a box cover, warming up the audience with features that aren't in the game at all. Man, imagine your mother bought "Big Rigs" and put it under the Christmas tree. “Boys love trucks, this game sounds excellent, and its rated for all ages by ESRB(?!!). Boy, he’s gonna be so happy!”… I feel very sorry for these traumatized families.

This game was literally just abandon like you would do with your hobby game, when getting bored 3 weeks after the start. But somehow... somehow this mess found its way to the stores. Even for North Korean standards this would be considered "unfinished" and "shit". And if you still didn't click the link and think I might be exaggerating just a little bit, CLICK!

You can count at least 4 glitches here already. And don't think this is a "lucky" screenshot, this happens all the time!

It was released in 2003. That may sound old and therefore forgivable. But to show you the contrast, 2003 also brought us Battlefield 1942, Sim City 4, Ages of Mythologies, Fable, Call of Duty, and GTA: Vice City. Can't blame bad standards or lacking hardware back then. Mind boggling. Anyhow, what intrigued me in that video, asides from that awesome game, was the definition of a “game”.

This piece of stool sure had bad graphics, but compared to Mario Kart on the SNES, it looks technically more advanced… imagine you would see this full 3D game back in 1992 (when Mario Kart was released), it would probably be the best thing since sliced bread. Graphics quality is somewhat relative. Same goes for audio. This game sounds as if the “audio engineer” recorded a single fart (at least that’s how I did it with my race games), loops it, and adjusts the pitch as the velocity increases. But then again, several Commodore / Atari / PC-Speaker era titles may have sound worse in absolute terms. And yet Mario Kart, Micro Machines, or Stunts are still much better games. Hence, they can’t even be compared. Big Rigs was supposed to be a racing game, but simply isn’t. Having a confused guy walking on a football field doesn’t automatically make a soccer game either.

That brings us straight to the core-definition of a “game”. Something can be called a “game” if it can be won, or lost. Since the opponent truck in “Big Rigs” didn’t even drive at all, the very heart is gone. It’s just a demonstration of (bad) audio and graphics. It’s like… Frankenstein, but without the magic electrical jolt that brought this creature alive.

Winning for everyone!
Funny though that modern games are slipping away from the win/lose model. You can still beat and win pretty much any game, but the “lose” factor has been tuned down, chased back into its closet. Just played a bit of Crysis 2 a few hours ago, and although I like it, it’s not really a challenge. Your whole path is scripted, you fully recover after some seconds hiding, and your super-suit protects you from barrages of bullets and other epic disasters.

But ok. At least you can still die, which stimulates to try a different tactic. Or smash the keyboard if you died 4 times in a row. An even weirder game (to me) was Bioshock. You couldn’t lose at all here. Even in ADHD-kid games such as Call of Duty, you still have to replay 6 seconds after dying. But in Bioshock you just respawn with your gear and the game continues. It may take 10 lives when trying to slap a “Big Daddy” to death, but eventually you’ll win. If it wasn’t for the quality and levels that beg to get explored, I wouldn’t consider Bioshock as a fun game. In my eyes, it’s technically not a game, but an interactive demonstration of a wonderful horrible underwater world.

As art, Bioshock is a masterpiece. As a game, I don't know what to think of it.

The opposite also happens. Did you ever beat Sim City? Or Transport Tycoon? Or The Sims? You probably didn’t. Because it’s impossible to win here. The game just goes on infinitely. You can try to improve your metropolis, or murder your Sims and restart, but there is no ultimate goal, there are no end credits. And sooner or later, you will get tired and leave the game for that reason. Yet I usually liked playing these kind of sim-games. Getting a new attraction, money to buy a cleaning robot maid, or reaching the year 2000 so your skyscrapers would look ultra-futuristic, are rewards that make it worth to keep playing. Until we went through all the rewards, and then the game gets pointless, due the lack of a final “win”.

This even happens with super titles. I always wonder a bit why the makers of GTA spend so much energy in making side activities. You can play pool, go bowling, do a boat-race, do vigilant missions, go sight-seeing, pimp cars, and the list goes on and on. But as soon as the main storyline finishes, the game gets “hollow”. No more fun dialogs or goals. What are you still doing in that virtual world? Did you know you can lay darts or ride a bike in the real world as well? Almost forgot.

Well kids. The moral of this story: make sure your game has rewards, challenges, win and lose conditions. If those elements suck, your whole game will suck regardless the quality of sounds or 3D assets decorating it. Next, spend time on play-testing and finishing things. It's better to reserve more time or eventually shorten your game, rather than delivering unfinished features. Doubts and bugs that may look small in your eyes, are magnified 100 times by the end consumer. Oh, and finally, buy “Big Rigs”.