Monday, June 10, 2019

Arms of Flock of Dogs

A long time ago, I had 4 guns you could equip in Flock of Dogs. The shotgun, the sniper, the battle rifle, the assault rifle, and the pistol. Inspired by Halo, as placeholder weapons. You can see a floating machine gun sprite below:

Eventaully, I removed them from the game and limited players to only use what had been the pistol, but with an infinite clip, and then worked on other parts of the game. And over time, I've felt that I wanted to move the focus away from ranged combat for 3 reasons:

1. Ranged wants to keep their enemies across the screen from them, which means that if there's multiple dog riders targetting different enemies, it gets awkward for them to manage their screen space.

2. Visually very cluttered with everyone's projectiles flying everywhere.

3. Upgrades for ranged weapons usually means more projectiles, faster, bigger. These aggravate the above issues.

So anywayaya. I've made 4 weapons. They are a bow, flail, lance, and shield.

Arrow damage: 8 points
Knockback: 12 units of force
Range: 60 units of distance
Auto draw time: 0.33 s
Bow rotation speed: 720 degrees / s

The bow is fairly straightforward now. Initially, I had you manually draw the bow and struggled with the decision of what happens if you do not fully draw your bow: a weak attack or no attack? If a weak attack, how is that visually communicated? Does the bow automatically fire the direction you're aiming, or is there a bit of drag between your actual input and the rotation of the weapon? (that was a decision I had to make for the lance and shield too). Considering that you'll be doing lots and lots of shooting, it would simply be annoying to fail your shots. Which is, in fact, how pretty much every bow works in video games. The idea of a weaker attack, in the context of this game, seems difficult to communicate and unnecssary.

Flail ball damage: 9 points
Flail ball knockback: 8 units of force
Flail max angular velocity: 1080 degrees / s
Flail min angular velocity: 360 degrees / s
Time to increase angular velcoity from min to max: 2 s
Range: ~5.5 units of distance 

Of course, the first thought for a melee weapon was a sword, which I had actually made a few months ago as an upgrade for the mop, but that may get tossed at this point. I wanted one weapon that wouldn't actually require use of the 2nd thumbstick (aiming). This provides a lower skill floor and a kind of accessibility. The flail fit that perfectly. I experimented with slowing down your movement speed whilst flailing, but it's already somewhat challenging to close in on enemies considering the flail has the shortest range of the current weapons anyway. Plus, what's really the harm in allowing players to be constantly flailing? There may come a time when there's a cost to that, if I decide to implement weapon durability.

Lunge thrust damage: 20 points
Lunge knockback: 15 unity of force
Lunge range: 13 units of distance
Poke damage: 2 points
Poke knockback: 3 units of force
Poke range: 8.5 units of distance
Charge up time: 0.0625 s
Lunge duration: ~ 0.3 s
Poke duration: ~ 0.1 s
Lance rotation speed: 360 degrees / s

The lance delivers a lunge attack if your momentum in the direction of your attack is above a small threshold. Otherwise, it just does a poke. Both attacks can pierce (do damage to multiple enemies). Whereas with the bow I opted not to have a half charged attack option, delivering a well executed attack is everything with the lance and the damage it does matches that. The input is such that if you pull the trigger and hold it, you won't attack until you release. If you just pull and release immediately, your character will complete fully pulling back the lance, and then attacking (thrust/poke). I experimented with just requiring you to charge up the lance fully to do a lunge, and also not having two types of attacks, but rather you just fail to attack if you don't fully charge up. But the idea of flying to the right and then being able to to a lunge thrust backwards, against your momentum, doing full damage, upset the combat realist in me. Currently, I don't check your momentum until the lance has been fully 'charged' or brought back in preparation to strike, which takes like .0625 seconds. I may instead do the check at the time you start 'charging up' your attack, but then I'll hvae to handle the case where you choose to hold the lance in its charged up state. idk.

Time to expand shield: 0.1 s
Shield bash range: 2.5 units of distance
Shield knockback:  20 units of force
Shield holder speed reduction: (uses a air resistance formula based on the square of the velocity of the player)
Shield rotation speed: 1080 degrees / s
Shield expanded rotation speed: 90 degrees / s

The shield slows your movement when it's expanded. It also cannot be aimed as quickly when it is expanded. It also delivers a shield bash when it is expanded. Before I had the idea of expanding it, it was very simple, you just moved and aimed. I knew I wanted a shield bash, however, and I didn't want to involve a second button in weapon usage. I didn't want the player's movement to be permanently retarded by just simply having the shield, so the idea of 'wielding it' or 'holding it up' popped into my mind. So that became the unfurling of the shield.

Their visual polish is not complete and there are some systems (upgradability, durability, solar energizability) that I'm considering. At the moment, I'm more interesting in developing these 4 weapons, rather than making a large arsenal to choose from. These could take many forms. What I'm leaning towards is a small weapon rack on board the whale where you can swap out which weapon you're actively using. This would work similarly to how I had harpoons in the game previously, which I may bring back. So at any time, you can hold 1 weapon and 3 harpoons. Maybe. Or maybe harpoons act as another weapon. And maybe you can have 2 weapons at any time. I lean away from upgrades and prefer the idea of using the solar power as temporary power boosts to weapons that perhaps allow for their special attacks. I think this may be the place where I reincorporate my previous features of the replicator shield (a shield that triples your allies shots that pass thru it) and the electric tether (a rope attached between two players that electrocutes the enemy when they cross it).

By durability, I refer to the weapons being breakable/consummable. The idea of durability just ties into the greater design goal of symbiosis of whale, dog, and rider. The whale needs the riders to fight off attacks and the rider needs the whale to hold its weapon stores. However, issues arise when you're (a) out of weapons completely, (b) how to indicate a weapon's current durability hp, (c) when you swap out a half used up weapon for a fresh one at the weapon rack, (d) determining how each weapon loses its durability. I have some soultions for this, but maybe it will just be annoying to have your weapons wear out on you? There's this general concept of the dog and rider pit stop, which I believe is a very big part of the symbiosis experience I'm trying to design. The pit stop goes something like this: dog and rider have been flying around collecting resources, enganging in combat, landing on islands, whatever. Now the dog is low on water, perhaps its lost a few hearts, and the rider's weapon is broken, and there's a ruby the player has just found. So this is a perfect time for a pit stop. The rider can fly back to whale, dock the dog, walk the ruby up to the whale's mouth, grab a new weapon. The dog gets sprayed down, and fed, and takes a brief nap. And then the rider mounts back up and heads back in the blue skies.

Anyway. I'll talk about the dogs' hydration and food systems anoyther time. I've changed them slightly.

My favorite weapon is the lance! Yayaya!

Tuesday, February 5, 2019

Getting Good at Grass


I've been working steadily on Flock of Dogs.

According to my standard for myself, I'm pretty happy with the amount of work I've done in the last few months. The online networking code works decently well all things considered. I held my 2nd online Flock of Dogs playtesting and while we found a bunch of bugs, I've fixed a bunch of them immediately after the playtest.

I've recently decided it's time to do a big, (probably) penultimate, art pass. Starting primarily with environment art, following in the style of the Dr. Seuss-like trees I've blogged about. Basically, using a sort of ink-imitation line art, filling sections witih solid colors and using hashing and contextual black lines for shading. I am going to be trying to get good at using my tablet, instead of the mouse, because that should pay off in productivity eventually. (I've used the mouse for the treehouse, the dogs, and the players, with some very rough pencil sketches that I uploaded iPhone photos of and then traced over). My tablet is small and cheap, but functional and I'm going to switch from using GIMP to Krita after spending some time looking into it. Krita has a good, new community, handles animation way better, and the aesthetics of it are much preferable. I even prefer its name and icon, which like is a sad subsittute for the tactile satisfaction of actual brushes, canvases, paint, or polymer clay and a knife. (Maybe I should get a mechanical keyboard......)

Here's the islands I drew (still using mouse in GIMP, but after this blog...tablet and Krita!):

For reference, here's a really old screenshot, a kinda old screenshot, and a brand new screenshot:

These most recent iterations on islands will probably be final art. I'll draw a bunch of them, and then they'll be procedurally dropped into levels. Or for hand made levels/areas, I'll pick which ones to use and/or draw custom ones. Same process for the other environments in the game.

I've removed Twitter and Instagram from my phone (after having removed dating apps some time before) and I'm happier for it. I'm going to try harder to blog and post on Twitter/Instagram in intentional, consistent ways. But I'm not going to beat myself up over it. I only beat myself up over losing in soccer and not flossing and not working on actual game development. I've been on a good streak in 2 of those things. The flossing is a struggle.

Peace out.