Demons Hand - card roguelike

Is it still beta? Any chances for me to try it at the moment? :kissing:

1 Like

@WhiteBoxDev there’s a couple of reasons why we have a thin client:

  1. We want to hide information (eg. random number generator state, which walls are hiding powerups, how your deck is shuffled). Eventually I want add in PVP, which means it’s even more important to hide information (eg. what cards you have in your hand).
  2. Code duplication - exactly like you are suggesting!!
  3. Simpler to make gameplay changes. A lot of our game updates are only serverside changes. This gives us more flexibility to try things out live.
  4. Architecture philosophy - I have an opinion that clients should be thin and the complexity should be crammed into the server

Why not use pre-existing services? Mostly price - we are optimized specifically for our gameplay (ie. turn based). Nakama’s feature set (Messaging, friends, clans) looks impressive but we don’t need these features yet! And when we do add in these features I’m confident that DynamoDB will be able to scale. We are running 10 times cheaper than their base price at the moment.

The websocket messages get thrown onto a first in first out datastream (ie. kinesis). A “consumer” is a system that has its own view of the stream. Each consumer progresses through the stream by itself, maintaining its own progress. We have only 2 “consumers”, the Gameplay consumer (actual gameplay) and the History/Statistics consumer (runs its own simulation and calculates statistics/achievements). The consumers don’t affect each other. We had a cost overrun last year and I was able to switch off the History consumer with no impact on the main Gameplay consumer. Each consumer has a lambda function that can be instantiated in parallel (ie. technically the parallel processing is mapped to Kinesis partitions so that ordering is respected, but that’s just a technical detail). Here’s a diagram of how it looks:

@britzl no contact with anyone at AWS. However I’ve been working with AWS for a while and I watch our costs carefully. I’ve learnt how to use Cloudformation for setting up resources and have built up a collection of templates over the years. I learnt real cost optimization skills when I started paying my own AWS bill :joy:

@Chung_Xa yes! The instructions are in our discord :smiley: