Plaid Hat Tech and Games

Updates and musings about what I'm working on at Plaid Hat Games.
Recommend
9 
 Thumb up
0.05
 tip
 Hide

The Obsidian Dwarves, and Nearing Beta Status

Joseph Arthur Ellis
United States
Ashland
Ohio
flag msg tools
designer
badge
Avatar
Microbadge: Summoner Wars fanMicrobadge: Defcon StatusMicrobadge: RaxxonMicrobadge: Ra fanMicrobadge: Star Wars: Rebellion fan
Welcome back to the Plaid Hat Tech and Games blog! Today I'll update you on the beta as usual, talk about my technical challenges, and let you in on our process for designing new decks.

Summoner Wars Beta Update

All 6 factions coded and tested: DONE
Authentication with PHG.com: DONE
Beta lobby logic: DONE
Creating/joining games: DONE
Matchmaking: DONE
Working game in beta environment: DONE
Turn notifications:
More robust in-game options: DONE
Don't wait on server when not necessary: tried, but there is a bug somewhere
More animations and effect indicators: DONE
Integrate audio for new factions:
AI improvements: HALFWAY DONE
Secret information: DONE
Time limits: DONE
Fix engage/guarding spirits/holy judgment bugs: DONE
Move tutorial to its own space:

We're getting close to the finish line! With AI and a couple performance issues, it feels like one step forward and two steps back. But I think there is a light at the end of the tunnel for both fixing AI bugs AND for reducing the size of the database objects so that things can move faster.

Depending on how all that goes in the next couple days, we could have something up and running for subscribers this week!

Databases and Game State

After thinking through the speed issues and server load as discussed last week, I went back to how my app and boardgame.io packages information. Boardgame.io is not perfect when using turn stages and undo, AND the log doesn't help me much for animating transitions, so I have my own "game state archive" plugin I use for both purposes.

At first, I just stored every game state, for the entire game. One turn in Summoner Wars is often 15+ game states, so we're talking about 200+ game states by the end of a game. This meant the state in the database was over 3 megabytes. (!!) Once more than a couple people were using the app, this was clearly slowing things WAY down as games dragged on.

My temporary solution was to just cut things off at the beginning of a turn. This leaves enough to undo and to watch everything since you last took an action. This helped a lot - took the game state at the end of a turn (when it's longest) to around 300kb.

But, depending on server loads and how long turns are, that is still too big. So over the weekend, I've been experimenting with jsondiffpatch - this lets me take 2 game states, compare them, and create a new, small object that just details the differences between the states. Then I can take the first state, "patch" it with the diff, and get the second state. This was the solution I needed - it took the game state at the end of a long turn down to about 30kb (and I think I can fidget with the jsondiffpatch configuration to make it even smaller).

I do have a bug with undos - somewhere in there I'm not applying jsondiffpatch correctly on an undo, and that's what I'm working on at this moment.

I know that players (and myself!) would love to have the whole game viewable at end of game... Right now I'm not sure if that'll be stored in the database or in your own browser. If I can make the jsondiffpatch process take up even less space, then the server will work fine, so that's my hope.

Designing New Summoner Wars Factions

Even though I'm laster focused on this beta app, I still find time to think about new Summoner Wars faction designs. Our staff developer Nick has taken over playtesting/development, so when I have design time, I have more of a chance to contribute to new factions.

Colby wrote this really great article detailing how deckbuilding symbols work. The short version is, we've got 12 symbols, and each faction has 2 of them. Each set of 6 decks (including the master set itself) has each symbol represented once, and every deck can thus represent 2 different symbols.

The symbols have a theme and some (flexible) mechanic ideas behind them. So, as important (or more) than deckbuilding, the symbols help us as designers to generate ideas and focus our designs around core ideas - it's really neat, and the whole idea was Colby's.

For example, the Skyspear Avians are an in-progress deck I designed that are Spirt (connection) and Air (movement). The summoner's ability lets you place her adjacent to her commons instead of moving her, and vice versa - in my opinion, a perfect synthesis of the ideas of connection and movement. The rest of the deck fans out from there.

Now for whatever reason I'm drawn to the undesigned Obsidian Dwarves, who will combine fire (precision) with primal (daring). The theme that comes to mind is dwarves with black eyes and no pupils, holding fiery weapons in both hands. Explosions and indiscriminate damage fill the battlefield.

But what does that look like mechanically? I just don't know yet. I've thought and thought and haven't come up with a great summoner ability or a cornerstone event to help get the deck kickstarted. Primal is not Dark - dark is "sacrifice" and can include intentionally damaging your own units for benefit. But Fire-Primal should be more like, powerful effects that MAY harm your own stuff as a side effect.

How does extreme heat translate into the Summoner Wars game system? I'll keep thinking about it and maybe post an idea here when I've got one. But I absolutely love our deck symbol system, which really helps us make each deck unique and thematic.

Hopefully next week, the beta is up and we're talking about how that's going!
Thanks
Joe
Twitter Facebook
0 Comments
Subscribe sub options Mon Apr 19, 2021 5:32 pm
Post Rolls
  • [+] Dice rolls
Loading... | Locked Hide Show Unlock Lock Comment     View Previous {{limitCount(numprevitems_calculated,commentParams.showcount)}} 1 « Pg. {{commentParams.pageid}} » {{data.config.endpage}}
{{error.message}}
{{comment.error.message}}
    View More Comments {{limitCount(numnextitems_calculated,commentParams.showcount)}} / {{numnextitems_calculated}} 1 « Pg. {{commentParams.pageid}} » {{data.config.endpage}}

Subscribe

Categories

Contributors