Here’s a peek behind the scenes of the saga of Jumpy Friends and me.
What the hay is Jumpy Friends?
Jumpy Friends is the world’s first massively multiplayer online endless jumper!
So how do you play?
Simple. You tap the screen to jump your sheep as fast as you can, jumping over other sheep (also real players in the game) until you get to the front of the line.
The line never ends, and neither does the game. Some of the original players started jumping their sheep over a year ago and are way, way ahead.
But don’t worry, there’s hope even if you’re just starting out!
Everyone gives up at some point, and if you’re motivated enough, you can eventually catch the other sheep sleeping and take your rightful place at the front of the line.
Also, the beginning of the path is now littered with sheep who have quit before you, and you can leap entire herds of them in a single bound, leaving them in your dust while you bound onward toward victory.
And, you can play without even looking at the screen!
I play while I read a book or while I’m walking on the street. I know others play while watching a movie. Jumpy Friends requires absolutely no concentration.
Anyone can play, and anyone can win.
It’s just a matter of how much you want it.
The idea behind Jumpy Friends originates from a collection of other ideas.
First, I have an ambitious multiplayer game on my queue that I’m not yet ready to tackle. Jumpy Friends has one element of that game.
Second, I was somewhat frustrated by complaints that my games are too difficult. So I decided to make a game on the other end of the spectrum. A completely mindless pursuit that requires absolutely no brainpower and can be played on autopilot.
And third, I was frustrated by players who don’t seem to care about gameplay at all. My observation is that most of them only care about the glory of having their name on a leaderboard—to the point where they will cheat or otherwise game the game in a way that makes the game no fun, just to boost their leaderboard position.
So I thought, “Why bother making a game at all? Why not just make a playable leaderboard?”
And thus Jumpy Friends was born.
The Friendly Slog
I’m not very good about tracking dates, but I think I worked on Jumpy Friends between January and March last year (2017).
Jumpy Friends was my first game with Facebook integration, which I wanted in order to display public player profile pictures without having to police them myself.
I also used the Facebook login to reconnect the player to their sheep should they change devices, for example.
Facebook doesn’t have an officially supported Xamarin SDK, so it was a real pain to get it working on all of the platforms I support, particularly Windows. But I persevered.
Some of the fun technical challenges included creating an efficient data structure on the server that could potentially scale to many servers as necessary, persisting that data structure to database storage, creating a friendly authentication flow (always a challenge), fetching the Facebook profile photos and cutting them into circles, and just generally creating all of the custom user interface elements for the game.
I ended up adding an entire popover dialog framework to my game engine to support the user interface.
I also took the time to improve my Adobe Illustrator skills and drew my own icons for the first time. This was totally worth the time I invested.
I’ve drawn my own icons in every game since and it has allowed me to create a much more consistent and professional look in my user interfaces than cobbling together random icons found around the Internet as I had done in previous work.
In yet another first, I added Push Notifications to Jumpy Friends so you could opt-in to getting a notification if some sneaky sheep jumped you while you weren’t in the game.
I decided to go with OneSignal rather than roll my own solution, even though OneSignal does not support Windows clients. Sorry, Windows users. No Sneaky Sheep Alerts for you.
Overall, I’m very happy I went this route, and OneSignal has worked well. It’s also free, which is good, since Jumpy Friends doesn’t make a cent.
I wrote the entire online service myself in C# and hosted it on a GoDaddy shared server using a MySql database. Not as fancy as hosting it on one of the big cloud services, but the uptime has been fantastic and the price is right.
I use my own binary wire encoding (PBON, which is a binary encoding similar in spirit to JSON), along with encrypted authentication tokens similar to JWT with Proof-of-Possession claims (but again encoded with PBON instead of JSON), and digitally signed payloads intended to be reasonably secure without a secure transport.
Trivia: I wrote this serialization library on the beach in Mexico in an experience that inspired me to become a digital nomad.
If you want to use my serialization code in your own projects, you can find it on Github. I used to maintain a Nuget package for it, but trying to create a dll that works on all the various .NET platforms got ridiculous. I recommend using a shared project instead.
The protocol payload is pretty well optimized, but I have some more work I could do to ping the server for updates less often when you’re just sitting there and I know that there aren’t any sheep jumping nearby. Then again, usually you’re jumping away furiously, so that optimization isn’t so interesting in practicality, which is why I didn’t spend the time on it.
All of this protocol work builds on work that I had already done for previous games, going all the way back to 2012 when I wrote SpeedWords Arena. With each iteration it gets a little more sophisticated and polished, and I’ve got most of the messaging framework in shared code so my older projects benefit from the improvements as well.
On the server side, I’m looking forward to the day when I can port my service code to .NET Core and eliminate my dependency on Windows servers. This should expand my hosting options dramatically.
The bane of any game is cheaters.
If someone figures out how to jump to the head of the line in two seconds, who is going to feel like their months of knuckle-cracking, finger-numbing tapping were well spent?
It is essential that the game is equally difficult for everyone and that cheating is mitigated.
Overall, the Jumpy Friends network protocol is reasonably secure, and I’m fairly confident that the cost of cheating is prohibitively high (i.e., the cost out-weighs the benefit).
That said, I did initially forget to close a hole that allowed a simple message replay attack, so for example, you could record a message on the wire and then use an automated tool to replay that message to the server at high speed in order to jump without having to use your physical digits.
But never fear, I quickly closed that hole and now you will make no forward progress if you replay messages. Nor can you hack the message contents on the wire, since they’re digitally signed.
As a last resort to protect against cheating, there’s a 5 m/s speed limit in place on the server that you cannot exceed even if you do figure out how to automate the jumping.
SIDE NOTE: I went to the artist web site out of curiosity and it no longer exists. What happened? Was their Jumpy Friends experience so depressing they quit their entire career? Was it their encounter with me personally? Sadly, we’ll never know. It’s one of the mysteries of the Jumpy Friends Journey left to our imagination. And I’ve got quite an imagination, let me tell you.
Jumpy Friends was my first game to feature some actual art. Before this, I drew everything myself, which is why all my games were composed of blocks or tiles.
I posted a notice for an artist on Craigslist and got quite a few responses, one of which materialized into a person who created one of the backgrounds for Jumpy Friends.
We were in talks about creating a partnership when I received an email that the artist no longer wanted to work with me.
No explanation. No further communication.
So I purchased art on Fiverr, which gave me enough different scenes to ensure that 99% of Jumpy Friends players will never make it to the last scene in the game.
One of the critical design components I debated was whether or not to allow big gaps to develop between players.
I’m still not confident I made the right choice there.
On one hand, I wanted to ensure that players who put in the jumping time were rewarded by making progress and creating a safe distance between them and the following player.
On the other hand, once a large gap appears, it becomes really disheartening to the player that needs to catch up.
In fact, it’s so depressing that most people just give up and quit at this point.
Also, one of the most fun parts of the game is encountering and racing another sheep jumping along with you in real time. Once you encounter those big gaps, Jumpy Friends becomes a lonely pursuit indeed. You might encounter another sheep once a month if you’re lucky. And usually they’re sleeping.
But let me tell ya, when you do finally catch up to another sheep, it’s a big deal. A major life accomplishment. Seriously. I take screenshots of each jump as I approach and turn on my sound and then laugh and cheer and whoop and holler and taunt the air in all kinds of strange and wondrous gestures as I make the final leap and hear that magic sound of triumph. “Eat my dust, loser!!! Victory is mine! Smell ya later!”, and whatnot. I seriously embarrass myself. Almost makes it worth the struggle.
Until I see the distance to the next sheep in line and my jaw drops mid-holler.
“What?!?! WHAT?????!!!!!”, I scream, and then in despair, “O.M.G.!!! This is ridiculous. I seriously cannot do this anymore. Can. Not.”
In the end, I decided to leave Jumpy Friends as it is—a true and punishing test of endurance.
However, I do have a design in my back pocket for a spin-off that eliminates the gaps, which would completely transform the game into a competition where the most recent player to jump wins—until someone else jumps.
That could be interesting, but the potentially massive concurrency issues with many sheep simultaneously jumping in the air would be challenging and maybe too weird for players to grok. (On the other hand, that’s kind of a trademark of most of my games.)
Roughly 1,400 players have ventured into the game to date, of which 400 have made it past the 1 Km point, and only 50 past 10 Km.
And a grand total of 70 players have taken the time to save their position and show their faces by signing into Facebook.
On a daily basis, I’m lucky to see even one jumper in the entire game these days.
I’m really proud of a couple of the reviews I’ve gotten from the App Stores, though.
There are a couple of reviews that say the game is fun, but those are from my friends and family who are just being nice. (And I really, really appreciate it!)
Here’s a real review that I love. Probably my favorite review of all time.
This game is b*******. There’s no point to it and you just tap forever. I’m up to 11,000 taps and I’m in 43rd place. It’s just the most pointless game there is in the world. Don’t bother wasting your time. —1 Star Review
I think congratulations are in order for this reviewer! They managed to tap more than 1,338 other sheep to scratch and claw their way up to #43! I’m actually impressed with their tenacity.
And here’s another favorite that someone wrote as a review for my game SlideWords. However, it was clearly intended for Jumpy Friends, proving my point that Jumpy Friends is so easy to play that even people who can’t figure out how to leave a review for the right game can have fun with Jumpy Friends.
I like how I click on the sheep that it makes a noise. Also my screen now has a dent because I been tapping my sheep too much —5 Star Review
A dented screen! Wear that like a badge of honor, sir or ma’am. That’s some seriously hardcore jump. You have my respect.
The Future (Baah)
Personally, I think Jumpy Friends is hilarious and I’m proud to have created it.
But, let’s just say that Jumpy Friends hasn’t been a hit.
So further development is on hold while I work on something that can potentially generate a living wage.
I have dreams about returning to Jumpy Friends and expanding on it someday, for example, adding collectibles (for only the one player in the universe who finds them!), adding the “Friends” social part of Jumpy Friends, and having real-time races that benefit real charities with real money.
(A Jumpy Friends race is just as legitimate a fundraiser as people strolling 5 Km around a real-world track, right?)
I’m also waiting for someone to create a robot to tap the screen so I can wage a coding war with the robot designers, trying to detect and block them without impacting the real humans. I think that would be an interesting challenge.
And finally, I have a couple of spin-offs planned that will build on some of the core mechanics of Jumpy Friends. Specifically, the online multiplayer aspect.
If you still want to try Jumpy Friends after this tedious synopsis, hey, this game might just be for you!
Jumpy Friends is a game that’s really designed to be played with friends, though. (Not that I’m assuming this eliminates you.)
So I highly recommend that you find some friends to start the game at the same time.
Trust me, it will be a lot more fun this way.
As for me?
I’ve struggled to hang on to my Top Ten position. But like I said, Jumpy Friends is a game of endurance and almost no one else has endured. So I’m making my move for the Top Five. I figure a month of steady jumping should do it—if everyone else will just stay still.
I told you Jumpy Friends is about endurance!
P.S. Guess who’s the #1 Jumpy Friend, aka, Top Sheep?
(Hint: She was featured in my first podcast interview!)
Download Jumpy Friends at JumpyFriends.com!
And don’t forget to play with a friend!