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.

March to PAXAus – Day 18: Better Behavior

Until now, the “non combatant” enemy creatures haven’t really had very well working AI. If they saw one of your agents, they’d immediately check to see if there’s an alarm panel somewhere they can use to alert their friends. If they noticed one, they’d go hit the alarm and then go back to their business. This is pretty much their only behavior, if they didn’t find an alarm panel they’d just keep patrolling.

behavingAfter a bit of work I’ve got them doing a bit more now. They’ll immediately search for an alarm panel while running away from whoever they saw. If they realize there’s an alarm panel nearby, they’ll stop running away and run to the panel instead and sound it. After sounding the alarm, they’ll run away from your agent again for a little while before calming back down. If they don’t find an alarm, the initial “run away” just stays in effect and they keep shouting for help every ten seconds or so in-case they get within hearing-range of someone who can come help.

It took a bit of fiddling to get them to behave right, and I still haven’t got them perfectly remembering to “run” the whole time they’re scared (sometimes they just walk away in terror) but the overall behavior seems pretty good for now.

After this was done, I spent more of today working on a few new trigonometric things which I’ll hopefully get working and implemented over the next 24-hours, but we’ll see how it all goes. Math isn’t something I excel at by any means.