Thursday, October 20, 2016

Weekly Update #8

Well, first major slip up in my weekly updates. Oh well. Let's not beat us up over it.

Here some copy pasta from my commit notes:
- Made basic sector map with responsive nodes. Made finish line with curtains.
- Fixed explosion collision detection. Moved gm reference initializations to Start functions. Used SceneManager.activeSceneChanged to get singleton pattern working for gm. Created GameLord to resolve singleton issue. Placed watering holes with Guassian distributed water drops. Placed road blocks. Linked sector map with river level. Removed bird carrying item ability. Created dynamite item for destroying roadblocks. Made bullets die after 5s. Created DamAndWall prefab, scripts. Currently, nothing actually destroys gate. Moved finishLine to child of this. Created shop signs and spread them around.
- Made distance check (haven't tested it). Fixed Leech (test drag removal?). Changed claw controls. Created rock with gem spawns. Created Nuker, Freezer, Lake, Boss, Sunset, SpecialBullet, BrickWall, Nuke, Shade, Target Dot.
- Fixed up shop, added displays. Increasead spawn above rate. Rotated barrier angle. Fixed camera man, issue with bubbles not clamping to screen. Changed up powerbird. Issue with spawner not spawning dots for slice. Made harpoon Die calls used. Started working on Lance.
- Actiavting tetros and river dots piece by piece (and deactivating prev section). Started red shells item. Created sunset mechanic. Hatchling no longer inherits from item. Started lance pick up. Fixed rock gem spawning. Making hatchling survival easier.

So I have been working, just not updating. From testing with friends, there's plenty of bugs. I think the contant rate of spawning enemies isn't good enouggh alone. Want to create waves or surges of enemies or maybe triggers that then release a number of enemies. These sort of monster traps could be placed near watering holes or deposits (rock groupings that spawn the gems). Or near shops. Considering making finer gradation between shops, like repair shop, item shop,...maybe that's it. I will probably lower the rate of constantly spawning enemies, so that alone isn't difficult to deal with. Considering making physical traps for big bird, like big bird gets walled in and can't leave area until all enemies within are killed. Not sure.

I'm getting tempted to go down the new rogeulike designer pitfall path of wanting to include everything. Lately, wanting to make neutral enemies and AI v AI combat, as well as a sort of prayer system. The motivation for the prayer system is a solution to the game state of 0 greyhounds, but a funcional big bird. Maybe just deus ex machina and a stork flies by with baby greyhounds. idk.

I think I'm happy with my 3 current bosses, but need to test them. I want to have more on foot sections, but don't have great ideas and also there's issues with camera and some on foot and some flying players.

Wednesday, October 5, 2016

Weekly Update #7

Created an enemy spawn mechanic which picks a random entry in a list of enemies and spawns just above or to the side of the camera every 2 seconds. This was my basic way of pacing the game. Don't know why there's still fps dips into the 50s every once in a while. Sometimes, it's consistently in the 80s or 90s. Usually, high 60s. Don't have experience using tools to go about optimizing.

Made the tail station work properly with the cockpit station, including boosting and tweaking speed variables. Needs to be tested with two people playing now. Saturday night I'm having people over to play games, so it's sort of a deadline for me to get some more stuff done by then.

Monday, September 26, 2016

WeeklyUpdate #6

I think these posts should be something different that a summary of my repo commits, but summarizing them seems necessary for commentary. I'm going to try copy/pasting.

- Made Spiraler.cs and Bomber.cs. Changed up how Flyer.cs and AI targeting works. Made solar panels and water hose work with Black Bird.
- Made medicine item. Made harpoon reeling in from dock work. Now it detaches when dismounting bird. Started tump baby boss and created accompanying homing missile with capped velocity. Created blood slider and straightforward big bird hp.

So I've done all this work to get around BigBird.cs and BigBirdManager.cs and instead have Carrier.cs and CarrierManager.cs. Hopefully, when multiplayer is implemented, this work will have been worth it. Other than the broadsides, and removal of the coop, I think I've gotten back to full functionality plus more from the Kestrel version of Big Bird.

I believe I'm getting bogged down with wanting to create new mechanics or tweak existing ones. The current storage system and number displays seems bad and awkward with their flipping. The tail rider station doesn't function like it should. Creating the lance item and balloon shield and getting the electric tether and power bird and net and healing and overheating/freezing player mechanic are all things that I would want to do next, but I believe I need to work on game structure. Tweak the rhythm of enemy spawning, created some reasons to explore off the river, get the store system working, get a few basic bosses, and get the level progression working. Then play test and add in new mechanics.

Anyway, one solid day of work was basically all I got done this week. Some of my new sounds are annoying. 

Peace out.

Sunday, September 18, 2016

Weekly Update #5

Was able to put in 3 good sessions this week. I started implementing a dock prep mechanic where a player charges up each dock so that when a Greyhound docks there, it refills its water supply immediately, vs then having to fill up. It takes much less time to prep a dock than to land a dehydrated Greyhound and then slowly fill it. Although, Greyhounds docked automatically fill up and don't require a player there, atm. This is my imitation of Overcooked coop mechanics. I may, alternatively, switch this to being used for healing an injured Greyhound or player. I had this big idea for player injuries, which will prevent players from always and forever just doing one job. For instance, blindness would prevent...maybe most things, or just steering. Dehydration requires player to stay on Big Bird. Now I just had an idea for fatness, which would require a player to ride a Greyhound for a while. Hm.

I haven't played Overcooked, but I've watched it and it seems like once you've "solved" a level, it wouldn't be too interesting to replay. Hopefully, all the real time mechanics in Flock of Dogs will allow for more emergent "puzzles" that would have greater replayability. I'm thinking that there will just be more of a gradient in skill, whereas in Overcooked you see the pattern of the level, and voila, in Flock you begin to see the needs of Big Bird and can respond in a variety of ways, some better than others, as well as depending on the kind of build you go for. I'm considering structuring the game to guide players toward Big Bird builds. Builds could be focused around lots of buffed Greyhounds, or lots of upgraded turrets, or boarding, or Big Bird mobility (maybe), or resource collection/power ups/spells (maybe spells).

Next, I did remove a bunch of unused Bezier stuff, skybox assets, MJSTY assets, which cleaned up the project folder a fair amount. Felt good.

I made a long, handwritten list of items to get into the game by Friday, my play test night. I then went to the next item, which was item stacking for the storage, and got that pretty much working. Not thrilled with the way I'm currently displaying the number of each inventory item in storage (the item sprite is replaced with a sprite with the number of that item in that slot in storage every few seconds, then the sprites swap back). Also, created the Gem.cs with ruby, emerald, and sapphire type items.

Then I added a bunch of sounds. I don't have a particular principled approach for what to look for in a sound. Just getting free stuff as placeholder. Heard in a podcast that "we didn't evolve to be happy" and I don't wan't to forget that line. I think it better as "evolution didn't select for happiness" maybe. Anyway, also heard in a podcast an anecdote about a sound design lead saying that everything that could have a sound, should have a sound. Start there, then subtract, maybe.

I went to the next item on my list which was "2 types of dangerous environs". I started with spikey versions of Big Tetros. Also, made Big Tetros respond to collisions with damage and sound and causing damage, if spikey. Deciding on damage type, given the idea of player injury, Greyhound injury, and player bucking, is a design issue I haven't resolved.

Wednesday, September 14, 2016

Weekly Update #4

Surprised already at weekly update 4. Anyway, got pretty stressed out earlier this week when, after having not touched the game for a while, the frame rate was around 30. I suspected this was because my laptop was unplugged, which is seldom for my working environment, but I've been trying this coffee shop thing lately. Anyway, I double checked my laptop power settings weren't supposed to be "balancing" or in "light" mode and sometimes, when I'd remove Big Bird or turn off various other game objects, the FPS would jump back up to 60+. I tried rolling back and I had the same issue, which really made me think it was plugging in the laptop. Anyway, the whole thing did go away when I got home and did plug in my laptop, but up until I plugged it in I was getting pretty scared and depressed since if plugging in didn't cure the problem, I had zero idea what was up.

The big reason I had started to pay attention to frame rate was that I had, a few weeks ago, started noticing that every second or two the FPS would dip from ~70 to ~45 for a moment or two. It seems this was due to the number of enemies I had started spawning. I've now reduced that number, or rather, not going to spawn them at the same time spread around the map, the plan is to create spawn triggers at various y values. The Sleeper.cs I don't think helps that much with processing, because the box collider has to stay enabled and be always checked if it's colliding with the Alerter circle collider. I also slightly optimized the Flyer.cs code, spreading out range checks to every 3 seconds or so instead of every update. It probably wouldn't be a bad idea to implement some group AI behavior and go through groups of enemies as a list, rather than have AI attached to each one. This might be termed "flocking" but idk. The bigger thing, for optimization needed now, because I don't want to get bogged down optimizing, would be to just implement the spawn triggers.

I created a HUD for the water and solar energies and got drinking/sweating/shield up/shield down working for a generalized Carrier. Removed some other Big Bird specific carrier code. Worked on the Shop and Shopkeeper stuff and made it work with any general Carrier a bit better. Still some issues with it. Found another issue with spawning the giant tetrominoes and used a much more straightforward ClearRiver approach, which, instead of checking for the river when placing tetros by attempting to box cast their colliders at the correct position and correct rotation, I just have a function on each river dot that clears itself of the specified objects. Much cleaner.

Still didn't spend as much time on the game as I'd have liked.

-Max

Monday, September 5, 2016

Weekly update #3

:(

I think I worked on the game for half an hour this week. Started a new enemy type, Floater, that's intended to be a very big, bulky, slow enemy type. I feel bad about not doing more. I wonder about the effectiveness of accountability. Anyway, I knew it was going to be a tough week for productivity. I moved house. I did exercise 7 days in a row. Looking back, there were only a few blocks of time where I could have gotten some programming done, but I'm overall content with most of my decisions on how I spent my time, friend's birthday party, talking with friend on phone, moving, unpacking/cleaning, day job, lots of exercising, dog, watching Mr Robot. Last night, I watched Twitch for a few hours and I've spent probably a few hours on dating apps this week and maybe a little more time on Facebook than I would have liked, so those are the places where I would have preferred opening up Unity and those are my known time sinks. Just gotta get back at it, I suppose.

Sunday, August 28, 2016

Weekly update #2

Been working on the Greyhound attachments, like the barrier and the camera. The barrier is three rectangles arranged to cover a semi circle around a Greyhound to block incoming enemy bullets and also interacts using the ragdoll physics and the rigidbody component of the Greyhound. It can be picked up by simply flying into it and dropped by holding both RB and LB for a few seconds. Once picked up, it orients itself in the direction the player is aiming and blocks incoming enemy bullets and also interacts as a physical collider. Player bullets pass through it and it never wears out. It remains attached to a particular Greyhound rather than a player when docked. When it is unattached and floating in space or when a Greyhound is docked, it folds itself up and looks like a bar with two small bars on top of it.

The camera can be picked up by flying into and allows the rider to control the game camera. The camera can be zoomed in and out, told to follow a particular Greyhound rider or Big Bird. Perhaps other modes, like stay fixed on a boss, or complete manual control, or setting an offset to the object it's following, will be added. It also currently stays with a Greyhound when docked and can be dropped by RB + LB.

Fixed some bugs with enemy target selection and with enemy bullets colliding with the Alerter Big Bird collider.

Made the weapon/holster system more flexible using a List instead of an Array, made the default weapon (machine gun), have infinite clip size and slowed down its firing rate. So now the reload animation doesn't play, but also don't have to worry about indicating to a player when they need to reload or are low on bullets.

Added in Greyhound dying and Greyhound hurt sounds from Jordan. Learned valuable, somewhat obvious lesson from the Game Design Dojo podcasts that putting in placeholder sounds can help with debugging. So I did add a shooting sound and will start adding more placeholder sounds.

Big Tetros (not Mega Tetros) are now destructible and go semi transparent with a high drag surface effector being turned on. Not sure about this, may prefer to split a Big Tetro into Little Tetros.

Some old and some new ideas:
- Tetros spawn rubies, emeralds, sapphires in proportion to their RGB ints.
- Steal mechanic idea from Overcooked for doing dock prep for incoming Greyhounds
- Make peg riders a thing
- Probably go with HUD for water and solar energy, since tanks don't look good on Orca, at the moment.
- Need to make alternate river splits.
- The solar tank bar could lower its max capacity each time it sustains damage, until reaching a port, where it could then be repaired to its original max capacity.
- Tail station boost and reverse
- Need to put back in Greyhound rider cooperative harpooning and just fix harpooning

Anyway, lots of other stuff. Trying to decide when/if to take family money to commit myself to video game design and programming or to continue doing this part time for the next  6 months. I'm feeling ok about the amount of work I got done this week, not great. I did cancel my test night scheduled for tomorrow, since I'm moving on Tuesday. Hopefully, the move will go well and I'll be able to get some good work in this week. Plus, it's labor day weekend, a great weekend for hard labor.

Sunday, August 21, 2016

Weekly Update #1

Hello, time for the weekly update! This is my first Sunday update. My plan is to update every Sunday. The biggest, recent news is that Jordan Gray has provided some sound effects that I plan to work into the game over the next week. They're mostly dog dying sound effects, which is a downer, but remember, the contemplation of death often bears fruit for the living of life! Lately, I've been working on redoing a lot of the code to make it easier for me to rework and rebalance the mechanics of  Big Bird. The other big project was redoing the level generation to include a procedurally generated air river. The plan is that the river will give general guidance to the players, but better players will know when it's a good idea to venture off river. This may work in conjunction with a hydration system, where coasting in the air river costs little to no fuel (note that it's not a water river), but going off river will begin to consume water. The idea is to place floating watering holes around the map and then place water drops on the map proportional to their proximity to a floating watering hole.

The other big thing I've working on since the June demo night has been the tutorial level. It's not procedurally generated, but rather is a hand crafted cave area. It begins with a few cooperation required doors and buttons, which seem glitchy. There's some enemies I'm calling leeches that only attack Big Bird if he's got a water tank attached, and even then, the basic (and currently only) type does no damage, but simply sucks water out and its sack grows. When killed, all the water can be regathered by Big Bird. Then there's some dudes throwing spinning rocks across the corridors you're trying to get through. These are a new damage type that dismount the rider, but do not kill the greyhound.

Destructible environments and threatening environments are things I'd like to implement soon. Work on the store and Big Bird cargo hold/fork lift, then a few bosses, a few more enemy types, then menus, and then polish that for a while. That's my general outline.

-Max

Monday, June 13, 2016

Work has steadily continued. Here is a screen shot of the game in action:



Let me explain what's going on. Big Bird is the ship in the center of the screen. It acts a carrier ship. Players on board Big Bird can man one of several stations or mount a flying Greyhound and undock. There are 4 players active in this game. The white player is riding a Greyhound toward the top of the screen, firing at incoming enemies. The orange player is on board Big Bird, navigating. The teal player and yellow players are in magic bubbles awaiting rescue, since their Greyhounds got destroyed in battle, leaving them stranded. The green space invaders are a basic enemy type. They are attacking Big Bird. The yellow Alakazam is a more complex enemy that has a short range blink ability and a regenerative shield. The orange puff ball enemy turns into a bunch of kamikaze flappy birds upon death. You can see some purple flappy birds on the far left of the screen. The large blue circle is a water source that can refill Big Bird's half depleted water tank. The tetrominoes of various sizes are environmental obstacles. The smaller ones are destructible and, in the future, will leave behind cargo.

Here's a screen shot of a zone or level of the game:


The objective of Big Bird and the flock is to reach the portal at the top right of the zone. There are randomly placed obstacles, enemies, water sources, destructibles, and a shop in the zone. When Big Bird reaches the portal, a new zone will be spawned above and Big Bird continues his journey. The plan is to allow for branching paths to be taken with various zones, each offering different risks, rewards, and gameplay.

Tuesday, May 24, 2016



Hello, world! This is a temporary website during the development of the game currently titled Flock of Birds. Flock of Birds is a cross between Star Fox, The Binding of Isaac, and Lovers in a Dangerous Spacetime. It is a coop twin stick shooter -- with emphasis on the coop. While the game supports single player game play, the preferred number of players is 3+. At present, only local multiplayer is possible. It's built in Unity and being developed for PC to be played with game pads.