The Gift of Engagement
How server-side software supports the giveaways players love
Engagement is a central issue for all sorts of platforms, whether it’s a social media account or a brick-and-mortar shop. Every project, every business seeks some sort of loyalty from their customers, users, or even casual passers-by. Games are no exception: in fact, it’s an area in which engagement becomes even more critical.
For Butter Royale, we wanted to put a system in place that allowed us to gift players special skins and items of special cultural or real-world significance. We needed to ensure players felt gratified in real time by more than just the core gameplay, and that these giveaway items would help players connect their in-game experience to the influencers they follow or the places they’re from. We felt holding giveaways that celebrated local festivities or were exclusive to the Butter Royale mailing list would help Butter Royale touch players’ lives in surprising new ways, rather than simply making them play match after match on their smartphone to grind for every new item.
Once we figured out what we wanted to achieve in terms of engagement and relating to the players more closely, the next step was finding out the how. We used AWS (Amazon Web Services), since it already hosted most of our infrastructure. Deciding on the framework took longer, as there were plenty of choices to consider — from plain old HTML-CSS-JS to ReactJS or VueJS. While the options felt as endless as the geeky discussions spent picking them apart, we ended up with ReactJS, with some added packages and integrations such as React-Bootstrap.
While the development itself was relatively simple, picking the way to deploy the application to servers turned out to be a little bit trickier as again we encountered multiple options. In the end, we were torn between ElasticBeanstalk and a static S3 stored page. Although using S3 appeared intuitively easier, especially as a quick and straightforward way to see our code in action, we decided to use ElasticBeanstalk with a containerized React App. This was so that we could more easily move the containerized application wherever we had to, as well as deploy multiple copies as needed –great for building both a test and live version and keeping them separate.
The backend part of the application was extremely easy to deploy (ExpressJS with Node option on ElasticBeanstalk ). However, we soon found out why the S3 option was more popular for frontend work…
The above error was possibly the easiest one to figure out, and it wasn’t very easy at all. We suffered sudden deployment failures, with or without timeouts, and successful deployments would take over 10 minutes! Eventually, checking more logs on AWS before asking on StackOverflow helped us figure out the solution.
The main culprit was the memory, which was exceeding the set values through the container and AWS configurations, in turn impacting the deployments themselves. Not to mention certain cache/log files were being pushed to AWS servers, which would end up eating into the timeout configs of the application.
Once the bottleneck on deployments were solved, after a number of painful days our cute, perfectly responsive application went live!
Butter Royale has been live for over a year, and beyond the initial issues with deployment, its interaction with players is nice and stable. Plus, if our players’ feedback is anything to go by, it feels great to get special skins without spending any in-game currency 😉
Fancy grabbing a recent giveaway? Go ahead and check out one of our longest-running and most popular rewards – Butter Royale’s cosmetic collaboration with fellow Singapore developers Battlebrew Productions and The Gentlebros!