Lets start with the fan art! I drew a doodle of a character from every game I played this event:

Featuring:
- Midnight Cheese Quest by @archaeognathus
- Demon Delivery Center by @yanakill-lullanita, @rocio-michi-ojeda, @emiliano-martel, @alexasl, @malcontento, @nicol3, @rodrijsolar, @briansuhit, @sofisofix, @franco-farallo
- Void Beast by @azure-drake
- Ancistroides Folus by @othervoyceowl, @retcongreg, @soundgnome
- To do magic, please dance by @syudzius, @owly, @shishandr, @yngvarr
- Throes of the Javelin by @idan9000, @justin-ma-wav, @skransow, @matterlinx
- Raising the Bread by @exteegi, @kevin-joseph, @fengfuru, @olsonexi, @zuhairghias
- Demon Well by @100th-coin
- Druid Island by @bwalter
- Summoning Song by @paul-nadan
- Protect the Realm by @nnnnneeeedddd
- Stars Align by @cassowary
- Tiny Summons by me
Congrats to everybody here! Lots of great entries this time around, and as always, I wish I had the time to play more (but it certainly goes slower when you're drawing everybody).
Onto the post-mortem!

Choosing an idea
The theme always sucks
The night of the theme reveal for "Summoning," I was not finding a lot of inspiration. After some brewing, I didn't have a lot of ideas, but I did have a goal:
- The core gameplay should be the summoning. I didn't want to tack summoning as a mechanic onto a game where you're primarily shooting, or racing, or platforming. The core gameplay should be around choosing what to summon, or how.
Ultimately, I went to sleep on Friday without a firm direction.
When I woke up, I decided to make a multiplayer Twitch-plays auto-battler.
Multiplayer isn't that bad, right?
So normally, it would be.

On game jam timelines, networked multiplayer is really tough. For a relatively simple game, you usually need:
- A dedicated server to run the game logic on
- The client code that shows your graphics to the player, which you somehow need to keep in sync with the other clients
- A way to get the information from each client to the server, and then out to the other clients
- If you don't want the game to be super laggy and unresponsive, some kind of literal time travel so the client can anticipate what it thinks the game will be like before running it past the server
Fortunately, I had a strategy that would require much less work for me. And that is to let the fine programmers at Twitch.tv write my networking stack for me.

By making my game a Twitch plays, I can get a lot for free.
- The game can play an arbitrary number of players
- Players can play on a variety of devices
- There is one authoritative game state (the video stream) so multiple clients don't need to stay in sync
- Best of all, I only need to program one "direction" of information flow (reading chat messages). The streaming platform handles getting the game to the players!
Even better, I had some base code from my Github Game Off entry a few years ago to jumpstart the process.
It does have some limitations:
- Players can only use text commands
- There's a several-second delay, so nothing can be realtime
- Players can see everyone's chat messages, so no secret roles/information

What went well
Lots of things!
- The visuals: I'm happy with how the game looks this time, with the bouncy animations, clean UI, and cute character designs. For better or for worse, I tend to experiment with art and make games that look very different from one another, but this one "worked."
- The Twitch integration: Everything went smoothly with integrating the Twitch chat. I hosted the game in a Microsoft Azure VM (with some free sign-up computing credit) so it could run 24/7 despite my spotty internet.

What could have gone better
- The hosting: I spent about five hours Saturday night setting up hosting with Digital Ocean, only to run into performance problems that I couldn't seem to fix. Only after wasting that time did I try to set up Azure, which took under an hour.
- The scope: Partially due to wasting half of Saturday, and the extra programming overhead for the Twitch integration, I didn't get as much content into the game as I'd hoped. A few cut feature ideas include:
- Round modifiers that present more challenge or diversity
- Better feedback for chat commands, including showing who is on what team
- A more equitable way to split team funds, rather than first-come-first serve
- The enemy AI: Due to an unfortunate radians-to-degrees math mixup, ranged units don't try to circle foes from a distance; they always try to go directly to their right (awkwardly giving the team that starts on the right an advantage).

Takeaways
I'm very happy with my results this time around, including 3rd place in Graphics and 3rd place in Innovation. Thanks so much everybody who played my game, and to the additional support I've gotten from the streaming community in the form of random raids (almost always when I'm not actively in the stream!).

Some takeaways from this event:
Try new things, but prepare to scope down
I don't regret trying something different for this jam, and I liked the game I made. But particularly in the Compo, being ambitious in one area means making sacrifices in others.
For networking and integrations, do your setup before the jam
I came partially prepared with some base code, but I probably should have been confident with a cloud hosting platform if I wanted to do this for a 48-hour jam. Even an hour of extra setup you could have done beforehand is painful when it's 2% of your jam window.
Study frog anatomy

Eh, close enough.
If you still want to play Tiny Summons, do it soon! The 24/7 stream will go down next Saturday before Microsoft decides to start charging me real money.
Here's to a great LD55, and an even better LD56 this October! ☃︎