This Week For The Flock
I realize I promised I would be releasing in Early Access about this time. And I apologize for not doing that. I offer any Kickstarter backer access to the game's beta builds on Steam. Join the Discord and send me a message. I'm happy about my decision to make the Dog Park (a land inside of Flock of Dogs where you can play minigames). Block Buffet and Whale/Dog are just about done and I've been working out a bunch of networking issues through this. I plan on an archery minigame and sky trail drawing minigame.
Streaming: now (Monday, 3:30 - 6 pm PDT) Open Playtest Tuesday: 10 pm PDT Open Playtest Thursday: 3 pm PDT
Alright. On Friday, I realized an issue with how I've been using the Photon Unity Networking plug-in. I needed to reorder the network messages for when a new player joins. I got pretty scared. Didn't really do any more work the rest of Friday and instead prepared for my Starcraft match (see below). After my match, I ate cereal and thought my issue, but didn't write any code and felt some fear creeping in. The fear is mostly because (a) I do not have access to all of the code from Photon and what if the good/performant/proper solution has to be implemented at a level I do not control? (b) What if I just can't even figure out what Photon is doing with the code I can access? (c) What if my game is bad? (d) What if I'm wasting my life? (e) What if no one loves? (f) What if we're out of milk when I go down stairs for another bowl of cereal? On Saturday, I didn't write any code either and thought about my problem. (I did go to a small celebratory dinner with Patrick of Patrick's Parabox fame and that was great). (Go play the demo, if you like it, buy it). On Sunday, after my first 11v11 soccer game in about 4 months (see below), I dug into Photon's code and found a clear point of intercepting the data I was sending to Photon and how I could stash that temporarily, let some of my other data process first, and then go back to the stashed data and operate on that and felt great relief. After all, it ended up being quite simple. And while I could show you some fun new gifs of the racing minigame, I'm just going to show you these lines of code that aren't that complicated, but I'm very happy about.
This is inside Photon's ExecuteRpc function, where I catch and cache the data of RPCs sent to a newly joined client if they've not yet received the GameStateRPC.
This is my helper class for making a holding the RPCs data as well as some public variables that I can access from my Flock of Dogs code, and finally the public function I can call from my code to execute the cached RPCs after the joining client has processed the GameStateRPC
When you play Flock of Dogs with a friend I use Photon's relay servers to connect you together, because figuring out to properly do that and all is fiddly. When you choose a server city, like San Jose, or Washington DC, that's the location of Photon's relay server. What I mean by relay server is that it's a computer that just relays all our network messages to each other. Remote Procedure Calls (RPCs) are one of the most common types of network messages. What that server doesn't do is run a copy of Flock of Dogs. Photon doesn't know a flying dog is. Doesn't know what a flying whale is. Doesn't remember the color or hat you put on your player character. Almost all it does it receive messages from one player and sends it to the other. Got it? Relay server relays RPCs sent by one player to the others. So what happens when someone joins the game? Well, the relay server sends a special message that "hey, someone new is here! let's party!" But that server can't tell the joining player where the whale should be, how many dogs should be on the whale or in flight, etc. So the thing to do is to have a player who's already in the room and playing Flock of Dogs to send a message to the newly joined player what's up. I default this to the player who creates the room and is designated, in Photon's terms, the "Master-Client". So the problem is that immediately after joining the room, the newly joined player will start receiving network messagse. Messages that were sent by other players before they even knew that someone new had joined. And some of those messages might arrive before the Master-Client's message with the state of the game arrives. So let's say you're the new player. And you join the game. And we're playing with my buddy Ted. And Ted just climbed into the belly of the whale the moment after you joined. So Ted and I receive the message that you've joined the party. And we're super happy to have you here. So I pack up the state of the game and send you all this exciting into a giant byte array to tell you about the wonderings goings-on of the game. And immediately after it, I get a message from Ted, "Hey, Max, I just climbed in to the belly of this awesome sky whale!" and I'm like...oh...oh shit. I didn't tell the new guy about that. And you, new guy, you're eagerly awaiting the game state RPC, the invitation to the ball, because you've heard all these amazing things aboud Flock of Dogs, and you've gotten everything prepared, you have all these cool lines of code that tell you what to do, if you receive certain data from the network. Then sure enough, the network mailman knocks on your door and passes you this network message, but it's not the one you've been waiting for! It's from some guy, Theodore, who says I just hopped off my blue Dalmation midflight into the belly of our whale, while holding a key. And you're like "what's a Dalmation?" And you get scared. And you freak out. And you start crying. And then the network mailman says "oh, yeah, this other message came for you right after that" and yes, it's the whole game state and it tells you where the whale is and the color and breeds of the dogs and the colors and names of the players, and where the islands are and the trees and the stone steppes and the tetris pieces...but you try to read it, but with all those tears in your eyes, you get confused, it's all blurry. And it's a big mess. And maybe you're able to live with this mess for a little while, but probably not. And then the game crashes or you disconnect, or more likely, you just see a blue Dalmation stuck in the air, not flapping her wings, not part of the Flock. It's all very sad. Anyway, I think i've fixed this with a little interception method.
Yesterday, I played my first 11v11 soccer game since Dec 5th. I played very badly and then I played very goodly. I did miss my one shot after a nice couple of passes I was free about 16 yards out, the keeper had come out a little and cut down my angle, but I should have put it away. I hit it off the post though. We won 4-1. This was actually a play off game, but we're the 1 seed maybe? We're all very confused about the competition, because there's the league cup, the Master's Cup, and one of our season games got rained out and some people thought this was a make up game for that. Anyway, I mostly played forward and one of the long balls I was contesting, I stepped on the defender's foot. I turned to apologize and he was pretty pissed off and said that I hadn't been looking at the ball at all and had done it intentionally. I remembered what Tony told me about a month ago when I showed up to our little pickup game with my knee brace on for the first time. As I was lacing up, he touched my knee brace and said "This? This is no good. You can play with it here, because maybe we like you. But guys will come straight for this." Idk, in most of my years playing, I never felt that targetted or that players ever really went after someone with a knee brace on. But still, I was scared that that defender was going to come at me and sure enough another ball over the top and I hesitate, but it didn't matter. The ball was over hit and flew well over both of us, but he did a little lunge at me and hissed or kinda went "boo", and I flinched, but I also kinda giggled. We were winning 4-1 at that point anyway and the other team was pretty deflated. I'm very happy to be back.
On Friday rnight I had my first match of the Coach-Pupil League (CPL) for foreigner Starcrat Brood War players. This is the first week of season play, and I had said I would only play if we were short on players. We were short on players. Since I struggle with balancing playing video games with the rest of my life, my Starcraft rule generally has been to only play during the CPL seasons, when I can play within a community and not just endlessly, and lonely-ly, grind for a high rank on the anonymous ranked ladder. And I had stuck to my rule and hadn't been playing. This also means that I am, as they say, rusty. It was a pvz against viletomato (Protoss vs Zerg, I play Protoss) (best of 3) (note: Viletomato beat me during pre-season with a "9-7-3", a variant of 3 hatch hdyra timing attack) The modern way of playing against zerg as the protoss is to "gateway expand". The older way is to "forge expand". In the case of a gateway expand, you can immediately build zealots and attack, but you risk being counter attacked. In the cowardly forge first method, you build cannons to defend and cower behind your cannons. I had been able to get in two practice sessions, one with the assistant coach, ModeratelyChill, and another session with Lightswarm, the team coach. They recommended I play forge first. I played forge forge first. Okay, listen, with forge first, if you're not super duper cowardly, you only build 1 cannon. So I'm only a small coward and so I built 1 cannon. This is kinda safe, but still would fall to any number of lings greater than 4. In order to know what's coming, you send your probe (basic, worker unit) to go scout and hope you find their base fast and see any zerlings they make. My scout probe was brave and smart and found Viletomato right away and caught sight of the 6 putrid zerglings he had rushed out. I swiftly pulled probes from my main base and sent them to my natural. Now, there's many things to consider when using your fragile probes to protect your photon cannon. (1) Probes are not great at fighting and die fast (2) If you pull extra probes to make the fight easier, that means fewer probes mining (3) If he sees a lot of probes, he may not attack in and your probes sit there like dumbasses (4) If you surround your cannon, he may run his lings right by and into your main base! I first held them in a line blocking the path from my natural to my expansion, waiting to see what he would do and hoping to react fast enough to save the cannon if he want for the cannon. He went for the cannon. I sent my probes in to the rescue, he got thru the cannon's shield and most of its hit points and you could see blue flames all over it, but it remained standing and the vile zerglings of Viletomato all were squashed like squishy tomatoes and I cried "Ketch-Up!" as their red blood blotted the terrain. My scout probe had remained alive, ignored, in his base, so I now could easily see that I was way ahead, and while later he tried a sneaky quick tech to mutalisk, he had 0 ground army and was crushed. In game 2, I also opened forge first and this time he did not try a ling rush, but went back to his 9-7-3 build and while I lost my 1st scout probe, and my 2nd, my 3rd scout probe was able to sneak in (posthumously, I named my 3rd probe Paul "the probe" Revere) and witness the hydralisk den, before meeting his demise. I was able to get up defenses and stop the hydra timing attack. I was way ahead after that, played safe and secured the win. maaaaxaxa 2-0 viletomato My team's name this season is United Emu Directorate. I did not vote for that name.
[ 2022-04-04 22:46:40 CET ] [ Original post ]
HEY BIG ANNOUNCMENT
I realize I promised I would be releasing in Early Access about this time. And I apologize for not doing that. I offer any Kickstarter backer access to the game's beta builds on Steam. Join the Discord and send me a message. I'm happy about my decision to make the Dog Park (a land inside of Flock of Dogs where you can play minigames). Block Buffet and Whale/Dog are just about done and I've been working out a bunch of networking issues through this. I plan on an archery minigame and sky trail drawing minigame.
Schedule
Streaming: now (Monday, 3:30 - 6 pm PDT) Open Playtest Tuesday: 10 pm PDT Open Playtest Thursday: 3 pm PDT
Some Exciting Code
Alright. On Friday, I realized an issue with how I've been using the Photon Unity Networking plug-in. I needed to reorder the network messages for when a new player joins. I got pretty scared. Didn't really do any more work the rest of Friday and instead prepared for my Starcraft match (see below). After my match, I ate cereal and thought my issue, but didn't write any code and felt some fear creeping in. The fear is mostly because (a) I do not have access to all of the code from Photon and what if the good/performant/proper solution has to be implemented at a level I do not control? (b) What if I just can't even figure out what Photon is doing with the code I can access? (c) What if my game is bad? (d) What if I'm wasting my life? (e) What if no one loves? (f) What if we're out of milk when I go down stairs for another bowl of cereal? On Saturday, I didn't write any code either and thought about my problem. (I did go to a small celebratory dinner with Patrick of Patrick's Parabox fame and that was great). (Go play the demo, if you like it, buy it). On Sunday, after my first 11v11 soccer game in about 4 months (see below), I dug into Photon's code and found a clear point of intercepting the data I was sending to Photon and how I could stash that temporarily, let some of my other data process first, and then go back to the stashed data and operate on that and felt great relief. After all, it ended up being quite simple. And while I could show you some fun new gifs of the racing minigame, I'm just going to show you these lines of code that aren't that complicated, but I'm very happy about.
This is inside Photon's ExecuteRpc function, where I catch and cache the data of RPCs sent to a newly joined client if they've not yet received the GameStateRPC.
This is my helper class for making a holding the RPCs data as well as some public variables that I can access from my Flock of Dogs code, and finally the public function I can call from my code to execute the cached RPCs after the joining client has processed the GameStateRPC
Some Technical Details (this ended up being way longer that I Imagined, and you might think more details would mean even boringer Writing, but It's filled with drama)
When you play Flock of Dogs with a friend I use Photon's relay servers to connect you together, because figuring out to properly do that and all is fiddly. When you choose a server city, like San Jose, or Washington DC, that's the location of Photon's relay server. What I mean by relay server is that it's a computer that just relays all our network messages to each other. Remote Procedure Calls (RPCs) are one of the most common types of network messages. What that server doesn't do is run a copy of Flock of Dogs. Photon doesn't know a flying dog is. Doesn't know what a flying whale is. Doesn't remember the color or hat you put on your player character. Almost all it does it receive messages from one player and sends it to the other. Got it? Relay server relays RPCs sent by one player to the others. So what happens when someone joins the game? Well, the relay server sends a special message that "hey, someone new is here! let's party!" But that server can't tell the joining player where the whale should be, how many dogs should be on the whale or in flight, etc. So the thing to do is to have a player who's already in the room and playing Flock of Dogs to send a message to the newly joined player what's up. I default this to the player who creates the room and is designated, in Photon's terms, the "Master-Client". So the problem is that immediately after joining the room, the newly joined player will start receiving network messagse. Messages that were sent by other players before they even knew that someone new had joined. And some of those messages might arrive before the Master-Client's message with the state of the game arrives. So let's say you're the new player. And you join the game. And we're playing with my buddy Ted. And Ted just climbed into the belly of the whale the moment after you joined. So Ted and I receive the message that you've joined the party. And we're super happy to have you here. So I pack up the state of the game and send you all this exciting into a giant byte array to tell you about the wonderings goings-on of the game. And immediately after it, I get a message from Ted, "Hey, Max, I just climbed in to the belly of this awesome sky whale!" and I'm like...oh...oh shit. I didn't tell the new guy about that. And you, new guy, you're eagerly awaiting the game state RPC, the invitation to the ball, because you've heard all these amazing things aboud Flock of Dogs, and you've gotten everything prepared, you have all these cool lines of code that tell you what to do, if you receive certain data from the network. Then sure enough, the network mailman knocks on your door and passes you this network message, but it's not the one you've been waiting for! It's from some guy, Theodore, who says I just hopped off my blue Dalmation midflight into the belly of our whale, while holding a key. And you're like "what's a Dalmation?" And you get scared. And you freak out. And you start crying. And then the network mailman says "oh, yeah, this other message came for you right after that" and yes, it's the whole game state and it tells you where the whale is and the color and breeds of the dogs and the colors and names of the players, and where the islands are and the trees and the stone steppes and the tetris pieces...but you try to read it, but with all those tears in your eyes, you get confused, it's all blurry. And it's a big mess. And maybe you're able to live with this mess for a little while, but probably not. And then the game crashes or you disconnect, or more likely, you just see a blue Dalmation stuck in the air, not flapping her wings, not part of the Flock. It's all very sad. Anyway, I think i've fixed this with a little interception method.
Miscellaneous Soccer Update
Yesterday, I played my first 11v11 soccer game since Dec 5th. I played very badly and then I played very goodly. I did miss my one shot after a nice couple of passes I was free about 16 yards out, the keeper had come out a little and cut down my angle, but I should have put it away. I hit it off the post though. We won 4-1. This was actually a play off game, but we're the 1 seed maybe? We're all very confused about the competition, because there's the league cup, the Master's Cup, and one of our season games got rained out and some people thought this was a make up game for that. Anyway, I mostly played forward and one of the long balls I was contesting, I stepped on the defender's foot. I turned to apologize and he was pretty pissed off and said that I hadn't been looking at the ball at all and had done it intentionally. I remembered what Tony told me about a month ago when I showed up to our little pickup game with my knee brace on for the first time. As I was lacing up, he touched my knee brace and said "This? This is no good. You can play with it here, because maybe we like you. But guys will come straight for this." Idk, in most of my years playing, I never felt that targetted or that players ever really went after someone with a knee brace on. But still, I was scared that that defender was going to come at me and sure enough another ball over the top and I hesitate, but it didn't matter. The ball was over hit and flew well over both of us, but he did a little lunge at me and hissed or kinda went "boo", and I flinched, but I also kinda giggled. We were winning 4-1 at that point anyway and the other team was pretty deflated. I'm very happy to be back.
Miscellaneous Starcraft Update
On Friday rnight I had my first match of the Coach-Pupil League (CPL) for foreigner Starcrat Brood War players. This is the first week of season play, and I had said I would only play if we were short on players. We were short on players. Since I struggle with balancing playing video games with the rest of my life, my Starcraft rule generally has been to only play during the CPL seasons, when I can play within a community and not just endlessly, and lonely-ly, grind for a high rank on the anonymous ranked ladder. And I had stuck to my rule and hadn't been playing. This also means that I am, as they say, rusty. It was a pvz against viletomato (Protoss vs Zerg, I play Protoss) (best of 3) (note: Viletomato beat me during pre-season with a "9-7-3", a variant of 3 hatch hdyra timing attack) The modern way of playing against zerg as the protoss is to "gateway expand". The older way is to "forge expand". In the case of a gateway expand, you can immediately build zealots and attack, but you risk being counter attacked. In the cowardly forge first method, you build cannons to defend and cower behind your cannons. I had been able to get in two practice sessions, one with the assistant coach, ModeratelyChill, and another session with Lightswarm, the team coach. They recommended I play forge first. I played forge forge first. Okay, listen, with forge first, if you're not super duper cowardly, you only build 1 cannon. So I'm only a small coward and so I built 1 cannon. This is kinda safe, but still would fall to any number of lings greater than 4. In order to know what's coming, you send your probe (basic, worker unit) to go scout and hope you find their base fast and see any zerlings they make. My scout probe was brave and smart and found Viletomato right away and caught sight of the 6 putrid zerglings he had rushed out. I swiftly pulled probes from my main base and sent them to my natural. Now, there's many things to consider when using your fragile probes to protect your photon cannon. (1) Probes are not great at fighting and die fast (2) If you pull extra probes to make the fight easier, that means fewer probes mining (3) If he sees a lot of probes, he may not attack in and your probes sit there like dumbasses (4) If you surround your cannon, he may run his lings right by and into your main base! I first held them in a line blocking the path from my natural to my expansion, waiting to see what he would do and hoping to react fast enough to save the cannon if he want for the cannon. He went for the cannon. I sent my probes in to the rescue, he got thru the cannon's shield and most of its hit points and you could see blue flames all over it, but it remained standing and the vile zerglings of Viletomato all were squashed like squishy tomatoes and I cried "Ketch-Up!" as their red blood blotted the terrain. My scout probe had remained alive, ignored, in his base, so I now could easily see that I was way ahead, and while later he tried a sneaky quick tech to mutalisk, he had 0 ground army and was crushed. In game 2, I also opened forge first and this time he did not try a ling rush, but went back to his 9-7-3 build and while I lost my 1st scout probe, and my 2nd, my 3rd scout probe was able to sneak in (posthumously, I named my 3rd probe Paul "the probe" Revere) and witness the hydralisk den, before meeting his demise. I was able to get up defenses and stop the hydra timing attack. I was way ahead after that, played safe and secured the win. maaaaxaxa 2-0 viletomato My team's name this season is United Emu Directorate. I did not vote for that name.
Flock of Dogs
Max Clark
Max Clark
Early Access March 2022
Indie Adventure Singleplayer Multiplayer Coop
Game News Posts 27
🎹🖱️Keyboard + Mouse
🎮 Full Controller Support
No user reviews
(0 reviews)
https://www.flockofdogs.com/
https://store.steampowered.com/app/812380 
[1.86 G]
FLOCK OF DOGS is a wild 1- to 8-player couch co-op adventure. Mount your winged dog to join the flying crew of dog riders. Then with your brother and sister dog riders, navigate treacherous and wonderous skies, solve environmental puzzles, and engage in high flying twin stick shooter battles. Soar through the air, wield harpoons, carry solar panels, fire cannonballs, pick apples, mop dirt, read maps, take naps, and make life long friends with a flying whale. Together, go on a road trip through the sky with handmade and procedurally generated levels. Discover secrets, defeat enemies, and achieve the great symbiosis of dog, whale, and rider!
UP TO EIGHT PLAYER LOCAL CO-OP
2 to 8 players (or 1 player with a magic whale whistle) need to work together to guide the flock. Many weapons and tools require teammwork, such as the hose + mop, the triplicator shield, and the electric clothesliner. Progression is largely linked to the dogs and the sky whale, allowing individual players to drop in/drop out at any time.
TEND TO YOUR FLOCK
Care for your feathered canines by providing food and water, and teaching them new tricks such as rollover, bite, and play dead. Raise the next generation of puppies to ensure the survival of the flock.
ATTACH EQUIPMENT TO YOUR WHALE
Stash items and resources in the belly of the whale. Visit the whalesmith to buy whale attachments such as a horn drill, spot light, solar shield system, and anchor.
DYNAMIC ENVIRONMENTS AND CHALLENGE
Many paths lay before the flock and decisions along the journey will affect the story's end. Daring teams of clever dog riders can choose routes with devious monsters and puzzling mysteries. While others may choose leisurely routes with comfy sky inns, (mostly) friendly flying creatures, and brightly lit sky canyons.
UP TO EIGHT PLAYER LOCAL CO-OP
2 to 8 players (or 1 player with a magic whale whistle) need to work together to guide the flock. Many weapons and tools require teammwork, such as the hose + mop, the triplicator shield, and the electric clothesliner. Progression is largely linked to the dogs and the sky whale, allowing individual players to drop in/drop out at any time.
TEND TO YOUR FLOCK
Care for your feathered canines by providing food and water, and teaching them new tricks such as rollover, bite, and play dead. Raise the next generation of puppies to ensure the survival of the flock.
ATTACH EQUIPMENT TO YOUR WHALE
Stash items and resources in the belly of the whale. Visit the whalesmith to buy whale attachments such as a horn drill, spot light, solar shield system, and anchor.
DYNAMIC ENVIRONMENTS AND CHALLENGE
Many paths lay before the flock and decisions along the journey will affect the story's end. Daring teams of clever dog riders can choose routes with devious monsters and puzzling mysteries. While others may choose leisurely routes with comfy sky inns, (mostly) friendly flying creatures, and brightly lit sky canyons.
MINIMAL SETUP
- OS: Ubuntu 12.04 or later
- Processor: Intel Core 2Memory: 4 GB RAM
- Memory: 4 GB RAM
- Graphics: OpenGL 2.0 CompatibleNetwork: Broadband Internet connection
- Storage: 2 GB available space
- OS: Ubumtu 16.04
- Processor: Dual Core 1 Ghz+Memory: 2 GB RAM
- Memory: 2 GB RAM
- Graphics: 128 MB of Video Memory
- Storage: 40 MB available space
GAMEBILLET
[ 5945 ]
GAMERSGATE
[ 3223 ]
FANATICAL BUNDLES
HUMBLE BUNDLES
by buying games/dlcs from affiliate links you are supporting tuxDB