31 comments

[ 15.8 ms ] story [ 585 ms ] thread
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.

---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.

You could just have the game ask to enter your email address if you want to save your scores.
+1 or even have the game prompt you to enter your email address to play level 2.
really good point, lots of room for optimization
you're totally right... feel really stupid that we didn't do it that way in the first place!
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.

My coworkers are wondering why you're encouraging potential users to shoot your mascot/namesake, but my coworkers are nitpickers. That was fun!

If you do: $('div.ducks').mousedown(); in the developer console it's pretty hilarious.

All the high scores are based on this now, except for one person who probably modified the JS for the scoring system.
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.
Lol, if you're able to hack the score, please send your resume to hiring@ravn.com
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 :-)

Also need to rate limit this, so you don't have someone playing an infinite number of rounds over 5 minutes.
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. =)
I hadn't tried, but with your encouragement, I just gave someone a score of 9001.

Edit: and now myself. I had accidentally typed the wrong id.

theGame.score = 9001;
you should obfuscate that js ;)
haha good call - but i know that wouldn't stop you either! (sorry, i adjusted your score down...)
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 running on a 12-core machine with a high-end GPU on the latest version of Chrome and the parallax scrolling is _still_ hitching. Just sayin'. :)
any number of cores more than 1 is only relevant for parallel code (or multiple concurrent apps). Which, for this page, is probably not the case.
> (or multiple concurrent apps)

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.

I'm running it on a netbook and while it's choppy, it's not that choppy...
I just added a made up email just to see your game. Does that really help you?