Is it still beta? Any chances for me to try it at the moment?
@WhiteBoxDev there’s a couple of reasons why we have a thin client:
- 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).
- Code duplication - exactly like you are suggesting!!
- 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.
- 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
@Chung_Xa yes! The instructions are in our discord https://discord.gg/P2ez5fweaP
Since the last post, we’ve switched to the below architecture and halved our server costs!
- Kinesis was a little too expensive. There was also some risk it was not going to scale for many players. In the future it would be good if AWS could provide Kinesis features in a pay per request model!
We soft launched into the Google Play Store in Australia, NZ, and the Philippines!
Why these? English speaking and our timezones are very close.
Once we gain some learnings we’ll start drip feeding into more regions!
Some nice PR materials by our lead artist
Demons Hand has released into Singapore and Japan now! Thanks to our gradual rollout we’ve been able to make some updates to our tutorial to make onboarding easier for new players.
Targeting UX improvements
We found that our targeting system could be improved. The below left is from before, and the below right is our new target:
Improvements:
- The artwork is more modern
- Symbols indicate the action, ie. arrows to indicate movement, attack arrows to indicate attacks
The magenta targets here indicate actions that are neither attack nor movement, eg. summoning, buffs, debuffs.
Green indicates an action that has a direct benefit to the player character, eg. healing via a healing potion.
Looking forward to getting these updates out!