Hi, I'm one of the creators of the landing page. We thought traditional beta signup pages were boring (ie. Launchrock style) so we added a "Ravn Hunt" game to our landing page. Our landing page was pretty traditional beforehand, but after the game, user conversion went up as people became more engaged, and kept playing for the invite code.
It also helps that we invite the top 10 users who achieve the highest score everyday so that people have a goal to reach to get the invite. And of course, the Facebook share button helps with spreading the word.
Nah, don't feel stupid. I've just been thinking about stuff like this, where basically you can let people get going anonymously, because in some instances people are going to want to save something. it just may turn out that scores on your game is one of them, so just like entering in one's initials in the arcade, you can ask for email.
For what it's worth, I've been involved in A/B testing this exact thing to hundreds of thousands of new casual game users. You might be surprised. I would highly recommend the OP test this theory. :)
just to provide even more context. In our previous system, you entered your email to be in our beta queue. You could enter 3 of your friends' emails to move up the queue. Pretty standard stuff. We didn't think much of it.
In our last HN post, a reader named zem had commented that they didn't like the 3-invite system. http://news.ycombinator.com/item?id=3194012 (click parent to see the original post). As i mentioned earlier, we saw it as pretty standard practice and hadn't given it an extra thought when we implemented it, but the comment sparked the question, how could we make beta invites more engaging when just about every other company out there is doing the same thing.
I had top score until someone got a score of 100001158 (mine being 3385. You may need to take extra measures to ensure the scores are valid and from the game.
It looks like a post request with an authenticity token that never changes during the session, so you can just post a new request with the same authenticity_token and invite_id, but with any value for new_score :)
you're right. honestly we didn't try at all to make it difficult to hack. figured that no matter what we did, anyone with decent skills should be able to hack it. after all you can see all the source code! (like jerry said in another comment, we're not a gaming company after all - it was just a fun little experiment) - excites me that it piqued people's interest enough to go poke around in the source code though! :)
The best way to prevent any sort of manipulation is a combination of two things: have a "maximum conceivable score" and regulate the scoring server side. Every time a "round" ends (ducks on the screen) send the data to the server, compare the score relative to the previous score and if it's ridiculous (eg: the max score they could get is 500 and it's 10,000) you dump the session for being fake.
The obvious flaw with this is people who just work out what your maximums are and then get the 100% score, but it discourages the ridiculous scores.
edit: one of your people said this below, disregard :-)
Looking at how this worked was quite interesting. I hadn't really played with the JS console before. Thanks for making a contest that wasn't totally secure. =)
haha good job stanton. obfuscate probably would have added 30 seconds to the time it would take to hack it. If we really wanted to make it more robust, we would have added a validation to the score, a validation ensuring that time had passed between duck clicks, (looks like you didnt click ducks at all in your case), a minimal time to beat the game, a validation that ensures you didn't exceed the maximum possible score, and whatever other means to make it more annoying to hack, but even then... and in the end, we're not a gaming company and this was just a fun lil exercise we threw together to test a concept. Good job though haha, we knew if we posted in tech, this would probably happen :)
I'm a programmer. I always have dozens of apps running. The point was, it's silly that you can't smoothly translate a few images at a mere 30 Hz with plenty of CPU power to spare.
31 comments
[ 15.8 ms ] story [ 585 ms ] threadIt also helps that we invite the top 10 users who achieve the highest score everyday so that people have a goal to reach to get the invite. And of course, the Facebook share button helps with spreading the word.
---edit---
Here's a pic of our old landing page http://i.imgur.com/ZhURi.png
It was pretty straight forward, full size image in the background with a simple Request Invitation button in the middle. Hope that helps.
In our last HN post, a reader named zem had commented that they didn't like the 3-invite system. http://news.ycombinator.com/item?id=3194012 (click parent to see the original post). As i mentioned earlier, we saw it as pretty standard practice and hadn't given it an extra thought when we implemented it, but the comment sparked the question, how could we make beta invites more engaging when just about every other company out there is doing the same thing.
If you do: $('div.ducks').mousedown(); in the developer console it's pretty hilarious.
The obvious flaw with this is people who just work out what your maximums are and then get the 100% score, but it discourages the ridiculous scores.
edit: one of your people said this below, disregard :-)
Edit: and now myself. I had accidentally typed the wrong id.
I'm a programmer. I always have dozens of apps running. The point was, it's silly that you can't smoothly translate a few images at a mere 30 Hz with plenty of CPU power to spare.