Friday, January 27, 2012

Grinding or not grinding, that's the question!


In the photo above, Gilda and Leon sleeping "head to head" :)

I was hoping to announce the start of the beta pre-order for my fantasy RPG "Loren The Amazon Princess" but alas, I am going to delay it by a few weeks. I'm hoping by mid of February to have the full chapter 1 finished.

Below some screens of the vendor (WIP) and the battle with a 99% final layout:

What's left ?

You might ask what exactly is missing? The biggest part of the game is done, but there are a lots of small things missing. To be clear I could release the beta at the end of this month, but it would miss a several interesting features like:

  • working vendor - the vendor code is still half-done, and even if the coder probably could finish it in 3 days, it would be greatly untested. Also I would need to define the vendors inventory, check what kind of items they might have available, and so on!
  • side quests - I'm thinking what to have as side quests. In the game, there are already side-quests but they appear later in the game, in particular in the expansion when you can choose if to recruit Sauzer, Mesphit and Chambara. I want to add a few more, nothing complex since the game is already VERY long, but still...
  • map system - it will be a simple map system like Planet Stronghold (nothing complex) but still I am missing the art and good part of implementation (like random encounters, and so on)
  • battle effects - there are SOME battle effects done (nothing fancy!) but when you have 80+ skills to do, it starts to be a LOONG task. I don't want to spend much time on this, because it doesn't make sense to make lots of efforts for a 1-2 second animation, but still I don't want it to look like a total crap :D

So as you can see, nothing really ESSENTIAL to the game, but I don't want to rush out the beta, and have people test an already outdated version, since I will add most of the things above.

What about the grinding?

The term grinding, as defined by Wikipedia:

"Grinding is a term used in video gaming to describe the process of engaging in repetitive and/or boring tasks not pertaining to the story line of the game. The most common usage is in the context of MMORPGs in which it is often necessary for a character to repeatedly kill AI-controlled monsters, using basically the same strategy over again to advance their character level to be able to access newer content."

As you might know, I make heavy story-based games. However, Loren is the first game that has a very solid RPG gameplay. It's much deeper, detailed and also complex than Planet Stronghold. And you can reach up to level 30 (I decided to lower the level cap from level 60 !).

I know that some people hate grinding, while other consider it an essential part of RPGs. Of course, not an excessive grinding, but if the battle is well done, it's cool to kill monsters to gain more experience and unlock new skills.

In my case though, it also helps the game. As much as I can test it, and even if I offer different difficulty levels, I cannot know every single player skills. So even if I give out more experience points at Easy difficulty level, I cannot know if it will be enough for everyone to win the battle with Jul in chapter 4 of the game (it will be a hard battle!).

A solution is to leave some zones of the map with "wandering monsters", so that if the player is stuck in a battle and cannot seem to win it, he can visit those places and fight some grinding battles to gain more experience and level up. As consequence, he can retry the previous battle but with a strongest party, increasing the chances of winning.

I think done this way, grinding is not a bad thing anymore, but is a sort of "approved cheat mode". You can win most battles at your selected difficulty level? Good. You can't? Try playing in a easier mode. You still cannot win that specific battle? Try grinding a bit, and then come back with a strongest party and kick the enemy's ass!

The other games

I know recently I'm completely absorbed into Loren and haven't updated much the other games progresses. This is because Loren is a very long and complex game to make, and I want to finish it soon. However don't worry, since after it's finished I'll release some new dating/life sim, including Heileen 3 (probably this summer).

Here's a picture of Marie with the "new look". I find her very cute:

And she is a romance option ;)

Friday, January 20, 2012

Old school vs modern RPGs

In the image above, my cat Orfeo (italian for Orpheus) on the bed.

Today I want to talk about some differences between "old school" and "modern" RPGs, since I'm working right now on Loren Amazon Princess that is what I would define a "old school" RPG for some aspect, while "modern" for others.

Below a gallery with some preview images, showing several aspects of the game:

One of the main differences between oldschool and modern RPGs is the turn-based / real-time mechanics. Most modern RPG use real-time. Unfortunately, I was kind of forced to use turn-based because making a real-time game needs lots more animation/art, and in general is harder to make.

I still have a battle movement order though, which is dynamic. If you see the column on the right, shows the movement order, and as you hover the mouse on the possible actions, it gives you a "preview" of how your decision will change the order. So beside the power/effects of a skill, you'll also have to ponder the delay that the same skill gives. Sometimes for example, is better to use a skill that does less damage but lets you kill two goblin thieves already injured, than "waste" a skill that does more damage but pushes you back on the movement order list.

Another difference is auto-mapping. In my game I don't have dungeons with map, so there will be just a main map of the world, with easily accessible places. But I remember some oldschool RPGs that didn't have an automap, and you had to write down on paper the map of the dungeon. Seems crazy thinking about this now !

The user interface is also something that was greatly improved over old RPGs. Last year I bought Temple Of Elemental Evil, and was shocked by the clumsy interface: no mouse over, so simple button to change view/move object between players, and so on. Most modern RPGs use a "shared inventory", that means all player have immediate access to all item owned by the party. If someone has an item equipped you usually need to unequip it to put in the pool, but before every item (even unequipped ones) was carried by a specific player, so the user had to do a much bigger amount of clicking.

The vendor / items comparison wasn't automatic like now. In most new games, you have a way to immediately see if an item you just looted is more or less powerful than the one you're carrying. Before instead you had to look at all the statistics and decide for yourself! It was crazy, right? :)

Also, with a RPG featuring only one character is quite easy, but if you have a party things starts to get complex: what if there are two warriors in the party? you need to tell the player if the new longsword you just found is better or worse than the weapons equipped by both warriors. This is the problem we're facing right now with the loot and the vendor in Loren Amazon Princess game!

The difficulty level is also something that changed radically over time. Most old RPGs were very hard, while modern ones offers at least several different difficulty levels, so people that just want to have easy combat and progress in the story, will be able too. In Loren there are three different difficulty levels, and they have a big impact on gameplay rules. At easy level, enemies are easy and the elemental resistances have a marginal impact on battle. At hard level, enemies are tougher and the elemental resistances have a key role: hitting an enemy vulnerable to fire with a fire-based skill will have a much bigger impact.

Lastly, the level progression was completely different. Even if I have to say that JRPG were always different from western RPGs, but in general leveling up after the first early levels was a big achievement. In AD&D games, already getting from level 5 to level 6 could take a LOONG time! Recently, beside the already mentioned JRPG, even in modern MMORPG like Everquest or WoW, you're going to see the levelup screen much more often.

In Loren, I have decided to use this system: each character has a main class (Warrior, Thief or Mage) and a specialization (unique) class. Each class has 5 different skills, and each one has 3 levels of power. So as you see, each character has 30 different skills that can learn. So I have decided (though this might change during testing of course!) to have a level cap of 60, and give a skill point every 2 levels. This way, at level 20 you could have learned all the skills for every character, but at the basic level of power: so will add some more strategy since the player will need to think which skill to raise up to the maximum power level?

Every level up instead you get 3 attribute points, to spend on Strength, Skill or Will attributes. Will write about those three attributes next friday since the explanation is long and beside... by that time I might be about to announce the open beta preorders! (crossing fingers)

Saturday, January 14, 2012

Professional developer's look at Ren'Py

In the image above, some Ren'Py code (people familiar with python might recognize some keywords/syntax) from my current project Loren Amazon Princess in my preferred editor, SciTe.

Ren'Py was created by Tom Rothamel, as a tool to help everyone to create visual novel games, with very little or no coding knowledge required. I first learned and started using it around Summer 2008, and since that year it has evolved quite a lot. So it's been 3 years and half since I started using it, and right now I can prototype many games rather quickly, even if works better for certain kind of games: heavily story based, with no real-time animations and of course 2d, since Ren'Py is a 2d game tool.

Currently Ren'Py is available for PC, Mac, Linux and is still experimental on Android, though it should be available sometimes in the future. There's no iOS version planned at the moment of writing, even if the author seems to be thinking about it.

The language

Ren'Py, as the name suggest is based on Pygame and Python, which I consider the most advanced language available today. Simple, concise, but at same time powerful and easy to use.

It was love at first sight for me: I was used to type the Divine Comedy in C/C++ to load a .csv or do string operations, and when I realized how quick was to develop with python I immediately started to learn it, and it was very simple process (thanks also to the online documentation).

Ren'Py is NOT a visual tool. You don't use the mouse to place UI. You use an IDE, currently available are SciTe or Jedit. This might discourage many people who first approach it, especially if they're not coders but are used to play with Flash, Gamemaker, Stencyl or other visual creating tools. However, you soon realize that for certain kind of games there's nothing better than Ren'Py and you don't actually need a visual editor at all.

As I said the language was designed with visual novels in mind: though you can use it also for any story-based game like dating sim, RPG games, or adventures with some extra coding.

Recently a new Screen Language and ATL (Advanced Transform Language) were introduced, making the creation of interactive screens and special effects (zoom, rotation, movement, etc) even easier.

The Good

Very simple cross-platform capability. Since python is an interpreted language, this means that you can build the game for the three platforms (PC, Mac, Linux) with ONE CLICK. This is simply amazing! And you don't have to worry for different behaviors: if the game works in one platform, it will behave the same in another. This was a big plus for me since I was used to have mysterious bugs on Mac when coding in C and Xcode, that weren't present on PC.

With Ren'Py, I went as far as copying new .rpyc (Ren'Py compiled source scripts) directly into the zip (Mac version) or the tar.gz (Linux versions) from my Windows computer, without rebuilding the games and it worked, I didn't encounter any problem. So for example you can develop for Pc, Mac and Linux without the need to buy a Mac or have a machine with Linux installed.

Powerful language and syntax. The language is really simple and intuitive. Remember that it's a tool specialized for Visual Novels, but you can effectively write most 2d games with it. Probably the only ones that I wouldn't reccommend coding are those who rely on real-time movement, like a RTS, shooter, or similar. Note that is still possible to make that kind of games, but I would pick another tool honestly.

Still for any other 2d game it's really a great solution. Very strong GUI system, combined with the ease of use of python makes this a great tool.

Easy to debug. In most other languages, debugging is a pain. Not just finding the bug, but finding out which line of code cause it. With Ren'Py thanks to Python you get very detailed crash reports, telling you exactly where the problem is.

Magic reloading and rollback system. Those are without any doubts the BEST features I've seen in ANY 2d development engine. Not even Unity has something so powerful. What is that, you might ask? First, the reload: since python is a scripted language, you can ANYTIME (and I mean literally anytime) hit shift+R and see immediately the changes you've made to the current screen.

The rollback system instead is something inherited by the visual novel mechanics, but that works surprisingly well even to debug. In practice, the program stores the path you have choosen, and memorizes XX amount of "steps". This was doen so that the player could "rollback" with the mousewheel or keys, to a previous situation in the game story. But it works even for coding!

Trying to explain better: if you start the game, then visit in order: screen 99, do action 32, screen 32, click button 2, screen 12, type your name, screen 42, click button 5. Can you remember that? the game can, and provides you with a way to go back, a sort of "Undo" but you can use it when directly playing the game in debug mode!

I know that even in Unity you can modify the game world with the 3d world editor and see the changes, but here I mean something different: you can see the changes without having to EXIT the game, and restart.

A few simple examples:

case A: you've been testing for 6h a complex RPG. You see a visual bug. You look in the code, find that a button was aligned badly, change the code and reload. You see the change immediately, and go on testing. "Flawless Victory".

case B: you've been testing for 6h a complex RPG. You click "done" and the next screen crashes. Thanks to Python built-in descriptive crash you see where the problem was, in previous screen you assigned a impossible value. You do a rollback, in practice executing an Undo of all executed code, then fix the bug in the source with the game still running, reload, and go on with the testing. "Epic Win".

And the documentation? it's good, at least for the basic features.

The Bad

As I said, there's no editor apart an IDE. There is no intellisense/code completion, and you cannot browse classes or labels (some people managed to use Eclipse or other tools for python to code with it, but it's definitely a hack). This is definitely something that could be improved, since in particular in the first weeks of use you can't remember all the commands by memory and you'll be looking at the documentation extensively.

Bad documentation for the most advanced features. How does Sprites work? What is im.ConditionSwitch? and so on. The documentation explains everything, but sometimes seems written like if the author assumes the reader is a good coder/clever as him, but often that's not the case :) I consider myself an average coder but surely not a beginner, and sometimes I have hard time to understand how some of this stuff works. But it's not bad as it was in the early days when documentation was really scarce!

It's an hobbyst project. Don't get me wrong: the author is doing an awesome job trying to reply to all the support requests, mainly done through the specific Lemmasoft forum dedicated to Ren'Py. However it still is, at least for now, an hobbyst project. The author doesn't make any money from it, and so obviously there's no guarantee that you'll get an answer to your question. I repeat, he is doing the best he can, and sometimes other people help answering the most common questions, but still you must not expect to get immediate responses to your problems.

Personally, I'd love to see Ren'Py become a professional tool, with full support of deployment for Android/iOS, and maybe future porting to HTML5 and more. I am sure many other gamedevelopers even outside of the "visual novel / dating sim circle" would pick it up because of its features.

In conclusion

Ren'Py is a tool with double face. If you want simply to use it for what was made for, it will do the job without problems and is simply the best visual novel/dating sim system around, at least for desktop computers.

If you're a more advanced coder and want to build simulation games, strategy games, rpg games, or any 2d game that doesn't need a lot of things moving on the screen (but even in that case, you could make it) you'll be surprised by the ease of use and powerful features that Ren'Py has to offer, combining the power of Python with one of the best GUI / scripting systems I've seen in modern 2d libraries.

Yes, to use it in advanced mode it has a steep learning curve, but once you get the grasp of it, is really hard to get back to... anything else. I had to do some C coding last week, and wondered why the "rollback" wasn't working, or why I couldn't just hit Shift+R to see instantly the changes I've made!

At least this was my experience. If I was able to release 12 games in three years and half (almost one every 4 months) it's only because I discovered this powerful tool. Thanks again to Tom Rothamel for the incredible piece of software he managed to create!

Friday, January 6, 2012

2012 Time to relax!

In the picture above my cat Gilda sitting over a "hot water bottle" (hope to have found the right word!).

Yes because at the start of the year, for the first time in the last four years, I got the flu and high fever! So I had to momentarily pause my work. At the moment of writing this post I still don't feel really well, but at least it's an excuse for typos/grammar mistakes ;)

I think this was a sort of warning. In 2011 I worked like NEVER before, but since I'm human, in 2012 I plan to take things more relaxed. Don't worry this doesn't mean I won't release any games or slow down incredibly! But thank to the effort of the previous years, I'll be able to release new games reusing good part (or almost all) of the code I've already written, speeding up the process.

This is a commonly used tecnique, even in the top AAA games. Making a new game from scratch is one thing, but doing one with already a solid code base, even if of course needs to be changed, expanded, redesigned, is much faster, believe me!

Loren The Amazon Princess uses a new RPG Framework, but luckily the big part of it was written in past year by Michael (also known as "Anima" in some forums). There's really not much work left, and what I have tested so far seems to work very well apart some inevitable minor bugs. I spent most of this week redoing several times the battle screen layout.

In the image above, an almost final GUI layout. But as the user "Foxfeeder" rightly pointed in my forums, it's a pity to use those small portraits, when I have such well done waist-up images of all party members and enemies! So I'm going to tweak/change it again next week as soon as I can resume working.

Planet Stronghold: Warzone will obviously reuse the first game code, but with some improvements that will have a big impact on gameplay, like area of effect Psionic Powers. Even in this case luckily, I did most of the update last year, so there's "only" the story to write and the item/enemies. Still quite a lot of work, but should be done before the year ends (don't want to say this Summer even if I hope to)!

As promised, above you see a "sneak peek" of Joshua possible romances. What do you think? I believe the sequel will satisfy everyone and every tastes ;)

Nicole, (the Mystery/Otome game), Amber's Magic Shop and Roommates (set in college with all romance options available) will use Always Remember Me interface with some changes, so that each game will feel somehow unique. In Nicole I plan to put some clue system, in Amber there will be a potion brewing simulation, and in Roommates you'll be able to take different jobs based on some of your statistics.

Heileen 3: New Horizons will use a scheduler similar to Flower Shop games. There won't be any farming simulation, but other mechanics. Some coding will be required, but at it's core is a Visual Novel, since the first two games were "pure" Visual Novels I didn't want to transform it into something too complex. There will still be stats, relationship system and other things though :)

In the image above you see Sebastian, the "new entry" and 4th male dateable character of the game. The artist Rebecca will be working during January-April of this year on the art for the game, I saw the preview of the romance CG for John - Heileen and is very interesting ;)

The "New" Games

If you follow me and knows all the various games I'm working on, you might have noticed that from the list above is missing both Undead Lily and Queen Of Thieves. That is because they are the games which will require more brainstorming, coding, and testing, since will use very different gameplay mechanics:

The Queen Of Thieves will use in part a map/life sim, but also several new gameplay methods. I have already in mind some interesting ideas for it, but I think will either find a coder for it, or if I need to code it myself will take some time... :)

Undead Lily is almost finished art-wise. It's missing only a few backgrounds but all the character art is done. However, I have an idea on how to make it, but I am almost certain that it cannot be done with Ren'Py (maybe using some black magic with the Sprites class... but I don't know how!). So I might even do this game with Flash or some other language. I had started making it already but I paused it, since I want to make the game the best I can.