Author Topic: Empires of Eradia: The Cataclysm of Chaos - Alpha V31HHHH  (Read 23000 times)

Offline lordpalandus

  • Hero Member
  • *****
  • Posts: 757
Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V25
« Reply #175 on: January 14, 2019, 06:31:40 PM »
After a prolonged break from development, I'm back with a new release V25 = https://www.mediafire.com/file/u508z31x9n4792j/Binary_V25.zip/file.

I made several posts on my subreddit explaining the prolonged break if you are interested in reading any of it; link to subreddit = https://www.reddit.com/r/EmpiresOfEradiaCOC/

The tl;dr version = I was approaching burnout in early December, I took the time to address the issues that were causing the impending burnout and now I feel fine emotionally/mentally. Going to experiment with different development cycle times to find an ideal time period that works for me and ensures I can provide the correct amount of quality in each release. I spent the past two days, a total of about 11 hours, bughunting, playtesting, and bugfixing this release, and squashed all 28 discovered bugs; 10 of which were gamebreaking. I'm satisfied, at least for now, with the quality of the build, but if anyone posts any bugs I'll definitely work on a hotfix.

Now it is onwards towards Beta!
Currently working on Cataclysm of Chaos, Remade.
Link to OPU page = http://forum.outpost2.net/index.php/topic,6073.0.html

Offline Hooman

  • Administrator
  • Hero Member
  • *****
  • Posts: 4751
Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V25
« Reply #176 on: January 15, 2019, 12:33:34 PM »
Version 25 already? Geeze, I feel like you must have skipped a few numbers. But looking back, they're all there.

Good to hear you've got a new version out.

Offline lordpalandus

  • Hero Member
  • *****
  • Posts: 757
Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V25
« Reply #177 on: January 15, 2019, 01:31:40 PM »
Well, I think that for future games, I'll use a more commonly accepted form of version control: ie V0.2.5, as I greatly misinterpreted the number of versions I'd need after I completed the pre-alpha prototype after only 8 builds. But as I've gotten used to the current format for this title, and so have my game players, I'll stick with it for this game.

Nah, I've just been quiet for 2 months XD; no version skipping.
Currently working on Cataclysm of Chaos, Remade.
Link to OPU page = http://forum.outpost2.net/index.php/topic,6073.0.html

Offline Hooman

  • Administrator
  • Hero Member
  • *****
  • Posts: 4751
Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V25
« Reply #178 on: January 16, 2019, 02:25:49 PM »
Ahh, perhaps you'll want to give Semantic Versioning a read.

Offline lordpalandus

  • Hero Member
  • *****
  • Posts: 757
Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V25
« Reply #179 on: January 17, 2019, 03:09:43 AM »
After reading about 1/3 of that link, I've decided to stick with my current method of versioning software.

Thanks for the link!
Currently working on Cataclysm of Chaos, Remade.
Link to OPU page = http://forum.outpost2.net/index.php/topic,6073.0.html

Offline lordpalandus

  • Hero Member
  • *****
  • Posts: 757
Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V26
« Reply #180 on: February 04, 2019, 09:23:57 PM »
Updated the game to V26! Now, major changes are listed in a Changelog, viewed from ingame from the main menu.

Also created a monthly recap of Dec/Jan for anyone interested = https://www.reddit.com/r/roguelikes/comments/an969c/monthly_update_empires_of_eradia_the_cataclysm_of/
Currently working on Cataclysm of Chaos, Remade.
Link to OPU page = http://forum.outpost2.net/index.php/topic,6073.0.html

Offline lordpalandus

  • Hero Member
  • *****
  • Posts: 757
Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V28
« Reply #181 on: March 16, 2019, 10:38:32 PM »
Been a while since last time I posted here, as it seemed there was little interest in the project. And the post got buried in OutpostHD stuff at the time.

In between V26 and now, I did two Monthly updates on Roguelikes. For those that want to find out what happened between V26 and now.
First one = https://www.reddit.com/r/roguelikes/comments/an969c/monthly_update_empires_of_eradia_the_cataclysm_of/
Second one = https://www.reddit.com/r/roguelikes/comments/ay9ep7/monthly_update_empires_of_eradia_the_cataclysm_of/

However, new release today, V28. The changes in this build are huge, so if you want to read in on that, visit the link on the first post.

tl;dr version:
-> Deprecated some complexity.
-> Reduced message log spam.
-> Balanced alchemical crafting.
-> Partial technique overhaul.
-> Updated the tutorial.
-> New look around command (Shift + /?)
-> New information window (Hold Left Ctrl)



Currently working on Cataclysm of Chaos, Remade.
Link to OPU page = http://forum.outpost2.net/index.php/topic,6073.0.html

Offline Hooman

  • Administrator
  • Hero Member
  • *****
  • Posts: 4751
Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V28
« Reply #182 on: March 18, 2019, 08:18:35 AM »
In terms of engagement, I don't know about other people, but if you started posting code snippets, I'd probably be more engaged. Code is generally what I prioritize on the forums, especially if there is something specific to look at.

I'm afraid play testing doesn't get quite so much attention from me.

I read through the Reddit posts. I think I would agree about the overload of input presented to the user.

Offline lordpalandus

  • Hero Member
  • *****
  • Posts: 757
Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V28
« Reply #183 on: March 18, 2019, 10:30:17 AM »
You are a veteran of coding; what could I possibly post, in terms of code, that would pique your interest? Sure, there are some things for me that I find novel of the implementation of specific things, but I'm sure that any of my novelties wouldn't be of interest to someone such as yourself... like for example:

Choosing a random object from a list (effectively a vector in C++ as it can increase/decrease in size during runtime), rather than choosing a random number and using it to choose an object in a large switch statement (no switches in Python, but can build the equivalent with if/elif):

Code: [Select]
List = [Monster, Item, Crate]

Index = libtcod.random_get_int(0, 0, (len(List) - 1)) #So chooses an index between 0 and length of the list - 1; first 0 is indicating the type of stream used... haven't messed with other streams yet.
Object = List[Index] #Get whatever object is stored at the index in the List

The benefit of the above is that you can increase/decrease the number of objects in the list and are good to go from there. With a switch, I'd have to constantly add or remove if/elif conditionals associated with a number. For me, the random choice of an object in a list makes it easier to modify and add things to the game, without having to manually add more if/elif conditionals to switches, while producing the same overall effect.

---

Yes, not everyone likes playtesting or having their run ruined by a bug. Some, like me do like playtesting.

---

Overload of input tends to be a bad trend with roguelikes in general. If you ever play something like ADOM, you'll often find that every key on the board has a command attached, and many of them have multiple other commands associated with that key, by hitting that key with shift, or alt, or ctrl, or alt ctrl, etc. I've tried to avoid that kind of craziness, and stuck with a single command per keystroke, but it appears I still have room for improvement.
« Last Edit: March 18, 2019, 10:32:24 AM by lordpalandus »
Currently working on Cataclysm of Chaos, Remade.
Link to OPU page = http://forum.outpost2.net/index.php/topic,6073.0.html

Offline Hooman

  • Administrator
  • Hero Member
  • *****
  • Posts: 4751
Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V28
« Reply #184 on: March 18, 2019, 12:36:51 PM »
That right there is a wonderful example. Even better, as it relates to the concept of data driven code that I'd mentioned months ago. I'm very glad to see you using constructs like that. That's a beautiful example.

As for a guide about what to post about, often the best thing is just giving an overview of a recent change you made, and from a technical perspective, why it was made. I really like how your example here distills the essentials down to just a few lines of code. It makes it very easy to digest.

Another possibility is posting some code you'd like to change, and detailing what's a pain about it. Perhaps there are other switch statements / cascaded if/elif/else statements that you'd like to change, but aren't sure how.



For overload of input, I would prioritize simplifying what the game presents to the user, rather than what the user presents to the game. Keeping both simple is ideal, but I think it's ok to have a keyboard full of commands, so long as only power users need to have it all memorized. Being inundated with messages and prompts from the game is much worse than having lots of key bindings. The keyboard is there whether or not it's being used, but the screen is a blank canvas which shouldn't be too obscured with noise.

Perhaps what's most important though is to gradually increase options, so the user isn't presented with everything all at once. Give them a chance to learn what's being presented. Having a lot of feedback and chaotic gameplay, for short periods of time, late in the game, can be ok and possibly even fun. You want a challenge late game. But if that comes too early in the game, it's just overwhelming and not fun.

When I first started play testing your game, there was probably about half a dozen monsters and items presented all at once at the beginning. Instead, maybe introduce 1 new monster per level, or 1 new item per level. That gives the player a chance to familiarize themselves with each option as it is presented.


To tie this back to your above example, you could effectively slice the list based on level, then generate the random number. Maybe you have a monster list, with progressively tougher monsters. You only want to randomly select from the first few in the early levels, while late in the game you can select from later in the list. For monsters, you probably don't want to select easy monsters for late game, so it may be like a sliding window.

Example (not real Python code):
Code: [Select]
MonsterList = [Monster0, Monster1, ..., Monster99]

minIndex = Max(0, level - 10)   # Allow monsters up to 10 levels below current level (clipped at 0)
maxIndex = level   # Allow monsters up to current level
monster = MonsterList[libtcod.random_get_int(0, minIndex, maxIndex)]

And yes, you use Max when clipping a Min value. Similarly you'd use Min when clipping a Max value.
« Last Edit: March 18, 2019, 12:50:08 PM by Hooman »

Offline lordpalandus

  • Hero Member
  • *****
  • Posts: 757
Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V28
« Reply #185 on: March 18, 2019, 02:53:45 PM »
Ok! I'll keep that in mind for the future!

---

I have implemented some of what you suggest in V28:

-> I heavily pruned and redesigned most of the messages to use a Round Update system, that severely reduces message log spam, while still getting the important information to the player.
-> I also, deprecated a whole lot of the visual complexity and system complexity, and instead built upon the remaining depth (ie got rid of organic/metallic scrap piles, and folded that system into the Crystallized).
-> I also made it easier to understand Techniques, by removing all of the abbreviations from them.
-> I added the Information Window, which although not fully implemented, does currently provide a lot of useful information on items that previously wasn't available.
-> Finally I added the Look Around command which allows players to detect those pesky archers hiding in plain sight, by highlighting them.

I have considered redesigning the tutorials and turning them into smaller bite-sized chunks of information. However, currently, it isn't possible with the way maps are generated. When I implement Portals, which will use a different form of map generation than the default method, it will allow me to build smaller maps with several restrictions placed on them. These restrictions could be used to make for a more constrained tutorial system that has a separate map for different sections of each tutorial (ie a single map dedicated to crafting and salvaging and inventory management). If I manage to get the other tasks completed for V29, I'll look into implementing Portals for V29; else it will be for V30.

I actually don't have a monster list. Monsters are either Horde, Primal Chaos, Treasure Fiends or Bosses. Each scales in power as you go deeper and based on current Chaos accrued. There is a story based reason for the creatures encountered, so a monster list wouldn't work too well. I am looking into changing how challenge is determined, but haven't quite gotten to it yet. Other things have been a priority lately, namely my sanity.
Currently working on Cataclysm of Chaos, Remade.
Link to OPU page = http://forum.outpost2.net/index.php/topic,6073.0.html

Offline Hooman

  • Administrator
  • Hero Member
  • *****
  • Posts: 4751
Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V28
« Reply #186 on: March 19, 2019, 02:51:52 PM »
Quote
Other things have been a priority lately, namely my sanity.
Sounds like you've been play testing your own game too much. ;)

Offline lordpalandus

  • Hero Member
  • *****
  • Posts: 757
Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V28
« Reply #187 on: March 19, 2019, 10:02:31 PM »
:P

Well another piece of code that I found ingenious on my part is this:

In my game, a player can start to visually hallucinate, and thus hallucinations start appearing on the level, in the form of monsters that you cannot tell is an illusion until you attack it. Killing an illusion gives no loot or xp. Now, if a player manages to bring their stress levels down, then they stop hallucinating. Now, the way the code is setup (I intend to change it later, but it will be a major refactoring), all objects are added to LIST_Objects... all 3,300+ of them. So, in order to remove the hallucinations, all illusionary enemies have to be cleared from this huge list of objects. So I devised this:

Code: [Select]
Index = 0
while Index < len(LIST_Objects):
    Object = LIST_Objects[Index]
    if Object.fighter:
        if Object.fighter.Encounter_Type == 0:
            Illusionary_Death(Object)
        else:
            Index += 1
    else:
        Index += 1

So, what this code does is this:

It will find out what is in the first index of LIST_Objects. If it is ".fighter" that means it is either the player or an enemy. Then it checks ".Encounter_Type" (all monsters and the player are given an Encounter_Type; it is used to handle looting and AI primarily) is 0 (which is an Illusionary Foe), and calls a special function for killing off Illusionary foes. In illusionary death, it clears the creature's position (if you don't clear their position, it leaves behind ghost images that look like an enemy but isn't) and removes it from LIST_Objects.

Like most containers, removing an index from it shifts all the remaining indexes one to the left (positive number towards 0). So, I don't want to have to search the list more than once, as it is pretty huge list. So, what the code does, is that when it removes an object from the list, it only advances the index value, if it doesn't detect another illusionary foe at that index in LIST_Objects.

Thus, the code ensures that the list is only searched once and all illusionary foes are caught and removed the first time, which is very important for a list of it's size.
« Last Edit: March 19, 2019, 10:10:49 PM by lordpalandus »
Currently working on Cataclysm of Chaos, Remade.
Link to OPU page = http://forum.outpost2.net/index.php/topic,6073.0.html

Offline Hooman

  • Administrator
  • Hero Member
  • *****
  • Posts: 4751
Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V28
« Reply #188 on: March 20, 2019, 03:28:29 AM »
It sounds like your Illusionary_Death method has a side effect of removing the passed Object from the LIST_Objects array. That wasn't immediately obvious to me when I first read through the code.

My first thought was, you have a known start and end point, so why not use a for loop instead of a while loop. That list modification done along the way would be why.

Tip: If you're removing elements from a list while iterating over it, it sometimes helps to iterate in reverse.

Assume for the sake of argument that you'd generated a list of all indexes into your array before walking the array. Instead, you walk the list of indexes, and use that to indirectly refer to the array. If at some point you remove an element from the array, which indexes are still valid and point to their original object? That would be all the indexes for slots before the object that was removed. All the indexes that point to slots at or after the removed object are invalidated (they either point to an element other than was originally intended, or point outside of the array).

That concept of invalidation is more general. It applies to pointers (more of a C/C++ thing) and iterators too. It doesn't matter if the positions in the list were generated up front, or on the fly. What matters is they are generated in a fixed manner, decided up front, which does not reflect later changes to the list.

You might say that indexes and pointers are just specific implementations of the more general concept of an iterator. When a container is modified, iterators that point into the container may be invalidated. Which iterators are invalidated may depend on both the type of container, and where the iterator currently points. The concept of invalidation of iterators is more conceptual, as there may not be any runtime error generated.

Example:
For arrays, removing an element may invalidate any iterators at or after the removed element.

Example:
For a linked list, removing an element may invalidate any iterators that point to the removed element (and only to that element).

By iterating the array in reverse, with a single iterator, the only positions that get invalidated are ones you've already processed, and so invalidation becomes a non-issue.

Note that I'm being a little sloppy about iterators pointing at the currently processed and removed item. Details here depend a bit on iterator implementation, which also depends on language and library implementation. In particular, some languages like C++ allow you to reference the same element as many times as you want through the iterator (element = *iterator;), and have a separate operation for advancing the iterator (iterator++;). Other language, which I believe include Python, only allow you to access the "next" element (element = next(iterator)), which immediately advances the iterator. In Python's case, once you capture the next element from an iterator moving in reverse, the iterator effectively already points to the element before the current element.

I'm also being a bit sloppy about iterator stop conditions. If a container changes, does the iterator know to update it's stopping condition? Or does it potentially run off the end of the container, or not iterator over newly added items. In many cases, iterators will refer back to the container in a live manner to check the size, so they don't run off the end of a container. In others, a shrinking container may invalidate the iterator, as it would otherwise eventually run off the end. That's a bit out of scope for this discussion though.




Applying this to your case, I think the code could look something like:
Code: [Select]
for object in reversed(LIST_Objects):
  if object.fighter:
    if object.fighter.Encounter_Type == 0:
      Illusionary_Death(object)

Note that reversed does not need to actually copy the list to iterate it in reverse. It accesses the elements in place, in reverse, on the fly.

Another suggestion I have, is to replace the 0 with a more meaningful named constant or enum value name.


And yes, that was also an interesting tidbit of code to look at. :)



Edit: Some references that might be worth reading:
https://stackoverflow.com/questions/529424/traverse-a-list-in-reverse-order-in-python
https://realpython.com/python-range/
« Last Edit: March 20, 2019, 04:01:53 AM by Hooman »

Offline lordpalandus

  • Hero Member
  • *****
  • Posts: 757
Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V28
« Reply #189 on: March 20, 2019, 07:40:24 PM »
Yes, the reason I don't do a for loop, was because it doesn't catch every one illusion in the first pass of the entire list. In fact, I had to have it go through the list about 15 times to catch all cases of an illusion, which is what prompted me to create this chunk of code.

I'm not sure iterating in reverse is available in the version of python I am using. I know for a fact that enumerators are available only in Python 3+, whereas I'm using Python 2.7; if reversed is available, I'll take a look into that in the future.

Wouldn't it be better to use a vector for LIST_Objects compared to an array (if it was in C++)? My understanding of arrays are that they are fixed in size and cannot be increased in size once the array has been allocated to memory. And the LIST_Objects does definitely increase and decrease in size as you play the game, so a fixed size would be wasteful or insufficient, depending on how big you made the array.

I'm assuming invalidation is there to prevent dangling pointers or other runtime errors that might occur due to a reference no longer being available?

I use numbers for Encounter_Types because I know what number is what critter and often have documentation in places that explains what the number means. Also, each critter has to have an Encounter_Type as it is used to determine what kinds of actions and reactions it will perform in the AI_Take_Turn functions. I'd prefer an enumerator, but they aren't available to Python 2.7 and it will be a significant amount of work to upgrade from python 2.7 to python 3+ (which is why I haven't done it yet). I might do that during the Beta, if I'm ambitious, though I already have sufficient "ambitious" tasks on my plate (namely a renderer and main event loop overhaul and redesign).

As for the helpful links:

I do use ranges a fair bit in my Technique code, for determining what targets will be affected in what radius around the target coordinates, but not so much when dealing with the LIST_Objects. Very useful the Range function.
Currently working on Cataclysm of Chaos, Remade.
Link to OPU page = http://forum.outpost2.net/index.php/topic,6073.0.html

Offline Hooman

  • Administrator
  • Hero Member
  • *****
  • Posts: 4751
Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V28
« Reply #190 on: March 21, 2019, 08:42:28 AM »
In C++, std::vector, std::array, and built in arrays are all array-like objects. They store values in contiguous memory and allow for random access. In terms of automatic growth, yes, that's what vectors are for, they have that built in. The std:array is a fixed compile time array that can never change in size. The built in array can be either statically sized using a fixed compile time value, or dynamically sized at runtime, depending on how they are declared. Built in arrays have no built in support to automatically grow as items are added, though that can be manually added for the dynamically sized type. If you do that though, you should really have just been using vectors to begin with.

That is in contrast to things like linked lists, which use non-contiguous memory. Linked lists do not support random access (at least not efficiently), but do support efficient insertions and deletions to anywhere in the list. An array can't support efficient insertion and deletion in the presence of certain re-allocations, or if the order of the list must be preserved.



Invalidation is a concept, not a runtime check. It doesn't protect you from anything. Rather, it's a coding convention, which if followed, keeps the code safe. If you don't respect the convention, and use iterators which are technically invalid, there's a good chance (but no guarantee), the program will exhibit buggy behavior. The compiler will not warn you if you break the convention. In many cases, it really can't. There's also not likely to be a runtime check to guard against or warn you about bad uses of invalidated iterators. The code itself probably won't know.

Invalidation is a concept for the programmer, and there are often notes about it in API documentation. It's up to the programmer to follow the rules.



Reversed:
https://docs.python.org/2/library/functions.html#reversed
Seems it was added in Python 2.4 and updated in Python 2.6. You should be good to use it in Python 2.7.

Offline lordpalandus

  • Hero Member
  • *****
  • Posts: 757
Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V29
« Reply #191 on: April 03, 2019, 11:25:09 PM »
Tried out reversed() in a few places. Works like a charm!

I spent about 4.5 hours today bugfixing and solved all of my detected bugs. Game is very stable for this release. However, I am quite exhausted and will do my Monthly Update on Roguelikes subreddit tomorrow (with pictures). If you want a look at the changes, the ingame change log lists all the big ones.

All in all, this is the biggest game release I have ever done. I'll post a link of the monthly update for anyone interested when it is completed.

EDIT:

New stuff of note... Hotfix released, monthly update done, and gif to watch of actual gameplay.

-> Link to Binary Build = https://www.mediafire.com/file/aybubgrbf94h22b/Binary_V29H.zip/file
-> Monthly Update for March = https://www.reddit.com/r/roguelikes/comments/b9d6uf/monthly_update_empires_of_eradia_the_cataclysm_of/
-> Gameplay Gif = https://imgur.com/a/MgvHIB7
« Last Edit: April 04, 2019, 10:59:03 AM by lordpalandus »
Currently working on Cataclysm of Chaos, Remade.
Link to OPU page = http://forum.outpost2.net/index.php/topic,6073.0.html

Offline Hooman

  • Administrator
  • Hero Member
  • *****
  • Posts: 4751
Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V29H
« Reply #192 on: April 04, 2019, 08:27:26 PM »
The gif is a nice touch. It occurs to me there are styles of play very different from anything I ever attempted.

Offline lordpalandus

  • Hero Member
  • *****
  • Posts: 757
Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V29H
« Reply #193 on: April 04, 2019, 09:03:54 PM »
I showed off the most common style that most players would be familiar with: Hack and Slash everything in sight and then loot their remains.

However the game does support a stealthy playthrough of strategically eliminating foes or stealthing past them entirely OR a pacifist playthrough where you harm nothing, and work towards purely pacifistic victory conditions, while snubbing the Chaos God whenever possible.

I didn't show them off, as they will require more than 3 minutes of gameplay to show off all the enjoyable ways they can be played and they play significantly differently from the hack/slash method, to appeal to different kinds of players.
Currently working on Cataclysm of Chaos, Remade.
Link to OPU page = http://forum.outpost2.net/index.php/topic,6073.0.html

Offline Hooman

  • Administrator
  • Hero Member
  • *****
  • Posts: 4751
Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V29H
« Reply #194 on: May 02, 2019, 01:29:56 PM »
Hey man, what are you working on?

Is there any particular part of the code that you've improved recently, or are trying to improve?

Offline lordpalandus

  • Hero Member
  • *****
  • Posts: 757
Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V29H
« Reply #195 on: May 03, 2019, 05:39:19 PM »
Um, I am currently finishing up V31, and plan on releasing it tomorrow. Have a bunch of bugs to fix and need to test out the portal code, as it is a fairly significant change to the codebase. I'll do a release here as well as everywhere else.

Lately, I've been only releasing every 2nd build here, as it just seems there is less total interest here on OPU, which makes sense. There has been a lot of really interesting stuff coming from Techcor and Crow! lately, that I figured I'd just wait until the monthly update to release that update here.

Thanks for checking in though!
Currently working on Cataclysm of Chaos, Remade.
Link to OPU page = http://forum.outpost2.net/index.php/topic,6073.0.html

Offline lordpalandus

  • Hero Member
  • *****
  • Posts: 757
Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V31HH
« Reply #196 on: May 06, 2019, 06:41:34 PM »
Released V31 today. Ran into a pair of critical gamebreaking bugs, which caused the delay in the release. Both are fixed now.

Ingame changelog is 31 changes long (technically more, but I only ever list the most important changes in the ingame changelog; for the rest read the Changelog.txt that comes with the game). This was a large and important release, heavily changing the calm/intensity balance, changing how monsters are spawned from portals and now portals can be entered and closed.

I'll be doing a monthly recap of V30 and V31 on Roguelikes, maybe later tonight, probably tomorrow. It will have a couple gameplay gifs highlighting most of the major changes if you prefer to watch something over reading the changes.

EDIT: Hotfix released. My primary tester, Val_Kryst identified a few minor interface issues and a rare crash bug. Hotfix fixes them. Also, here is a link to my Monthly Update:
https://www.reddit.com/r/roguelikes/comments/bm0u2w/monthly_update_empires_of_eradia_the_cataclysm_of/

EDIT2: New hotfix, addressing some bugs, and some extra feedback:
https://www.mediafire.com/file/b2rl9db1wbh16ut/Binary_V31HH.zip/file
« Last Edit: May 09, 2019, 04:16:28 PM by lordpalandus »
Currently working on Cataclysm of Chaos, Remade.
Link to OPU page = http://forum.outpost2.net/index.php/topic,6073.0.html