Dragonhelm (Tactical roleplaying game)

Show us your works in progress and request feedback

Post » Tue May 06, 2014 11:25 am

Ethan wrote:Hey, great game so far. How did you go about constructing the world map? I gather it's not randomly generated. Are you using a very large tile map?

No, the world map is just a very large tile map that are "hand painted" (62500 tiles), this is only the base terrain like grass, rivers, roads, mountains, hills and so on. And I would like to add some lore into it as well, so if it was random generated i think it would be quite hard. Then I automate a collision map, so some tiles cant be move on, and tiles with road are better than those without and so on. And all resources and dungeons are randomly generated as well.
B
44
S
11
G
2
Posts: 1,182
Reputation: 6,848

Post » Thu May 22, 2014 5:19 am

Tactical combat update

Having spend a lot of time trying to figure out how I wanted this to work. I decided to split the tactical combat system into a more board game type of combat system.

So it now consist of several phases.

1. Movement phase
All units will move in this phase in turn based on there initiative. This is because it seems more logic that even though someone might be faster than someone else, they shouldn't be able to run across the map and kill someone before anyone else is able to move.

2. Action phase
In this phase all actions takes place, such as attacks, using abilities, casting spells and so on.

Mainly I have been working on the movement AI of the enemy and at the same time made it a bit more tactical so it allow the player and enemy a like to use there units more strategic, in the sense that units will now block all tiles around them, which will allow the player to use there warriors to defend weaker characters by placing them in the path of enemies that would try to attack them.

Example of the actually movement of enemies.

Image

However it is still very early in the process and at the moment enemies only have one tactic which is to go in close combat. But plan on adding several tactics, so some enemies will prefer defending weaker targets, enemies with range weapons will try to keep distance, enemies with stealth might prefer going for casters and so forth.

I don't think it will be all that hard to implement these tactics due to the way that I have made the movement work, as it should work correctly as long as I pass a coordinate to where the enemy should move. The movement system as it is now does work with stacking of enemies, so even if I pass an invalid coordinate it will automatically find the closest free tile to that.
B
44
S
11
G
2
Posts: 1,182
Reputation: 6,848

Post » Wed Jun 04, 2014 3:09 am

Minor update:

Still working on the tactical combat system, which maybe not surprisingly turned out to be a lot more difficult than expected :D

However its starting to work a bit better after a severe overhaul and a LOT of bug fixes and it is now possible to add different strategies to enemies, based on behaviour values, which will/should allow enemies to switch tactics during fight, and even let same type of enemies prefer doing different things, based on these and the type of items they are equipped with.

Features added:
- Close combat tactic
- Range combat tactic
- System for close combat animation
- Missile animation for range combat
- Automatic switching between range combat and close combat depending on whether an enemy is attacked in close combat.
- Behavioural system for more dynamic strategies
- Individual equipment of enemies so each enemy is randomly equipped
- Simple combat text

Image
Example of range and close combat

However there is still a long way before this part is done. But next step will be to integrate it into the rest of the game so a very simple version of the game can be played.
B
44
S
11
G
2
Posts: 1,182
Reputation: 6,848

Post » Tue Jun 10, 2014 12:30 am

Finally reached the point where the game is in a full circle making it possible to play through all major parts of the game. Travelling around the world map, entering cities and dungeons and doing encounters. Besides this the following features have been added as well:

Feature added:
- Health bars have been added to characters and enemy units.
- Characters can now perform basic range attacks.
- Levelling up and experience bar have been added so character can now earn experience from killing enemies and rise in levels and use character points to increase stats or buy skills.
- First steps of the loot system have been made, which will allow the player to loot any equipment worn by fallen enemies.
- Weight functionality so characters cant pick up items that will make them go over there max carrying limit.
- Stats calculation which will allow and calculate bonuses/penalties from weapon and armors and will eventually be hook up to buffs and debuffs from magic effects, consumables, poisons, diseases and potions.
B
44
S
11
G
2
Posts: 1,182
Reputation: 6,848

Post » Tue Jun 10, 2014 9:40 am

Could you make a gampley video :) I really wonder what this will be like. It feels like dark queen of krynn game, or the old tsr dnd games :)
B
18
S
4
G
1
Posts: 332
Reputation: 3,149

Post » Tue Jun 10, 2014 11:29 am

Could you make a gampley video :) I really wonder what this will be like. It feels like dark queen of krynn game, or the old tsr dnd games :)

Unfortunately its still a bit to early I think to make a gameplay video as the game is still in a very simple state compared to where I would like it to be. Meaning that graphics are lacking, there are no sounds and features are still missing. I have mainly focused on coding the game so a lot of things are working and contain 5409 events at the moment. But think it would be sad to make a gameplay movie in its current state as it wouldn't capture the game as a whole yet. When I have added more enemies, implemented some of the skills, ability to cast magic, updated the UI and added more cities and shops to them I will do it.

However you are very accurate that it feels like a Dark queen of krynn game and is exactly what inspired me to make it.
Image

But I have just taken it a step further so its also a political or strategy game. Where as in the original games you just had a group of heroes going around solving quests etc. Where in my you will also rule your own kingdom, with everything that it will involve, like making sure there are food and other products for your people, setting there wages, punish criminals and even sentence them to death, trading with other empires. And as you have to rule your own kingdom, you are at the same time under the rule of a supreme ruler, which will have there own ideas of how things should be, that you have to follow as well, and your king which is one of your characters can actually also be sentence to death if you don't please this supreme ruler. However you are not the only kingdom under this ruler which have to live by this, so you can help the other kingdoms in overthrowing the current leader and hopefully things to come will be easier, as the game uses real age a ruler might govern the lands for a very long time, and if you are not on good terms with them it will be a rough time while they are sitting on the thrown.

So besides just being like Dark queen of krynn I think adding a part like this will make the game feel more epic in scale and give the player lots of different ways of how to play out the game.
B
44
S
11
G
2
Posts: 1,182
Reputation: 6,848

Post » Thu Jun 12, 2014 1:45 am

5,409 events? that seems incredible.. I've been working on a game over a year and I am up to 487 events... wow, you're a champ!

I used to love games like Pool of Radiance on the C64 and it totally reminds me of that.. good times!

Are you using the CSV plugin from rexrainbow? it's a great thing to use for lookup tables and databases..seems like you need a TON of that...
B
100
S
33
G
16
Posts: 1,204
Reputation: 16,865

Post » Thu Jun 12, 2014 10:20 am

5,409 events? that seems incredible.. I've been working on a game over a year and I am up to 487 events... wow, you're a champ!

Im not sure, I do spend a lot of time on it and have used C2 for quite a long time now, so I don't struggle to much with most things when I make them, so I can make things rather fast I guess :) But it also depends on the type of events im working on, a lot of the time I just hook new code up to old code, as I use functions for pretty much everything. but checked the counter just before this post and the last 2 days I have added 229 events working on my new consumable system so the players and enemies are able to eat or get affected by effects from herbs, magic and anything that would cause some sort of buff or debuff, so this required a lot of new events.

I used to love games like Pool of Radiance on the C64 and it totally reminds me of that.. good times!

Are you using the CSV plugin from rexrainbow? it's a great thing to use for lookup tables and databases..seems like you need a TON of that...

Yeah agree really had a lot of fun with them as well, think its weird that none of the bigger companies have made some of these types of games, but maybe because of the diablo wave :).

Anyway, im not using any plugins, not because I don't like them, but because C2 is updated so often and if the plugins doesn't work with the updates and I have hooked some of the game up to it then I risk having to recreate huge parts or having to wait for the plugin to be updated etc. So its more about having full control and also part of the learning process.

But I like placeholder objects, so for instant I store most things in actual sprite objects which are then hooked to an owner object.

So for instant a Character object, can have several item objects bound to it. And when I need to for instant calculate the weight of items that a character is carrying I can just do.

"Pick Item.owner_UID = Character.UID"

And that way calculate the weight.

Dungeons are exported and imported when needed, so when the player goes into a new dungeon it will check to see if they have already visited the dungeon before and if that's the case I import it otherwise it will generate a new one. So I don't really have to keep track of this data, as moving around them ofc are calculated after the dungeon are generated, so whether its imported or generated doesn't really matter.

Some data like skills, quest description generator, Names for the name generator are stored in dictionaries. And are expanded by simply adding to these and if done correctly the code should "hopefully" be able to just use the data, without me having to add new code.

Then I use some arrays for my tactical map which keep track of movement cost, but these are generated each turn as they differ from unit to unit. And I use some arrays for each unit to keep track of buffs and debuffs. Which is organised with an "Effect_ID" which is hardcoded, so I can apply an effect to whatever unit I want by just passing this to a function.

For instant if an enemy eat some herbs that cause it to go into rage, I just call a function with function.call(Enemy.UID, "h18") and then it will make sure that the enemy is afflicted by this effect. And it should allow me as far as I can see, to make it possible to hook it up to both magic effects, potions, disease etc. that are crafted or might have several effects, by simply call this function several times with the correct "Effect_ID" but guess time will tell if that will work :D
B
44
S
11
G
2
Posts: 1,182
Reputation: 6,848

Post » Thu Jun 12, 2014 4:56 pm

nimos100 wrote:

So for instant a Character object, can have several item objects bound to it. And when I need to for instant calculate the weight of items that a character is carrying I can just do.

"Pick Item.owner_UID = Character.UID"


hmm that's a good idea...

How do you keep the data across layouts? global variables? Like if you were to go to a character screen, where do you store the player's attributes and how do you access them? In a combat layout you probably need access to that same data. How do you transfer it without using a global table or array?

I guess I hadn't thought of C2 not supporting a plugin.. that would be bad.. that CSV plugin makes life REALLY easy, since using arrays is a little cumbersome in C2. Or rather, not very descriptive.

With the CSV plugin you can just refer to columns and reference the row by ID....

Code: Select all
  NAME   HEALTH  AC  GOLD
1 Harry    50     5  201
2 Zorn     30     8  0
3 Kaz      80     5  25

CSV_table.At("HEALTH", str(Player1.ID))
// ID is the first column without a header.. so if ID is '1' it will return 50
Last edited by jobel on Fri Jun 13, 2014 1:03 am, edited 1 time in total.
B
100
S
33
G
16
Posts: 1,204
Reputation: 16,865

Post » Thu Jun 12, 2014 8:18 pm

How do you keep the data across layouts? global variables? Like if you were to go to a character screen, where do you store the player's attributes and how do you access them? In a combat layout you probably need access to that same data. How do you transfer it without using a global table or array?

The game it self is split into several areas, that differ so much from each other that only very few objects needs to be present at all layouts. For instant the global map where you move your party around in a big group and travel around the "world" is also the place where caravans, city trading and global events takes place. The dungeon area is a dungeon crawler and it will pause the global events, then the tactical combat is whenever the player encounter something and where fighting and everything like casting magic etc. takes place. So I really only need to keep characters and there skills, quests and the items they are carrying global and they are just done by making the objects global.

Some of the things are created for certain things, for instant in the tactical map the characters that the player moves around are just dummy characters that are linked to the actually characters and all stats modifications like weapon bonuses, buffs etc are gotten the same way as items are linked to a character through a "Owner.UID" and when the fight is over they are just destroyed.

The same with enemy items which are created along with the enemies unit. So even though it might seem like a lot of objects there are rarely a lot active at the same time.

I guess I hadn't thought of C2 not supporting a plugin.. that would be bad.. that CSV plugin makes life REALLY easy, since using arrays is a little cumbersome in C2. Or rather, not very descriptive.

I don't know if its a big problem or not, but I just want to be save. But not a huge fan of arrays my self. However there are some very nice features with them that I like, such as "Array contains" which makes checking stuff really easy. But it seems pretty good from your example so will check it out.
B
44
S
11
G
2
Posts: 1,182
Reputation: 6,848

PreviousNext

Return to Works in Progress/Feedback Requests

Who is online

Users browsing this forum: No registered users and 1 guest