March to PAXAus – Finale: You have been judged…

greenlightI didn’t really make it clear what I was doing in March, I just just smashing out updates every day to try to create a cohesive, playable game out of the pre-alpha version of BA Project. The reason for this was that the deadline for submitting a playable demo to the judges at PAXAus was April 10th and I really wanted to try to get something into their hands that actually “worked”.

So I spent the entire month of March smashing through as many critical features that the game needed to actually work as a whole. With that done, I hit the Alpha milestone and announced Black Annex. Around April 7th I sent the most bleeding edge build into the PAX judges after about 30mins of playtesting and two last-second fixes. (The final playtesting is shown in the video below, recorded around 3am).

For a little fun, I built a gimmicky custom intro into the PAX build which makes it appear that you’ve launched a DOS command prompt when you run the game. It just dumps you into a DOS window reading: “C:\GAMES\BLACKA~1>”, slowly, the commend prompt types out “annex.exe /paxmode”, a fake DOS/4GW runtime starts, and then a warning saying “YOU ARE SEEING THIS SCREEN BECAUSE BLACK ANNEX WAS LAUNCHED IN ‘PAX MODE’”. The moment the player pressed a key on the keyboard, the entire computer screen instantly goes black and the demo starts.

The demo had an utterly broken Main Menu that liked to randomly drop in and out if you clicked “Begin Game” too quickly, the Options menu didn’t work, and sometimes the “BLACK ANNEX” logo itself would just disappear. The only instruction given to the player was a loading-screen hint reading “Left click to make your agents walk to a location, double-click to run.”. There were five “playable” levels, but all of them were either uncompletable due to being massively unbalanced, or completed within 10 seconds of the level starting because the mission objective was way too simple. The minigun was completely broken, if you stacked three weapon abilities none of them worked, nothing made sense. The mouse cursor was an uncontrollable wreck plagued by a bug that I’ve only now fixed two weeks later and the “Mission Deploy” screen would just randomly close sometimes as soon as it opened. Loading took up to twenty seconds per level and the game ran at about 40fps on a computer made one year ago.

I can not stress enough how little sense this game made in the demo. You were dumped into a game with way too many mechanics, none of which were explained to the player and most of which barely functioned correctly anyway and expected to find, as the PAXAus submission form said “fun factor and a great gameplay experience.”.

As the creator of Black Annex, all I see when I play it is a mess of systems interacting with a bunch of unintended things happening all over the place.

The judges at PAXAus didn’t see the same thing I see. They sent me an email to let me know.

ais logo mediumSo now, me and five other Australian developers are going to be part of the Australian Indie Showcase at PAXAustralia 2013. We get to do a panel! So come to PAX and ask me about making a game or something.

March to PAXAus – Day 27: A UI Grind

Overhauling the UI elements is a really tedious task of constantly adjusting values by tiny amounts, recompiling and testing it in-game. It takes hours to just relocate a bunch of icons and make them draggable.

grinding on the UII’ve got the “Available Staff” window and the “Current Solution” window where I want them to be now as far as the Beta product goes. The Abilities menu is really taking a long time as I need to make a sensible and easy-to-understand way to explain to the player that they’ve got two classes of agents and two sets of abilities that need to be assigned accordingly.

At the moment it’s a total mess, but it always is when it’s halfway finished. It’s function, but just horribly ugly. Still a ton of work to do.

Oh, I also fixed a bug. It turned out that if you removed all your agents from the current solution, you were totally unable to add any new ones to the list. That had me stumped for a good hour or two.

March to PAXAus – Day 26: A Little Class

I sat down with Photoshop and made some little icons to denote character “Class”. The game has two classes of (playable) characters. Enforcers and Deceivers. They each do a different thing when you right-click (enforcers fire a gun, deceivers throw a distraction) and they each have unique abilities that they have access to. Anyway, there was a real lack of persons screenindication in the game regarding which agents where of which class, so I’ve beefed up the “Solution” window to show a tiny icon regarding each class, and I’ve added a bunch more information to the “Persons” window for when you’re actually building up your team.

I’ve pretty much got the “Persons” screen to where it needs to be to ship the beta at the moment; it still has some bugs where you click on a certain areas, but nothing that actually breaks, it’s just a little animation glitch. It seems to deliver the info you need to know and it’s fairly easy to drag the icons around and assign agents to your solution.

I’ve got to really overhaul the “Abilities” screen next because it’s a barely usable mess as far as design goes. It’s feature-complete but it’s just confusing and barely explains what you’re doing. The whole UI needs a fair bit of work really.

March to PAXAus – Day 25: Movement

Only a few little changes today with some tweaks to the hub area map layout and a big of messing around with the camera. It has a very very slight jitter because it’s locked to the isometric shaped tiles (it moves along the X axis two pixels at a time and the Y axis one pixel at a time) and I fiddled around with some logic to try to get around that without much luck.

lots of little adjustmentsAfter that slight failure, I sat down and just played one of the campaigns a few times over and fiddled with the controls a little. It was kinda confusing when you’d click on some tiles and your agent wouldn’t move there because it had something blocking that tile. I fixed that, now the agent just walks up-to the tile and bumps into it; I don’t know why I thought the alternative would have ever been remotely acceptable.

Fixed two bugs as well today. HAYWIRE! was infinitely overpowered when used on PCs instead of actually taking into account your ability level, and creatures remembered which doors were locked and unlocked even if you left a campaign and restarted it from scratch. Two easy ones to knock off the list.

Chugging along, almost time to deliver a product to someone somewhere.

March to PAXAus – Day 24: All The Small Things

I spent hours today just playing maps and fixing little things that either went totally wrong, or felt bad enough to really affect the gameplay experience. There’s way too many small things to list, but there’s some fairly large improvements that have been made which I’ve had in mind for a few days.

Now, when you go to an object which can be HAYWIRE!ed, the camera will shift focus to highlight what you’re going to have an effect on if you choose to. You can see in the screenshot that the only selected character and the mouse cursor are in one part of the world, but the camera has shifted to show the player what they’re going to affect if they use the HAYWIRE! ability here. Previously you had to move the mouse around to find what it was going to do.

plethora of fixesI’ve changed the camera/mouse behavior a little bit so the mouse almost always stays hovering over the same tile no matter what happens. The only way to have the mouse move to a different tile is if the player physically moves it; camera movements never effect it now. I’ve changed the way the camera behaves before the players spawn-in as well to help highlight who the player is actually controlling.

A few other fixes include a bunch of balance changes to how “loud” a lot of things in the game are. Previously, if you set off one alarm, almost the entire level would go crazy looking for you. I’ve tweaked it to be a lot more about small-scale battle and problems so setting off an alarm will usually only cause an alert across maybe the two adjacent rooms at most and won’t mean the entire mission is a write-off.

Something I had to change was the way guns make noise. Now that they’re a lot quieter, it was possible to shoot people really far away and they wouldn’t hear the noise so they wouldn’t “react” (they weren’t programmed to react to pain, just gunshot sounds). I’ve made it so bullets make a “bang” sound when they hit walls or entities now. It’s a quieter sound than an actual gunshot going off, quite literally like the sound of a bullet hitting a wall. I added a little particle spatter when they hit walls, too.

The game really slows down when you get five people all shooting eachother with blood, bullets, shell casing, and little bits of debris flying around. I’m not too concerned with it at this point, though.

Oh, another thing I changed was the way your agents behave when you control more than one. They no longer all try to go to the same tile and start arguing with each-other when someone else gets there first. They now all go to their own tile (after a moment of thinking).

There’s a bunch of other changes made but I really can’t even think of most of them now, I’m not sure if I mentioned yesterday but I’ve made a new “popup” that happens if you try to go through a locked door. Previously there was no on-screen indication that the door was locked; people would just refuse to use the door. Now when they try, it shows a little animation of the “padlock down” floating above the door.

March to PAXAus – Day 23: Campaigns

It’s really getting to the point where I have to make the demo campaigns for the game – I can’t keep running around in placeholder test areas with gaping holes and out-of-place assets from different tile-sets dropped around at random.

working on demo mapsAt the moment I have maybe three campaigns started that are intended to eventually evolve into complete, playable ones. I’ve grabbed one of them and started fleshing it out into a full-sized area and playtesting it using different approaches to make sure it’s able to demonstrate most of the features and options that the player has at this point in the game. To do this I need to give opportunities for the player to either complete objectives using violence, deception, or a mixture of both. I also need to show opportunities where upgrading your abilities will give you different options and approaches to the situations. At the moment you’re not able to collect certain items along the way without setting off alarms unless you’ve upgraded HAYWIRE! to a certain level where it can knock cameras out of commission.

It’s nice to be able to spend a day working on improving the game without having to actually develop new features and systems. Just taking advantage of the game that’s already done and giving the player content to enjoy.

March to PAXAus – Day 22: Bug Smash

The last 24 hours have just been all about getting rid of the many tiny little bugs that plague the overall game-play experience. I just have to go into campaigns and try to play the game and see what goes wrong. It takes such a long time to play test like this because you’re constantly recompiling and replaying the campaigns from the start.

working on AI bugsA short list of things I’ve fixes would include a bug where every door in the hub area changes into a controllable entity after returning from a mission with more than one agent. Creatures that hear a gunshot while trying to fix a computer were glitching out and warping through walls. Creatures that hear a computer needing repairs would go repair it even if they were busy running away scared from an enemy. It was possible to embark on a campaign with no one in your solution so there were no controllable agents. The list goes on and on and it’s been a frustrating experience.

Other than that, I added a couple more tracks to the soundtrack and a lot more lines of “Hint” dialogue text to the NPCs.

Slowly turning this into a game you can “play”.

March to PAXAus – Day 21: Lights, Camera.

I managed to finally fix a fairly massive bug that had been present for months. The way the camera positioned itself relative to the mouse cursor and all your selected units was totally broken where it would get pulled way to close to the units and the mouse wouldn’t be able to move very far at all. This made it really difficult to handle controlling multiple units at a time. Along with that, the camera would jitter like crazy whenever your units would move if you had more than one selected at a time.

lightingI fixed it by totally re-writing the camera locating code using some methods I thought-up while in bed and scribbled down before trying them out the next day. It’s had a really great result and the camera is basically a carbon-copy of the one from Cannon Fodder now which is exactly what I was after.

The other major thing I finished off today was the need to set different lighting strength (lighting is what is drawn when line-of-sight is rendered or bullet tracers) appropriate to each “Company” you can visit in the game. Because the company you see in the screenshot has quite a light coloured floor tileset, it was really hard to see that vision cones. I’ve made it so each company file now has a setting for lighting strength to fix this.

I’ve just been smashing out as many small bugs and missing features as I can in the meantime as well. Getting there slowly. Need to start making a few more campaigns for the PAXAus demo soon.

March to PAXAus – Day 20: Resources and Hints

I spent most of the day learning how to embed icons into Windows executables. It turns out it’s actually pretty complicated. I had to argue with these “resource” and “object” files and embed them into the compile process and it was a totally huge headache. It’s in there now, but that took way longer than it felt like it should have. No more generic QBASIC logo anymore, though.

chat hintsAfter that, I went and re-worked the NPC conversations to actually allow random chatter from a list of available dialogue when you talk them. It’s now geared much more towards explaining what that particular NPC can do for to help you.

Now I’m trying to fix a bug where popup boxes glitch-out and become unresponsive if you try to open them about 100 times in a short period of time.

These are the things that keep me up past midnight on a weeknight.

March to PAXAus – Day 19: Distraction

Well, last night I managed to finish off some trig work I had been struggling with in regards to rendering an arch from one pixel to another. With that done, I’ve been able to add “Throwing” into the game’s projectile system which let me finish off (almost) the last significantly unique ability in the game. The DECEIVE class’ native ability (right-mouse) to distract other agents by throwing a small stone and making noise now works.

distractedI struggled for a time in regards to what should happen if you try to throw a stone over a wall. The obvious choice was to make it bounce off the wall, but it just wasn’t working at all. Mostly because my engine doesn’t treat any walls as being “angled” in any way (they’re just tiles with flat sides) but also because the walls have the illusion of being really short; extremely high throws looked strange when they bounced around. Instead, when you try to throw a stone way further past a wall than you possibly can, the agent doing the throw just casts a beam to find the nearest wall and tries to throw it at that instead so you never actually perform really high throws. I added in some particle effects to go along with the impact for a little satisfying effect, too.

With the actual “throw” working, I needed to get the “distract” going. The throw makes a “sound pulse” which goes through walls. If a creature hears a sound pulse, they decide to investigate it. With a bit of video-game-logic, I made it so they actually walk to the last open-space that the stone passed through before hitting a wall. This way, if you throw a stone at the outside wall of an office that an agent is inside they won’t just look at the wall inside their office, they’ll actually walk outside and look at the side of the wall the stone hit.

With this done, the DECEIVE class now actually has a use for the right-mouse button (where ENFORCE uses it to fire their gun) and the two classes seem to be on much more even ground. Previously the DECEIVE had to rely on HAYWIRE! way too much to get through missions, now you can progress much more smoothly.