This week Jesse is in Vegas, but he was still able to make this awesome new banner that I’ll use whenever the blog is about some tech stuff I have been working on.
This week I’m talking about some of our experiments with procedural level generation. We’re a super small team (one programmer, one artist, one designer, one audio person), so creating a lot of content for our games can be challenging. In Shellrazer we used random groups of enemies spawning in the level, which were procedurally generated using difficulty curves. There was still quite a bit of hand work, but the result was a way more varied experience than we had before.
In the next game(s), we’re looking into taking this a lot further. For Star Razer, we wanted randomly generated caverns to explore. There’s lots of cave generation algorithms out there, but we wanted to be able to control the action in each part of the caves, with obvious ambushes, end bosses, etc. So what we came up with is a series of connected random rooms. Each room has one entrance, and any number of exits. Here’s an example of what this looks like in the editor:
This particular room as one entrance (at the top, green), and one exit (red, at the bottom), as well as a squad of enemies lined up to attack you once you get close.
The general idea is to create a LOT of these rooms by hand so that there’s a lot of variety in the caves that are generated using these rooms. When the cave generation code puts the rooms together, it can use different metadata to generate the cave you want such as difficulty for each room, enemy race present for this level, etc, so that the cave that is generated fits with the expectation of the player. For example, if you do a mission that says it’s a Donkonian mission, it would be weird for Crabulons to show up, so the metadata can filter these rooms out.
Rooms can be rotated and flipped to make them fit to other rooms. In the end, a possible cave could look something like this:
The start location is the bottom most room, and as you can see some rooms are rotated 90 degrees to fit to the previous rooms.
We haven’t added much enemy behaviour yet, but we did add a line of sight system that properly exposes parts of the cave when you fly around. It’s barely visible in the video below, because it seems youtube made the video a lot darker than the one I uploaded. Anyway, keep in mind that this is VERY early footage, and in no way represents the final game. There currently isn’t much game-play to speak of, and to be super honest, it’s not a whole lot of fun yet.
While working on Star Razer we’ve been working on a prototype for another game, and somehow that prototype is a lot more inspiring to work on, and it has pretty much taken over in time commitment. We’ll probably post some more about this project in the future, and Star Razer may end up on the back-burner for a bit. Having a small indie company in which you can do what you want rocks! :)
Alright, that’s it for this week, I hope you enjoyed the little look in the kitchen!
This week was one crazy week. We shipped Shellrazer on Android as a free app with an in-app-purchase to unlock all levels, and we got over 450,000 (!) downloads since last Friday. Sweet! Thank you to all the people giving Shellrazer a go on Android!
I thought in this weeks dev-blog we’d give a little update on how things transpired.
We launched on Wednesday, and we fixed a few minor issues preventing the game from being installed on some devices. On Thursday things were slowly picking up, and then on Friday we were featured on the Google Play store. Open the floodgates! Very quickly we had 50,000 downloads and, as expected, a number of support issues. Since I’m the sole programmer on the team, if kinda felt like the picture below. :)
I worked through the weekend to fix one particularly big issue on the Samsung Galaxy S3. For some users the inputs were lagging so much that the game was completely unplayable. This freaked me out a little, because it seemed to affect only certain models in the USA, and I didn’t have access to a phone of exactly that model. I changed a bunch of things in the code, and had a few of the people who emailed me about the problem test it on their device (Thanks a ton! You know who you are!), and confirmed that it was in fact fixed. We updated the game to 1.21 yesterday morning, and things seem to have calmed down a bit.
One particular thing players seem to dislike is that Shellrazer is listed in the Free games list, yet it requires an In-App-Purchase to unlock all levels. When we hired our Toll-Troll, he thought it was going to be the job of a lifetime to collect the toll from people, and he was super excited to start his job on Wednesday. He had to endure quite a bit of abuse and one star ratings, so he’s had a rough few days! Poor guy.
I thought I’d address why we chose this model of a free game with an in-app-purchase to unlock the rest.
When we designed Shellrazer for iOS, it was our intent to make it a paid game, and have completely optional in-app-purchases for things like a coin doubler (the bookie) and coin packs. We made an effort to make sure the in app purchases aren’t required to have fun in the game. People with skill should be allowed to play the entire game without ever having to buy a coin pack. I think we managed to achieve this goal very well, and we’re happy with how the game isn’t pushing in-app-purchases on you.
When we started working on Shellrazer for Android, we wanted to use the same model: a paid game with optional in-app-purchases. However, when we first uploaded a test version of the game to Google Play we saw that the game was compatible with 1701 different Android devices! That’s a huge number of devices! We can’t possibly test on all those devices, and the last thing we wanted was somebody buying the game and then finding out that it doesn’t work on their device. That would really suck. So instead we decided it might be a good idea to make the game free, and have an in app purchase to unlock all levels. That way people can try the game first, and if it works properly on their device and they like it, they have the option to buy the rest of the levels. Great! … right? … right?
Something we probably haven’t made clear enough in the game, or possibly people aren’t aware of, is that there are two types of in app purchases. There are consumable and non-consumable in app purchases. Consumable purchases are things like coin-packs: one-off boosts to your number of coins. Non-consumable purchases are things that stay linked to your Google Account forever, just like when you buy a game. The bookie and the unlock all levels are non-consumable purchases. So if you install the game on a new phone, and you use the same Google account, the Game will have the levels unlocked and the bookie installed right away, because these purchases are stored in your Google Account. So in a way, buying the in app purchase for all levels is the same thing as buying a paid game, except you can try it out first and see if you like it.
Alright, I think that’s all for this week. I hope it cleared a few things up!
Again, thanks a ton for playing our game, it’s pretty awesome to have this many players so quickly. 1 million players, here we come!!
For Android we made the game free for 10 levels, after which you’ll find the way forward blocked by a toll-troll. You can bribe him to let you through and raze the rest of the levels, how sweet is that! Our goal is to have as many people as possible try our game and see if they enjoy it. It’s a different model than the iOS version (which is a paid app), but we thought we’d try it out. If this model does really well on Android, then maybe it’ll be worth experimenting with a similar version for iOS. I guess we’ll know in a few weeks!
It’s been a bit of work getting my engine ready for Android, but it’s finally done. Some people commented before that I should have just outsourced the conversion to Android, but I wanted to do the conversion myself to make sure that the engine was Android-ready for the next game we do. I’ve got this system set up where I can develop the game entirely on the PC (Visual Studio ftw!), and then flip a switch and the Android version or the iOS version is generated for me almost without . If I had outsourced the Android build, this would have been a lot more difficult to get right. Give a man a fish vs. teach a man how to fish kind of thing.
Alright, that’s all for this weeks dev-blog, start up those turtle cannons on the Android!
This week we have another blast of baddies and some game ideas for Star-Razer! More of another fluffy art post but Nicks been super busy hammering away at some tools and getting that Waanderful Engine of his implementing new things. So lets just sit back and get our alien-enemy on!
Here’s some of those Starsquatches we saw in earlier posts. We wanted them to be a tough race to take on so we thought about minefields, bunkers and other defensive structures. Attacking a Starsquatch Asteroid base should be a tricky mission, Starsquatches are one of the only races tough enough to have space-faring marine type units that really pack a punch for their small size. Playing around with the “blasteroid” idea paved way for floating gun emplacements attached to slowly spinning asteroids.
Talking with a few friends at the Full-Indie last week the Refractor race really seemed to resonate with some of them. That got us brainstorming some ideas on what their battle-asteroid could look like and what enemies you would need to take on. Making some enemies more monstrous in appearance and attacks could really mix things up. The Man-O-War for example would pummel your ships as well as zap them with lasers. We also toyed around with the idea that the Refractors could bounce beams off of pylons to nail your ships, so you would need to take down the pylons before approaching the crawlers.
Enough of the spaceships, lets get some monsters up in here! Here’s the Crabulons, scary shelled space creatures with armored carapaces and scary beams mounted on them! We were thinking Crabulons would be an entry level asteroid where you’d deal with mindless creatures and get the hang of the game being more physical than your average space shooter.
So another week blasts by! We’ve been doing some planning and looking into the future here at Slick and will let you guys know what’s happening next week! Sorry for another fluffy art post but we never want to miss a week with you guys! Have a great week all and we’ll be seeing you next time here on Dev-Blog of the Space!
Posted by: Jesse Under: Star RazerComments: Comments Off on Dev-Blog 48: More badguys and some updates!
I almost can’t believe it: Slick Entertainment is a decade old! In the last 10 years we’ve made a bunch of great games, and I am super proud of what we’ve achieved with our small team: 4 fun games, custom C++ engine on 6 different platforms, 3 games feature online multiplayer, all hand-drawn art for […]