Sunday, July 16, 2017

Game-Testers

Game-Tester: sounds like a lazy dream job, doesn't it? Well, maybe you want to read this first.

Finally. Today I made the T22 Game + Tools available for an artist, so he can play, look, give feedback, and hopefully start replacing ugly dummy "Programmer Art" assets with some real awesome stuff. Well, if the .EXE works that is. You programmers all know what happens when giving that floppy with your program to another for the very first time... "Hej? How did that happen? On my PC it always works! What is the errorCode? Access Violation and then a long number you say? Strange...".

But hey, the executable actually worked on another computer (somebody at work was "lucky enough" to give it a shot), though the FPS was like grandpa's siesta. Unlike typical desktop programs, where most issues come from different Windows versions, missing drivers, network permissions, or local user settings, with games your biggest enemy is the videocard. Too old, too new, too nVidia, too AMD. Certain features you counted on may not be available, or shaders get compiled slightly different, causing black screens or glitches. In this case, the game just worked (shockingly, I really didn't expect that in one shot), but his older nVidia didn't like OpenGL ComputeShaders, I think.


Beta Testers
Well, our guy here won a brand new nVidia with an artist contest, so that shouldn't be a problem. More realistic problems could be getting stuck in the game itself. Falling through floors, getting locked in the stairs, just not knowing what to do, corridors too dark, game too boring. Who knows. Of course I play-tested the game like a hundred-trillion times. To check if script-X triggers, or if visual glitch-Y was fixed. And no, I didn't get stuck by bad physics really. I won't say its flawless, but I it ran pretty stable. On my computer at least. 

But testing your own game (or whatever program) so many times, also blinds. You automatically know what to do, and what NOT to do. Subconsciously you just know to stand on the left side of a door when opening it, avoiding a slam-in-your-face. You know an approach angle of 84 degrees works better for that specific ladder. And in a fairly dark game like T22, you know where to go and what to do. BUT, what I don't know: is the game fun to play? And more important, does this horror setting give any goosebumps?
 I see an empty unfinished room. Others may see an uncomfortable scary room. Yet another sees nothing at all: too dark. 10 people, 10 different opinions.

CUT. And… Action
Obviously I played / tested it so many times (and I really mean thousands of times) that there is no surprise at all. I know where to find every ugly bug in the environments, the monster A.I. is predictive, puzzles easy. To be honest, I don't have any fun playing it. Bad game, or just tasted it too often?

I wonder if movie directors like Steven Spielberg has been rewinding every 10 seconds of Jurassic Park a hundred times to tweak and fine-tune. I wonder if they shout "CUT! Stop, dammit" again and again. I hope they have other minions doing that for them, otherwise the final movie Premiere will be a loooong sleepy ride, knowing every inch of that video tape. I wish I had an army of workers doing the fine details of T22 for me, so I could just focus on programming stuff, and directing it on a global level. Then every week, artists would spoil me with fully-finished rooms, animated monsters, or music-pieces. I would use a red and green marker to approve or discard their assets. Being a bit outside of that "development dome", allows to look through different glasses at your work. Sharper, unbiased, loving or hating it.


Back to reality, I'm my own modeler, mapper, scripter, programmer, texture drawer and even audio composer (= Googling for free WAVs) all at once. And not a very good one, except for the programming part maybe. So there is zero surprise in the work being done. Except annoyance about the shortcomings, you know exactly which details have been rushed or skipped.



Script Writers
I underestimated the amount of scripting work that had to be done last half year. With that I mean "programming" the puzzles, triggers and events in your maps. So, what happens if you try to combine the blue key with the red door? T22 is sort of a puzzle game, so there is a lot of scripting. And to make it even more complicated, T22 uses a time schedule. That means certain puzzles or the visual state of a room, may also depend on the day or time. Curtains might be closed during nights, and between 10:00 and 10:30 on day three, something spooky happens on the corridor. Having time dependent scenarios doubles, triples or quadruples the (scripting) work per room

Also testing gets more complicated. You can always try an elevator or monster combat A.I. But puzzles usually require a certain chain of events. Timed events in this case; collect key on day1, do stuff at day2, then item-X appears on day3. And of course, there will be initial bugs somewhere in that chain, so you'll be playing that sequence again. And again. And again. Then it finally fucking works, until you add another side-puzzle that somehow interferes, and disrupts the chain-of-events. Sigh. It’s like Jenga: insert a brick here, another brick falls out on the other side.



Having good tools softens the pain. First of all, you probably want to write down the events and puzzles first, on paper, on a global level. It always helps, having checklists you can confirm. But... in my experience, a creative process (like making a game) doesn't play well with a planning and systematic approaches. You can't squeeze out good ideas on demand. They just happen (or not, most of the time). So after playing the same room for twenty times, you may suddenly get a bright moment, deciding the room needs a bit more spice of this, or a puzzle like that. And once you've added that spooky event, you may still decide it sucks a day later, scrapping it.
Having a BehaviorTree editor definitely helps making your game "Behave".

Nonetheless, a list can help staying on schedule, and obtain a feeling of progression. Otherwise you would be tweaking and changing the same parts forever, never satisfied. Second, having some programming help-tools is mandatory. You could hard-code everything in Delphi (or C++, or ...) but assuming your Mappers don't know/have Delphi in general, it's more common to provide a scripting language or techniques like "Behavior Trees" in your (Map)Editors. Engine22 offers LUA scripting, which is pretty cool, yet I still made a lot of (syntax) bugs in the small scripts. Far more robust are Behavior Trees, which were added later on. They are fairly simply to make, and the chance of screwing up is much smaller, as you don't have to type any code or whatsoever.

It took a while to implement Behaviour Trees. Not just the code that can traverse a BT, but also the editor to create them, and the API with functions. As you would do with LUA or Python, also BehaviorTrees require a set of functions. “PlaySound”, “setVisible( entity, true/false )”, “GiveItem”, “check if variableX is > 5”, and so on. You start with nothing, and then the API slowly expands as you need more stuff to accomplish a specific puzzle or event. It costs a lot of energy, but when it works, it works like a charm, and saves a lot of work (and bugs + frustration) on the longer term.



Anyway. I hope our artist can see the potential of the game (demo), and has some time left to help me pimping up some rooms. So I can finally back of the game itself for a moment, focus on improving graphics or fixing whatever bug he finds or tool he needs. I’ve seen the same T22 corridors too many times last years!

No comments:

Post a Comment