Last month we concluded Huge Seal, a Steam discount coupon giveaway featuring over 30 indie games that ran from November 18th until November 25th. During the Huge Seal, users could pick 5 Steam coupons from a list of 35 games, and for every 3 games purchased, they got one random Steam key, from the list of games, for free. The aim of Huge Seal was to bring great indie games together for people to obtain at discounted prices.
The campaign itself was a great experience and a success for us but the process of it coming together was a challenge and took a lot of work. In this blog post I’m going to discuss (in the style of a Gamasutra post mortem article) what went wrong, what went right and what the feeling over here at Frozenbyte is now that the campaign is over.
What Went Wrong
1. Project Management and Communication Issues
We started the development of Huge Seal in late June with the team consisting of me as the producer, Johannes as the web developer and Mio as the artist. During the development, we set milestones for ourselves and a deadline when the campaign should kick off. These milestones changed over time and our deadlines got pushed back multiple times. We would have the initial deadline set for early Autumn and then it would get pushed a back a few weeks, then another few weeks, and another and another etc. We eventually had to shorten the campaign by a week because the end date for the coupons was already set so that it wouldn’t clash with Steam’s Autumn Sale, and that we could finish up everything before launch.
Our project management at first was working quite well. We used Scrum to plan two week sprints in which we set out stories and planned time estimates for them. After each sprint we would have a sprint review and a retrospective meeting. Later on in development we started slipping from our project management, as development and getting everything set for launch were keeping us busy, and we didn’t put our energy into focusing on it. This caused development to be frantic and disjointed by the end of the project. Not focusing on project management was, of course, a mistake, and the responsibility was mine. I should’ve been more adamant and kept to the routine in order to have prevented this from happening. Also, our developer had never used scrum before and grew disillusioned with the system out of frustration and lack of experience, especially since he was really the only one involved in the scrum project management, in addition to me.
Our biggest problem was inexperience. Inexperience on my part as a producer and inexperience on the part of Johannes, both with scrum and working on such a database-heavy project, which combined resulted in time estimations being grossly under shot, and at some points being impossible to make. Luckily, we were in a position where we could push our deadlines back, and the developers we worked with were very understanding and patient with our delays.
The same inexperience also led to a situation where we didn’t specify our art asset requests well enough for Mio. She made initial sketches that we were happy with but as development progressed and the project’s aesthetic direction changed, we realized that our initial specifications no longer applied. We hadn’t taken into account issues regarding using the art assets in our trailer and needing to have everything on separate layers etc. which led to her and our developer having to needlessly redo the art assets (putting everything on separate layers, filling in every layer so there wasn’t any empty holes behind any of the layers etc.). This could’ve been avoided if we had thought out our art assets needs better and more thoroughly earlier in development.
2. One Developer
This Seal campaign required a completely new back end and front end from our previous seal promotions, with a focus on scalability and re-usability for potential future Seal campaigns. As I mentioned, we only had one developer working on the site for the majority of the development. It was Johannes, the same guy who did the current website for Frozenbyte, which was built on a pre-existing backend and only required fairly basic database coding. By contrast, the Huge Seal backend relied heavily on a database and ranged from storing thousands of Steam users and millions of Steam coupon codes, to the logic used to authenticate users with Steam, detect user purchases, and figured out what games a user could redeem, etc. Specifically the database architecture required several iterations and optimization passes to ensure that it would be able to reliably handle the amount of load that we were expecting to see. This lead to an insane amount of work for an inexperienced developer.
This large workload culminated in him having to crunch very hard for the last month of development which, of course, is very bad. Since he spent about 90% of the development working on the back end alone, the front-end was severely delayed. This also delayed our trailer since we were using video material from the site itself and the final design came together literally a week before launch. So the trailer was finished at the very last minute.
Initially, we decided to stick with one developer because we underestimated the scope of the backend when we still had months to go, and later in development, we realized that having more people would be good but bringing more developers on board at that point was not really a good idea considering how much it would take for them to get up to speed in such a short period of time. In hindsight, we could’ve avoided this situation by scoping the project to be something more realistic for a developer with little database and backend experience but this was once again challenging since it was hard to predict what would be realistic scope wise.
Alternateively, we could’ve had two developers: one working on the frontend and the other working on the backend. Unfortunately, we didn’t have the resources for this up until the end of development (which we did make use of).
3. Small Issues with Our Coupons and Server
With the coupons we had the issue that some coupon codes reported as being duplicate codes, and in these cases the user had to contact us and we’d give them a new code. However, this was a rather small issue which didn’t impede us very much. The bigger issue was with the Awesomenauts coupon codes.
We started testing all the coupons a bit too late, having trusted that they would work (how silly of us). The majority worked but some of the codes didn’t. All but one we got sorted out with the developers before launch: Awesomenauts. For some reason, the Awesomenauts coupon codes would work but no new item would get added to the user’s inventory although the user got a message that an item had been added. This seemed to be a bug on Steam’s end which was ultimately fixed but we had to pull Awesomenauts off the Huge Seal site for about a day which was very unfortunate. We could’ve avoided this by testing the coupon codes earlier and thus solved the problem well before launch.
During the first night of the campaign our server went down for a while due to the high traffic we were experiencing. This was caused by some Apache memory issues as the first night was the highest peak in traffic we saw during the whole campaign. We temporarily solved this for the following nights by having someone stay up and restart the server every few hours. It wasn’t the most optimal solution and for the next Seal we’ll look into a better one.
What Went Right
1. The Games and The Developers
The campaign had an impressive 35 games from 27 developers involved which was a big leap from Summer Seal (having only our own games) and Autumn Seal (having 4 developers and 8 games). The developers were very eager about Huge Seal from the very get go which surprised us. Some of them were in after the very first email, some wanted to know a bit more details before jumping on board but all in all the developers were very easy and pleasant to communicate with. They were also extremely supportive of the campaign, helping to spread the word and being a pleasure to work with. It was truly an honor to have all these developers on board Huge Seal.
2. The Website
The design of the Huge Seal website was a great success. All the information on the site was conveyed well (e.g. The status bar showing how many games more until you get a free game) and made using the site straightforward and easy for the users. The design was made even better by having the site have small things that would react to what the user did, such as if the user tried to pick a coupon for a game they already owned the site would show a warning message. Also, we’re extremely happy with the way the filtering of the coupons worked. A big thanks to MixItUp, we couldn’t have made it work so well without this plugin.
On the backend side, many design choices made early on ended up paying off in the end. The time Johannes invested in learning proper database practices, as well as testing and optimizing the MySQL database meant that even at peak load the database remained rock solid. Also, despite an initial learning curve, the choice to use the PHP framework Laravel over rolling our own PHP code greatly helped with iteration times on both the backend and the database of the site. Laravel’s database migration and seeding features were crucial during testing and optimization, not to mention its Routing, Eloquent ORM and APC Cache support. Special shout out to the Laravel.io IRC for their help.
The site was also very stable and worked well during the whole campaign. This is largely due to the huge amount of work that Johannes put into the backend. As I mentioned, the backend took up most of the development time, but this made sure it was robust and couldn’t be exploited. True, it did eat up most of the development time for him but it payed off in the end.
The frontend itself came together very quickly within the last month of development. We had one additional developer on our team at this point to help with the frontend which was a great help and ensured that we got the site together for launch. All things considered the site was well put together in such a limited amount of time, and we received predominately positive feedback on the presentation and user-friendliness of the site.
3. The Campaign
Through Huge Seal we saw a nice rise in our sales, about 2-3 times more unit wise than normal. We don’t know the specific sales data for the other developers’ games but we know that they also experienced a boost in their sales. Everyone was very happy with the results of the campaign: we, the developers and the users.
As I mentioned, most of our support emails were related to the issue that users didn’t have their Steam profiles set to public before using the coupons. We also had coupon codes not work, issues with users using older versions of browsers and a bunch of unique problems. We responded quite fast (within hours) to all of the support emails and resolved the issues that users had pretty quickly. They were very happy with our help and we are extremely happy that we were able to solve all of the problems swiftly and efficiently. A win-win situation for everyone involved.
Conclusion
The campaign went extremely well and we are very very satisfied with the results. The developers were great to work with and their games were a real boon to this campaign. We plan on having more Seal campaigns in the future, so look forward to them.
The campaign was also a great learning experience for the whole team and now we have a solid backend which can be used in the future Seal campaigns and a good frontend to build upon. This will save us a lot of time in the long run. Also, now the Seal name is a bit more widely known so getting the word out to even more people will be easier next time.
I’d like to thank the whole development team for their amazing work and making this campaign, not only a reality, but a spectacular experience at that! A great thank you to all the developers involved for coming on board this campaign and thank you to all of you who visited the site and picked up coupons for these great games! To hear about the next Seal and our future projects, follow us on Twitter and check us out on Facebook. Until the next Seal!
– Julius
Leave a Reply