Author Topic: Epic: A procedurally-generated, open-world fantasy adventure  (Read 2661 times)

Donuel

  • Acolyte
  • *
  • Posts: 15
    • View Profile
    • Email
Re: Epic: A procedurally-generated, open-world fantasy adventure
« Reply #15 on: August 27, 2016, 04:13:50 AM »
I like the style and the fact that its hex based, and the fact that it quite clearly has mouse controls.

Embarking on this epic procedural project on your own, and not having ascii graphics will mean this will take you a very long time to complete.
DF has been in active development for over ten years and its only 43% complete.

Good luck!

Im planning on integrating vorbis into dark realms aswell, neat to see we found the same library to be useful, I believe DF also uses vorbis.

Thanks for the reply :)

Epic is sort of a remake of an unfinished game that I used to tinker with a couple years ago. That original game, which I called "WinEpic", had a square-tile based map:
Screenshot here: http://i66.tinypic.com/ddjhxh.png

I was inspired to go with a hex map because I liked how it worked in Wesnoth, Eador, and AoW3.

I actually started work on the Epic code in March 2016. So it's been about 5 months of development so far. However, a lot of map functions, like the A* pathfinding code and world generation, were copied from WinEpic and adapted to the hex system. That saved me a lot of time vs. doing it all from scratch again.

I don't know how long it will take me to "finish" the game, or if there will even be an official "finished" state. My current plan is to develop the interface, core components, and features within a year or two; and then to continue adding new content indefinitely (units, items, abilities, factions, quests, etc.), at regular intervals. I'd like it to eventually have an enormous amount of content.

The original size of this download with WAV files was over 400MB. I was thinking about doing MP3; but after doing a little research, it seemed like Ogg/Vorbis was a better choice. There is no noticeable loss of sound quality, but the download is now only 25MB! I'm pretty happy with that :)
-Sir Donuel the Daring

Aleksanderus

  • Bishop
  • ***
  • Posts: 181
  • Champion of the unknown
    • View Profile
Re: Epic: A procedurally-generated, open-world fantasy adventure
« Reply #16 on: August 27, 2016, 09:06:56 AM »
Could you add some "evil main quests" just to add variation to this game?

Donuel

  • Acolyte
  • *
  • Posts: 15
    • View Profile
    • Email
Re: Epic: A procedurally-generated, open-world fantasy adventure
« Reply #17 on: August 29, 2016, 03:14:35 PM »
Could you add some "evil main quests" just to add variation to this game?

Sorry, but that's highly unlikely. I don't want to encourage people to do evil things just for variety's sake. Main quests will be either neutral (get rich, increase my fame, find something, etc) or noble/good/heroic (slay an evil creature, bring a villain to justice, stop a spreading plague, etc). So no evil quests.

Of course, there will still be many choices to be made in the game. At times, you will be allowed to side (either explicitly or implicitly) with certain factions or parties that may be good or evil. Or let's say you want to kill a certain merchant to steal his expensive magical amulet: you're welcome to try, but there will be repercussions. He is likely to have powerful guards. Word of your heinous crimes will spread quickly and ruin your reputation. People won't want to help you, and you will have difficulty finding new allies.

However, once I establish more of the interface and core features, I plan to make a sort of module system that will allow extending the game with new quests, units, items, etc. So I think there will eventually be an avenue for additional, player-created content.
-Sir Donuel the Daring

Donuel

  • Acolyte
  • *
  • Posts: 15
    • View Profile
    • Email
Re: Epic: A procedurally-generated, open-world fantasy adventure
« Reply #18 on: September 13, 2016, 05:06:21 PM »
I haven't posted here for a couple of weeks, but here's a small progress update.

If you've played the uploaded version of the game, you could walk around and hit a few random enemies, or shoot them with a bow. *Technically*, your starting unit has a wooden sword, a wooden bow, and wooden arrows equipped. These weapons are pretty weak; however, you have an enormously overpowered strength stat, which was added temporarily just so I could actually kill things while testing. But all of this was under the hood, not actually visible to the player.

Anyway, what I saw as one of the most critical things to add at this point is a "Unit Info" screen. This is a screen which, as the name suggests, will display the most basic and important info about the current unit: name, race/type, icon, inventory items, equipped gear, currencies, base stats, derived stats, quest reminders, etc. I'll add these one step at a time. My first step has been to work on a drag & drop system for transferring items from your inventory to equipped outfit, and vice-versa; this will allow you to actually start equipping items that you find throughout the world.



I've also done some work on units, so I'll share a bit about the direction I'm going in. So far, I've come up with an initial list of 66 units and roughly ranked them in terms of power, so that I can balance them and provide a suitable challenge for the player at all levels. For example, when starting out, a weak player unit can easily kill several Bees or Rats by himself. To boldly face a Warg, Python, or Vampire, however, he would need to be an experienced warrior of heroic proportions - or at least a seasoned adventurer with several companions. But taking on a Titan, strongest unit of them all, would be no easy task for even a well-armed team of living legends. Here are some of the unit icons that I'll be using for now, most of them shamelessly copied/modified from Google Image searches:



What makes units unique and interesting? Several factors:
- humanoids and demihumans start with unique names; the player may be asked to name other units (ex. dog)
- unique icons (humanoids and demihumans will have unique icons with randomized poses and outfits)
- unique races (human, elf, kobold, etc.) & types (humanoid, animal, substance, monster, etc.)
- race anatomy: different races have different body parts; demihumans can only equip certain types of gear (ex. mermaids and lamias cannot wear pants or shoes; minotaurs cannot wear helmets; harpies don't have hands, etc.)
- unique stat distributions: some have great strength; others have a lot of endurance or speed; some have less life points, but thick armor that has to be penetrated.

I've also coded a number of different "behaviors" which can be plugged into units to determine how they will act for both individual turns and in an overall strategy. Here are some examples:
- Archer: the unit will prefer to distance itself from enemies and attack the nearest enemy at range; if out of ammo, will engage in melee.
- Berserk: the unit will target the nearest enemy, then pursue and melee-attack it until it is dead, ignoring all other enemies and considerations.
- Bloodlust: the unit will always target the nearest enemy at the start of each turn.
- Bully: the unit will always target and pursue the weakest enemy in sight, attacking it in melee.
- Challenger: the unit will always target the strongest enemy in sight.
- Coil: the unit will mind its own business, but will strike at random adjacent enemies
- Mindless: the unit will wander around aimlessly, only attacking enemies by random chance.
- Sniper: the unit will target the weakest enemy or the enemy closest to death, and attack at range.

And here's my initial unit list, ranked roughly from weakest to strongest. The ones marked with an asterisk are humanoid or demihuman units that may be initially generated with a particular flavor (ex. a human may be generated as a "human warrior" with STR, CON bonuses and starting with a sword; or as a "human rogue" with DEX, LUCK bonuses and starting with a knife.)
-
bee
rat
slime
gnome*
fox
faerie*
gremlin*
serpent
falcon
dog
goblin*
elf*
skeleton
kobold*
dwarf*
human* (includes pirates, barbarians, etc.)
merfolk*
dryad*
beastman*
lizardman*
orc*
cobra
wolf
harpy*
ghost
great eagle
lamia*
centaur*
viper
ghoul
mummy
crocodile
pegasus
werewolf
warg
giant spider
giant scorpion
python
vampire
tiger
lion
bear
basilisk
troll
drake
elephant
ent
minotaur
ogre
unicorn
sphinx
griffon
phoenix
wyvern
golem
manticore
great serpent
giant*
wraith
chimera
cyclops
kraken
hydra
dragon
genie
titan*

If you have any suggestions for additional behaviors or units, they are welcome. I'm trying to stick to a mostly fantasy-based theme, but in a serious and realistic way. Nothing overly cute (sorry, Pikachu) and nothing parodical/ridiculous (like you would see in games like Earthbound or Kingdom of Loathing).
-Sir Donuel the Daring

Donuel

  • Acolyte
  • *
  • Posts: 15
    • View Profile
    • Email
Re: Epic: A procedurally-generated, open-world fantasy adventure
« Reply #19 on: March 21, 2017, 03:24:59 PM »
Wow, I can't believe it's been 6 months!  :o

Well, I'm back to working on the game again. And I now have some extra "motivation" in the form of a beautiful girlfriend  :-* who absolutely loves the game and wants me to keep working on it so she can play it! Haha... so anyone else who is interested in 'Epic' is also in luck.

Here are some of the updates/fixes I've made over the last couple of weeks:
- Disabled pyramid building generation until I can get it fixed, to prevent random crashes at startup.
- Fixed a bunch of bugs with the unit/inventory screen.
- Made some new items to play with. You now start with a Short Bow, Wooden Arrows, Wooden Sword, Long Sword, and Etheros (a powerful elemental sword).
- Introduced a new "attacks" system: each creature or weapon has one or more possible attacks that are chosen at random; so, for example, if you attack with a sword, it may do a "slash" attack (cutting damage type) or a "thrust" attack (piercing damage type). This adds some randomness to battles, instead of making it just a predictable, repeatable routine. It also makes selection of weapons more strategic: maybe you'll equip one unit with a battle axe that does fairly good "chop" (cutting) attacks consistently, while another has the Vorpal Blade, with lower damage overall, but a chance at unleashing the powerful "deathblow" attack for an instant kill.
- Each weapon has a different "weight"; it doesn't affect how many you can carry, but it means that each one will cost a different amount of energy to use. A dagger is very light, so may only cost 1 energy; whereas a heavy warhammer may cost 6 energy. Therefore, someone attacking with daggers can make many repeated attacks; but a unit swinging a warhammer may have to rest after making a series of blows.
- I've also begun work on a crafting system. With the proper tools, you'll get to mine ores and other minerals from cave walls, collect herbs from plants, and obtain hides from animals. However, I'm not certain yet whether the player will craft items himself, or whether he will bring the materials to an appropriate NPC (blacksmith, tanner, alchemist) and pay to have them crafted. Doing so would be much cheaper than buying them from a merchant, and may make certain items available that are not found in stock.

I'll keep working on it and try post a link to an updated version within the next couple of weeks. Meanwhile, feel free to comment, ask a question, or make a suggestion for the development. Feedback encourages me to keep working! :)
-Sir Donuel the Daring

Zireael

  • Protector of the @
  • *****
  • Posts: 602
    • View Profile
Re: Epic: A procedurally-generated, open-world fantasy adventure
« Reply #20 on: April 10, 2017, 02:24:16 PM »
I'd love to see and test the "updated version" you mentioned. The graphics come out fairly nice even though you said you just took them off Google Image search, somehow you managed to get a coherent style!

Donuel

  • Acolyte
  • *
  • Posts: 15
    • View Profile
    • Email
Re: Epic: A procedurally-generated, open-world fantasy adventure
« Reply #21 on: April 10, 2017, 03:00:38 PM »
Thanks for the reply. I got most of the graphics from Google search, but I did do a bunch of tinkering and recoloring to try make them fit together.
Lately I've been working on the "Party" aspect, so you can join individual units and have them enter a Local Area together. Once I get that ready, I'll post an updated version.
-Sir Donuel the Daring

Donuel

  • Acolyte
  • *
  • Posts: 15
    • View Profile
    • Email
Re: Epic: A procedurally-generated, open-world fantasy adventure
« Reply #22 on: June 14, 2017, 09:25:50 PM »
Well, I said a couple weeks for an updated version... looks like it was closer to a couple of months!  :-[

However, I have indeed been working on the game quite a bit! There has been significant progress, especially regarding the "party" system that I mentioned last time. You can now control multiple units. In fact, in the version I linked here, the player begins with 7 different units scattered across the world map: 1 human, 2 elves, 2 dwarves, 1 goblin, and 1 orc. You can move them around, one at a time, and explore the world. They can enter local areas independently by pressing the up arrow key. It is now also possible to join units together into a party by moving one unit onto another. Up to 7 units can fit in a party.

The "main quest", at this early point of the game, is basically to just unite units into parties. Since they start out scattered all over the place, it will take some work to bring them all together. If you find that they are on different islands or continents, you can press the "T" key to randomly teleport the current unit until it is close to the others. (This is just for testing, of course.)

Once you have formed a party of any size, you can use it to have multiple units enter a local area together. Simply press the up arrow key to have the whole party enter. Party members will be placed at the side of the area corresponding to which direction the world map hex was entered from: if, for example, the party arrived from the West, they will start scattered on the West side of the local area.

Note that the party unit will be re-formed on the world map when you exit a local area (using the down arrow key). Party units ONLY exist on the world map as a convenience for moving a group of units together around the world. In order to enter or exit a building, all your units must be contiguous - they must all be touching one another. Think of the narrator from Baldur's Gate saying, "You must gather your party before venturing forth..."

The < and > (, and .) keys can now be used to cycle through player units in the current area. Doing so does allow selecting units that have already used all their action points for the turn; so if you find that you've just switched to a unit and it is unable to do anything, check its remaining action points (the blue bubbles on its name plate). Remember, 1 AP is required to move; 2 AP are required to melee attack; and 3 AP are required for a ranged attack.

If all player units in the current area are killed, you will be returned to the world map. If there are no surviving player units there either, then the game will exit.

The mouse controls have been changed slightly since the last posted version, but they are still a little buggy - especially the graphical hints.

Ok, here's the link:
http://tinyurl.com/epic-6-14-17

I've also started coming up with ideas for character advancement. Rather than having a "skill tree", where you have to acquire skills in a certain order based on your class, I've decided to make things a little more flexible. There are 12 main stats:
STR      Measure of physical might.
CON      Measure of physical fortitude.
SPD      Measure of quickness in movement.
DEX      Measure of accuracy in movement.
PER      Measure of sight and observation.
BTY      Measure of physical attractiveness.
INT      Measure of cleverness and learning.
WIS      Measure of judgment and discretion.
ARC      Measure of magical aptitude.
CHA      Measure of charm and leadership.
BRV      Measure of valor and fearlessness.
LUC      Measure of good fortune.

When a unit acquires enough experience, he/she/it can either add +1 to any of these stats OR acquire a new skill/perk/ability. Some skills are passive and some are usable abilities. But you can't just pick any skill whenever you want - they will all have base stat requirements. For example, to gain "Swimming" ability, you must have a certain amount of STR + CON. To gain "Fireball", you must have enough ARC. Some units that join you may come with 1 or more starting skills. Here's a table I made with some initial ideas for skills (blues are passive and pinks are actions):


Finally, I'm also doing some work on a subscreen design, which will incorporate stats, skills, inventory, bestiary, quest journal, and more - along with a convenient way to switch units and trade items between nearby units. Hopefully there will be at least a basic incarnation of this in the next update.

Please enjoy the updated version and let me know if you have any suggestions, ideas, or questions. Thanks! :)

- Sir Donuel the Daring
-Sir Donuel the Daring