This is a guest post by Niklas Hösl, who created the ski jumping game HighJump 2014 with his colleague Michael Nigl.
Why a Ski Jumping Game?
Ski jumping is not one of the most popular sports out there, but there is one good reason why we developed HighJump 2014: I am the biggest ski jumping fan in the world! So nothing more to add… But there’s also a little background story to the game: A long time ago, it was 2008, a boy called Niklas learned Java in the 2nd class of the HTL (Austrian’s technical high school). He had no idea about how to create a game, but he had the dream of bringing his favourite sport to the PC AND he had Java’s Graphics2D and the rest is history: With 6000 Lines of ugliest spaghetti code, with no game engine, no physics engine (or any other things that make game development easier) he formed HighJump. The “High” in the name was chosen, because in the first version the jumper was up to 20 meters high in the air during the flight. Nevertheless the game was very fun and addictive, and there was no doubt about a HighJump successor…
Back in November 2013 a new lecture started in our Mobile Computing class at the University of Applied Sciences Hagenberg. It was about platform independent software development with C++, Qt and V-Play. As a student of Hagenberg, you usually know the name “V-Play Game Engine”, but none of us had worked with it before. Neither with V-Play nor with Qt/QML (which is the base of the game engine). Christian Feldbacher, lector and co-founder of V-Play, told us that the goal of the lecture is to create a game, which should be finished by the end of the semester. In the second I heard that, it was clear to me, that there is only one game, worth to develop. Together with my colleague Michael Nigl we jumped into the adventure “HighJump 2014 developed with V-Play”.
So when we were friends with QML we had to think of the graphics and especially of the heart of the game: How to create our hills?
The graphics question was answered by our own. I am not a graphic designer, but I am also not too bad in that field. The results you see on the screenshots. 😉
Creating Hills with the V-Play Level Editor
First we thought of focusing on creating one hill hardcoded in QML. But after adding the first entities, we were sure that this is no solution: It is not maintainable and more important not scalable (which in our case means that we could not create bigger hills this way).
Fortunately V-Play comes with built-in level editor components, which saved us lots of time. These components helped us to create a customized level editor that is designed specifically for our game. With the existing level editor components for example to drag entities into a level and to save and load different levels and balancing settings, this task went really smooth.
Our level editor currently has about 20 different entity types and it turned out that one level consists of about 150-200 entities. Hardcoded, every level would had at least 1000 lines of code. Instead, we were now able to create a new hill in about 15 minutes! This already includes the time for playtesting the hill while the game is running and to balance the take-off and landing areas so it is fun to play.
In this image you see our level editor we used to create 4 different hills:
The next thing was the physics: Our hills consist of complex entities, not only rectangular ones. We found a physics editor, which let us derive polygons (for collision detection) from our graphics with a few clicks. Too bad that this editor did not yet support V-Play. But there is always a solution, so we created a small C# tool, which converts from a supported platform to V-Play. That tool did not only save us hours, but also some other colleagues’ 😉
From now on there were no big obstacles anymore. At the end of January 2014 we published HighJump 2014 to the Google Play Store. In the first 10 days we already had 5000 downloads, without any marketing. Especially guys from Poland seemed to like the game.
With such a start, we could not stop development: The next step was the V-Play Game Network integration, which was – as promised – done within about 10 minutes. This allowed us to add leaderboards to each hill so our players could compare who has the widest jump. We could immediatelly see that players were playing our game longer in Flurry analytics, so this addition really paid off.
And the users seem to like comparing their jumps very much, as I am out of the Top 30 already on some hills (and obviously I know how to jump). 😉
Only the required switch to the daily builds which I was not aware of made the integration last longer, but I have told the V-Play team so and within a week the doc got improved and contains this information more prominently now.
V-Play promised us that a game can be created with their engine in three days. I think you can even be faster than that, but due to the problems we faced with the custom physics parser it took us about three days (where 1 day = 24 hours of work).
The V-Play components helped us to save time and let us focus on the important parts of the game. And the build server let us quickly test our results on mobile devices. Sadly, as a Windows Phone developer, my favourite platform is not supported yet. But from what I’ve heard this will change with the next big V-Play update v2.0.
Also your support is great, thank you guys!
What will follow?
With Florian Peinsold a real graphic designer (MTD student in Hagenberg) joined the HighJump team. He will help us to polish the game. We also plan to release the game on the iOS App Store – the sad thing about the App Store is the review takes 1-2 weeks so hopefully it will be available very soon.
Obviously the next updates will bring bigger hills again. And a dream would also be to create kind of a world cup, like in the famous game Ski Challenge.
Stay tuned and take a jump now, HighJump 2014 is free to play on Google Play here.
We also created a Landing Page where the iOS App Store link will be added in future and where we post news about HighJump. You can find it here:
Download HighJump 2014