SFML community forums

I'm proud to present the project I have been working three years by now. Kronos it's an Action, RPG, Puzzle, Roguelike game with lots of combats and item customization. The game takes place in a medieval castle and our hero must fight all kind of enemies and evil to survive, exploring more than 30 big areas of the castle and looting items improving your gear and ingredients to craft useful potions. Also you must use your brain because is necessary solve a few puzzles to open new areas and challenges. Search for items, combine them, use them on the right object, and find clues in books and old papers to know how solve it.

I post the official presentation with images and continue with some technical stuff.

(http://i.imgur.com/Yz1gNb4.png)

ACTION

Fight over 50 different enemies and unique bosses. Make your way using all sorts of weapons, from swords, axes, maces, bows, explosive arrows, poison arrows, freezing arrows. You can also create over 50 different potions that improve your character making it faster, stronger, more resistant, or become invisible and pass through these sentinels that you hate so much.

(http://i.imgur.com/Zyzqmwq.jpg)

RPG

Delve into a unique experience. Explore the castle and its more than 30 areas and discovers his dark secrets hidden in it. Collect information, read old books and diary, and connects all the pieces to reveal your true purpose and how to achieve it. Get weapons and armor to progress in the game, level up and upgrade your character with multiple and useful talents that will define your style of play. Play your way without predefined classes.

(http://i.imgur.com/1sqz7pz.jpg)

PUZZLE

This game is not only about killing enemies. To maintain a mind awake and active, it takes a few puzzles. But do not worry, you don't need a degree from MIT to solve them. All puzzles are logical and all the information you need are nearby in any book, diary or parchment to help you with clues. And if all else fails, you can always smash your head against the keyboard.

(http://i.imgur.com/dVdTRRR.jpg)

CUSTOMIZATION

There are hundreds of items that you can find and create to improve your character. You are one of those who like direct combat, then put a heavy armor and an axe in each hand and start kicking ass. Or you prefer a more discrete approach with ranged attacks and using stealth, equip a dagger and a bow and kill your enemies before they realize. You can also wear a tunic and a magic rings and throw fireballs and destructive rays while you shout "YOU SHALL NOT PASS !!"

GIFhttp://i.imgur.com/LtW6QEl.gifv (http://imgur.com/LtW6QEl)

TECHNICAL STUFF

This game uses SFML for rendering, audio, events, windows. All images, sprites, tile maps, particles, animattions, bullets, etc. The basic objects are made with sprites and the maps with vertex array. Along with Thor library (http://www.bromeon.ch/libraries/thor/) for particle systems with custom emmiters, affectors, distributions.

The maps are made with Tiled Map Editor (http://www.mapeditor.org/) and exported to custom data structure for optimization porpuses. The engine uses a tile set image containing all kind of tiles and draw each layer with vertex array in one draw call.

The player and enemy animations are made with Spine (http://esotericsoftware.com/), a very good program for skeletal animations and has good support too. All sprites, images, animations and graphical stuff are made by me. Some icons for the interface are from game-icons.net (http://game-icons.net) and modified by me.

The light map is really simple. It uses a black render texture and every light is made of triangles of colors to simulate a round shape, more triangles, more definition, more calculations. Each light is then draw to the black texture with additive blend and finally the texture is draw on top with multiply blend. It uses a series of "walls" where the light cannot pass through and re-calculates the triangles of the lights that intersects with the wall.

The internal structure is Entity based. All objects, enemies, player, bullets, all that forms part of the level derives from a basic Entity class. This class has id, position, size, collision box (if have), etc. For example, Entity -> Actor -> Player, Actor has movement functions, animations, effects, life, combat stats, etc. Player has skills, and other things that enemies doesn't.

class Entity:public sf::Drawable{int idint type

Vector2f position FloatRect bbox ...}

class Actor:public Entity{ vector<Item> Inventory

MoveTo(position)

Animation_Add(...) Effect_Add(...) ...}

class Enemy:public Actor{ vector<Spell> Spells vector<Item> Weapons

Script AI

Attack() ...}

The design of the Engine is purely OOP + Managers + Entity. The engine is responsible for managing the different classes in Update function. The collision of moving entities, tarjectory of bullets, apply combat damage form one to other enetity, etc. The inheritance design it perfectly fits for my needs and give me great performance and flexibity. I have a rule for myself, only three levels of inheritance maximum. this force to encapsulate classes with the only the necessary thing.

The key is create data structures and fill it with external data. Almost 75-80% are data stored in files, not hardcoded. All data for maps, objects, bullets, items, enemies, spells, strings is externalized. It can be stored in JSON or XML files, load at startup once and get the data when needed, for example firing a bullet or spawning enemies.

At this moment I have 50+ different enemies and bosses, 30+ maps, 700+ objects, 90+ bullets, 100+ spells, 100+ animations and particle effects, 500+ strings, etc. All this data can be modified without recompile and more easy to modify.

The only part that use scripts are the enemy AI. It uses Lua with LuaBridge for binding classes and functions. It's really powerful and useful tool. At this moment I have more than 1000 lines of lua code for managing the AI. The system is event based. It executes functions when some event occurs, for example when the enemy "sees" the player, or is in attack range, or cast a spell, etc.

This way I can customize every enemy behaviour for each event/situation. And even reload it in executing time for testing things.

Nearly 85% of the game are done. Now I'm working on the crafting system for creating potions, improve your gear, etc. When all systems are finished, I publish a small demo for testing and recive some feedback of other players. The OS target are Windows(primary) and Linux(secondary), unfortunely a don't have enough resources for developing in Mac, maybe in the future.

Indeed, it's been a lot of work. So many different systems working toghether as an engine, but it's worth it, by far. I learn so much of programming and game design, and thanks to SFML and i'ts simplicity who save me time of not thinking how implement something at low level, without sacrificing performance or stability.

I said in my first post, SFML is a powerful tool. More than capable of beign the core of this game or many other big games like this. More people should give it a try.

In the next days I'll post more screenshots and details of gameplay mechanics. Stay tuned!

As an action rpg game, the combat is very important. But not only enemies and bosses are challenges to overcome. The game is complemented with additional puzzles to test your mind.

All of this puzzles can be solve in a logical way. There are lots of information spread across the levels in books, papers, notes, etc. This information can tell you what you need or how it works a mechanism/puzzle in particular, giving some clues.

For example, there's a locked door blocking you the way to the boss. Aside from the door, there are five lever switches. You remember reading some note before telling that this switches control the door and the only way to open it is with the right combination (UP/DOWN) of the levers.

For hinder this puzzle a little more, one of the switches don't have a lever. You need to find something to replace it. Looking around/looting from enemies, you find two items, a metal bar and a metal grip. This items alone doesn't work, but you can combine one item with the other to create a new item, a lever.

Once you got the lever, you can use it on the empty switch and start to solve the puzzle trying different combinations. Even some notes can tell you the right position of one or two switches if you have read it before.

A lot of the puzzles in this game requires item finding and combining with the right ones to create the item you need to solve the puzzle and advance through the game. All this can be done inside the inventory.

This game, as an action-rpg game, must have hero stats and skills to display how much growing and potential the player has. The stats system it's not very complex, only a few stats but every one is important to be more combat effective.

Let's take a look at this screenshot:

(http://i.imgur.com/dVdTRRR.jpg)

The character screen shows two parts. Left side, with all the stats and numbers. And the right side, where you can navigate and equip the items you have to the hero.

I'll explain the stats system first. Our hero starts the game with level one, and gains experience killing enemies. Each level up, the player receive X points to spend on the three basic stats, Strength, Dexterity and Intelligence.

(http://imgur.com/g6u26Mf.png)

Life, not much to say here. More life, more damage can take. Zero life = death. Some items and skills can improve the regeneration rate.

Eter, is the magic reserve energy. Every spell cast cost X points of eter. If you don't have enough eter, you can't cast the spell. The eter regenerates continuously, and some items and skills can improve the regeneration rate.

(http://imgur.com/Wz3YfWL.png)

Strength, increases the max life points and the melee weapon damage (swords, axes...). It's a very important stat for a melee play style. It improves your survival and damage output in melee.

(http://imgur.com/mAq3PhM.png)

Dexterity, increases your critical strike chance (double damage), and the ranged damage weapons (bows). For a ranged play style, this stat is crucial. Not only increases the damage of your bow, also the critical chance and that means even more DPS.

(http://imgur.com/UxWEbcM.png)

Intelligence, increases the max eter points and the damage of your spells. More intelligence = more eter = more spells cast = much more damage. The perfect stat for a magic player. The magic in this game is very useful and powerful. With few well casted fireballs you can kill a large group of enemies without even get close.

This are the three basic stats for the different play styles. You decide which is better for you. Go full Strength with some Dexterity to increase the critical chance. Or a mage play style with full Intelligence and some Strength to gain more life points and not be a glass cannon. Is up to you.

Continue with the other stats, these are more defensive/support.

(http://imgur.com/FjHeKAN.png)

(http://imgur.com/S9zy2Yu.png)

Armor, this stats reduces the damage you take. But not every kind of damage, only the physical (or not elemental) damage. you can stack armor equipping body armors, helmets or shields. Some magical rings can give you armor as well.

Critical, this stat tells you the chance of getting a critical strike every time you hit an enemy with melee or ranged weapons. A critical strike deals double damage.

(http://imgur.com/1MxbrKA.png)

And finally, the elemental resistances. This stats are very important to mitigate elemental damage (fire, cold, earth, electric) that some enemies deal to you. Remember that Armor doesn't help you at all with elemental damage. Some enemies might have high armor, but low elemental resistances, so it's better to attack them with weapons that deal elemental damage or use spells directly.

Note that some enemies have special resistance to one or more elements. For example, an Ice Elemental have 200 cold resistance, that means not only is immune to cold damage, also any cold damage will heal them for the same amount. But is vulnerable to fire damage because is the opposite element for ice.

The elemental circle is: Fire -> Ice -> Electric -> Earth -> Fire

And now for the item/gear part.

(http://imgur.com/kIw9WiA.png)

Our hero can have 6 items equipped. HEAD, BODY, RIGHT HAND, LEFT HAND, and two RINGS.

Each item increases any stat of the hero and can give some useful effect. For example, let's take this items:

(http://imgur.com/wpITxj4.png)

(http://imgur.com/Yqy8ARY.png)

The sword deals 26 fire damage every hit. It has speed of 7 witch is a fast weapon that can attack quickly. also got two good effects, +7% spell damage and 18% chance on hit to burn an enemy and deal fire damage over time (DoT).

The body armor got nice stats too. Increases armor, strength = more life and melee damage, and 75 more life points.

All weapons and armor can drop with one or more stats/effects. Also you can use alchemy to improve your gear and give it more stats/effects on that item. But this will be in another article.

(http://imgur.com/9FA9l8Z.png)

For a better item navigation, this mini inventory helps you to find the item you want to equip. You can filter the items you have by type (weapons, shields/arrows, helms, body armors, rings). With only moving the mouse over the item, a text scroll will tell you the items stats, damage, armor, speed, effects, etc.

(http://imgur.com/A1QNjv5.png)

In this game, you can face many different enemies at once. Some with melee weapons and some with ranged. to not stop the game flow going in the inventory and change your sword and shield for a bow every time you need it, you can put it on an second weapon profile. This button change the active profile, so you can have one set of melee weapons and other with ranged. And with a simple hotkey, change your weapons in middle of combat without pausing it.

Previusly, we talk about the hero stats and how the "eter" is the magical reserve of the hero for casting spells. Spells are availible no matter witch play style you have choosen. Melee, ranged, swords, bows... You always have access to all spells. Note that if you spend skill points in magic talents and wear items that increases your intelligence and spell damage, your spells will be much more powerful than if you have taken the warrior path.

There are four element essence (FIRE, ICE, EARTH, ELECTRIC). Each one has four spells for the player to use when you have adquired te essence. The player can change the active element with a simple hotkey.

Spells can be offensive, defensive, or both. The play style with the FIRE element is much offensive than the ICE element. FIRE uses spells to deal huge damage and burn the enemy (DoT). Now we goona detail the fire spells.

FIREBALL

(http://i.giphy.com/3o85xqkgi3AVnUBKve.gif)

This classic spell is the bread and butter on almost every RPG. Launch a fireball straight to the enemy's face that explodes on impact dealing area damage and burning the enemies for a few seconds. The explosion shockwave knockback enemies in the area radius, useful when you are surrounded.

FIRESHIELD

(http://i.giphy.com/xTiTniCr41uL55wBgs.gif)

This might sounds a defensive spell (for the shield part), but not. It creates a ring of fire around the hero that deals damage continusly to any enemy closer to the hero. And it gives you immunty to slow and frezze effects (okay, a little defensive spell).

DRAGON'S BREATH

(http://i.giphy.com/xTiTngTMqnZoSiuyLC.gif)

When you think about the breath of a dragon, you can imagine a hot melting stream of fire going everywhere with incredible force. Well, here you have it, careful it's hot. When you cast this spell, releases a cone of flames that spreads, dealing damage and burns enemies, knocking back with grat force and have a chance that enemies affected will flee in fear.

INFERNO

(http://i.giphy.com/xTiTnwV1Co6IMXCbOU.gif)

What is more dangerous than a fiery fireball? Two fireballs. What is even more dangerous? Countless fireballs. Casting this spell will cause a rain of fireballs EVERYWHERE, but fear not, is YOUR spell. Poor enemies...

That all for today! Next chapter, ICE SPELLS and how to make ice cream from nothing.

Contrary to fire spells, the ice spells don't deal so much burst damage and don't apply any type of DoT for extra damage. But don't get me wrong, ice spells DO a lot of damage if used properly and are the best options to control enemies with their slowing and freezing effects.

The main effect of ice spells is that deals double damage to frozen enemies. So, if you combine some spells or have weapons/arrows that can freeze before casting a damaging spell, the result can be devastating.

ICE SHARDS

(http://i.giphy.com/xTiTnBbGHAQvwG0ud2.gif)

This spells shots 3 big shards of ice in the direction your aiming for. This shards slows and has a chance to freeze the enemy hit. Also, it explodes in many small fragments upon impact in all directions. The result is a lot of ice projectiles across the screen. Always hit a target even if you miss the first shot.

ICE NOVA

(http://i.giphy.com/l0O9zlfP9AYcpMbhC.gif)

A defensive/offensive spell. This area of effect spell creates a super cold explosion that freezes all the enemies in the area and slow them when the freeze effect is over. Useful when need to buy some time, freeze some enemies or make a group of archers stop shooting for a while.

ICE LANCE

(http://i.giphy.com/3o85xyYOoBcdU2352E.gif)

The most damaging ice spell if used properly. Casting this spell shot a large piece of ice that pierce through enemies in a straight line and knockback them with great force. The secondary effect of this spell is that deals more damage for every enemy hit. That means you can do a lot of damage when the enemies are align in a line, for example in hallways. Or you can freeze them with Ice Nova and reposition for the best shot angle.

ABSOLUTE ZERO

(http://i.giphy.com/l0O9xPiz5m8dpSPwQ.gif)

In theory, is the temperature so low that even particles doesn't have energy to move. In other words, this spells freeze EVERYTHING, but you. You are freely to move, attack, cast other spells, etc, for the duration of the spell. When the effect is over, all return to normal and enemies are also slowed for some seconds.

This spells are the most shocking and intense of all the arsenal the hero have. The main effect of electric spells is the ability to deal damage to multiple enemies and stunning them for some seconds.

Almost every electric spell has a unique mechanic and can be more o less effective the way you cast it. So the time and positioning is important, and the effects devastating if done right.

Let's take a look.

LIGHTNING BOLT

(http://i.giphy.com/3oEdvb8M6F9m7RBeLu.gif)

This spell shot a bolt of pure electric energy in straight line and pierces through enemies with a chance to stunning them. The other effect is the ability to bounce on walls and change his direction, going back and continue to deal damage to any enemy in his path, even if have been damage by this spell before. Very useful in small rooms or hallways, casted with the right angle of course.

STATIC FIELD

(http://i.giphy.com/l41m5yDlvpzVox21y.gif)

A defensive spell that creates four non-solid walls of electric energy that blocks any incoming enemy projectile. It doesn't affect movement in any way, so you and the enemies can pass through. Useful when facing archers and other ranged enemies. The secondary effect of this spell gives your own projectiles, that passes through the field, an small electrical charge that can stun enemies on hit. Imagine combine a explosive arrow with this spell...

CHAIN LIGHTNING

(http://i.giphy.com/l41lJsGStUmu2EAV2.gif)

One of my favorite spells in every RPG. This spell is some sort of channeling spell, the longer you press the button, more lightning you create. When the first lightning hit an enemy, it spreads to nearby enemies dealing full damage and the chance to stun.

LIGHTNING STORM

(http://i.giphy.com/3oEdvcgVl0rghm5WHm.gif)

The name says it all. Cast this spell and see huge thunders falling to the ground dealing huge damage and stunning enemies in the area. Also, when the thunder impacts, it releases small bolts of electricity that pierces through enemies. Thunderstruck!

That's all for today!

Next, the earth spells and the ability to protect yourself while doing huge damage.

This spells combine defensive and offensive effects, that gives our hero more sustain and control in fights without sacrificing damage.

The main effect of the earth spells is to poison enemies and deal damage over time and weaken them.

Let's take a look.

ROCK TRHOW

(http://i.giphy.com/3o85xxrj4JwmqpzJLO.gif)

This basic spell shots 3 rocks in front of you dealing damage and knocking back the enemy hit, providing some distance between you and your enemies. Also, every rock has a chance to free the poison gas inside the rock and poisoning any enemy near the impact.

STONESKIN

(http://i.giphy.com/xTiTnDmXvd4uCbMtUc.gif)

A classic defensive spell. When you are hit by melee attacks or spells that creates force waves like a fireball explosion, you are knock back and unable to move or attack while the knock back lasts. This spell transform your skin and armor into stone, increasing your armor value without decreasing your speed and giving you immunity to all knock back and force attacks while the spell lasts. Also, you regenerate life per second for the same duration.

POISON CLOUD

(http://i.giphy.com/3o85xFdWvvBljVUWEU.gif)

This AoE spell creates a cloud of poisonous gas in the target location, instantly poisoning all enemies inside, (the poison effect continues after exiting the cloud) and deals extra damage to the enemies who remains in the cloud. And if that if not enough, all enemies inside the area are slowed, so you can move in circles around the poison cloud and see how they die.

EARTHQUAKE

(http://i.giphy.com/3oEdvaohwyQWHrOSEU.gif)

Casting and earthquake inside a building might be a bad idea, but is fun. This spell is very powerful, first it make the entire screen shake with force, and big rocks start falling to the ground dealing huge damage to anyone beneath. The big rocks impact the ground and fragments in small rocks in all directions. Also, the big rocks has a chance to release a poison cloud when impacts. The result, devastating.

That's all regarding the elemental spells. In the next articles we will talk about more game play details, like how the alchemy crafting system works, and more information about the talent trees and his game changing abilities.

We managed to get the cinematic scene system working! And implement it with lua scripts! :)

The idea behind is very simple: Execute actions in order automatically without player intervention.

The actions can be anything, from move the player to some location, spawn some enemies, open/close doors, display texts, cast spells, etc.

Technically it was a challenge. How perform automatic actions while the game still running and doesn't get stuck? The logical answer is "threads".

When the player perfom a specific action (take an object, resolve a puzzle, enter in some area...) it activates a trigger who is waiting for a such action. This trigger lauches a thread that loads the lua scene script and execute it in paralel while the main thread still runs but in a some "stasis" mode, waiting for the thread to end.

Once the system is implemented and all the functions binded to lua, the next step is very easy. Write the scripts.

Here is a gif showing the pre-battle scene with a boss. The trigger is activated when the player enters the area and start the scene.

(http://i.giphy.com/3oEduHCrkFa1qnmqVa.gif)

And here is the script for that scene:

-- BOSS pre fightSCENE_100 =function()

BEGIN()

Door_Close(0)

Door_Lock(0)

Actor_MoveTo(0,1392,1248, SP.SLOW)

Camera_MoveTo(1392,1008, SP.SLOW)

WAIT(4)

Actor_Face(0, DIR.NORTH)

Actor_Say(1,"What a surprise! You managed to open the armory doors...","red")

Actor_Say(0,"Poor security for a heavy guarded location, but you're the boss","white")

There's no corutine reimplementation. All the heavy work is done in the c++ side, the lua functions are just intermediates between the script and the engine. That's why I use lua for this scenes and AI, for it's flexibilty and customization without hardcode anything.

The thread is launched by the engine, but who decide which actions execute is the script. I don't tend to reivent the wheel unless there 's a very good reason ;)

A good rpg must have a good crafting system that helps the hero in one way or another. The possibility of crafting your own items and improve it through the game is a good feature.

My idea of a good crafting system is to be simple, practical and especially useful. It's disappointing wasting time gathering ingredients when the object created sucks or didn't help you much. For that reason, all the items that can be made with crafting are very useful and powerful if used properly without being overpowered.

This are the alchemy tables where you can craft everything you want, if you have the necessary ingredients.

(http://i.imgur.com/bDsLYb6.jpg)

You can use alchemy in four different modes:

POTIONS

At the top of the panel are the four round buttons for selecting witch mode you want.

Below there's a list of all the potion recipes that you can craft. Selecting one will display it on the right side and tell you witch ingredients and how many cost to craft.

If you have enough, simply click the green button to craft it and put it directly in the inventory.

(http://i.imgur.com/ZBnsH9x.jpg)

Potions gives useful effects for a short period of time. Increasing your damage, resistances, speed, or gives special and useful effects.

Here's a example of some potions effects:

(http://i.imgur.com/4q00afr.jpg)

ARROWS

Using a bow doesn't require special ammunition, always shot normal arrows. But you can change it with special arrows that do special effects when fired. This arrows are powerful and with limited quantity.

(http://i.imgur.com/ZKU9Cba.jpg)

You can gather special arrows exploring the castle or in enemy drops, but the most practical way is crafting it. The effects vary depending on the arrow, some apply elemental effects on the target like burn, freeze, stun, etc. Others have area of effects like exploding arrows or cluster arrows that releases small bombs when impact.

Here's a example of some arrows effects:

(http://i.imgur.com/T8aWUr7.jpg)

When the special arrows ammunition is empty, you will shot normal arrows again until another arrows are equipped.

ENCHANTING

In this mode you can improve you gear giving it more stats of effects like life regeneration or elemental resistance.

(http://i.imgur.com/hxMiZ3k.jpg)

Only items with enchant slot (the purple circle) can be enchanted, one enchant per slot. First select the item you want to enchant and a list of possible enchant will appear. Simply select the enchant and craft it, and you have a more powerful sword/armor.

High level items can drop with more enchant slots. Also the enchant effects scale up with your level, but when applied to a item, are permanent.

For example let's enchant this sword:

(http://i.imgur.com/idBCLrm.jpg)

Whit this enchantment:

(http://i.imgur.com/Rer4w6h.jpg)

And the result is:

(http://i.imgur.com/owmuhN9.jpg)

RECYCLE

This is the easy way of getting ingredients. When you have weapons or armor that you don't want or its worst that you wear, you can recycle all the items you don't want and gain many ingredients in return.

(http://i.imgur.com/5ZdiSjl.jpg)

The ingredients can vary depending of the type of the item and the effects already have.

Recycling an item will destroy it in the process, so be careful.

(http://i.imgur.com/tEY4HBQ.jpg)

Using alchemy through the game will help you fighting and surviving some of the hard boss fights, and using potions and special arrows will make it more fun.

I'm just a programmer who wants to make a good game, and I feel very happy and confortable with the art I can make. I've been playing games for a long time. I miss the old way of doing games, like the graphic adventures of Lucasarts (Loom, Monkey Island, Indiana Jones...). Games that are remembered by their story, gameplay, mechanics, fun.

I prefer to spend my time and resources to improve things that can make the game more fun and better. Anyways I cannot afford a designer who make super realistic graphics or detailed pixel art.