• Register

Nyrthos is an action RPG for web browsers, Anroid and iOS. The game is built on an in-house engine, in 2D, seen from an isometric view. Besides the typical RPG routine that orders players to „travel, fight, loot, upgrade, craft, and consume story“, every hero will be also given the opportunity to buy himself a house, found his own village, manage it, gain more income resources and honor and in the end, be able to progress even further in the game. The will to survive will be greatly rewarded, as the strong players will usually be the ones to uncover previously undiscovered locations. Still, all the players together will have the power to decide the flow of important events in Nyrthos. We have the whole programming background ready to expand on the concept and the game will be developed continously, adding new features and expanding in many different ways.

Post news Report RSS Nyrthos - Designing Enemies

Besides polishing HD graphics for our game, I would like to share our thought process on enemies that will appear in the first levels of Nyrthos. Read on!

Posted by on

For news and to apply for the next batch of testing, please visit and register on our official forum - forum.nyrthos.com !

Things that look good on paper do not necessarily "feel" good in the actual game environment; or they just don't work at all the way they were intented.
This is basically a set of goals for each type of character, and should be useful for interacting with our testers and making the most of their feedback. By comparing the "real experience" with this list, we will be hopefully able to finetune them so they fit well into their respective roles.

The first part of the process is stating the basics of what we want to achieve. The following is a list of enemies that will appear in the second demo. Graphically, these five enemies will be - at least for the moment - derived from the same base mesh (skeleton), but are made to be a whole lot more recognizable than the ones in the first iteration.

These 5 enemies will be:

- a "normal" skeleton - weak, average movement speed, "meat" enemy
- a skeleton thrower - more damage, less health, brings different dynamics to the fight
- a throwing / spawning skeleton - now black, to be much more easily distinguishable
- skeleton Giant - a big skeleton much harder to kill
- skeleton Juggernault - heavily armored enemy with special attack

Now let's look closer to each of these types.

A "NORMAL" SKELETON - weak, average movement speed, "meat" enemy
The basic skeleton has two main roles:

    1) We obviously need a pretty weak enemy for the beginning of the game, when the player gets accustomed to how the game works; something like a standard melee character. In low numbers, this enemy is not really dangerous and gets sent to pieces easily.
    2) We aim for a certain combat speed, and it will be mostly derived from this "easy to kill" enemy. It should give player the feeling of certain power, fast progress, and also - importantly - a point of contrast with stronger and weaker enemies, even in the beginning of the game.

    Nothing original here. The basic skeleton should go down in 2-4 hits (based on the damage range of the weapon) and hurt for about 10-20% of player's health. Every time it gets hit, its cooldown is zeroed. I am pretty happy of how the first setting (in the demo) worked out; besides increasing its damage, there are no planned changes.

A "RANGED" (THROWING) SKELETON - more damage, less health, brings different dynamics to the fight

    Fighting only melee enemies get boring fast. It is important to introduce another enemy pretty early on (let's say after killing about 10-15 normal skeletons, when we can expect the player to get the hang of the basic controls). When combined with the normal skeleton, a ranged character brings a lot into the fight in the terms of game dynamics:
    - player need to decide which enemy to kill - based on the mix, distance, amount of immediate danger
    - player needs to think about hit positioning - moving out from the projectile path to dodge and/or to get into a path to get a clear shot

    To emphasize the need to make clear decisions, the main stat differences will be:
    - lower health (50% of normal skeleton) - in case the player decides to kill it first, it goes down fast
    - higher damage (150-200% of normal skeleton) - either you kill it fast, or you really need to worry about dodging its shot
    - slower attack rate (at least around 4-6s cooldown) - dodging its attack gives the player enough time to react to the situation, but as there are more enemies of this type, the situation can get dangerous very fast
    - projectile is quite slow and "easily" dodgable
    - this type will/will not have the "run away" setting (when the player gets into its range, it starts to run away); in this case, a lower movement speed is needed so it gets a little more defined and challenging, but not frustrating (I guess we all remember the little guys in A3 of Diablo 2)
    - in case it is a skeleton, it needs to be easily distinguishable (in the first demo, this was not the case, and it sucked hard)


SKELETON SPAWNER - special enemy type; does not attack directly, but spawns other little skeletons

This is when things get interesting. We already had a basic form of this type of skeleton in the demo, but for a couple of reasons, it did not work as intended, which is:

    - the skeleton is not dangerous "by itself"; it does not do any damage directly
    - it throws objects from a distance, which, after landing, spawn other little skeletons
    - these "small skeletons" are fast (faster than player's walking speed, but slower than his running speed) and deal quite a lot of damage
    - the "skeleton spawner" creates 3-5 "small skeletons" at the moment of its first attack - at once
    - after this first batch, he slows down the creation process to 1 skeleton per 5-7 seconds
    - the "small skeletons" have around the same stats as a standard "normal melee" skeleton, but they have a limited time span; after they are created, they constantly loose life, and they die in about 4-5 seconds

    Basically what we're trying to accomplish is a specific situation. The player gets close to the "skeleton spawner" and the spawner launches a first volley of "eggs". At this moment, things get very dangerous, as there suddenly 4 new enemies.
    Now - either the player chooses to fight (but will most likely loose some life in the process), or he runs around for a few seconds to chase off the little guys, and wait for them to die off by themselves. He then comes back and kills the "skeleton spawner".
    The choice to run around/fight is based on the amount of life he has, the surrounding area, and the number of other enemies that might already be present.
    I am also intrigued by the idea that the "eggs" (or the objects that are thrown by the "skeleon spawner") do not spawn immediately, but let's say after 5 seconds after they land on the ground, and they can be destroyd BEFORE they hatch. That would present another variant/choice, which would distinguish the situation even more (the difficulty of the encounter would be much more closely tied to the situation, and the choice would be even more timing-based).

    The concept is very cool in itself, but was poorly working in the first demo. There were usually too many "other" enemies already, and the "small skeletons" (as well as the "skeleton thrower") were all white, and thus completely indistinguishable from the other guys.
    In the second iteration, all these skeletons are black, and of different sizes, which make it completely clear; also, as there is much less "completely random continuous generation", I want to make sure that these appear mostly when it can be presumed that the situation will not turn into a complete mess.

    A quick look at the planned stats (again, in this case tied to the basic form of enemy):

    SKELETON SPAWNER (the big guy)
    - lower health (50% of normal skeleton) - in case the player decides to kill it first, it goes down fast; still, in this case, it can be hard to get to it immediately
    - small-average movement speed
    - its attack does no primary damage, but spawns eggs - 4-5 in the first volley, than 1 egg per 4-6 seconds
    - its eggs can be killed before they hatch, but have around 100% HP

    LITTLE SKELETONS (the hatched guys)
    I want them to "feel" very fast and agile, to will make them stand out.
    - lower health (enough to be killed in 1-2 hits); the challenge comes with their numbers
    - high movement speed to emphasize the need to dodge them, and also makes them feel much more agile
    - small damage (about 5-10% of player health)
    - very high attack rate (an attack occurs every 1.5-2 seconds) - makes them feel more agile; also, makes up for the small damage and greatly increases their DPS to make them dangerous
    - have a negative life replenish, so they die off in around 4-6 seconds (and/or they become easier to kill as their life decreases)

SKELETON GIANT - a big skeleton much harder to kill

There was no way of making a big variant of enemies in the first demo, as scaling them up ended up being really nasty to watch. Now, with HD resolution, we can afford to have bigger guys; they are very distinct and they still look pretty good!

This one is a pretty simple design - a big, slowly moving monster, which has a lot of health and a slow, but powerful attack.

    Fighting the giant is pretty easy when he appears just by himself. He walks slowly, so the positioning against him is very easy. Also, his attack is very strong (30% player health) and his cooldown time cannot be zeroed down (differently from normal skeletons), so it comes to the hit-and-run tactic and/or using ranged weapons. As it has around 500% of normal skeleton health, it feels like a colossus.
    This way, combining it with each type of enemy previously mentioned, the fight dynamics gets pretty different once again.

    Here come the stats:
    - very high health (500% of normal skeleton) - takes much longer to kill it
    - high damage (30% of player health) - you really don't want him to hit you
    - slow attack rate (around 4-5 seconds cooldown); cannot be zeroed, has to be dodged
    - slow movement speed

SKELETON JUGGERNAULT - heavily armored enemy with special attack
The idea behing the Juggernault is to create and test a kind of a "boss-like", or "champion" creature. Also, we added a possibility of "secondary attacks" for enemies, and these types of guys will make use of it.

    The Juggernault is even a little bigger than the giant, dressed in black, and fully armored. He also moves at a normal speed. It's a pinnacle of the bestiary at the moment, and is used in "special" places - guarding treasures, other paths, etc.

    The juggernault has a primary attack comparable with the giant. Around 20% player health, its cooldown cannot be zeroed, and is around 3s. He also has a secondary attack called "black spear" - it is a fast, ranged projectile that is hard to dodge but has lower damage (7-10% of player health) with 10s cooldown.

    Juggernault stats:
    - very high health (400% of normal skeleton)
    - primary attack - high damage (20% of player health) - you really don't want him to hit you
    - primary attack - slow attack rate (around 3 seconds cooldown); cannot be zeroed, has to be dodged
    - secondary attack - low damage (7-10% of player health) - you really don't want him to hit you
    - secondary attack - very slow attack rate (10s); a fast ranged projectile, hard to dodge

That basically concludes the design of the first batch of enemies; as you can see, they're mostly different from their bare-boned version in the tech demo. Now - the real fun starts when you combine these into groups; the dynamics changes completely for each of these combinations and creates a much richer gameplay experience. And - again, this is just a beginning. Let's see where it takes us and learn from it!

What do you guys think about these? Any ideas arising? Please comment your asses off!

Post a comment

Your comment will be anonymous unless you join the community. Or sign in with your social account: