Monday, July 23, 2018

You Leave Me No Choice But to Smoke You Out

Now, adding fire as an environmental hazard is nothing new in video games. But howabout smoke that gets your whale smokey so you have to use your mop more? Pretty dope.

Everyone knows whales love to roll around in fluffy smoke stacks. Now that I say that, I realize that I programmed a whale roll ability a long time ago, but didn't do that in this gif below. Oh well.

You can't tell from the gif, but when dogs fly into the flames, they take damage. And yes, I do realize that the flames and the mud and the smoke currently do not affect the enemies, but that's on my to do list. As well as a adding whale and dog medicine for smoke induced asthma. And maybe like the fire can be used when the flock goes camping and someone wants to make hot dogs or whatever.

Also, piles of dirt. Piles of dirt that splash mud on your whale so that you can use your mops more!

There's no limits on how dirty a whale can get.

Sunday, July 22, 2018

Getting Ready For LA Game Night: Level 3

So at the LA indie Meetup, I met a guy who has just started hostong indie game devs night at a bar in Hollywood. And now, Flock of Dogs will be there yipeee!

It's free, it's a bar that's themed after the Star Wars cantina, which is kinda cool, but it's so hard to love something so broken. By which I mean, Star Wars. The bar is cool. There'll be like 3-4 indie games being showcased and then several of the booths at the bar will have old school games set up, like Goldeneye, Mario Kart, Smash Bros. Beware. Parking isn't easy!

Anyway, in anticipation of this, I've gone back to smoothing the opening of Flock of Dogs. When I describe the changes, they sound very minor, but this whole 'teach without telling' approach that I value so much has been challenging to implement and I'm only getting there by bits and pieces. For instance, last night, night before last, I demo'd the game with 4 non-video game players and 1 grown up ex-video game player.

(They also found a new bug that like any of you reading this never did! Which is that if you place an item at the top of the ladder inside the treehouse on the 1st floor of the treehouse, in just the right spot, when you get off that ladder you can be forced out of the treehouse and then you can walk around in the sky! It's funny how excited that makes people and it makes me wonder if it's just like...better to leave that kind of thing in. It was a recoverable situation, all that sky-walker had to do was walk next to the ladder, or sky walk up to the nests and get on a dog.)

They struggled and solved many things, like many groups of players have and that was rewarding, such as "Oh! I can get water from the cloud!" and "Can the whale fly? Oh my god" and with my new mop and hose delivery animation in conjunction with the new environmental hazard: the dirt pile, they figured out the purpose of mopping! Anyway, they struggled a lot with getting out of the treehouse beds and up and down the ladders. It's strange how with more experienced players, I've seen these same struggles, but because they figure out it quickly, I haven't considered changing certain design stuff, but really, I shouldn't ignore what a player's intuitive understanding of how the ladder should work in the treehouse, regardless of how quickly they figure out how it actually does work. For instance, when players are trying to climb up to the dog nests, it seems weird you can walk up the nearly vertical branches of the left and right of the treehouse but not up the trunk on the 2nd floor. So I extended the 2nd floor ladder by a bit and now you can go straight up to the top dog nest. You can see the slight difference below, but I think this will be a significant anti-frustration change for some players.

Also, there's not really much of a purpose in ever getting back into the beds at the start of the game, except for the simple thrill of it (which I do enjoy), but they cause a lot of frustration and confusion when people keep accidentally going back to bed. And most new players are just trying very hard to just do 'the right thing' and not test the limits of the game's rules. So I just simply made the beds' hit boxes waay smaller. I also removed the instruction to 'Press X to Grab' which gets in the way in those first few seconds because then players start grabbing their blankets prematurely. And while I could just disallow all this 'unwated behavior', I would never do that. Discovery and world interactivity are super important to me. It's just a question of matching intentionality to player input, which is hard. Also, I made the tree carvings different colors and the camera now starts zoomed waay in, until at least one player has made it out of the treehouse, then it zooms back. This will help players (a) read those instruction tree carvings and (b) it creates a island reveal moment, which is cool. These design decisions seem clearly like good to me ones and they've been sitting in front of eyeballs for 6 months. Anyway, feels good to make improvements, even if they're slow in the coming. And the results will be tested July 29th at Scum & Villainy!

And I've made other changes too!

Thursday, July 5, 2018

Californian Independents

I have now attended meetups of both the Indie Dev Club (the LA indies) and OC Indie Developers. The LA meetup was at a bar and had a lot of people showing up for the first time. Probably more audio devs than game devs. Around 30ish people showed up and I was able to demo my game along with a few other games on a crowded wood table on a back patio with no power outlet. A little awkward.

I met several people and made some connetions and missed some connections. First, there was Evan from Ohio who'd just moved to LA to work for a tech startup after spending 5 years as a solo indie dev and having no success. He said he wanted to warn people to not go full time. Whoops. He and I did get along tho, just chatting about the games we liked and didn't like. He made an arena shooter where you play as a laser crab like thing and that can climb walls and lunge at people.

His laptop ran out of power before mine and then he decided to leave, so I didn't get to play it. By the time my laptop got low on power, the one table in the back patio that was near an outlet was available to I moved to that one.

So, you think it's infuriating to watch well intentioned lovely people struggle to play your game? Well, watching a mildly interested drunk Australian who frequently receives text messages was the worst. We may end up being friends, because he was a chill dude and I saw him at another LA game relate event, so if he reads this, oh well. But man.

Also, two men in collared shirts and ties approached me and turned out to be a principal and a teacher at a local elementary. They saw my game and people playing it and wanted to know what was happening. I explained we were part of a meetup. They were interested in having me/us come to their school and teach kids programming for games. They were also very drunk. I directed them to out meetup coordinator and gave them my number. I don't think anything's come of it. You know, I'm like that super hot girl at the bar who gave her number to a guy who's just too scared to call back because I'm just so super hot.

So while the LA indies was like at a cool bar, but outdoor on a back patio with no outlets, the Orange County meetup was at a tech office space with excellent graphically designed logos in a business park in Irvine. All nerdy dudes and no women, with a formal structure of each game being demo'ed one at a time. And free pizza. It effectively had something that I've been wanting the Boston indies to do: a focus group experience. While the other games were single player, I was able to have 8 guys playtest my game for 15 minutes and then the whole group listened to me explain abotu the game and then I posed a few questions and got some helpful feedback.

Specifically, I told them my struggle with playeres identifying themselves at the start of the game.  Some players very quickly leave the treehouse and then deciding on whether or not to zoom the screen out or follow them is tricky and so I had been thinking about adding a player select screen. Somebody proposed using just the treehouse as a starting level and everyone can still wake up there and then once every player has gone down the ladder, it transitions. This was a pretty elegant solution, I thought. Better than my half bakead idea of using the cloudy background and players 'waking up' in the clouds and then when everyone's ready, it drops away.

I have sorta implemented this, but not exactly. What I've currently done is to make the island the treehouse is on much smaller and to immediately zoom out to the normal viewing distsance as soon as one player leaves the tree, instead of waiting for the whold group. This way, no matter where you walk on the island, and no matter if other players are still in the treehouse, everyone's on the screen together. The issue remains though that if someone climbs up to the dog nests and takes flight, then the camera has to choose whom to keep on screen. I'm considering starting with the nests empty and the players have to work together to summon their dogs. As in, if 5 people are awake (read: 5 people are playing), then all 5 have to climb down from the treehouse and simultaneous light a magic fire that will summon the dogs. Or something. This means that no one will be able to get off screen until everyone has figured out what color they are, which buttons are A and B, and how walk around.

Anyway. I'm going back and forth working on that and network code. I'm excited about these indie groups. Especially 2 of them! I get to go to 2 meetups a month, which is good, because it gives me deadlines that aren't too stressful, but still motivating, and they also have cool people into gaming, which is nice.

Thursday, June 28, 2018

Flock of Dogs Online

So there's not much to show, literally, for progress on game. I'm just redoing everything with networking!

There's basically been three things to solve. How to connect players' computers through the internet, how to sync things between those computers during gameplay, and how to sync computers that join late.

I've opted to use the Photon Unity Networking (PUN) plug-in. There are a few reasons for this. (a) It's been around for several years and has a decent sized community and good documentation. (b) It provides servers (read: computers that are always on and waiting for people to access them), instead of relying on connecting players diretly to each other, because that fails a lot because of firewalls and/or routers, or so I've read. (c) Those servers are free for up to 10 concurrent users, which means it will be free while I'm still developing (this pricing scheme is common to other server providers). (d) When you do start having to pay, it's a per user basis, rather than per data. This is good for me, because each user will be passing around a lot of data (contrast this with turn based mobile apps, like Words With Friends, where each user only passes a very tiny amount of data every minute or so versus a persistant action game where you're constaly syncing positions, triggering animations and sound cues, syncing large game states.)

So PUN is fun. Following their tutorial is pretty easy and solves the first big problem of connecting players into the same room. The method is to register your game with a unique id with PUN's database. Then, in game, use PUN's API to call some connection methods that connects the local computer to PUN's server (or lobby). Then PUN recognizes your application's id and can then lump you together with other PUN connected computers matching your id. So if you and I both run Flock of Dogs, connect to PUN's server, then we can initiate a game together. Currently, that means one of us creates a game with a game name and other person types that game name in and connects to it. Then Flock of Dogs Online begins. Yayay.

Then comes the second big problem. Both players are in the same 'game', but all that means is that they're both running copies of the same application (Flock of Dogs) on their local computer and they also have a way of communicating with each other via the internet (!) which is facilitated by their connection to PUN's server. So a connected game rather is just two copies of the game running concurrently with behavior synced by passing data on the connection, which means I have to write code that says 'player 1 moved left a few inches' and 'player 2 just got on the blue dog' and 'the whale died' and send that in a message to the connected computers. Now, you want to be careful about how many/how frequently you send these messages over the connection because (a) it takes many milliseconds to send the data from your computer, to PUN, to the other players' computers. (b) I think there's still a cap on data / user from PUN's pricing scheme, so I might eventually hit that if I pay no attention.

So I read stuff about how networking works at a low level and that was interesting, but I'll just tell you the way that PUN implements stuff.

So the first way to send info using PUN that I learned was through Remote Procedure Call (RPC). You add a tag to a function in your code and when you call that function through using PUN's RPC calling method, it will alert the other connected computers to also run the matching method. So when you press the shoot button, instead of just having a normal bit of code for that you have an RPC tagged bit of code and then PUN knows to tell the other computers to have their copy of your player also shoot. So exacmples of PUN use are like 'player 2 just got on the blue dog' and 'the whale died'.

The second way to send info through Photon serialization stream. This is a function you implement on certain game objects that you want to send information about. You also have to define the ownership of the object as either locally owned or owned by another computer on the network. Then you define the function in two parts: if the object is owned locally (by you) or owned remotely (by another connected computer). In the first case, you send serialized data. That is, you send data that has to be serialized (or serializable) which means reduced to bytes. You can't just send your objects, like an instance of the dog class or an instance of the whale class. You have to break it down into integers, floats, or bools. Vector3s also work, because there are built in functions that automatically serialize Vector3s. So the use-case for this is for syncing the position of a flying dog or a flying whale. PUN will automatically call the OnPhotonSerialization () function many times a second. So you send the position of the dog you're in control over every fraction of a second. And in this case, since you care more about the current position of the dog on your friends' computers as it is on your computer more than you care that your friends see your dog travel through every position you did, you can tell PUN to send the data as fast as possible and don't wait to verify if they were received. That's something that RPCs do by default, which is to resend the call, if it never gets acknowledged by the remote computer. The message not getting through is a possibility every time you send something over the internet. If you turn on 'unreliable' in your Photon serialization settings for that gameobject, then, yes, it won't be reliable, but it will be faster. And if you're sending the position of your dog many times per second, then hopefully your friend will regularly receive the data that is only a fraction of second old, instead of having to wait for any resends sometimes.

So anyway, that explains the sending part of the OnPhotonSerialization() function. On gameobjects where you're not the owner, Photon will the OnPhotonSerialization() function object with the data that was sent (e.g. a Vector3 that represents the position of this dog, as sent by its owner a fraction of a second ago). So inside the function you check if you're not the owner. If you're not the owner, then you read the data passed in and cast it as a Vector2 and set your dog's position to that spot. Cool.

Now, there's details I'm leaving out, but I'm getting antsy. But generally speaking, RPCs and serialization streams is how I solve the moment-to-moment synchronization of gameplay.

Now, how to handle joining a game late? Once you're in the game, sure, every moment that Photon streams you data you'll update your dogs's and yoru whale's position. Every time an RPC is called to let you know that your buddy in Nebraska fired a bullet or did a flip or landed his dog then you'll know. But how do you know how many hearts that dog has when you join? How do you what upgrades the whale has gotten? How do you know how much water or health or solar energy the whale has stored up? Or what items in its belly? Or if a particular player has any harpoons? Essentially, how do you know the state of the game?

(Notice this is essentially the same question as loading a save game file, and I've never implemented game saves).

So this is where using PUN's RaiseEvent() function comes to the rescue and it's fantastic. This is most similar to low level networking and using it feels satisfying in a way I rarely feel when I program. The way RaiseEvent works is that when you call it and pass it some info, it createse and sends an 'event' over the network. And you define some special functions that lie in wait or 'listen' for network events. The low level part is that the info you pass in an event is usually in the form of an array of bytes. Which means that the listener function will receive just that array of bytes and not much else. Maybe the network identity of the sender and an event code (in the form an byte). And this is cool. This feels like big boy networking. I'm like only one step away from having to parse actual 1s and 0s. Anyway. I'm using the RaiseEvent() to send arrays of bytes representing the state of different game objects.

Now, some game objects, you don't need to sync, because once they're in the game, they don't do anything. That would be for all the static background objects. Those will spawn the same on any computer, whether they join early or late. But for everything else. Dogs, players, whales, enemies, destructible/interactable environment, enemies, NPCs, all those are subject to change. So I defined a GetState() function on each of them which returns a byte array. I have to custom define
the byte array for each of those objects. For instance, for a dog, the bytes in the byte array from byte[6] to byte[17], which is 16 bytes, is where I store 3 floats, (4 bytes per float). Those floats are the red, green, blue valus of the dog's color. I made the ReadState() function which takes in a byte array and it knows to read byte[6] through byte[17] and then convert them back into floats and then uses those floats as the RGB of a new color and sets the dog's color to that color. So after I defined a GetState() and a ReadState() for all those kinda of game objects I mentioned above, the entire game state can converted into a byte array and then read back. So, I'm in the process of doing that. But I went ahead and set up the state synchronization of some stuff using the RaiseEvents.

That involves when a new computer joins the game, it asks the computer who created the game to give them the state of the game to the best of their ability. I've set this up to initiate sending a sequence of RaiseEvent calls that the newly joined computer waits to hear about. This sequence is just the game creator going through game object by game object, calling their GetState() function, then taking that byte array and raising an event and sending that byte array. The new computer listening for an event, taking the  byte array, checking the first couple bytes to see if it's the state of a dog, or a whale, or an enemy, and then based on those first few bytes, it will know what to expect in the rest of the byte array.

And voila. Anyway. Today's World Cup games are well over and therefore this blog post is too.

Tuesday, June 12, 2018

Party On

After PAX, I worked on the opening of Flock of Dogs some more in anticipation of submitting to BFIG. Then I made a big decision. I'm going to attempt to add online multiplayer to Flock of Dogs. Now, I blogged about this like a year ago and decided not to do it then. I was warned that it's hard, takes a long time, and that since this is my first game, it's inadvisable (which, if you ask me, is kinda circular).

The reasons in favor of doing it have become clearer. A quick story.

When you want to fix bugs in your game, oftentimes, the first step is to figure out the conditions necessary to reproduce the bug. Once you've got reproducibility, you should have a pretty clear idea of where in your code the error is hiding.

Now, while this is unsurprising for any of my hardcore fans who've played endless hours of Flock of Dogs, at PAX, many bugs in my game were encountered. Since like I'm at a point where I want my game's demo to be playable (a) without my assistanc or presence and (b) to not crash and (c) to not suck, I want to smash bugs like never before! So. Time to reproduce. And, some might say this could have been forseen, but simulating the input of, say, 6 players, simultaneously, was too hard for little old me. I had anticipated this being a fine opportunity of having friends over, to relieve my great isolation, and, in truth, I've had a very good time when friends and family have demo'd my game. But I have fewer friends in Nashville (and now Long Beach) than in Boston. And the friends I've left behind (or the friends that left me)....I realized that (a) asking them to playtest without me my unfinished co-op game that crashes and glitches all the time, figure out how to recreate that behavior, and report back, would be tough, (b) proposing that they invite their friends over, have enough controllers for their friends, provide chips and salsa and drinks, to playtest my unfinished co-op game that crashes and glitches, figure out how to recreate that behavior, and report back to me, would be hard to organize and (c) asking them to do this like weekly or

I like have 3 friends that even play video games. Like..that's partly why I'm making this game is to get my friends to play video games with me. And yeah, the dream was to have all my friends over and we all play together, but I'm a grown up now. And being grown up means that you go on Facaebook and realize all your once best friends live in Boston, Beverly, New York, Coeur D'Alene, Denver, Willits, San Francisco, LA, Long Beach, Las Vegas, Dallas, Nashville, Oxford.

So let's break it down.

- provides means of more effective playtesting
- perhaps only way to regularly get 2+ people playing
- only way I'll ever be able to play Flock of Dogs with my little church buddies I grew up with, Ian, Daniel, and Joey, or my old roommates Jon, Johnny, and Jonathan, or my soccer buddies, Kevin, Bedig, Fithian, Lou, Sam, Monty, Oak, Brownie, and Matt T., or with Dave, Salem, and Matt B., or with Bill, Ted, Sarah, Sophie, and Matt S., all my other, leser friends ahahahaha.
- much easier to build an online community
- would develop a marketable skill, you know, if I have to get a job some day

- supposed to be really hard
- supposed to take a long time

So I'm giving it the old college try.

(Oh, I don't know what I meant by a quick story except that at PAX there were bugs and then I couldn't recreate them by myself after.)

Monday, May 21, 2018

Itsa Spearfish

(note, my sister did buy the above photo for me and i have it framed)

Well, as some of you may know, in late March, leading up to PAX, I took my dog to the vet to get a lump checked out. After two or three trips to the vet, and half a surgery, it was determined to be cancerous. She's ok now.

Now, I don't understand the role that social media ought to play in my life. To go the extra mile, I don't understand how offline social networks ought to figure into my life either. But so I didn't share updates on Facebook or Twitter, but anyway, I felt like sharing somewhere. There are a lot of people distributed about the USA that care about me and I care about them and it seems very inhuman how spread out we all are and how difficult it is to share our lives with the people we care about.

In some sense, all there is to say is that I love my dog and there were a few times when I thought her time was up and that was hard. We've pretty much all been there. I decided to pay a fair amount of money to give her a chance at a few more years and it seems to have worked out, but there were a few scary moments. Family and friends gave me money and I'm very grateful.

It's all so weird. A dog I adopted for $300 who's about 80% done with her life. I've had human friends and relatives with cancer. I have a cousin who had no insurance and a heart attack that owes hospitals about $1 million. Because of PAX and this, I've now been in Nashville an extra 3 months, and this nagging groin injury has had me sidelined from soccer the whole time. So no friends, no soccer, no girlfriend lol, and then my dog gets cancer. In some sense, this is the worst time in Max's life. And then I go to this engagement party for my mom's friend's daughter last Saturday where I don't know anybody and sit there and talk to a Vietnam war vet. He was drafted when he was 25 and stationed in South Korea. He said he got a good gig as the mailman. Nobody wanted to be the mailman, because you had to get up early 7 days a week and couldn't go whoring on the weekends. He said he said to himself, "I'm a quarter of a century old. What in the heck am I doing?"

I mean. I had a sick dog and I can't play soccer. But I wasn't drafted to go to war in Vietnam. I don't know man.

I felt like typing out a record of all our visits to the vets with some pictures, so I did that:

- sometime in Tennessee

- mid March, inconclusive testing of lump, scheduled surgery + dental cleaning

- April 11, during surgery, murphy rd vet noticed the lump was larger and attached to muscle below, decides to not remove lump, but takes some chunks out to get biopsied real good, proceeds with dental cleaning

- April 17, received phone call from murphy rd vet, the mass is cancerous, he recommends blue pearl vet for bigger surgery
- April 19, meet with blue pearl surgeon, she examines dog, schedules mass removal + half of 2 ribs

- April 23, surgery day

- April 23, surgery does not take place. itsa's blood platelets are low, probably because of tick borne illness she's had since being raised at the florida race tracks, so i pick her up and start her on two weeks of antibiotics
- May 8, check up to see if blood platelets are ok. blood platelets are ok, surgery is a go for tomorrow
- May 9, surgery day for real

- May 10, one day after surgery, blood in chest tube, internal bleeding, hopefully dog just having trouble clotting, vet is keeping dog extra night. if dog doesn't clot, more surgery may be needed
- May 10, I visited in am, hung out at starbucks nearby and worked on flock of dogs. got cold inside. went outside and talked to friend on phone for an hour. got sunburned. went to nearby park and did rehab for my groin. visited itsa a 2nd time and watched her eat, but couldn't take her home

- May 11, no more blood in chest tube, dog can be taken home that afternoon

- May 12, 7 pm, at home, notice a lot of redness and bruising emergency vet visit. i thought my dog was bleeding out on the inside.

- May 12turns out everything normal, lol, greyhounds just bruise a lot. all vital signs ok and red blood cell count good
- May 17, post op check up, dog is recovering normally, they "got it all", official recommendation for optimal care would be to do chemo or radiation, but monitoring seems very reasonable

- May 24, a second post op check up to just make sure everything still proceeding normally

And here's a few more photos from the last day or so:

Tuesday, April 24, 2018

Flock of Dogs at PAX East 2018

Ok, so the trick to blogging, for me, is to never talk to friends. Because now I feel like I'm repeating myself to my readership of approximately 4.5 people.

The night before PAX, Playcrafting held a free event called Pax Pre-Gamer.  I did this last year and it was well attended and a good time. It was a good event this year too. I was situated next to the games that would be sharing the Playcrafting booth with me at PAX and, based off the response to my game, I had never felt so good about my game. I met a few genuine fans who told me they had been following the development of my game. A guy with a steam library of 2000+ games liked my game and talked to me about it for several minutes and even messaged me on Twitter later. Another guy whispered to me that my game was the most interesting game at the event. I had a friend come by and say hello and then peace out because I was too busy to hang out with her. I felt like my game was one of the most popular games there (always tough to judge your relative performance). Near the end of the night, a woman pointed at my game and the flying whale from like 20 feet away and cried out, "What is that? I want to play that." And she and her friend played it until the lights at the venue came on and then asked if I'd be showing at PAX and said she'd come by. Am I just reciting all this anecdotal evidence to convince myself that my game is cool? I don't know. But I felt great that night and believed in the success of my game more than I ever had.

Ok. So cool. Even a cat peeing on my jacket in the middle of the night dampened only my jacket and not my spirits!

I arrived at PAX (prior to its opening to the public):

Then I made my way to our booth. I say "our booth", because I was part of the Playcrafting booth along with:

Feeble Force
Bunny Blocker
Just One Boss and Juggle Panic
Return to the Stars
The Ultimate Clapback

And before I go further, I should also explain our booth layout. I was to share a 10x20 booth with 5 other games each day. Costing $500/day. Before I committed to paying for this partial booth space, I had expressed my concerns to Playcrafting that Flock of Dogs really only works if you can get 3+ people playing. He showed me this diagram of the PAX show floor and the Playcrafting booth setup:

Our booth was this:

The black bar is a curtain at the top. It's open on the left, right, and bottom. The pink lines are the monitors. The black rectangle would be Playcrafting's table to hand out their goods. We were at the end of an aisle, with the bottom some facing outward to one of the two main walkways of PAX. Then both aisles down the side should have fairly heavy traffic. Players can spill into the walkways as they gather around each game. Should be good? Alas, the booth was closed on 2 sides and this was our layout:

I was the top left table (I MARKE DIT WITH A RED X SO U COULD SEE MY TABLE), because I was the 5th of the 7 devs to show up. So...this was terrible for Flock of Dogs.

Booth photo:

Do you see my TV back there? Next to my banner? All lonely. There's also a table with a game directly in front of it, where the plaid red table cloth is hanging.

When I brought up to Playcrafting that they said it'd be open on three sides, Playcrafting told me that PAX had told them it was to be open on three sides. And that "griping goes up."
I said, "This is me 'griping up'."
He said, "If PAX gives us any money back back, I'll be sure to distribute among the devs fairly."


I complained, but really, as I told myself, I wasn't there for the gaming peasanty!
Mua Hahaha!
I was there for the capital P Press!
I had chosen Thurs-Sat, because Thursday should be ideal for press!
In fact, Thurs had PRESS-ONLY from 9 am - 10 am!

But 0 press came to the Playcrafting booth in the PRESS-ONLY hour.

At 10 am, PAX did open up the grubby public. Here's a series of texts I sent my buddy, Dave, that morning.

(10:42 am) Max: 1 person has played flock of dogs. Other than yours truly.
(10:42 am) Max: So 24 hrs of booth time. for 1500
(10:43 am) Max: Means....I'm paying $62.50 an hour.
(10:43 am) Max: Been here 1.75 hours
(10:43 am) Max: $109.37
(10:44 am) Max: For that player
(11:03 am) Max: 2.5 people have played fod
(11:44 am) Max: 4.5
(11:45 am) Max: Plus two devs sharing playcraftings booth
(11:57 am) Max: Humble bundle game scout game by. Took some notes on my game. Gave me a card said feel free to reach out close to launch.
(11:57 am) Max: He wasn't a very enthusiastic fellow tho.

So the Humble Bundle thing was somwhat exciting. However, isn't that for after you've released your game and it's been out for a year and then to generate some buzz you give it away for free and hope people donate to you? I did notice he only briefly played one other game at our booth and then left. Which, is weird to feel good about, because I became friends with my  boothmates, but there was unspoken competition.

I had had some foreboding that press was going to ignore me. After committing to paying for a spot at the Playcrafting booth, I'd received a copy of the PAX press list. I was nervous and excited. I emailed like 80-100 slightly customized emails to the press. I only heard back from a few. This was when I began to think I'd made a mistake paying for PAX. However, I held onto to hope that my other boothmates would bring press by, that some press would naturally just make their rounds to random booths, and that the Playcrafting organization would have some real pull. But nope.

Aside from that Humble Bundle rep, one other press person came by on Thursday. A sophomore from BU that had responded to my emails. She works for BU's radio station. She took photos of me and interviewed me for a paper in her class. Maybe to mention me on the radio show, which is not a gaming show or anything, just a college radio station. As soon as she left the booth, my boothmates inquired about her status. I said she was with IGN. 


Maybe Friday would be better? I showed up early. The Playcrafting rep and one other dev and I discussed the booth layout. There was no rectangle table this day, because the card game was showing at another booth. I proposed we line up our tables and game along the edge, all facing outward. I wanted to be on the bottom, facing out (down). Like so:

They thought this looked unprofessional. The Playcrafting rep thought his boss would not be pleased. The Playcrafting rep said he felt like we were sacrificing looking professional for the sake of one, 8-player game. The other dev and the Playcrafting rep voted me down. I made a small protest, but didn't really say everything I was thinking which was that (a) we're indies...real indies (whole blog post unto itself) (b) our booth, regardless of our layout, is the least professional looking booth at PAX that I'd seen and (c) I'd been screwed on Thursday and (d) this is approaching the optimal exposure to passerbys for all our displays...perhaps I could even prove it with maths.

Welp, we went with the professional looking "U" shape, as it was described, tho I believe it to be more of a crescent, you know? Here's my mock up. I was given the choice of being in either of the two middle tables.

Red arrow is me. The green bar is where I placed my banner, yellow is where Hexile's banner was, and orange was where Feeble Force's banner. Hexile told me that a number of people asked him about Flock of Dogs and he tried to direct them inwards, but they'd just get confused. Hahalol. The other issue with this layout is that the inner arc, where people would stand to play the games, is a much smaller arc length, and visibility of the monitors gets super reduced. This also completely under utilizes the bottom side of our booth, which was the side facing the major walkway.

Photo before PAX opened to public (these are the devs awaiting the floor opening up):

Friday was better in terms of popularity of my game. The convention had better attendance as well, but nothing as overwhelming as the stories I'd heard of. But other than the BU sophomore coming back by the booth, zero press folks.

On Saturday, the Feeble Force dev agreed to swap spots with me.

The Ultimate Clapback was back in our booth, at the rectangle table. The dev, bridgs, wasn't showing with us, so it was a little less crowded. The circular table without a monitor was used by the Playcrafting rep for handing out flyers, tho typically he just stood in the middle of the walkways and handed them out.

So Saturday was, by far, my most popular day. I had a woman, before the even begin, walk up and tell me the the flying narwhal and dogs was the most interesting thing she'd seen at PAX.
I said, "Wanna play?"
She said, "Oh no, I don't play video games."
I asked, "So...what are you here?"
She said, "Oh, I'm in the booth next to you [selling video game merchansdise]."

So she'd been my booth neighbor for the past two days and hadn't even seen the whale? Saturday restored my faith in my game as a game that some people do like. I had several repeat players and I had some people tell me it was their favorite game at PAX. So...that meant a lot to me. That anyone would say it's their favorite game of PAX seems like a big deal. I had a father and son say they searched all over PAX to play my game a second time. I had a man email after the show that he'd played my game on Thursday and tried to play on Saturday, but it was too busy, and then he looked for me Sunday and couldn't find my booth (I wasn't exhibting). And some more stuff like that. Oh yeah, the deveoper of Mama Hawk came by and chatted with me a while and was super encouraging. Some other devs played my game and were encouraging. I don't know. No press coverage. Who's going to tell the creator of a game, to their face, they don't find it interesting? Am I grasping at straws, here? Did press walk by my game and dismiss it out of hand? I don't know. I saw one girl with a press badge walk by, whisper something into the ear of a guy playing another game at the Playcrafting booth. I asked her if she wanted to play my game. She turned and just shook her head and walked away.


Was it worth $1500 for 1/6th of a 10x20 booth for 3 days at PAX, that was only open on 2 sides instead of 3 as I was promised? Nope. Was it worth spending like $150 for banner, stand, buttons? Eh. Was the Pre-Gamer event really fun? Yep. Did I really connect with some people and did they have a good time playing my game? Yes. Did I make some fans I wouldn't have otherwise? Yes. Was it good, in terms of future development, to watch so many people play my game? Yeah. If press had played my game at all, whether or not they responded well, would it have been worth it? I DON'T KNOW. Am I embarrassed about spending that much money for what I got? Yeah.

Hard to believe I exhibited at PAX and got 0 articles or write ups or Twitter mentions at all. Is this a big warning sign that my game is going to fail? Maybe.

What I did get was nice, but I've had just as good experiences at events where I could show my game for free, such as Playcrafting's own Pre-Gamer event and Spring Expos. I wouldn't have gone if it weren't in Boston, which is where I lived for the past 7 years and had a free place to stay and tons of friends to visit. So it was really great to be back in Boston for a week.

Also, I just wanted to add that I did have a good time with my boothmates, just hanging out, joking around. I guess another reason people exhibit at conventions is for networking purposes. I mean, none of my boothmates were real industry veterans or anything, but I've got a few new Twitter friends and I've emailed them a bit.


I assume you can post photos of people taken on the floor of PAX without their permission. If not, what kind of a world do we live in.