Category Archives: development tricks

How open source changed my life as indie dev

My game Planet Stronghold is present in the Humble Weekly bundle, celebrating Open Source! I thought was cool to share how I moved from closed source engine to open source.

It was Summer 2008. I had just finished coding a new space wargame in C++, using commercial libraries. They were good, but the real problem was that developing a game with them was taking so long! I’m not a good coder, and not having a big community or easy access to code examples, support, was a big deal for me.

At same time, I had an idea for a college dating sim, but I wasn’t an expert at all with it. So I contacted my friends at Hanako Games who made the game Summer Session using Ren’Py for me.

I never heard of it, but seeing the final result, I got curious and started to look into it more carefully. At those times, Ren’Py really wasn’t as good as is today, and doing anything except visual novels or simple dating sim was a real effort.

I must say that I immediately was impressed by the community at Lemmasoft (Ren’Py official forums) and Ren’Py author himself, always trying to do his best to do support for the engine. The fact that the engine was open source was a big plus, there were a lot of examples/code snippets available, and so I decided to learn it.

I was shocked to see how easy was to use, and how cross-platform it was, thanks also to the decision to use the powerful Python as language.

Six years later, I now use Ren’Py to do all my games, and adopting it was probably the best decision of my indie career ever. Without it, games like Loren would have taken at least twice the time, and ports of my games to Android or iOS wouldn’t have been so easy. And in times when having Linux support is going to be crucial in the next few years (SteamOS anyone?) is good to know that Ren’Py is already supporting it without the need of any big change! 🙂

Of course, there are other cool open source engines: I just wanted to share my experience with one of them. If you’re a game developer, check all the ones supported by the bundle!

So that’s my story. Thank you, Ren’Py, it was a blast so far! The minimum I could do was to offer one of my games to support your cause 🙂

Game development is a puzzle game

rebecca
Rebecca will help you train to keep in shape…! (from Planet Stronghold 2)

Game development feels like a puzzle game to me. How? Simple, let’s consider one of my games. How many roles/elements are needed to make one?

Let’s try to make a list:

  1. gameplay/rules = work of the game designer
  2. programming/coding = work of the coder
  3. artwork = work of the artist (in many cases, 2 or more for backgrounds and GUI)
  4. story/text = work of the writer
  5. music/sfx = work of the musician
  6. marketing/promotion = work of the PR guy
  7. hosting/demo/support = support / web dev guy

So as you can see, for each of my games there should be the need of 8 people. In reality, I almost always do point 1,2,6,7 myself, and sometimes I also do some GUI and write storyboards for the texts!

In the past I used to to really EVERYTHING on my own (using Poser 3d and royalty free music tracks) but luckily I realized that was much better to hire other people to help 🙂

The main problem when working with external people, is that since to finish a game you need all those roles/elements, often happens that I have some areas covered/completed, while others not. Some people work fast in an aspect of a game, others slow downs in different aspects.

In the end that’s why I say it’s like a puzzle game. You need all the pieces to finish and release the product. Unfortunately very often that takes a lot of effort 😀 but like all things in life, nothing comes easy, you have to sweat and work hard.

Another thing I often have to decide is the scope of the game. For example now I am playing with the great freeware tilemap editor Tiled, trying to make isometric tilemaps. For which game? well for Planet Stronghold 2, but also thinking if to make them for Seasons Of The Wolf.

The idea was to have a big map like Loren, that once clicked would let you zoom-in and explore the areas in more details, rendered as isometric map. I think the idea is great and I’m sure that I can make it, the only problem is: how long will take me? will I need extra tiles, so contact artist to make more?

When making those decisions I need to consider that there are two types of fans: those who wants the games fast and pressure you to finish them, and others that say “take as much time as you need”. But besides what fans say, I need to keep releasing games at regular intervals to survive in the competitive world of indie games, so right now, I am unsure if to use this system.

I set myself a deadline – if I can have the isometric map thing working in 2 weeks I’ll use it, otherwise not. Also because in theory very shortly Roommates public beta should start, and then will have even less time to make tests… 🙂

Some of my games available for iOS!

iOS
The popular Tom Shatz showing his face on my iPad mini! 😉

One of the first surprises of this year (and we’re just starting!) is the availability of many of my games for iOS, ported by a very good coder/friend (that’s why you see them under his name on the itunes store). Currently there are the following games:

Heileen
Heileen 2
Always Remember Me
Flower Shop: Winter In Fairbrook
Spirited Heart (both versions, you can choose which one to buy)

they all use in-app purchase so you can play them for a while to make sure they work fine on your device 🙂

More games will follow in the next weeks, including the RPGs, however in the case of Planet Stronghold I had to redesign the GUI a lot because was almost unplayable on the mini iPad. I am not bothering with iPhone since I honestly don’t think anyone can play games with complex GUI on those devices with such TINY screens! 😀 Besides, I should redesign the games completely for those devices and I really don’t have the time: however the game themselves will work, you can try if you want.

New games progress

Regarding the new releases, Roommates is getting a new scheduler screen, much better than the one I poorly designed myself (strange eh, that an artist is more skilled than me with GUI!):

GUI1-Roommates[prev]

I’m still coding it so is not 100% working but should be soon. I’m making progresses also with Seasons Of The Wolf, currently coded scene 07 out of… 26-27 😮

I know, is taking long time but remember that I started this game only last Summer, and I had still to work on Nicole and other games in the meanwhile! Anyway, I’ve got another writer working on the side-quests to speed things up 🙂

children

The good thing is that the artist who took 2 months break, is working on the romance scenes now, so I can definitely tell you that SOTW will be out this year, very likely the next RPG to be done!

2014: New Year Plan

mirtillo
My cat Mirtillo sleeping in an unusual way 😀

2014! Happy New Year!

I’m going to change completely my way of working. From now on, I’ll only make games in my native language, Italian.

Heh, good joke uh? 😀

The real plan

OK jokes apart the real plan is:

1) Release Loren on Steam. This is going to happen soon ! Took a bit of time to the coder to implement the achievements on all the OSes, but now everything works. The DLC Castle Of N’Mar will also be released, a few days later.
2) Finish Roommates. The game is long and the writer Michael tested it a lot, but I really think the best solution is start the preorders and the public beta testing, this way thanks to the awesome users in my forums the testing will go much faster. In the next weeks will fix all the issues found and code the scheduler, which will be similar to Flower Shop one.
3) Finish Nicole Yuri version – though this mainly depends on the writer to be honest 🙂 my job in this case will be to motivate her!
4) Release another otome game that for now I’m still keeping “under the hood”, but that I’ll announce in the first months of this year.
5) And of course, finish Seasons Of The Wolf and Planet Stronghold 2. Both games are quite big, but this time I shouldn’t be distracted by other things and will make sure to motivate and help the writer and coder appropriately 😉
6) At this point we will probably be in late 2014. Depending on the situation, either start working on Spirited Heart 2, Undead Lily, Loren 2 or something else. In this case is impossible to make any kind of prediction since there are too many factors and people involved.

Better integration with the story

Looking back at past year, one thing I didn’t do properly was to support the writers more. This doesn’t mean telling them exactly what to write line by line, but (for those who needed/wanted it of course) be more involved in the process as they write.

Some writers are happy to work on their own at their own pace with minimum need of my support/feedback: but in any case I need to check what they do to make sure that the final product reflects my vision and most importantly players’ expectations, and that works with gameplay.

And also I need to integrate the story more with the gameplay, though probably this can be done only by planning better the whole thing from start and writing a good amount of draft/storyboards myself, so will need more time for this.

Always Remember Me on Dailyroyale.com

If you missed my Christmas sale, you can still get a good deal for my game Always Remember Me at http://www.dailyroyale.com/! Expires in the next 2 days (approximately, there’s a counter on the site).

I have many other interesting things going on in the next weeks, stay tuned 😉

The perfect balancing in a RPG

Let’s get back to talk about one of my favorite topics, rules/game design for RPGs 😉
One of the biggest problems of all RPG designers is balancing the game difficulty and making the battles/random encounters interesting.

In my first two RPGs, Loren and Planet Stronghold, I used two similar approaches. The enemies would auto-level, but on a different scale from the player’s party, to make sure that as the player leveled up the battles would become easier.

I had defined a base enemy stats/skills values set at level 1. Then I decided how much increase they would get for each stat on every level up, and did some testing, making sure that the enemy progression wasn’t as quick/fast as the players.

For example, after 10 levels, the enemy could have gained +10 HP while the player (on average) +20HP. And then I was scaling those values based on the chosen difficulty.

However, it was very painful to code it, because I had to define every single enemy this way. Copy/paste helped, but when an enemy definition looks like this:

enemy

it’s not really the best to avoid mistakes 😀 Also, balancing the game required tweaking the numbers over and over, test again, and overall took a lot of time.

So what I have decided to do, to shorten development time and make at same time the battles fun and challenging?

The Ultimate RPG System!

I’m going to use a different system that combines auto-leveling with keywords-based allocation of enemies’ stats.

By default, the enemy will scale completely to the average values of the player party. So attack/defense/speed/magic, so that we have a 1:1 copy of the character average party members values. Then I’ll use keywords and/or relative values to define specific trait of each enemy to differentiate them.

For example I could write using relative values:

  • Attack: -5% (the Attack would be inferior of the 5% to the party average)
  • Defense: 50% (the Defense would be 50% better than the party average)

Or also write using keywords:

  • “Defender”, and define it as an enemy having +10% Defense value and +15% HP value
  • “Magician”, enemy having +25% Magic value and +10% SP value
  • “Fury”, enemy having +25% Speed, +25% Attack but -40% Defense value

and so on, you get the idea! Also, the keywords will be parsed in sequence, so I could apply two or more and the final result would be a mix of the various modifier.

I think this system could lead to a MUCH faster development time, and also to a more fun/challenging battles, even to a better randomization of the enemies (for example in a region of Fire creatures, I could define the Flaming attribute that gives +25% Fire resistance).

Of course, this doesn’t mean that all the enemies are of SAME LEVEL. Only that the default/base level now matches the average party level. So while before I was struggling trying to have enemies match the party level, now I use that as starting point to create the opponents! But I can have in battles weaker or stronger enemies.

I’m going to use a system very popular in MMORPG, using color codes:

relativelevels
The color coding system, so you immediately know how dangerous each enemy is

Green – weaker than your current party average
White – same level
Yellow – one level above your party averageOrange – two levels above
Red – more than two levels (it could be even 5 levels, like in the screenshot above)

This way is even more immediate to spot the most dangerous enemies just looking at the color in which their names are displayed 🙂

Those who like to grind will still be able to do it, because I can always define groups of low-level enemies, and they’ll still be easy to defeat. The items you’ll find can be sold to buy better gears, especially useful for those mad enough to play at the “Nightmare” difficulty level 😀

As you can see, I’m going to experiment quite a lot with this RPG! So far has been fun and the result are very pleasing (though as always I’ll need to wait for the feedback from testers).