Temple of The Roguelike Forums

Game Discussion => Early Dev => Topic started by: Donuel on August 16, 2016, 08:47:27 PM

Title: Epic: A procedurally-generated, open-world fantasy adventure
Post by: Donuel on August 16, 2016, 08:47:27 PM
(Formerly titled: "Looking for a place to share my game")

Hello Everyone,

I'd like to first say that I'm not very accustomed to posting on forums. Please be patient with me and don't be rude if I don't know all the rules.  ::)

I've been working on a new game that... well, it's not quite a roguelike, but it's similar in a number of ways. I don't intend to charge for it - especially not now, since the game doesn't have all original graphics and soundtrack: I "borrowed" many of them for temporary use.

I'm just looking for a place to share my game with people who might be interested in it, get some feedback, and maybe even take some suggestions.

Ok, here goes...

I call it, "Epic". It's a pretty generic title; but that's because it's a pretty generic game. It has a general, somewhat "Tolkien-esque" fantasy setting; however, by design, there is no backstory. I'm doing my best to avoid as many static, predefined elements as possible, going for an entire world that is procedurally-generated and randomized. The world area, local areas, most buildings, factions, characters, events, names, etc, etc. are random each time you start the game.

The game represents my best attempt to make a game that is worth playing, immersive, and replayable until the cows come home. In other words, I've become dissatisfied with all games I've ever played, and I'm attempting to make what (to me) would be the perfect game. I'm aiming to combine my favorite features of 4X, RPG, Roguelike, and Turn-Based Strategy genres. With a strong focus on procedural generation, permadeath, and only modest eye-candy, I thought that the roguelike community might appreciate it.

But... I suck at forums and I'm not 100% sure this is the right place to put it; or even if the game would be welcome here. Please comment and let me know your feelings/opinions. I would also appreciate some advice about how to use this forum, helpful links, recommended reads, etc. If feedback is generally positive, I will share additional information about my game (including screenshots!) and probably also provide a download link for a current (early) build in the near future. Thank you!  :)

-Sir Donuel the Daring
Title: Re: Looking for a place to share my game :)
Post by: Donuel on August 17, 2016, 06:54:58 PM
Err... ummm... does this belong here, under "Early Dev"; or under "Announcements"?  ??? Or somewhere else?  :P See, I have no idea what I'm doing...

-Sir Donuel the Daring
Title: Re: Looking for a place to share my game :)
Post by: getter77 on August 17, 2016, 07:23:59 PM
This is a decent enough spot---just down to explaining and sharing your project from this early state onwards as it does as time rolls on.
Title: Re: Looking for a place to share my game :)
Post by: Krice on August 17, 2016, 09:28:57 PM
and I'm attempting to make what (to me) would be the perfect game. I'm aiming to combine my favorite features of 4X, RPG, Roguelike, and Turn-Based Strategy genres.

Really... well, I would not worry about forums. People who talk a lot about their games on forums and blogs are those who don't make good games or they spend like ridiculous amount of time making them.
Title: Re: Looking for a place to share my game :)
Post by: Donuel on August 17, 2016, 09:35:07 PM
Alright, thanks for the response!

Well, here's a little more information about the game: mechanics, intended features, and such...

Technical Details:
The game is written from scratch in JavaFX, which is mostly what I use to develop at work. Right now, there are two modes: full screen and windowed. For the windowed, you can choose a custom resolution for the window. The full screen mode uses your desktop resolution. Unfortunately, I haven't been able to get the resolution to scale, so you can't use a custom resolution for full screen mode. Right now, the mode and custom resolution is set via a flag in the source code; I plan to eventually make two separate launchers, one for each mode.

Tiles are pointed-top hexes, which were chosen for tactical value + some limited isometric potential, with taller features like trees covering part of the hex(es) above/behind them. Each unit has a number of Action Points. Unless altered by special abilities or active effects:
- moving to an adjacent hex costs 1 AP
- a melee attack costs 2 AP
- a ranged attack costs 3 AP

Each unit also has an energy (stamina) reserve, which is used for multiple things:
- some action abilities cost energy
- crossing certain terrain types may cost additional energy
- attacks cost energy; attacking with heavier weapons costs more energy

All areas are hex-maps. There is an open 100x80 world map. Each hex in the world map represents a local area that can be "explored" in detail as a 30x30 map. Local area maps can contain entrances to buildings, which have their own variable-size internal maps, generated in various ways according to the building type. For example, cottages and houses have a predefined shape and are pretty simple. Pyramids, on the other hand, have multiple floors in decreasing sizes, connected by staircases, culminating in a "peak" floor at the top; and each floor is a random network of tunnels and chambers.

Terrain & Features:
Each hex can have a terrain, a feature, and a road. Terrain can be a general type of terrain, like a grassland, jungle, or desert; or it can be a type of flooring, like a tile floor or dirt floor. A feature is whatever significant object or obstacle is in the hex: it can be a statue, a wall, a switch, a portal, a treasure chest, a tree, a tuft of grass, etc. Some features (walls) can't be seen through or moved through. Some (windows, plants) can be seen through, but not moved through. Others (clouds, curtains) can be moved through, but not seen through. Some, like switches, portals, or chests, can be used; some (grass, flowers, carpets) are just for decoration. And some have other uses: for example, trees can be chopped down with an axes, clearing the obstacle and providing a lumber resource. Roads can appear on outdoor hexes and are functionally insignificant; however, all roads lead somewhere, so following a road will always lead you toward a settlement of some kind.

Eyesight & Fog:
Each unit has a Perception stat which determines 2 very useful things: sight range and detection ability. The sight range specifies how many unobstructed hexes the can "see" across. The detection value represents the unit's ability to find hidden objects, items, locations, or enemies. In order for something to be visible to the player, one of the player's units must be able to see it: it must be within the unit's sight range AND the unit must have a detection value high enough to notice it. These concepts are also significant to NPCs: creatures will only chase/attack units that they can see, unless they have some special senses that allow them to detect unseen units.
Each map is initially covered with fog-of-war which must be uncovered by player units, rendering the underlying hexes "discovered". Any hex within a player unit's unobstructed sight range becomes discovered and remains visible for the rest of the game. If a hex was previously discovered, but is not currently visible to any player unit, it will appear slightly darkened and any items/units present in the hex will not be visible.
Note that on the world map, since each hex is representative of an entire local area, all units can only see across 1 hex, regardless of their sight range.

Units come in different categories and races that have different stats and abilities. Here are some basic examples:
"Humanoids" are races that have a human-like body (head, abdomen, arms, legs, etc): humans, elves, dwarves, goblins, orcs, etc.
"Demihumans" (as I define them) are races that are partly humanoid and partly animal or mythological: mermaids, centaurs, lamias, minotaurs, harpies, etc.
"Contructs" are non-living creatures that are animated by some magical, scientific, or supernatural means: golems, gargoyles, robots, etc.
"Animals" are your typical animals: snakes, bears, lions, cats, dogs, birds, whatever. May also contain mythological animals that wouldn't be considered monsters (e.g. pegasi, unicorns).
"Monsters" are mainly mythological creatures, or those that can't fit into any other category: dragons, chimeras, wyverns, griffons, hydras, etc.
"Undead" are non-living humanoids reanimated by some sinister force: skeletons, zombies, mummies, vampires, ghouls, etc.
"Planars" are magical creatures of other-worldly origin: genies, imps, titans, etc.

The game can be played with only the starting character, or you can recruit other units. You can control units independently, or group them into one or more parties that will work together. You might find a mercenaries guild, where you can pick from several available (random!) units. A traveling hero may offer to join you for a price. Or... remember that adorable lamia that wanted to eat you for breakfast? Perhaps a devilishly handsome swashbuckler can persuade her to tag along! Many units in the game, with the right skills, items, or circumstances, can be recruited:
- many units can be convinced to join you, for a price
- strong, brave, handsome males are good at charming females
- beautiful, charming females are good at persuading males
- intelligent units are good at recruiting animals, constructs, and monsters

Only humanoids and demihumans can equip gear, such as armor, weapons, and accessories. Humanoids can equip any gear; demihumans may be more restricted: for example, a mermaid can wield a dagger, but can't wear a pair of boots. There are seven levels of gear; the first 6 tiers are randomly generated, while 7th-tier items are predefined only.
- common (basic equipment)
- fine (+1 bonus)
- superior (+2 bonus)
- enchanted (+3 bonus +1 effect)
- magical (+4 bonus +2 effect)
- epic (+5 bonus +3 effect)
- legendary (+6 bonus, predefined unique name & effect)

Factions & Settlements:
At the start of the game, a random amount of randomized humanoid factions (race, name, location, etc.) are generated. Some factions may inhabit a city-state; others may be large empires with capital cities, towns and villages, fortresses, and colonies. Like a typical 4X game, the factions will compete with one another, engage in diplomacy, have wars and conduct military campaigns, etc. However, unlike a 4X, the player will not control an empire (because I hate micromanagement lol). The factions exist just to create a more realistic environment, provide quests, etc. There are also some special factions, like Pirates, Barbarians, and Vikings that may raid towns and shipping.

Additional Content/Features:
Beside what I've posted here, there's so much more that I'd like to do or have done already. But I can't remember everything right now and I wouldn't have time to include it all now anyway. Ideas and feedback are always welcome.

Title Screen:

Starting to explore a randomly-created world...

Exploring a forest local area:

Overview of a generated world map:

A complete local area. This one is a swamp with a beachfront, bordered by a couple of deserts.

Shooting an Arrow:

A random village local area:

Inside an Inn:

A Pyramid in the Desert:

Entrance to a Cave, which appears randomly in mountainous local areas:

Inside the Cave. I've stumbled across a dragon which will probably kill me in the next turn.

Encroaching on some Barbarian Turf:

Exploring the Mysts. This is a made-up fantasy themed area where you're likely to find pretty weird stuff.

Download link:
I'll try to post a link to the latest build sometime this week. I just want to get ogg/vorbis support integrated first, because that will drastically reduce the size of the download vs. the wav files I'm using now.
Title: Re: Looking for a place to share my game :)
Post by: Gornova on August 18, 2016, 09:15:05 AM
solid start and nice post!!  8)

I'm looking for explanations and ideas for the 4x parts, because is really different from basic "creature" AI. My thoughts on that are with basic creatures you can use a fine state machine or a behavior tree to model a decent AI, using the perceptions/actions points and possible tasks, but how to model and create a decent AI for 4x empire/diplomacy/AI ?  I mean with that not only a simple rule-based system, so for example:

at turn 50 faction A declare war to faction B

but something like:

goal: faction A need to find food
plan: faction A decide to create a new colony, generate quests based on templates

what do you think about that ?

Title: Re: Looking for a place to share my game :)
Post by: jim on August 18, 2016, 12:41:16 PM
You know, I was recently replaying the old Spiderweb series, Exile (now remade as Avernum), and found myself wondering why it's so hard to find games in that vein. You'd think, with the excess of "creatives" these days, games like these would be bursting from the walls - huge world, minimalistic graphics, peppered with small quests for obsessives like me. Yet they're extremely rare.

So, Donuel, thank you for making this! I look forward to playing Epic!

Might I briefly mention the game Drox Operative as a possible source of inspiration? It's an interesting take on the 4x / RPG hybrid in that there are maybe 500 strategy elements in play at any given time (plague here, political scuffle there, new cult in this area, etc), all of which have an effect on the balance of power between factions, but the player cannot, nor are they expected to, singlehandedly ensure that all threats and tensions are managed. The actions the player takes DOES have an effect, but you get the sensation of shoring up a sand castle against the tide. Mind you, Drox Operative gets so absurdly busy that it ends up feeling like you're a secret agent inside a giant beehive, i.e., not the right fit for the job, but still I thought it was a cool idea, and maybe a fit for what you're doing.
Title: Re: Looking for a place to share my game :)
Post by: Donuel on August 18, 2016, 04:59:37 PM
Guys, thanks for the positive feedback and encouragement!

I'm looking for explanations and ideas for the 4x parts

Ok. I haven't gotten terribly far in the faction department yet, but here are some of my ideas. First, I should probably expound my earlier statement, about including features from 4X, RPG, Roguelike, and TBS genres. These are the specific features I was thinking of. (I'll also try to give a rough indication of where progress is on each feature so far.)

From 4X:
- random world map (basically done, just needs additional content)
- lots of goodies to find (barely any content added yet)
- all areas covered in fog-of-war (implemented)
- diverse, competing factions (barely started)

From RPG:
- huge open world (generated, but mostly empty at this point)
- single-unit or party (mostly single-unit testing at this point)
- abundance of NPCs to interact with (not started yet)
- conversation and relationship systems (not started yet)
- many villages, towns, and cities to visit (generated, but mostly empty at this point)

From Roguelike:
- procedurally-generated world, dungeons, items, etc. (in progress)
- permanent death for all characters (implemented)

From Strategy:
- turn-based movement and tactical combat (implemented)
- unique units with a wide range of abilities (barely started)

So it's not going to be an actual 4X game; it's just going to have some features that I like from 4X games. AI for the factions will be pretty simplistic, because that's not the focus of the game - more like an ambience feature. Each faction will have a somewhat random "alignment" that can change during the game. Positive value is good, negative is evil. For example, Elves are generally good, so elven factions will start with a random alignment of 0 to 100. Orcs are generally evil, so maybe -100 to 0. In both of these cases, there's a tendency to lean in the expected direction, but also a possibility for them to be more neutral-ish. Evil factions will be more likely to declare war on other factions. Factions will also have a somewhat random "power" rating, representing military strength. Stronger factions will be more likely to declare war on weaker ones.

Also, since the various factions are competing with one another - NOT with the player - there is no need for the factions to follow the same set of "rules" as the player. They can be allowed to "cheat", which actually gives a lot more freedom in how they are programmed, reduces the required memory footprint, and reduces the turn-time. One thing I *hate* about 4X games (Civ, AoW, Eador, etc.) is how long turns take in mid-to-late game, often because calculations have to be made for hundreds or thousands of AI units. I want the game to remain snappy from turn-to-turn so that the player doesn't feel rushed to end the game before it crashes :)

So let's say orcish faction "A" is 20 tiles from elvish faction "B". Within the borders of A's empire, you'll find orcish units representing the A faction. Within B's borders, you'll find elven units representing the B faction. You may also find non-faction units, such as bears in forests or griffons in mountains. Now let's say that, eventually, the orcs declare war on the elves. Hexes within a certain range-of-influence (let's say, 15) will be "contested" by each faction. So if you, as the player, venture into hexes contested by both factions, there's a chance you'll find orcish units of A, elven units of B, or both. And when there are both, they will be fighting each other because they are at war. Depending on the player's relationship with one or both factions, you might end up helping one faction or the other, or remaining neutral.

During the course of the war, there will be periodic simulated "battles" between factions. Going back to our example, let's say the orcs of A have a power rating of 500, while the elves have a power rating of 300. The orcs will have a 5/8 chance of winning; the elves will have a 3/8 chance of winning. There are no AI-strategic unit-based calculations to be done; the battle is resolved quickly and simply behind the scenes. The winning faction will gain something from the losing faction - maybe gold, maybe resources, maybe a village, whatever. Some forces will be destroyed from both sides (more from the loser), lowering their power ratings, which will recover over time. The battle isn't announced instantly to the player; if the player is interested in the occurrence of these battles and their outcomes, he/she could hear about it from a town-crier in one of the settlements, or hear about it as "gossip" while talking to an NPC.

One interesting use for the factions is the opportunity for quests. For example, the elves may ask you to capture an orcish fortress and turn it over to them (which would increase their power rating). Or perhaps a goblin clan may request that you slay a particular hydra within their swamps: doing so would give a huge boost to your fame, and improve your relationship with both the chieftain (who may reward you) and the people of the realm (goblin NPCs).

Special factions, like barbarians, pirates, or vikings, will be hostile toward the player and other factions from the start, and will remain hostile under normal circumstances. The player may be able at some point to negotiate with them to cease hostilities, or to assault and destroy them altogether.

(These are just some of my ideas; everything is subject to change.)
Title: Re: Looking for a place to share my game :)
Post by: Donuel on August 18, 2016, 05:19:55 PM
You know, I was recently replaying the old Spiderweb series, Exile (now remade as Avernum), and found myself wondering why it's so hard to find games in that vein. You'd think, with the excess of "creatives" these days, games like these would be bursting from the walls - huge world, minimalistic graphics, peppered with small quests for obsessives like me. Yet they're extremely rare.

So, Donuel, thank you for making this! I look forward to playing Epic!

Great! Yes, I'm also quite surprised that I haven't found games in this niche. Specifically, I've been wondering for years why random world generation that works so well in 4X games hasn't been applied more to the adventure/RPG theme. The Roguelike genre seems to be a combination of the random-world and adventuring aspects; but (no offense to anyone here) it seems to fall short of perfection in both of these aspects. At least to me; it just wasn't what I was looking for. Partly because I get claustrophobic from being in a single dungeon throughout the whole game :P I need to have a random world map, too! I got into fantasy-themed 4X for awhile (among them, Eador, AoW3, Fallen Enchantress; and especially Fall From Heaven 2, which was a fantasy mod for Civ 4). I liked the exploration, the factions, the quests, the heroes, and the special locations. But I didn't want to play an empire-building game!! I didn't want to wait 3 minutes for each turn to end; and I didn't want to rush to win the game just to give myself a pat on the back for how fast I won. I wanted to take my time and exist inside my own little world! And eventually, I realized that if I wanted a game like this, I couldn't rely on someone else to come up with the idea. It was my idea: I had to make it happen myself. And I'm a programmer; I've been making little games and gamelets my whole life; so... why the hell not? :-)
Title: Re: Looking for a place to share my game :)
Post by: getter77 on August 18, 2016, 07:43:49 PM
A fair bit of the above also made me think of Battle Brothers of late come to think of it:

Title: Re: Looking for a place to share my game :)
Post by: Donuel on August 19, 2016, 03:37:24 AM
Alright, for anyone who'd like to try out this VERY EARLY version for me and see if it works...

Here's a link: http://tinyurl.com/epic-8-18-16-1 (http://tinyurl.com/epic-8-18-16-1)

It's a ZIP file. If you're on Windows, just extract and run one of the EXE launchers. Epic.exe runs in full-screen using your desktop resolution; Epic_win.exe runs in a 1024x768 window. Eventually, there will be an option to choose the window's resolution.

So far, I've only tested it on Windows 7. In theory, it should work on other systems. But that may take some tinkering - not really sure yet. You can try running the JAR file directly. I'm not sure how much memory it needs, but the EXE initializes the JVM to min 512MB, max 1024MB. If you don't have that much available, you can try running the JAR from a terminal or command prompt with different settings.

To be on the safe side, make sure your Java (JRE) is up-to-date.

When you start the game:
1. You'll see a title screen; just press Enter when prompted.
2. The game will start and you'll be taken directly to the world map. There is no random unit generation or customization yet, except for a slightly random pose & skin color.
3. You can move in all directions using 6 of the numpad keys. Since it's a hex-map, direct North & South don't exist. Instead, the up & down keys (8 & 2) are basically used to enter & exit, respectively. (See below.)
4. Explore the world to your heart's content =) If you find yourself stuck on an island, you can select "Random Teleport" from the game's menu.
5. Every hex on the world map represents a local area that can be explored. Press [up/8] on the numpad to enter a local area.
6. Sometimes you'll see little "hints" on a world map hex about things that a local area will contain: towns, caves, castles, etc. Explore the local area to find them.
7. When exploring a local area, you may encounter enemies. Hold the "A" (attack) key while moving into an enemy to melee-attack it. (Uses 2 action points.)
8. Your character also begins with a bow and 10 arrows. Hold the "S" (shoot) key while left-clicking an enemy to shoot it. (Uses 3 action points.)
9. When you come across a building entrance inside a local area, press [up/8] on the numpad to enter the building. Use the same key to climb any stairs you find, whether up or down.
10. When standing on a building entrance, press [down/2] on the numpad to exit the building. Use the same key to exit a local area and return to the world map.
11. The buttons at the bottom of your screen are not active yet, sorry. I was just doing some layout testing with them.
12. There is some mouse support: left-click on a visible hex to move there. (You must have enough remaining action points to make it to the hex in the same turn, or this won't work.) You can also try the mouse in combination with the "A" key to melee attack. Mouse functions may still be a little buggy - it's been awhile since I visited them.
13. All other current controls (and some future controls) are visible in-game by holding down the backtick/tilde [`/~] key. It should be above your Tab key. If some of the actions you see here don't work, that's because I haven't added them yet :P
14. Here's an undocumented sneak-peek test function: stand to the left of any type of tree and press F4. Then move to that hex and press the "G" key :)

So far, the game just generates an empty world and a few buildings. There is very little content added so far, and no subscreens yet. Please let me know if you have any questions or if it's not working on your machine. (After you check to make sure your Java is updated... haha)

Oh... one more thing. I did notice when I run the game outside of my IDE, the music is a little choppy at times until it's fully loaded. Sorry about that. I may have to figure out a way to pre-load it before it starts playing in order to get rid of the choppiness.

Thanks a lot, guys! Hope it's at least a little fun for you, even in this early state! :)
Title: Re: Looking for a place to share my game :)
Post by: Donuel on August 20, 2016, 05:26:52 PM
Some of you may be wondering: "Since this is an adventure/RPG game, and there's no static backstory... what is the point of the game? And how do you win?"

Good question. Here's a little bit of a preview of what I'm planning.

When you start the game, there will be a Character Generation screen that will generate a random human character for you. For example, something like this:

Character Profile
Name: [Random Name]
[random icon]
Sex: [M or F]
Stats: [random values for strength, speed, dexterity, constitution, intelligence, wisdom, bravery, charisma, perception, arcana, beauty, & luck; these may also be modified by the generated backstory: see below]

Character Backstory
It will also show a somewhat-random backstory for the character (not for the world or the game), which will add to the flavor of the character and may provide a reason for the main quest (see below):
"Donuel was born to a poor family outside Ludisha, a small village in the kingdom of Eralon. He spent many days in his youth doing rigorous farm work, which strengthened his muscles (STR+2) and helped him to appreciate the value of hard work (WIS+1). Unfortunately, this didn't afford him much time for more intellectual education (INT-3). He did, however, develop an affinity for working with animals (starts with 'Friend of Animals', a passive ability that causes animals to never view this unit as hostile)."

Character Main Quest
A somewhat-random main quest is also generated for the character. The purpose of the main quest is not to finish it, win the game, and end the game. It's more to provide a long-term goal for the player to aim for when starting the game. Completing the main quest will give some kind of accolades, but it won't end the game; you are free to play for as long as you want. Here's an example to go with the backstory above:
"One day, while Donuel was working at a local farm, the servant of a rich nobleman arrived with a sack of gold coins to buy several wagons of parched corn. The young Donuel had never before seen such an amount of gold! Realizing that the world outside the farm was brimming with opportunity, and that others were living far more sumptuously than himself, he decided to leave at once to see the world and amass his own fortune! (Goal: obtain 100,000 coins)

Some of the other main quests I envision:
- find a particular legendary location
- find a particular legendary weapon or item
- find and slay some terrible beast
- capture an infamous rogue who stole a precious item
- confront and defeat some uber-powerful villain
- you are being hunted by a malevolent force: find a way to stop it
- locate and assemble the pieces of some artifact
- destroy some evil empire
- get revenge on the pirates who destroyed your hometown

Alright, so after displaying the character's name, icon, stats, backstory, and main quest, the player will be asked: "Doth this tale sound familiar?" And you can respond, "I assure thee, 'tis I." (starts game) or "Nay, I know not this person." (regenerates character) You can regenerate as many times as you wish until you find a character that you like. I do this to encourage diversity in the characters people choose, instead of just always trying to go for an "optimal build". Maybe you'll choose a character because he/she has great stats that fit how you want to play; or maybe a character will have mediocre stats, but you like the appearance, name, and main quest. Or maybe a generated character just seems too perfect for a particular role, so you decide to play that role - even though it's not the role you usually play.

One more thing. Your starting character isn't special in any way, other than being the one that you start with. The main quest isn't the *point* of the game - it's just something to give you a starting goal. The starting character may die, in which case the main quest will become impossible to complete. But as long as you have other characters, the game will go on. Existing characters will keep taking and completing new quests as the game goes on. Think of it like a movie: sometimes "starting" or "early" characters die, but it's all part of the grand plot.
Title: Re: Epic: A procedurally-generated, open-world fantasy adventure
Post by: Donuel on August 25, 2016, 04:19:35 PM
Hello Everyone,

I'm just wondering if anyone has downloaded and tried to play the game yet. So far, I'm the only one I know of for sure that has ever actually run it/played it. If you do download it and give it a crack, please kindly reply here or drop me a message and tell me something about your experience:
- did you get the game to run (after updating your Java)?
- which OS are you using?
- did it seem to perform ok on your machine? what kind of processor/architecture are you using?
- how did you like the game experience and mechanics so far?
- did anything seem weird? do you have questions about anything?

Thank you! :)
Title: Re: Epic: A procedurally-generated, open-world fantasy adventure
Post by: Donuel on August 25, 2016, 04:24:59 PM
Meanwhile, since development on Epic is still early and I have my own random fantasy/strategy itch to scratch, I'm planning to check out Conquest of Elysium 4 which is available on Steam at 66% off right now. It looks like a fantasy 4X with roguelike elements... thought maybe some of you who view my post may be interested as well. ;)
Title: Re: Epic: A procedurally-generated, open-world fantasy adventure
Post by: Untrustedlife on August 27, 2016, 01:57:14 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.
Title: Re: Epic: A procedurally-generated, open-world fantasy adventure
Post by: Donuel 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 (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 :)
Title: Re: Epic: A procedurally-generated, open-world fantasy adventure
Post by: Aleksanderus on August 27, 2016, 09:06:56 AM
Could you add some "evil main quests" just to add variation to this game?
Title: Re: Epic: A procedurally-generated, open-world fantasy adventure
Post by: Donuel 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.
Title: Re: Epic: A procedurally-generated, open-world fantasy adventure
Post by: Donuel 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.)
human* (includes pirates, barbarians, etc.)
great eagle
giant spider
giant scorpion
great serpent

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).
Title: Re: Epic: A procedurally-generated, open-world fantasy adventure
Post by: Donuel 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! :)
Title: Re: Epic: A procedurally-generated, open-world fantasy adventure
Post by: Zireael 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!
Title: Re: Epic: A procedurally-generated, open-world fantasy adventure
Post by: Donuel 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.
Title: Re: Epic: A procedurally-generated, open-world fantasy adventure
Post by: Donuel 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 (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