Outpost Universe Forums

Projects & Development => GORF => Hall of Fame => Topic started by: lordpalandus on March 11, 2018, 04:07:11 AM

Title: Empires of Eradia: The Cataclysm of Chaos - Alpha V48H3
Post by: lordpalandus on March 11, 2018, 04:07:11 AM
This is the 48th, Hotfix 3, Alpha Release
-> Link to Binary Build = https://www.mediafire.com/file/fp9n16jmlnrgsox/Binary+V48H3.zip/file
-> Link to 3-Month Update = https://www.reddit.com/r/roguelikes/comments/p7l0d4/empires_of_eradia_the_cataclysm_of_chaos_v47/
-> Link to 2020 Retrospective = https://www.reddit.com/r/roguelikedev/comments/l8zlvl/2021_in_roguelikedev_empires_of_eradia_the/
Title: Re: Cataclysm of Chaos, Remade (ASCII), Alpha V24
Post by: lordpalandus on March 11, 2018, 04:08:04 AM
New Longterm Plan:

Instead of setting up a list of weekly tasks to do, I am trying now with having 5 major tasks to be completed in a month. This way, if the tasks are much harder than I'm assuming, I won't feel bad if I don't complete them in a week. However, some tasks may take less than a week, and so it would be great to get them done. I'm planning, whether it is realistic or not, to have the first Beta in early January 2019. So, I have a series of complex tasks that need to be complete to feel that the game is ready for Beta status.

Month of December, Tasks:
1. Map Generation
2. Portals
3. Technique Overhaul
4. Expert Tutorial and Help Directory
5. Major Bughunt (bugs, typos, lacking logic)

===============
November Tasks, Still to Do (Will work on these as I have time and creative energy, but most likely will be postponed to January):

1) Lore Entries = Find special objects in the game world or complete certain tasks, to unlock lore entries.
2) Incentives to Delve Deeply = Provide a myriad of benefits to delving deeper and to keep encouraging the player to only stay on levels for a short time.
3) Create further ways to help players learn the game further.
4) Better overall endings that are not simply more time-consuming Objectives.
5) Primal Chaos Abilities = Unique abilities to make each Primal Chaos creature feel unique and dangerous.
6) AI Improvements and Pathfinding Overhaul = Make it so that enemies can pathfind intelligently towards the player without causing huge framerate drops, and know when it is a good time to use a Primal Chaos Ability.
7) Legendary Runes = Powerful effect granted either by a Milestone or an Artifact.
8) Artifact Lore = Unique lore for each of them
9) Milestones = A special series of important game events with significant rewards; completed over several playthroughs.
10) End-Story for Victory Conditions = Get a unique story for each victory condition, and the option to try for a new victory condition if you so desire.
11) Player Choice Impacts on Story = How does player choice affect the end-story results. Also, most roguelikes have a statistics breakdown and a "score" of how well that character did!

========

December Tasks:

1) Map Generation:
 A) Create recognizable clumps or structures to add to overall look and feel of maps.
 B) Retain levels until a player leaves the level (recall, ascend or descend) but not entering a side-level (ie a Portal).
 C) Lay the framework for side-levels.
 D) Add a greater variety of walls and floors.

2) Portals:
 A) Enter Horde/Primal Chaos Portals
 B) Close Portals
 C) Special Portals

3) Technique Overhaul:
 A) New Status Effects
 B) Refactor Technique Code
 C) New Unique Effects
 D) Technique Information in Technique Menus

4) Expert Tutorial and Help Directory:
 A) Create the Expert Tutorial
 B) Finish up Help Directory Topics
 C) Information Popups (ie Hover over an Item)

5) Bug Hunt and Catch Up Time:
 A) Try to finalize stuff so that I can have a Beta out in January. May not happen. Probably won't, but we shall see!

Title: Re: Chaotic Planar Prison
Post by: Hooman on March 14, 2018, 09:52:38 PM
Good to hear about the progress on your new project.

For the break issue, do you have a doubly nested loop? I so, the break will only exit the closest inner loop. If you need to break further out, sometimes return can be useful.
Title: Re: Chaotic Planar Prison
Post by: lordpalandus on March 15, 2018, 02:43:28 AM
Well, it turned out that the main menu, that appears at every game startup, doesn't deactivate after running the code. Thus, hitting escape, breaks the main event loop, but brings you back to the Main Menu, which is why you either have to hit c to quit or begin anew.

I added an additional break after the function call for playgame(), so that when the main event loop (playgame) is broken, then the main menu will also break, allowing the program to end.

I'll look into provide an actual pause menu later, but for now this is sufficient.
Title: Re: Chaotic Planar Prison
Post by: Vagabond on March 15, 2018, 12:12:09 PM
Glad to hear you are making some good progress. Will be interested to see where you go with the project.

I keep hearing good things about Python but have never used the language myself.

-Brett
Title: Re: Chaotic Planar Prison
Post by: lordpalandus on March 15, 2018, 02:21:43 PM
Well Python does have two unique features that I've not seen in other languages:

1. Instead of using { } to create blocks of code, you use tabs or 4 space indentations. You have to choose one of them and the other becomes a syntax error, if you accidentally put it in your code.

2. Python is both an interpreted and compiled language. It compiles any secondary file imports but interprets the primary file. It however does sound like you can compile the main file into a binary .exe file. (Or it compiles all files into a binary, unsure of that).

EDIT: After a ton of work, I figured out ways to address tasks #3 and #5, and thus they are either fully solved or temporarily solved now. A few more things to do on the task list, before I can update it with new tasks.

EDIT2: After a lot of frustration and confusion, I have working mouse support for menus. I had to add a variety of additional code to the program, that the tutorial didn't mention to get it to work, that feels like code duplication, but oh well. I don't fully understand why it works right now, but it works fully, so I'll just figure out why it works later, when I go to create my own menus / redesign the current ones.
Title: Re: Chaotic Planar Prison - Prototype V2
Post by: lordpalandus on March 17, 2018, 07:09:32 PM
Released V2 of the Prototype, a day early. Created a Changelog that lists all of the things I accomplished this week, and have updated the Readme with new controls and other notes.
Title: Re: Chaotic Planar Prison - Prototype V2
Post by: Hooman on March 18, 2018, 05:21:22 AM
Hey, based on the zip file, it seems like you're programming this one straight from a simple text editor, rather than using any kind of code generating interface. Is that correct?

Have you thought about hosting the source code on GitHub? I can give you a quick intro if you want to do a pair programming session.

Title: Re: Chaotic Planar Prison - Prototype V2
Post by: lordpalandus on March 18, 2018, 12:27:41 PM
Yes I am coding it straight from Notepad++ at the moment. Though I might choose an IDE later once I start running into logic or runtime errors that I cannot solve.

I wasn't planning on putting up the source on github. As I intend to market this one, it will be closed source, and just because right now I'm distributing the source files doesn't mean I want to do that permanently. Over time, I intend to break up the codebase into separate files, and then I'll be distributing them as compiled pyc files or as a binary and dlls. I might include some files in an uncompiled state for modding purposes, but the current situation of the source being able to be looked through is temporary.

Thanks for the offer, but I'll pass.
Title: Re: Chaotic Planar Prison - Prototype V2
Post by: Hooman on March 18, 2018, 11:43:05 PM
Notepad++ is great. For a language like Python, you could do just fine using only that. I mostly stopped caring about having an IDE when I started using Notepad++ for Ruby work.


I can understand the concern about not wanting to put up source code for a commercial project. Very few people put up the code for something they are charging for.

I suppose you can always use one of the GitHub alternatives that allows for free private Git repositories:
GitLab (https://gitlab.com/)
Bitbucket (https://bitbucket.org/)




On a related note, here's some food for thought:
Gratis versus Libre (https://en.wikipedia.org/wiki/Gratis_versus_libre)

Cost, source code access, and even redistribution rights are rather independent concepts. All independently under the control of the original author. At least as far as legal protections go. There's still the issue of piracy though, which is possibly the major reason why much commercial software is closed source.
Title: Re: Chaotic Planar Prison - Prototype V2
Post by: leeor_net on March 19, 2018, 09:40:43 PM
Should still consider a repository. Working the way you are now in your own directory not mirrored anywhere is a recipe for disaster (believe me, I've been there).

I would suggest GitLab only because I've worked with it. You can use private repositories at no cost which will allow you to take advantage of a repository without also having to open your source. Additionally, you can provide access to individuals if you're looking for assistance with some part of your code, etc.

Just food for thought. I've been the victim of years of lost work due to a hard drive crash. It sucks. Like, it really sucks.
Title: Re: Chaotic Planar Prison - Prototype V2
Post by: lordpalandus on March 20, 2018, 01:42:20 PM
Alright, I'll look into a repository of some kind for the code, incase of a hard-drive failure some such catastrophe.
Title: Re: Chaotic Planar Prison - Prototype V2
Post by: Vagabond on March 21, 2018, 02:00:16 PM
lordpalandus,

If you are working hard on learning Python and do not feel like expending the energy to learn a repository right now, I would recommend once a week zipping the project and saving it to a cloud service to prevent what happened to leeor. This is what I used to do before I learned Mercurial. I would save it to Amazon cloud which had enough space available at the free tier that I never paid for it. I would just zip the entire project every Sunday night. This way if my 2 year old decided to dunk my laptop in the bathtub or something at most I'd only lose a week of work.

If you ever want to work with others, I would highly recommend learning a repository 'language' though. I'd look at Git first as it is very popular and powerful. I learned Mercurial first, but it is a lot more obsure, although I collaborate with people in both Git and Mercurial on a somewhat regular basis.

I currently use Bitbucket to host my private code and it works great. Up to 5 people allowed in a private repository and it allows either Git or Mercurial as the revision control choice. No expereience with GitLab to compare though.

There are other benefits to a repository over just zipping your code and sending it to the cloud though. I find it really helpful that I can traverse the history of my project. It is nice to feel free to delete any code I want and still be able to review it. It can also help to list new features between versions by reviewing commit messages. I also like that I can review my code online without being at my house through BitBucket if I ever want to.

-Brett
Title: Re: Chaotic Planar Prison - Prototype V2
Post by: Hooman on March 23, 2018, 03:58:33 AM
Yes, the version history is wonderful. I find it also adds a psychological boost for making progress. When you can look back and see all the changes you've made, it's helps you keep going. There have also been studies that show a relationship between programmer happiness and version control commit frequency.

The automated remote backup also just kind of nicely comes along with version control. In the case of Git, it's a full history backup for each clone of the repository. For SVN, a working copy only contains the checked out revision, not the full history. It takes a dedicated clone to copy the full history. Relevant, since the OPU SVN repository was migrated about 1-2 months before a hard drive failure, so that was kind of a close call.  ;D


Vagabond is right though, in that you don't want not yet understanding Git to stop your progress. Schedule time to learn it, but don't worry about using it until you're ready and want to. I think we made a mistake before of trying to force Git before people had really learned it. The sudden switch was quickly followed by a serious lack of momentum on any OPU projects. Due to maintenance issues with the self hosted Git repository, we eventually switched back to the old SVN, and only recently started moving to Git again. I'm glad now, though it's easy to forget how much effort it took to learn Git.
Title: Re: Chaotic Planar Prison - Prototype V2
Post by: lordpalandus on March 23, 2018, 03:29:13 PM
@Vagabond; Good suggestion on a temporary solution. I'll likely use my Mediafire account to hold versions, until I can look into an online repository. If I get to the point of having a team, then yes learning something like Git would be essential to good teamwork. However, for now, as I'm the only one working on the code, a simple cloud service will suffice.

@Hooman; Yep, version history is great for that. And with a small enough list of changes, it isn't a chore to sift through them, like it was with CoC updates. I'll likely take the time to learn Git or some SVN later.

Right now, I'm in the process of planning a major code refactor/complete overhaul, and thus I'm busy learning Python, learning how the code interacts with eachother and figuring out how to break the code up into modules in separate files while not having massive amounts of code duplication or logic errors by committing to the code overhaul. Basically, the tutorial is designed for single file, with no moddability, and everything is heavily coupled with eachother. In order for me to make the code modular, and thus easier to read, understand, and add new code to (without creating further spaggetti code), I need to modify the class inheritance and class composition to allow for code modularity, which is going to be quite a bit of work. I'm planning on starting to work on the code refactor next week, and focus on the remaining tasks on this task list, this week. Likely I'll do the refactor in phases; replace one large block of code with a modular code in a separate file and then ensure that there are no new problems introduced by doing it in this fashion. Which also means, that in order to not get bogged down with too much work, the task list will be smaller to compensate. Just giving a heads up now, for my plans with the code and why I have no intention right now to learn Git as I'm simply too busy.

EDIT: As I have had some frustrations with the code this week and I've had to reset the code back to an earlier build to make it runnable again. I'm hoping to knock off a few more things off the task list, before I release the next build today (Sunday, 25th).
Title: Re: Chaotic Planar Prison - Prototype V3
Post by: lordpalandus on March 25, 2018, 05:16:22 PM
Prototype V3 has been now released.

Added a few new systems, addressed some bugs, and the Runestone/Regular Portal are partially functional.

Overall gameplay has significantly improved, with the addition of the A-Star (A*) Pathfinding and should feel quite a bit more challenging.
Title: Re: Chaotic Planar Prison - Prototype V3
Post by: Hooman on March 28, 2018, 06:23:41 AM
Hey, I was just taking a peek at your code, seeing if their are any suggestions I could make.

One possibility is to use enums (https://docs.python.org/3/library/enum.html) instead of string values when the value is meant for machine processing (if statements), rather than user display. It seems enums were added a bit late to Python, so I'm kind of wondering what standard practice is. In other languages, things like 'cancelled', or 'took turn' would typically be represented by an enum, which is just a named constant. This generally protects against typos. If you had returned 'canceled' in one part of the code, it would still compile and run, but not meet if-tests in the expected way, leading to bugs. A named constant must be previously defined, so if there is a typo, it is generally caught during a parse/compile stage and flagged as an error.

FYI: In hindsight, I just realized there is even a bit of controversy here: Canceled vs. Cancelled? (http://grammarist.com/spelling/cancel/)

Now that you've got me thinking about it, I generally try to avoid inflecting words in code. I probably would have chosen 'cancel' for that context.


If you wish to avoid using new Python features, there are other ways to restructure the code that might avoid having to use strings.
Title: Re: Chaotic Planar Prison - Prototype V3
Post by: lordpalandus on March 28, 2018, 12:08:06 PM
Not sure if enumerators are in Python v2.7; might only be in Python 3+. Can check though while I'm doing the Python 2.7 tutorial though.

If I could, I likely would use enumerators, as I found out that I have to explicitly add a temporary value with the stored returned value in order for it to do if-elif statements. So as an example:

Code: [Select]
if 'took turn': 
 for object in objects:
  object.clear()
 return 'took turn'
elif 'cancelled':
 return 'didnt-take-turn'

Even if the program returned 'cancelled', it would always execute the 'took turn' branch. When I stored the returned value in a temporary variable, then it would properly choose the correct branch. So, as I have to use a temporary value anyway, if I could get rid of the temporary variable and the string, and replace it with an enumerator, that would clean up the code quite well.

I will be doing a code clean up, when I redesign and refactor the codebase, but for now, the temporary variable is a sufficient, temporary solution. However, if I can use enumerators, I'll happily change things to it, so that I can test out the enumerators beforehand.



EDIT (leeor_net): added code tag
Title: Re: Chaotic Planar Prison - Prototype V3
Post by: leeor_net on March 28, 2018, 11:10:59 PM

... as I found out that I have to explicitly add a temporary value with the stored returned value in order for it to do if-elif statements. So as an example:

Code: [Select]
if 'took turn': 
 for object in objects:
  object.clear()           
 return 'took turn'
elif 'cancelled':
 return 'didnt-take-turn'

...

Consider revising what you're stating here as I don't follow. This is nonsensical as I'm understanding it... at least from the point of view of someone coming from a background and experience with PHP, C++ and BASIC. Python isn't my favoriate language and it does a lot of weird things but it is still a language that's supposed to make sense... would like to be able to help you out with potential improvements to structured programming.

Also note that depending on how your calling code is formed this could very easily result in an infinite loop in the case of 'took turn'.

Unrelated note -- You can surround your code with [ code ] [ /code ] tags or select your code and click the button with the '#' symbol in it. Makes posting code a lot easier and more readable.
Title: Re: Chaotic Planar Prison - Prototype V3
Post by: lordpalandus on March 29, 2018, 12:00:32 AM
That is a snippet of code related to the shoot_arrow() function call, without the temporary variable. With it would look like:

Code: [Select]
temp = shoot_arrow()
   if temp == 'took turn':
       for object in objects:
           object.clear()
       return 'took turn'
   elif temp == 'cancelled':
       return 'didnt-take-turn'

The shoot_arrow() function if it hits a valid target returns 'took turn'. If you cancel or shot the floor, it returns 'didnt-take-turn'.

Now, in the main event loop there is this chunk of code:
Code: [Select]
if game_state == 'playing' and player_action != 'didnt-take-turn':
   for object in objects:
       if object.ai:
           object.ai.take_turn()
         

If the player doesn't take a valid turn, the enemies do not get to act. Otherwise the game is constantly looping, without end. Whenever your action returns a string that is anything but 'didnt-take-turn', enemies get to act; otherwise they don't. If you remove the 'didnt-take-turn' from the chunk in the main event loop, the enemies would act nonstop with nothing preventing their actions. Effectively, that can turn the game from a turn-based game to a fully real-time game.

I don't personally like this solution, but it is how the developer of the tutorial did it so, I've left it alone. When I do the code refactor, I'm going to have to modify the main event loop a fair bit, so I'll likely change this then as well.

Probably should have mentioned the main event loop portion when talking about the returning of strings before. Sorry about that.
Title: Re: Chaotic Planar Prison - Prototype V3
Post by: Hooman on March 29, 2018, 09:38:17 AM
As an aside, on my install of Linux, the default version of Python is 2.7.

I just tested the enum example code from the first section of the docs, and it all works. I've also read the Enum stuff was backported to earlier versions of Python. Looks like you should be fine to use it.



As for your code, it's doing something interesting that you might not be aware of. Python (and other languages, such as Ruby) have both Boolean values (True and False) as well as Boolean-like values (Truthy/Falsy). Conditional tests extend the concept of True/False to cover non-Boolean values under corresponding Truthy/Falsy classifications. This allows for shorter code to check certain common conditions, though may be a little unexpected if you haven't seen it before. It allows testing for things such as 0/1 (Integers), empty/non-empty strings, and empty/non-empty lists.

For instance, you can check if a string is empty using either of the following:
Code: [Select]
if len(string) == 0:
  ...

Code: [Select]
if string:
  ...

As your string is a hardcoded constant, and of non-zero length, it has a Truthy value, and so the if block if always executed. What you wrote is roughly equivalent to:

Code: [Select]
if True:
  ...

StackOverflow has more discussion on Truthy/Falsy in Python (https://stackoverflow.com/questions/39983695/what-is-truthy-and-falsy-in-python-how-is-it-different-from-true-and-false), including a more complete list of Truthy/Falsy values.
Title: Re: Chaotic Planar Prison - Prototype V3
Post by: lordpalandus on March 29, 2018, 11:37:17 AM
Interesting. That would explain some of the other sections of the code as well. Such as:

Code: [Select]
while True:
...

Where the while loop is only terminated when you reach a Return statement. Otherwise it loops permanently. Generally I've only seen C++ or JavaScript loops where there is a specific Boolean condition attached to the loop. ie:

Code: [Select]
while (x > 0 and x < 10): 
...

Thanks for giving a link on Truthy/Falsy!
Title: Re: Chaotic Planar Prison - Prototype V4
Post by: lordpalandus on March 31, 2018, 06:00:56 PM
Prototype V4 is now released.

New Stuff: Mouse highlighting of square underneath cursor, fixes a variety of errors, implemented attributes and attribute training, increased the difficulty of the enemies (will look into improving challenge in the future), you now respawn at the last attuned runestone when you die (will look into creating the stress-based permadeath this week), and added a new item satchel, which stores all your scrolls and potions, reducing the clutter of your inventory.

Enjoy!
Title: Re: Chaotic Planar Prison - Prototype V4
Post by: Hooman on April 06, 2018, 04:18:18 AM
Making a second attempt at getting this to run on Linux. Compiling a copy of libtcod on Linux now. Just realized the libtcod repository uses Mercurial. That's probably why my attempts to download the source with Git failed last time. :P


Minor thing I noticed while scrolling through the source file. You seem to have a lot of mixed tabs/spaces, and trailing tabs/spaces at the end of lines. I have "show whitespace" enabled in my editor, so it's easy for me to see. If you find that option in Notepad++ and turn it on, you'll see it too.

If you want a quick way to remove trailing tabs and spaces, you can use the find/replace box. Search for whitespace followed by an end-of-line, and replace with nothing. I believe the regular expression for that search is "\s+$", without the quotes. The "\s" will find whitespace (tabs/spaces), the "+" finds 1 or more occurrences of the previous. The "$" should find the end of line. See Notepad++ Regular Expressions (http://docs.notepad-plus-plus.org/index.php/Regular_Expressions) if you want to check the docs.

There's also some info on StackOverfow about Trimming Trailing Whitespace with Notepad++ (https://superuser.com/questions/699382/how-do-i-automatically-trim-trailing-whitespace-with-notepad).

To replace tabs with spaces, you can search for "\t" (the tab character), and replace it with the appropriate number of spaces in the replace box.

Quick and easy way to tidy up source code.  :D
Title: Re: Chaotic Planar Prison - Prototype V4
Post by: lordpalandus on April 06, 2018, 10:48:38 AM
Few questions:

1) Why does it matter if I have a bunch of white spaces?

2) Doesn't the compiler/interpreter skip over them, much like they ignore comments?

3) I do intend to completely rebuild the codebase, with all my listed design requirements, at a later date (probably before the game reaches beta state), so why put all the effort into addressing white space/extra tabs with throwaway code?
Title: Re: Chaotic Planar Prison - Prototype V4
Post by: leeor_net on April 06, 2018, 11:35:05 AM
Few questions:

1) Why does it matter if I have a bunch of white spaces?

It's not that you have a bunch of white spaces, it's about consistency in which type of tabbing you use. I prefer tabs, many developers prefer spaces. In either case, choose one method of tabbing and stick with it.

2) Doesn't the compiler/interpreter skip over them, much like they ignore comments?

Yes, but white space isn't for the compiler, it's for the humans reading the code. And in the case of Python it's actually how you specify blocks of code.

3) I do intend to completely rebuild the codebase, with all my listed design requirements, at a later date (probably before the game reaches beta state), so why put all the effort into addressing white space/extra tabs with throwaway code?

Fair point. However in this case it's a matter of setting best practices and getting you used to doing the same thing to keep things consistent. If ultimately you're just going to throw it away who cares but it does make sense to pick a style and stick with it.
Title: Re: Chaotic Planar Prison - Prototype V4
Post by: lordpalandus on April 06, 2018, 11:23:05 PM
The code is written with 4 spaces, and is consistent throughout. Anytime I accidentally place a tab, it causes a syntax error.

There may be tabs in the blank white spaces or tabs in the #comments, but that isn't intentional on my part; they are added in by Notepad++. For the redesign, I intend to go for tabs, as I prefer tabs.

Well, for me, the code is perfectly readable, for me, as it currently stands. And as I'm the only one adding / modifying the prototyped code, as long as I can read it, it should be fine. I do want to have a more consistent and pleasant reading when I redesign the code, as I'll want the code to be moddable or even just easy for me to add things to the code. I am however, aware that some of my duct-tape code is starting to cause the prototype code to look like spaggetti code, and that is regrettable. Unfortunately, due to the way the tutorial made the roguelike code, everything is coupled with eachother and often information needs to be explicitly placed more than once in some places to make it work properly. Not an ideal solution, but it doesn't really matter at the moment as its just throwaway code.

I do intend to go with a consistent style, but my style isn't how the tutorial code was made, and thus I have to work with what I got for the time being, thus in several places it will have conflicting styles in the current codebase. I intend to have a consistent naming scheme (ie for functions, variables, classes, etc), comment methodology, and code structure philosophy in the redesigned code.

Title: Re: Chaotic Planar Prison - Prototype V4
Post by: Hooman on April 08, 2018, 01:42:26 AM
Leeor nailed it, in that it's an issue for people, not the compiler. It's one of those intangible things, likely badly indented C++ code. The compiler doesn't care, but it can make working on the file awkward.

Quote
3) I do intend to completely rebuild the codebase, with all my listed design requirements, at a later date (probably before the game reaches beta state), so why put all the effort into addressing white space/extra tabs with throwaway code?

The cost of a complete rewrite is high. In practice it rarely happens. People are more likely to give up on a project than perform a complete rewrite.

Quote
The code is written with 4 spaces, and is consistent throughout. Anytime I accidentally place a tab, it causes a syntax error.

There may be tabs in the blank white spaces or tabs in the #comments ...

Exactly. It's not consistent. Since indentation is part of the Python grammar, it will warn you, but only for code lines. Your comment lines and blank/spacer lines often start with tabs.

As for how this happens, typically it's when you try to backspace a seemingly empty line when the cursor is in the first column, yet the line already contains whitespace for indentation which can't be seen:

Code: [Select]
if True:
    operation()
|(<-blinking cursor)(whitespace)
    operation2()

Backspace:
Code: [Select]
if True:
    operation()|(<-blinking cursor)(whitespace)
    operation2()

This affects further editing. If you try to edit the end of that line, the cursor might now go to the end of the whitespace, rather than the last visible character. This can slow down editing as you now have to navigate that whitespace. It also makes it harder to plan ahead what keys to press if you can't see or predict where the cursor will go, which leads to more mistakes, revisions, and a higher mental load when you're already trying to remember multiple lines you have to edit.

This can also lead to messy diffs when version control is used. Instead of just changes to functional code, the diff might now show whitespace changes, making them harder to read and review. Worse, some editors, such as Atom (using default settings) will attempt to automatically "fix" these whitespace issues. Someone might try to make a one line edit, only to find the diff now contains changes throughout the entire file. The actual functional change gets lost in the noise of whitespace changes.


Finally, the find/replace all edit I suggested is an automated way to fix it all at once, and should take all of 10 seconds.  ;)

Though I do encourage you to play around with the find/replace box for a couple minutes to explore and fully understand what is happening and how it works.
Title: Re: Chaotic Planar Prison - Prototype V4
Post by: lordpalandus on April 08, 2018, 01:54:34 AM
It is true a complete rewrite is expensive to do. However, it can also be argued that fighting with code that is meant to be a prototype and not final code, and constantly bug fixing esoteric errors, can be even costlier.

However, I think that designing good code, from the start, takes practice. If you design good code from the start, and maintain that good code, then you don't have to do rewrites and you don't have to excessively bug hunt. I'm not quite at the stage where I can design code properly the first time, otherwise I would. I have to work with the skills and knowledge I know and work from there.

As far as the rewrite goes, I intend to do it in phases; rebuild one section of the code at a time, and build it into the current prototyped code. Then, continue to work at modularizing the code, and eventually have no prototype code left, as I've replaced it all. Basically, use the working prototype code as a "driver" to ensure my new, final code, has no immediately obvious bugs, and continue to replace prototype code with final code, until I have only final code left.

Actually Notepad++ adds those tabs whenever I hit Enter at the end of a line, thus ensuring that every time I try to do a line of code, I have to remember to delete those added tabs. Hence, why I want to switch over to purely tabs.

EDIT: As for this week's build, it will be a bit sparse on changes. I have gotten through more of the tutorial and fixed a couple little bugs I couldn't address before, as I had no idea how to implement them. I'll see what I can muster between now and tomorrow, to address the things on the list.
Title: Re: Chaotic Planar Prison - Prototype V4
Post by: Hooman on April 08, 2018, 02:08:16 AM
What you're describing is code refactoring. Definitely a very important skill. Refactoring is lower cost than a complete rewrite, particularly from a psychological standpoint, and precisely because it's done in stages. You should always have working code, and so you can keep using, and extending the code, even with further cleanup coming. It also nicely addresses the issue of not having a perfect design the first time, and the importance of just starting, and fixing things along the way.

To do refactoring cleanly, code quality issues such as whitespace matter even more. Whitespace issues can add a lot of noise to the refactoring process. Hence, it is typically taken care of up front, in an automated way, and in its own commit. Functional changes would then follow in subsequent commits.


Edit: Notepad++ can be configured to use either tabs or spaces for the indent, as well as the indent width (4 spaces, 2 spaces, etc.). I believe it can be configured either globally, or per language.
Title: Re: Chaotic Planar Prison - Prototype V4
Post by: lordpalandus on April 08, 2018, 05:26:47 PM
Hmm. Okay. I figured that as I intend to replace all of the existing code with new and modular code, that would be considered a full rewrite... its just that I'm doing the full rewrite in stages, to have working code to test out the new code to ensure that no new bugs are created with the new code.

Also good to know on the Notepad++ indenting. I'll look into it.

---

As for today's release, I have a few more things I'd like to try to implement, and once that is done, I'll release Prototype v5.
Title: Re: Chaotic Planar Prison - Prototype V5
Post by: lordpalandus on April 08, 2018, 07:00:35 PM
Prototype V5 has now been released.

I had a rough week, with several days of extreme mental exhaustion, and my osteoarthritis in my knees acted up this week, so I had a bad limp and a lot of unavoidable pain. So I didn't accomplish as much as I had hoped to this week, but this release still has a few interesting features. These are:

- Three new rare item types = Amulet of Energy (+25 Energy and 1 Energy Rejuvenation per turn), Elixirs of Attribute (+3 to a specific attribute), and Manuals of Attribute (provides 750 + 3*number of Manuals read before XP training for that attribute and each one read increases XP gained whenever you perform an activity).

- The first Primal Chaos creature is now in; the Primal Chaos Orc. It is capitalized and bright red. Also, activated the Chaos Portal, that will spawn these nasty critters too.

- The first Ranged combatant is now in; the Goblin/Orc Archers. They are bright yellow and will attack you at a range. They will also flee from you if you get too close. The AI is a bit stupid, and thus they don't pathfind easily around objects. They have half HP and half damage as a melee attacker of the same name (ie goblin)

- When you die and respawn, you will properly lose your entire inventory, forcing you to have a fresh start at life, at least in terms of equipment.

- Made some changes with items and item generation. Items now have a material tier (ie fine cloak or ironite coif) and you can see this by hovering the mouse over the item. Also, better equipment will only drop in later levels now, rather than at the very first level.

Hope you guys enjoy, and I hope I have a better week, next week!
Title: Re: Chaotic Planar Prison - Prototype V5
Post by: Vagabond on April 09, 2018, 02:26:46 PM
Sorry to hear about your knees acting up. Knee problems are pretty miserable to deal with.

I haven't tried Chaotic Planer Prison yet, but it sounds like you are making a lot of progress.

-Brett
Title: Re: Chaotic Planar Prison - Prototype V5
Post by: Hooman on April 10, 2018, 04:40:07 AM
I haven't managed to try it yet either, though mostly because I haven't gotten it working on Linux yet. Seems like the libtcod library author doesn't directly support Linux, instead deferring that to the community to support. I tried downloading the library source, compiling it, and installing it, though the game and any library sample code fails to find the library.

Seems like it should be an easy configuration fix, though I have yet to figure it out. Maybe some combination of PATH and PYTHONPATH will work.
Title: Re: Chaotic Planar Prison - Prototype V5
Post by: lordpalandus on April 12, 2018, 01:48:35 AM
No worries. It might be best that people passed on the earlier builds.

However, the newest build, is proceeding quite smoothly and have implemented a variety of desired features, that were on the backburner, into the game now. Such as:

You can now simply click on a target with the mouse to attack it with a ranged-based attack. LMB to shoot an arrow and RMB to zap them (new basic spell).
Title: Re: Chaotic Planar Prison - Prototype V6
Post by: lordpalandus on April 14, 2018, 04:52:28 PM
Released Prototype V6!

I was very productive this week, had only a slight limp from the osteoarthritis, and only had one day of mental exhaustion. The changes in this build are too numerous to list in a single post, so I suggest reading the Changelog and Readme file, that details the changes, particularly to the controls.

Enjoy!
Title: Re: Chaotic Planar Prison - Prototype V7
Post by: lordpalandus on April 21, 2018, 07:28:56 PM
Released Prototype V7!

Lots of new changes with this build, so definitely take a look at the changelog if you are interested, or read the first post, that highlights the biggest changes. Also, fixed I believe all of last week's bugs, for this build, including the flee code for mages/archers and melee related bugs.
Title: Re: Chaotic Planar Prison - Prototype V7
Post by: leeor_net on April 22, 2018, 06:40:18 AM
Ech, requires download and install of python interpreter. Yuck. :P

Should really make this a self contained package with everything that a user needs to run it without needing to download and install runtime environments.
Title: Re: Chaotic Planar Prison - Prototype V7
Post by: lordpalandus on April 22, 2018, 05:48:06 PM
I plan to. Eventually. I have higher priority stuff that needs doing first though.

I'll look into providing a Binary executable when I reach Alpha Status. At that point, the game will be more of a game, rather than a modified tutorial, and thus will be worth taking the time into looking at making it more new user friendly.
Title: Re: Chaotic Planar Prison - Prototype V7
Post by: leeor_net on April 22, 2018, 06:16:10 PM
Fair enough.
Title: Re: Chaotic Planar Prison - Prototype V7
Post by: Hooman on April 27, 2018, 11:35:02 AM
And as a counter point, I'm less fond of having the entire Python environment distributed with the game. I tend to trust binaries more from the official source. Plus it's a large amount of data to add to the zip file, and would do me no good on Linux, which btw, already includes a Python install by default (as many system scripts use Python).

Though yes, for final end users who just want to play a game, having a complete install package is very appealing. But that's more of a version 1.0 problem.


Good to hear you're still making progress!
Title: Re: Chaotic Planar Prison - Prototype V8
Post by: lordpalandus on April 28, 2018, 08:44:23 PM
That is definitely a fair and good point, Hooman! I would prefer the same as well, just haven't figured out how to do so yet, as it hasn't been a priority.

Also:

Released V8 of the Prototype. This was another very productive week and managed to get several features in that I've been puzzling over, for the past several weeks on how to implement; ie Area of Effect highlighting for the area that a spell will affect, as well as the Knockout system. Other big changes are: a huge overhaul of the UI, Primals are significantly tougher now, Damage types, Different effects from each Portal, and fixed quite a few bugs.

Enjoy!
Title: Re: Chaotic Planar Prison - Prototype V8
Post by: Hooman on April 29, 2018, 08:56:55 AM
I took another quick look through the code, seeing if there are any shortcuts you could take. I noticed this part:
Code: [Select]
    #This function advances the player to the next level. You will regain 50% of your maximum HP before entering the next area.

    global dungeon_level, Attuned_Status, Activation_Timer, Difficulty_Level, Monsters_Spawned
    message('You take a moment to rest, and recover your strength.', libtcod.light_violet)
    player.fighter.hp = player.fighter.hp + (player.fighter.max_hp / 2) 
    player.fighter.ep = player.fighter.ep + (player.fighter.max_ep / 2)

    if player.fighter.hp > player.fighter.max_hp and player.fighter.ep > player.fighter.max_ep: #both above maximums
        player.fighter.hp = player.fighter.max_hp
        player.fighter.ep = player.fighter.max_ep
    elif player.fighter.hp > player.fighter.max_hp: #only hp over maximum
        player.fighter.hp = player.fighter.max_hp
    elif player.fighter.ep > player.fighter.max_ep: #only ep over maximum
        player.fighter.ep = player.fighter.max_ep

Looks like you're doing some value clamping, a very necessary and common operation. Consider using two independent if statements to reduce redundancy:
Code: [Select]
    if player.fighter.hp > player.fighter.max_hp:
        player.fighter.hp = player.fighter.max_hp
    if player.fighter.ep > player.fighter.max_ep:
        player.fighter.ep = player.fighter.max_ep

Another place you can remove some redundancy, is the section above that adds half the max value. Consider using += when you want to add to a value, so you can avoid having to write the same variable twice:
Code: [Select]
    player.fighter.hp += (player.fighter.max_hp / 2)  
    player.fighter.ep += (player.fighter.max_ep / 2)
Title: Re: Chaotic Planar Prison - Alpha V1
Post by: lordpalandus on May 05, 2018, 03:53:12 PM
Thanks for the suggestion Hooman. I also implemented that fix now in a few other spots in the code where I used similar code snippets.

EDIT: Released Alpha V1. Enjoy!
Title: Re: Chaotic Planar Prison - Alpha V1
Post by: Hooman on May 09, 2018, 08:00:11 PM
Hmm, just noticed this is now Alpha. Is there a particular milestone you've hit?


I'm curious, is there any specific area of the code you have working, but might want to improve? Maybe shorten things up. Maybe make it more flexible or easier to edit, maintain, or extend.
Title: Re: Chaotic Planar Prison - Alpha V1
Post by: lordpalandus on May 09, 2018, 09:11:42 PM
Yes? Over the past 4 weeks I've been working on a 30 point list on the very first post of this thread, and finally managed to complete the last few points in the Proto9 / Alpha 1 build (whichever you prefer). Now, I have a 40 something point list of things I need to complete for the game to be considered "beta" on the first post of this thread.

Yes, and that applies to 90% of the codebase. Over the next few weeks, I intend to modularize the code into several specific files (ie Everything Player Character, All Global Stuff, etc), sort out the code so that everything for a particular thing is found in the same spot (ie Level up Code), work on reducing redundancy on several functions that are essentially duplicated, and could be all combined into a single function, improving code documentation with a consistent theme for comments and the inclusion of doc strings where applicable, and I am working on using a consistent theme for naming things (ie, my globally accessible variables will now be in all capitals to help me in noticing them)

EDIT: I've tried to do some of the modularization in Alpha V2, but with little success. Much of the codebase is heavily coupled with eachother, and even moving a class or function to another file causes the code to bork. So, a lot of the code is going to need to be heavily redesigned to accommodate multiple file modularization. Alpha V2 will contain the start of the modularization, with the GLOBALS module (contains all of the global variables and lists used by the game, all neatly sorted and almost all documented)
Title: Re: Chaotic Planar Prison - Alpha V2
Post by: lordpalandus on May 12, 2018, 05:17:55 PM
Alpha V2 is released.

Due to having spent most of the week repairing the codebase, at my three separate attempts at performing a major refactor of the code and to start off the code modularization process, I didn't accomplish most of my task list. I did accomplish a lot of under-the-hood stuff, and figured out why those attempts at refactoring the code base failed, but the overall new content in this release is slim; three new Rare items are now available to be found (Rune of Recall, Rune of Mapping, and Holy Hand Grenade).

I'm now quite exhausted, so I'm going to go lie down. I intend to stay focused for next week, and make sure to complete my tasks before trying any other drastic code-base changes.
Title: Re: Chaotic Planar Prison - Alpha V2
Post by: Hooman on May 13, 2018, 02:27:28 PM
Quote
Holy Hand Grenade
Excellent  :D

Sounds like you've got a pretty good plan.
Title: Re: Chaotic Planar Prison - Alpha V2
Post by: lordpalandus on May 15, 2018, 11:34:12 PM
Yep.

Question (to anyone who reads this): Is there any particular reasons why there isn't any current interest to this game, in terms of feedback or replies to this thread? Is it because of compiling issues, or is it not enjoyable, or is it boring, or something else?

I ask because there is very few replies to this post, other than Hooman, and occasionally leeor_net, but yet some weeks downloads are only 1, and other weeks they are close to 10. For those weeks when there are few downloads, it would be useful to know why no one touched it; and on the other hand, when there are a lot of downloads, are people having any feedback for it?
Title: Re: Chaotic Planar Prison - Alpha V2
Post by: Hooman on May 16, 2018, 01:34:25 AM
For me it's compiling issues. Hence why most of my comments are about the source code.

With your other project, it was hosted on the web, so very easy to try out.
Title: Re: Chaotic Planar Prison - Alpha V2
Post by: Vagabond on May 17, 2018, 01:35:15 AM
I'm generally interested in the game but am waiting for you to progress further as it is still very early in development. If you have specific need for testing, I would be happy to help.

-Brett
Title: Re: Chaotic Planar Prison - Alpha V2
Post by: lordpalandus on May 17, 2018, 10:42:31 AM
Alright.

Then, I'll see about trying to prioritize learning how to build a binary, and look into determining when I desperately need playtesting; likely mid-alpha, perhaps?

Thanks for the feedback.
Title: Re: Chaotic Planar Prison (Game Renamed) - Alpha V3
Post by: lordpalandus on May 20, 2018, 04:47:08 PM
Alpha V3 is released! New changes are = Separate technique menus (Shift Z, Shift M, Shift T), Disintegration now works, Two new Utility spells, Did a lot of work under the hood, rebranded the game as Cataclysm of Chaos, A lot of interface improvements, Heavily modified game balancing, Fixed a bunch of bugs, Added Resource Nodes and On the Move Crafting, Monster Updating is now active, Primal Updating is now active, implemented random monster names, and you now spawn randomly in the map rather than in a corner. Most of the stuff on my weekly task list turned out to be far more complicated than I originally thought and thus only a few things actually got solved.

If I can figure out how to use PyInstaller in a timely manner, then I'll release the binaries for Alpha 3.

===========================

EDIT: PyInstaller isn't working or I didn't install it properly. Either way, it is going to take me a while to figure out what is going wrong, so unfortunately, it doesn't look like I'll be able to bundle binaries with this release, but I'll try to have it in for Alpha V4.

EDIT2: For some reason my OS is not recognizing my Python 2.7 install. Pip, a program used to install Python modules, couldn't detect it, yet it is installed on my C:/. I also tried another program, py2exe to try and make an executable, but it failed to work because the command-prompt keyword/command python isn't recognized. So... I think I'm going to have to figure out how to fix my python install or something. Regardless, I doubt I'm going to figure it out anytime soon, so no binaries for Alpha V3. Sorry.

EDIT3: It is unlikely that I'll have binaries for next release either. I've tried several fixes online to try and get the system to recognize the Python2.7 install, but none of them have worked. I tried adding it to the environment variables into Path, but cmd.exe still doesn't find python; if I go manually to C:\python27, it will load up Python properly. I tried to add it to the registry and that didn't work. I'm at wits end, so until I figure out how to either register python27 or how to get the OS to accept the path to the python interpreter, the creation of a binary is not available.
Title: Re: Chaotic Planar Prison (Game Renamed) - Alpha V3
Post by: Hooman on May 21, 2018, 04:05:44 AM
Perhaps you already know, but just in case, if you update environment variables through a settings GUI, you generally have to restart any open command prompts for the new settings to take effect.


I'm curious about the cross platform build potential, and what steps I might do to replicate your efforts. I assume this program is to package Python code with a Python interpreter. That might not be quite enough though, since the code relies on the libtcod native extension. That's not quite so easy to package or build cross platform. The packager might not be smart enough to account for this dependency, or might need extra configuration to account for it.
Title: Re: Chaotic Planar Prison (Game Renamed) - Alpha V3
Post by: lordpalandus on May 21, 2018, 11:42:35 AM
Well, apparently reinstalling python 2.7, and making sure that the checkbox for installing in Path, was checked, now properly allows me to use the command python in cmd.exe, without getting an error. Haven't tried the other stuff like pyinstaller yet though.

Actually, I did restart it, before reinstalling python 2.7, and it didn't work. Only by reinstalling python 2.7, did it work. Maybe it required both a proper registering in regedit AND assignment to path to get it to work.

----

Well, pyinstaller is more advanced than py2exe, and thus I'd probably go with it. It is robust enough to detect other libraries, by scanning all of the import keywords and building the appropriate libraries into the executable OR having them as dlls. Py2exe should work as well, as the actual roguelike tutorial suggests it for making binaries. However, py2exe only works on windows and only makes windows binaries. Unfortunately, to get pyinstaller to create a binary for Linux / mac, you have to run pyinstaller on those systems; ie I can only build windows binaries as I only have access to a windows OS, so if someone wanted a Linux binary, I'd need access to a Linux to create it OR explain how the end user can create a binary on their machine.
Title: Re: Chaotic Planar Prison (Game Renamed) - Alpha V3
Post by: Hooman on May 22, 2018, 01:14:53 AM
I suppose that's good reason to document the process then, so people can help out with the other platforms. If you have good instructions for Windows, that can help people figure out how to do it on Linux or Mac. Once a solution is found, it might be possible to setup Docker to compile and package things for other platforms using virtual machines running on Windows.
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V3
Post by: lordpalandus on May 24, 2018, 12:42:18 AM
Good to know!

Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V3
Post by: lordpalandus on May 27, 2018, 02:59:00 PM
Alpha 4 is proceeding along smoothly, and will be released later today. I accomplished a lot this week, in terms of modularization and code refactoring, and still have a few more features to complete before I release Alpha V4. I'll update this post when I've released Alpha V4.

EDIT: Alpha 4 is now released! Got a lot done this week, but now I'm quite exhausted after doing about 3 days straight of heavy coding, refactoring, and designing, and I'm going to take a break now and recuperate. Next week will be focused on learning the interface, libtcodpy library console-modification commands, and look into implemented a lot of my ideas for improving the interface (I have a long list of ideas). Still haven't fully resolved my issues with PyInstaller or Py2exe, so no Binary this week yet.

Regardless, hope you all enjoy!
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V5
Post by: lordpalandus on June 02, 2018, 08:10:29 PM
Alpha V5 is released.

Biggest noticeable change is that I've managed to get pyinstaller to work, and I now have a compiled binary version available (for windows). I also have binary compiling instructions in the loose-files version, which is the one that is attached to the first post, in case anyone on Linux/mac wants to give it a go at trying to make the game run on their native OSs (I don't have access to Linux or mac machines).

I struggled this week, partly due to exhaustion and partly due to the interface code being a royal tool. I didn't get any of the interface related tasks done this week, but I better understand the problems with the interface, so at least that is a thing. However, I still accomplished a lot of gameplay related stuff this week and of course the aforementioned binary is now a thing, for future builds.
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V5
Post by: Vagabond on June 02, 2018, 10:10:45 PM
Lord Palandus,

I downloaded the new binary release and checked it out briefly. Is there a way to adjust the resolution to match my monitor? The text spills off the right and bottom of the screen making it tough to play.

Check out the screenshot for what I mean. This is from a Windows 10 1080P laptop for reference.

-Brett
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V5
Post by: lordpalandus on June 02, 2018, 11:09:34 PM
That is an odd occurrence.

I'm running a monitor with 1920x1080p myself, windows 8.1. Though mine is a desktop, which may make some kind of difference.

Does fullscreen mode do anything (ALT+ENTER) to alleviate the issue?
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V5
Post by: Hooman on June 03, 2018, 12:50:23 PM
Just a note, users DPI settings can affect display size.
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V5
Post by: Vagabond on June 03, 2018, 07:04:45 PM
Yeah, selecting full screen fixed it. After initially setting fullscreen, everything fit properly even after cycling out of fullscreen, or closing and reopening the app. So it is only a problem on the very first open of the app.

-Brett
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V5
Post by: lordpalandus on June 03, 2018, 09:34:20 PM
Good to know. I'll mention that in the Readme file to use Fullscreen at least once, to fix screen resolution issues.
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V6
Post by: lordpalandus on June 10, 2018, 03:34:22 PM
I'm hard at work with Alpha V6, and plan to have it out later today, with a fresh binary.

EDIT:

Alpha V6 is released, with an accompanying Binary for those that prefer it.
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V6
Post by: Hooman on June 11, 2018, 01:42:43 PM
Good to hear about the progress.

Would you consider posting any screenshots?


On another note, I should discuss Control-Driven Programming versus Data-Driven Programming with you. People generally start out with Control-Driven Programming, though I believe Data-Driven Programming would be very useful to you on this project. It would allow you to add new game items much quicker, rebalance things easier, and generally just focus more on the core gameplay, rather than spending time fighting with bugs, trying to express needlessly convoluted logic to the computer, or editing/maintaining old code as you add new features.

I haven't really found a good explanatory article on it though.
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V6
Post by: lordpalandus on June 11, 2018, 04:11:26 PM
I can look into providing some screenshots, for sure.

What is the major differences between the two coding approaches?

I have been doing large refactors of various parts of the code, and as such, I may be inadvertently already using a Data-Driven Approach. As I'm self-taught, I'm not aware of nomenclature or computer programming jargon, and thus I may be doing things the right way, without knowing what is the right way.

EDIT: Don't have a lot of time today, but here are two screenshots. I'll look into providing more later. These are from starting up the game.

EDIT2: I'm in the process of fixing some bugs, but I'm hoping to get a few more screenshots up!

EDIT3: Got the bugs fixed, and two new screenshots. The two new ones are from playing after about 30 minutes... I recently had died, as I got cocky and dived into the middle of 4 enemies that massacred me.
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V6
Post by: lordpalandus on June 14, 2018, 06:29:14 PM
Here are a few new screenshots, but with the latest Alpha V7 build, that will get released Saturday/Sunday. Some explanations:

Screen1 = On the Run Crafting Menu, with a new item, the Energy Shield.

Screen4 = Ranged Technique Menu, with all Techniques available. The Blue + is a Runic Fountain (for refilling Runic Elixirs) and the Red g is a Goblin Mage.

Screen5 = Melee Technique Menu, with all Techniques available. The Blue g is a Goblin Fighter (of some sort) and the White A is a Crystallized Archer, which is effectively a treasure chest.

Screen6 = Spell Technique Menu, will all Techniques available. The Blue # is a Metallic Scrap Pile and the Green # is an Organic Scrap pile. The other symbols on the map (ie X, ], [, /, etc) are items I decided in not taking with me.

Screen7 = A new major system in this next release is applying and taking advantage of Fear or Confuse. Some abilities apply these effects and others take advantage of them to brutal effect. If an ability takes advantage of one, it will provide an automatic critical and then remove the effect. You can also still naturally fear archers by getting too close or attacking mages to cause them to flee, and any abilities that take advantage of fear will take advantage of these situations. Also, the slightly blue [ and \ are magical items, that I didn't want (was playing as a Mage this run and the higher your melee protection the higher the energy cost of your spells).

Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V6
Post by: lordpalandus on June 16, 2018, 10:23:53 AM
Two New Screenshots.

Screen1 = The Runestone Menu; Has several new options available in Alpha7, such as Attribute Training, Resource Transmutation, and Increasing Global XP rates.
Screen2 = A battle between two Primal Chaos Mages (Purple M), at the Primal Chaos Portal (the black asterisk). Unfortunately for me, they drained too much XP and I lost a level and gained stress.

Would have posted more screenshots, but I found a hard-to-find crash bug and the game crashed. Managed to get to Floor 3 and to level 28, as an Archer.
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V7
Post by: lordpalandus on June 17, 2018, 01:45:01 PM
Alpha V7 is released. Main page has a Binary and an uncompiled version as usual. This Alpha I accomplished the most in, and is the longest changelog to date. I've listed the major highlights on the first post's page.
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V7
Post by: Vagabond on June 18, 2018, 12:00:17 PM
Lordpalandus,

I've been impressed by the steady progress you have been making. Keep up the good work!

-Brett
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V7
Post by: lordpalandus on June 18, 2018, 06:09:14 PM
Thank you.

My "plan" for this week is to now address challenge, AI, and user interface related issues. As most of the progression systems are in, it can lead to a feeling of being able to steamroll your foes with ease, especially if you get lucky and get a few Rares or an Epic at the start of the game.
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V7
Post by: Hooman on June 19, 2018, 09:57:41 PM
Huh, this looks much further along than I expected. Looks to be in a decently playable state.

I assume you mean "Rune crafting"?



As for my earlier comment, I noticed you have long sections of control flow code that basically define data. Think of areas of the code that appear to be copy/pasted with a few values updated. This could be cascaded if blocks, switch statements, or a series of similar functions. This would be an example of Control-Driven Programming, as all the data is embedded in coded control structures.

Data-Driven Programming would be more like having a big array of objects, which may be searched or indexed. Changing data is just changing entries in an array. The data could be a hardcoded array in the source file, or perhaps included as a secondary source file separate from the game logic. It could also be loaded from disk as a data file.

If you want to move towards Data-Driven Programming, a general rule of thumb is avoid copy/paste/update of code. That is particularly true when control flow is copied/pasted with it. If you find yourself doing this, see if you can convert the data into an array of structs/objects. It's perfectly fine to copy/paste/update array elements.

As a side note, you can generally tell code/logic apart from data/memory based on how it looks. Code and logic appears chaotic while data and memory appear regular. Take for instance an image of a CPU die. You can physically see where the CPU cores are versus where the cache memory is. Here's an image of a Core i7 die for you:

(https://forum.outpost2.net/index.php?action=dlattach;topic=6073.0;attach=1326;image)

If you open an executable file with a hex editor, you'll notice the same thing. Scrolling through the code section, it will look like a chaotic mess. Scrolling through the data section will show large chunks of regular data, which often aligns visually into columns and blocks. As an example, here's the start of the code and data sections from Outpost 2:

(https://forum.outpost2.net/index.php?action=dlattach;topic=6073.0;attach=1328;image)

(https://forum.outpost2.net/index.php?action=dlattach;topic=6073.0;attach=1330;image)

Your source code will likely be similar. The code will look irregular. Each algorithm solves a new problem. Otherwise, you'd have just reused the old code. The data, particularly any hardcoded arrays, will probably look fairly regular.
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V7
Post by: lordpalandus on June 20, 2018, 12:35:39 AM
Oh, yes, it is very playable. No endgoal or victory condition yet, but can be played as an infinite depth dungeon crawler right now with a fair amount of enjoyment to be had.

I should really get in the habit of choosing a specific jargon and sticking with it, rather than have it mean different things. There are two types of Runes in the game; consumable Runes (Recall, Mapping, and Fabrication) and profile-bound Runes (Equipment Runes, Greater Runes, and eventually Legendary Runes). With high enough Crafting Mastery you can craft the consumable runes... or you can create Enchanting Orbs and upgrade profile-bound Equipment Runes. However, I can chalk up a lot of this confusion to my inexperience at designing games and systems... I'm gotten a lot better, but clearly have a ways to go.

Yes, and that is why I have modularization listed as tasks to complete; take large sections of essentially duplicated code, figure out a way to combine it all (whether with a powerful function or class composition or class inheritance) and then move large sections of that new code to a separate file. Slowly and yet surely I'm getting rid of tons of duplicate code and replacing it with significantly less code that does the original job, but also so much more and is far more flexible and reusable than the old code was.

One of the things I want to do for Alpha V8, is to greatly reduce the redundancy of code with the AI classes by using Class Inheritance, rather than have 6 separate classes that all share a lot of code, but each have their own specific things needed to operate properly; an excellent place where Class Inheritance can work wonders.

I've also tried to figure out how to use lists, list comprehensions, tuples, dictionaries, and list manipulation techniques (ie extend, remove, pop), to try to reduce redundant code, but thus far haven't had a ton of luck with that. As I continue coding, I do find places where these things would greatly help to reduce code redundancy and deter copy/paste code, and have implemented it in the places where I found a purpose for them. However, trying to stay on task, and produce a weekly build discourages me from sitting around rebuilding old code, unless the rebuild allows me to add new code in more easily. As I mentioned above, I intend to redo the AI classes, as I intend to clean up the AI code and try to more easily streamline the AI pathfinding code, as I can see already that it may be quite a bottleneck on gameplay performance once the map gets filled with a lot of enemies.
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V8
Post by: lordpalandus on June 24, 2018, 07:48:44 PM
Released Alpha V8. Binary and Uncompiled build on first post.

Enjoy!
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V8a
Post by: lordpalandus on June 25, 2018, 02:58:14 PM
Released a Hotfix for Alpha V8.

Implements a better pathfind system for the "dumb" pathfind system (ie not the computationally expensive A*Star system); used by both the flee code and the move towards code. Also, added a message for when you hit a fleeing foe, removed debug items that I forgot to remove, and fixed a bug with Spellcasters not fleeing when hit.
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V9
Post by: lordpalandus on July 01, 2018, 07:41:28 PM
Released Alpha V9. Another huge release, possibly bigger than Alpha 7.

Binary and Uncompiled Build on first post. Enjoy.
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V9
Post by: Hooman on July 01, 2018, 11:02:17 PM
Huh, I'm getting behind on checking out these updates.  :P
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V9
Post by: lordpalandus on July 02, 2018, 05:52:52 PM
At this point in development, with the lack of user feedback, I'm mostly just posting these updates for my own benefit. It keeps me on track, focused on my task list and disciplined in producing a stable build each week, which is very motivating. Though, if no one downloads this week's binary, I'm going to stop posting it and only give a link if someone ACTUALLY wants to play it.

The whole point of getting the binary build up was so that people wouldn't have to struggle with setting up the python interpreter, but as the only binary build that got ANY downloads was V7 (V6 got 1 from I think Vagabond who posted the graphical error), I just don't see the point of going to the hassle of compiling a build that literally no one is going to play.

I'll continue to post the uncompiled one, that requires the python interpreter on one's system, for anyone who wants to try compiling it for their host system, that isn't Windows. But, if the Binary this week gets no downloads I'm going to stop building the binary unless someone actually wants to play it.

Then again, if I do get accepted into GOG's in-development program, they may stipulate that I have to stop releasing free builds here on OPU, if I'm going to have others on GOG.com / GOG Galaxy paying for it. But, I'll cross that bridge when I get there.

EDIT: Immediately after posting this, I checked the Mediafire page, and turns out 7 unique downloads of V9 has occurred. So at least that is a good thing.
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V9
Post by: lordpalandus on July 04, 2018, 02:04:10 AM
After months of fiddling with the code and experimenting with various approaches, I've finally eliminated the Double Window issue.

There are a few more things I wish to do for Alpha V10, and may release it early so that I can do a GOG submission during the week (as they appear to not count weekends as business days so I'd have to wait more than 5 business days for a response), and that also means a bug-free build will be available sooner for those that got hit by any one of the three runtime errors I discovered.

EDIT: I've accomplished all I want to for Alpha V10's submission to GOG. However, now I am going to thoroughly test out the code and make sure that I get rid of all of the obvious, easy to spot errors, typos, and bugs... and eliminate them. Once I've done so, I shall upload V10 here to OPU.
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V10
Post by: lordpalandus on July 05, 2018, 08:06:48 PM
Released Alpha V10, and have started the submission process to GOG.

If you encountered any errors or bugs in Alpha V9, I'm pretty sure I fixed all of them. (I hope so at least; I did spend about 2 hours thoroughly testing and gameplay testing)
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V10
Post by: Hooman on July 10, 2018, 04:37:13 AM
You really push through on this stuff. It's impressive.



I don't suppose there is a way you can think of to get more feedback?
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V10
Post by: lordpalandus on July 10, 2018, 12:25:29 PM
There are a couple ways I had considered, just haven't looked into it trying it yet. If the GOG submission doesn't succeed, I'll look into trying Plan B.

So, you are probably wondering what is Plan B?

Plan B is try to do a Kickstarter or Indiegogo campaign (like Thomas Biskup did for his Ancient Domains of Mystery) and acquire funding to give the game a graphical and audible makeover. In order for that to succeed, I'll likely work towards completing the game to a much greater degree, and then post the game in a few places. Namely:

1. There is a subreddit dedicated to Roguelikes, where I noticed some people have placed their free-to-play games there, for users to try out and get feedback.

2. The libtcod library is hosted on RogueBasin, a site dedicated to roguelikes, particularly ones that use libtcod library (which I am). Might be a good place to get feedback on the game.

3. I could try to get it on Steam. The reason I haven't thus far attempted it, is because it is costly to do so, with no guarantee on return. As they have nuked their Greenlight system, (for good reason, yet screws me over) the only way you can get your first game onto their service now is to pay $5,000 + other fees (need to do various paperwork, have a business bank account, and have a legitimate company name which will cost somewhere in the range of $1,000 to $2,500). If you make $5,000, then they will give you back that money. It is basically their way of discouraging crappy developers as most won't be willing to pay 5k deposit fee to get their game up and thus the number of crappy games will decrease. However, for legitimate developers, who lack the 5k easily, this creates a major problem. If I had tons of money to burn, I could pay that cost... but, then again, if I had tons of money to burn, I probably wouldn't be trying to make a video game anyway, as video games are extremely risky endeavours. Catch 22 situation.   
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V11
Post by: lordpalandus on July 14, 2018, 02:19:56 PM
Released Alpha V11. No word yet from GOG.

Added a major system, Profiles, which now allows progression across playthroughs. Otherwise, mostly a heavy refactoring and removing redundancy build.

Enjoy
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V11
Post by: lordpalandus on July 18, 2018, 01:27:41 PM
I may be unable to post updates for a while.

My computer froze, and when I hard restarted it, it booted and then died about 30 seconds later with debug code 6F (MSI X99s Gaming 7 Mobo). Online it suggested to reset the cmos, and I did that. Now it boots to debug code 67 and stays there indefinitely. not sure how to proceed, but until I get it fixed, I won't be able to work on the code.

If anyone has a suggestion, please post it. Otherwise sorry for the inconvenience.

Edit:

1. After thinking about it for a few hours, I realized my nonbinary build has the main file uncompiled, so if I had to, I could install Python onto my older laptop and work on it. This wouldn't be desirable as I'd still lack access to all the other files, but if needed I have this as an option. If GoG doesn't accept the game then it probably wouldn't matter much to not post updates, while I get my main rig up and running.

2. I've had odd issues over the past several months that I attributed to my gpu, but now I think it was the cpu all along. I think the cpu has failed, which is why it gets stuck on a cpu related debug code. I think I'm still under warranty, so, could have it replaced but wouldn't have the computer until I'd get the part in saw 1-2 weeks. It might just need fresh thermal paste so will look into that first before doing anything else.

Edit2:

Nope, can't for whatever reason launch the uncompiled build. Installed python 2.7, installed three different VC_Redists and still will not launch. I can code it, but I can't run it and thus can't be sure if my changes are being successfully applied. Keeps spewing the error about not finding a file "api-ms-win-crt-runtime-l1-1-0.dll" is missing. And most sites online state that it is commonly a problem of a bad VC_Redist install. I installed three different versions, and hit repair as well for each, but nothing. So, looks like I am FUBAR. So, yeah. Sorry. NOTE: Laptop was bought in 2010, is 64 bit Windows 7 and downloaded three 64 bit vc_redist builds off of Microsoft directly.
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V11
Post by: leeor_net on July 19, 2018, 11:18:48 AM
This is precisely the reason you should reconsider using source control. You can use GitLab if you want a private repository. But basically yeah, this I learned the hard way years ago when a hard drive crashed on me and I lost everything on it.
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V11
Post by: lordpalandus on July 19, 2018, 04:34:23 PM
Live and learn. In the future I'll ensure that I have access to my uncompiled files at anytime.

Anyway, today is the two week mark for when I sent in my game submission. According to the automated response sent on July 5th, it says that due to an increased interest in their Indie program, if a game is not replied to within 2 business weeks, then it should be assumed that they have denied the game.

So... unless something changes in the next few days, I've been ghosted by GOG. So... while I lack access to the code, I'll take the time to plan out my next few steps. I think the game could be something great, but it is possible it got lost in the sea of titles trying to get GOG's attention. I'm sure this is likely caused by Steam closing down Greenlight. I haven't fully decided on how to proceed... but the three options currently available to me are:
1. Work towards Plan B.
2. Look into learning OpenGL and rebuild the renderer to use the GPU over the CPU. Likely require a huge code rebuild and/or abandoning the libtcod library altogether.
3. Abandon the title, and start working on my next title... either a Shmup or my aforementioned Outpost 2-like game I hinted at.

As I currently cannot test my code, (as windows/python refuses to compile the .py files on my laptop), I will be missing this week's release (unless my brother in-law, who is a computer technician by trade, can figure out what is wrong with the computer before Saturday/sunday)
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V11
Post by: lordpalandus on July 19, 2018, 11:58:23 PM
Actually, quick question:

I noticed with my Alpha V10 build, released on July 5th, that there was a single download of the binary build. Anyone here download it?
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V11
Post by: Vagabond on July 20, 2018, 02:56:36 AM
Sorry to hear about your computer crash. How many days of development are you going to lose if you cannot access the hard drive?

I would encourage you to consider taking the game to completion over abandoning it to start a new title. Even if GOG doesn't take it, there would be a lot of good experience gained from the process. Nothing wrong with releasing it free of charge just to get your work out there if it doesn't seem marketable.

I downloaded it a while back and toyed with it some, but don't remember which version it was.

-Brett
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V11
Post by: lordpalandus on July 20, 2018, 09:37:31 AM
Well, it depends on the problem. If the cpu somehow got unseated, it is likely an easy fix. if the cpu is completely borked, then dunno. I'm currently using this time to give my code a hard personal look and focus on designing or redesigning certain aspects of it.

For example the 26 item limit in the inventory is particularly frustrating. So I'm looking at designing a junk bag to store excess stuff while only the best stuff is in your inventory and still allows you to keep collecting loot, as scavenging useless items is a good source of runic shards.

I may not have considered it if I hadn't been forced to take a break from development. So I'm taking the time to think hard on various parts of the game and address them. So despite not been able to code, I'm still trying to at least work on design and implementation of the codebase at the present time.

Yes you are right. Completing something can be its own reward or a stepping stone to something else. Plus there is still things I feel I can learn from a Roguelike so, I'll work towards Plan B, whether it will be successful or not. Garnering an audience with a free title I supoo could be useful as well for when I do the next project... A group of potential testers if you will.

Well, the only version you posted any feedback on was BinaryV5, the first Binary build. Current Binary is V11.

EDIT:

Got an official response from GOG that simply states "I'm afraid that we will stand by our previous decision and pass on the game." An entirely useless response, but at least I didn't get ghosted. Regardless, I'll now start to work towards Plan B.

I'll work on fixing up a few of my implementation details and systems, for a release or two, and then I'll start submitting builds to the Roguelike subreddit and Roguebasin (where the tutorial author and libtcod library originate from) and look for feedback there. If there is interest, I'll see about working towards a kickstarter or indiegogo. If there isn't interest, I'll complete the title and just release it as freeware, before moving onto my next project.

Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V11
Post by: Hooman on July 22, 2018, 09:14:37 AM
Quote
So, you are probably wondering what is Plan B?
It's a birth control pill  ;)


Agreed with Leeor about using source control. It can be a pain to learn it at first, but it's actually quite quick to pick up, and incredibly useful. It also turns out to be strangely fun. There has been research that's found programmer happiness is positively correlated with the number of version control commits they do in a day.

And in the case of computer repairs, or visiting somewhere else, it can let you access code and move development to a new computer quite easily.


As for the C Run-Time (CRT) problem, that is usually solved by installing the appropriate Visual C Redistributable Package (VC_Redist), however, you need to install the correct version to get the correct DLL. My googling on that DLL came back with a reference to Visual C++ 2015 (x64).
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V11
Post by: lordpalandus on July 22, 2018, 10:30:13 AM
Birth Control = An exterminatus for your vagina. Or is that an abortion?

As far as the research goes, I think that it is related to how much proof of progress a programmer has done in day rather than just SVN commits, as I feel that way whenever I update my changelog and can see what I accomplished in a day.

Well, I tried 2015, 2012, and 2008, redistributable packages, all 64 bit, and they all spouted the same error, so dunno.
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V11
Post by: leeor_net on July 22, 2018, 11:36:46 AM
Birth Control = An exterminatus for your vagina. Or is that an abortion?

Plan B is a brand name of a 'morning after pill'.

Well, I tried 2015, 2012, and 2008, redistributable packages, all 64 bit, and they all spouted the same error, so dunno.

Is the code compiled as 64 bit or 32 bit? If 64bit isn't working, try 32bit. They are not interchangeable.
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V11
Post by: Hooman on July 22, 2018, 01:33:13 PM
You're probably right about the changelog updates. That's pretty close to writing commit messages.

Good point about the 32-bit/64-bit differences. It might help to install 32-bit versions of the redistributables as well, or change which version you're using.
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V11
Post by: lordpalandus on July 22, 2018, 03:54:09 PM
Only problem with that is that my original python code was built for 64-bit, as the Python Interpreter and the Libtcod Library have 32/64 bit versions. So I do not know what will happen if I try using a 32 bit redistributable with python code, interpreter, and libtcod library that is all 64 bit. It might work without a problem, or it might crash my machine.

Honestly, I'm okay with not being able to code on this laptop. It has two odd quirks, that would drive me crazy with programming. For some reason after typing text for a while, there is like a hiccup with my CPU and the cursor jumps to a previous section in the text file and text starts appearing there. Also, sometimes when saving a plain-text file, the laptop screws with the paragraphs and deletes some. If you do CTRL+Z, it restores them, but yah, if you didn't notice it and closed the file, the paragraphs would be lost forever.

Truthfully though, not feeling like I have to code is actually letting me catch up on some things in my life that I've been neglecting, that brought joy to my life. Things like writing short-stories or drawing stuff on my sketch pad and of course getting some exercise.

Plus, I'm using the time to take a critical look at my code and gameplay systems, and I'm already realizing areas of possible improvement, where I could reduce unnecessary complexity in some areas and build depth into others. So, this "forced break" from the coding has actually been quite beneficial... surprisingly. As for the computer itself, my brother-in-law thinks it will be a simple repair, but as he does most of the house chores and takes care of the baby, while my sister works as an Oncologist (proly butchered the word; Cancer-Specialist Doctor, basically), he doesn't quite know when he will be able to get it done.
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V11
Post by: Hooman on July 24, 2018, 04:19:05 AM
The 32-bit and 64-bit files are independent. They don't overwrite each other. You can install both if you want to be able to run both 32-bit code and 64-bit code.

I had similar problems with the mouse cursor on my laptop. It was because I was accidentally leaning on the touchpad for the mouse as I typed. It would register clicks, and move the cursor somewhere seemingly random, or click and drag, which would select text, and then cause me to overwrite it. There is usually a hotkey to disable the touchpad, which should prevent accidentally clicking on it. The exact key varies by model, but it's usually something like <Fn> + <F7>.
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V11
Post by: leeor_net on July 24, 2018, 07:12:46 AM
Was gonna say, that has nothing to do with the CPU.
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V11
Post by: lordpalandus on July 24, 2018, 09:14:42 AM
That I didn't know about. I thought it was either 32 bit or 64 bit VC_Redist, not both. I'll try downloading the 32bit VC_Redist and see if it solves anything.

Also good to know about the laptop. That probably is what is happening.
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V11
Post by: lordpalandus on July 27, 2018, 10:24:19 PM
An update this week is looking unlikely. I haven't been idle however, and have a large list of actionable work that I'll get to doing the moment I have the rig available again. When I've completed the work in the list, then I'll look into releasing the build on the Roguelike Subreddit and Roguebasin and see what feedback I can get.
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V11
Post by: lordpalandus on July 29, 2018, 04:31:39 PM
Question: If this roguelike is crap, or you simply didn't like it (because you don't like roguelikes), would you hesitate in telling me so? It would be useful to know why people are downloading builds, but never mention something as simple as: it is bad or it is good. Thoughts?

I ask because I've had basically the complete absence of feedback. That can mean people are liking it (as people who like something will rarely post good things) or it might be so bad that people try it for 5 minutes and immediately lose hope on it and don't bother to leave even a bad review, as no one is paying for it thus no one loses something for downloading it.

EDIT: I ended up releasing V11 onto a subreddit for actively developed roguelikes and got some feedback on it. All three people who tried it stated that the font size was too small and that was why they couldn't get into the game. So, my next build will feature larger font size. If I hadn't gotten feedback from reddit about it, I'd have continued to work with the tiny font size that I have been using for 5 months. It is really good to know what the problem is so that I can work on fixing it. Well, one of the problems at least.
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V11
Post by: Hooman on August 05, 2018, 01:43:55 AM
For me, I haven't been able to build it on Linux. I never figured out how to get libtcod working. Hence I haven't had a chance to play it. Sometimes though I'll be curious about development and download the package to look at the code.

With the previous game, it was playable on the web, which made it much easier to test out. No download or installation required.
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V11
Post by: lordpalandus on August 05, 2018, 02:33:28 AM
Here is the page I used to get libtcod working for my main rig. Might help you out:

http://www.roguebasin.com/index.php?title=Complete_Roguelike_Tutorial,_using_python%2Blibtcod,_part_1

EDIT: I think I know why python won't work on the laptop. The last time I did any major updates, was in mid-2014. The universal C runtime (CRT) came out in 2015, so my computer doesn't actually have the necessary runtime installed, hence why the error of not finding it. Now... to get the CRT for my laptop and see if it solves the problem.
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V11
Post by: Hooman on August 05, 2018, 04:24:51 AM
Ahh, ok, that link helped. Nice clear instructions for compiling libtcod on Linux. It was a slight variant of the usual compile procedure. I noticed there was no install rule set for the Makefile, so the process felt a bit clunky, manually copying files around, but I got the game to run.

My first thought was indeed the font was way too small. That made it rather hard to read.

My next thought was, I had no idea what keys did what, or how to find out.

Looking forward to the font updates.
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V11
Post by: lordpalandus on August 05, 2018, 12:54:49 PM
There is two ways to find out the keys. Read the Readme file that comes with the executable. Or hit Shift + / (the ? key). At the end of the story popup, at the start of the game, it states to hit Shift + / to see the keybindings and then directs you to the tutorial.

I suppose if the font was too small, you'd probably have missed that. Anyway in other news...

Windows Update is being a real ass. To get the Universal C Runtime, I need to get it from WIndows Update... it downloaded, and installed 70 updates; when it went to configure them, only 6 were successful. There is a standalone installer for the CRT, but, it just hangs/freezes/locks up/is a piece of shit for over 10 minutes and does nothing. So I'm stuck with Windows Updates. Maybe if I install them in incremental steps, they will work. Probably not though.

This is a problem because my main rig is still down, and my brother in law who is good with computers, is thinking it is a motherboard failure, but is still trying things out. If I can't get the CRT on this 2011 Win7 laptop, I cannot compile my code or even run my own binaries, making development impossible.
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V11
Post by: Hooman on August 05, 2018, 01:30:14 PM
I managed to compile and run it from Linux. You can develop in a Linux virtual machine!  ;) :D ;D

Or maybe you can switch to a secondary task, such as learning to use Git (https://github.com/jlord/git-it-electron#what-to-install).
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V11
Post by: lordpalandus on August 05, 2018, 03:03:05 PM
WINDOWS UPDATE = igjalkgnaoinalnan;reagn'jlkasdlgkja029090fm90am09remg9eugn9-7834n97bhufnugans9ha7dsbg7ahr9ahwe89ghae8gha0wh9gehw90ghw09hg09whe490gha42ihgoseifoashdf... expletive deletive.

I cannot install the universal CRT at all. I've tried to install updates 4 times now with Windows Update, and only 1 out of like 40 updates is successfully applied and then none get applied. There is a standalone installer, that appeared to install it, and then when I restarted it as requested, it failed to it apply it. And now, when I try to launch either Windows Update, or the standalone installer, it gets stuck in an infinite loop, and then after like 15 minutes, finally crashes.

It is impossible. I cannot continue development of my python game on this machine. Windows simply will not cooperate. I need the universal CRT in order to run or compile anything with Python in it.

Some users stated that you can get the universal CRT by just installing the VC_Redist 2015 package. I've tried that method 4 times now, either with just repairing the installation, or using Control Panel's remove program and then reinstalling the VC_Redist 2015 package. Nothing is working so I am ... adofhaofhoaisdhgoiahogihaoighaohfoiahogiahoighoigh209049au2094j09jg90sdjg09aj09gj092jga09d09ghaw09hw09ha0940w9hg09hw09h409hw09hgw09hg90hw9g0h09gh309hw09gh9w0hg ... Anyways.

If my brother in law can't find a problem with the computer that isn't the motherboard, and fix it, then I'm probably going to be unable to code for at least a month, if not longer. There is nothing I can do... even if I had the source files, I couldn't do anything with them, because Microsoft is a 190na9naugnsd98nga809dsg8a0gn08asd0gadgnjadgnoausdng098nasoogindngaiidsongidang0dnsagalgnasdlkalkkjlkwjlkanglksmlnsadlgknlkgnlkajglkajdglkjadslkdgjalkdgjl and can't create a serviceable Update system that works most of the time without screwing everything up. I effin hate Windows Update.

When I visit my brother in law next, I'll grab my source files off my computer, and likely have to order in a new motherboard. By the time I get the motherboard, I don't know if I'm going to have the desire to continue developing it, and maybe just move onto the next project. Effin Microsoft and their damn dependencies that refuse to install.
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V11
Post by: lordpalandus on August 06, 2018, 02:52:02 PM
I hate technology. I got the main rig off my brother in law, and brought it home. It booted up, and got past Post, and then got stuck at a DHI Shell, and mentioned that no map could be found. Looked up online, and that meant that it could detect no HDD or SSDs. So I replugged in the SSDs and HDD... and it is now back to not posting and gets stuck on 67 again. I disconnected both HDD and SSD, and it is still stuck at 67. I'm at a loss, and I'm frustrated that the computer showed signs that it was still functional and is now back to the same old shit that I ran into 3 weeks ago.

It is possible there is a loose wire somewhere and that by removing the HDD and SSDs originally solved the issue, but by reconnecting the two, the issue has returned. However by disconnecting them again, it hasn't solved the issue nor has reattaching the wires to the mobo. I feel like smashing the computer with a sledgehammer, for giving me false hope.

Not sure how to proceed now.

EDIT:

I'm not sure what I did, but I successfully managed to get the universal c-runtime on my laptop working, and can launch my game now.

EDIT2:

Managed to get my uncompiled source files off my SSD. I'll upload a copy to the first post, and to my mediafire... in case this laptop ALSO fails.
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V11
Post by: Hooman on August 07, 2018, 02:58:17 AM
Again, take a moment to learn Git (https://github.com/jlord/git-it-electron#what-to-install). It will pay off huge over the years. And a basic tutorial shouldn't take very long to work through.
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V11
Post by: lordpalandus on August 07, 2018, 12:15:04 PM
Alright, I'll take some time to look at Git.

I was wondering... when you say the font size is too small... I noticed on my laptop, that the font size was the same size as it was on desktop, albeit the screen was too large. Do you find the font size of the text on the forums to be too small? I ask, because the new font of 12x12 is the same size as the forum text now, and I find the text ingame to be much easier to read. The old font size was 10x10.
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V11
Post by: Hooman on August 08, 2018, 09:16:11 AM
How am I supposed to compare? You haven't release the changes with the new font size yet  :P

Hmm, just noticed the "h" doesn't seem to render:
"w  e r e"
"P  y s i q u e"
Though I also noticed hitting a key caused a column of letters to disappear, which lined up with the missing "h"s.

I also found the spaces between letters made the text much harder to read.


I didn't notice any mention of a help key, nor was I able to activate a help menu.
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V11
Post by: lordpalandus on August 08, 2018, 12:25:34 PM
The h not rendering and the column of letters are associated with a bug with the menu code. I had thought I had solved all instances of this bug, but apparently not. With the font change, I will be doing an UI overhaul, so I'll make sure to address the bug then.

Yes, I've noticed that as well with font size 10. Font size 12 doesn't appear to have the same issue... or if it does, it is much more marginal.

I double checked, and I did indeed mention the help menu and the tutorial, in Binary V11. It is at the end of the story window, after the all capitalized text. The first sentence mentions the help menu. The second, the tutorial. When I redo the story, as with the font size increase is now TOO big to fit in the new window size, I'll look into making it more obvious.

For reference: Help Menu (Shift + /) and Tutorial (Shift + '). These are also mentioned in the Readme file... though, people rarely readme files anymore so I'll forgive you for not reading the readme.
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V11
Post by: Hooman on August 08, 2018, 12:56:14 PM
I had tried pressing Shift + /, as you mentioned in a previous post, but it didn't seem to do anything for me. Though I might have been stuck in a sub-menu without realizing it.

As for the in game instructions, I did skip reading the big block of text. It's just too small of a font to read comfortably. I'll take another look once the font size issue is dealt with.
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V11
Post by: lordpalandus on August 08, 2018, 01:32:02 PM
Yes, when in a sub-menu it won't work. If you were able to move your character around the map, and then hit shift + /, then it would have opened the help menu.

Here is two screenshots, to give an indication of changes in font size.
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V11
Post by: Hooman on August 08, 2018, 04:33:23 PM
That's much easier to read. The letters are large enough to be clear.

I still find the spaces between characters within words slows down my reading. I vaguely remember reading an article years ago that talked about a scientific study on how spacing affects reading, which suggested spaces within words makes it harder to read.

Not sure how attached you are to that spacing, or if it's part of the engine you're using. Looks like it's part of the engine.
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V11
Post by: lordpalandus on August 08, 2018, 07:20:49 PM
As far as I can tell, it is a limitation with the libtcod library. You need to use, what I think is a sprite sheet, with all the various characters and symbols off a font file (included file is the font size 12 file). Why it has such large spaces in some words, and other times have like no spaces, I'm not entirely sure why that is.

I can definitely agree that having too many spaces in a word, artificially lengthens the word and makes it harder for me to read it quickly. Probably a perception related thing where the user expects the word to be longer, because it takes up more space that it usually does.

I'll fiddle with the UI, as it might be a problem created on my end. Maybe by giving a window too much excess space, it spreads out each character to fill that space more effectively. Or maybe legacy code from the tutorial creates the text issues. Or maybe it was fixed in a later version of libtcod library, and I'm just using an outdated version of libtcod.

Or maybe there is a text-formatting option in libtcod that isn't being used, which could be used to shrink the spacing of characters.

EDIT: I might be able to have Alpha V12's release out tomorrow. I am fighting with a few annoying interface bugs with the changes from font 10 to font 12, so I am not going to be able to promise a release. I've solved some of the interface issues, but not all of them, and many of them are extremely complex in nature, so it is slow, troublesome, and often times painful work to address these interface issues. And as the interface is key to gameplay, the game isn't really in a playable state at the present time.

EDIT2: I won't be able to release it today. However, I have made immense progress in getting the new character customization system to start working and I'm slowly but surely solving a whole bunch of interface related problems along the way. I hope to get this release out as soon as possible, but this all depends on how much more grief the interface will give me, between now and then.
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V11
Post by: lordpalandus on August 14, 2018, 11:59:08 PM
I've progressed immensely with Alpha V12, and it is nearly ready for release. I'll be releasing Alpha V12, as both the uncompiled build and the binary build here on OPU, and I will be releasing it on the roguelike dev subreddit, to get feedback from there. I have a few story changes to make, which I'll address tomorrow. I've made sure that the game compiles (and it does) on this laptop and I've tested the binary built, and it works. So, I'll finish up the story changes and then release Alpha V12. I'll also give a brief explanation of why it took over a month to get Alpha V12 out, when I had been doing weekly builds.
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V11
Post by: leeor_net on August 15, 2018, 01:29:53 AM
As far as I can tell, it is a limitation with the libtcod library. You need to use, what I think is a sprite sheet, with all the various characters and symbols off a font file (included file is the font size 12 file). Why it has such large spaces in some words, and other times have like no spaces, I'm not entirely sure why that is.

It's called a 'glpyh set' or 'glyph table' and the issue is a problem caused by using a variable-spaced font (like Arial) in a scheme that requires a mono-spaced font (like Courier New). Basically, the library is expecting a monospaced font and so ignores any notion of 'kerning' which is how variable spaced fonts can adjust each character's distance from the other to produce legible words.

Use a monospaced font instead. It will eliminate the problem you're seeing. Not all monospaced fonts are serif'd. A good resource: https://www.1001fonts.com/monospaced-fonts.html
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V12
Post by: lordpalandus on August 15, 2018, 12:12:48 PM
Good to know, but it doesn't solve my problem. The link has downloads that uses the .ttf format; I need a glyph table that uses the .png format. Also the .ttf files do not have all the symbols I need, that are offered in the .png files...

EDIT: I looked up online what are some common monospaced fonts and then checked if I had any of those font pngs that came with libtcod. Apparently Consolas is a monospaced font and it has a png for it. I swapped it out with the Arial I had been using... it improves readability significantly... but... the spacing issue is still there. So, I'm thinking there is something else going on behind the scenes, with the libtcod library that is modifying the spaces as the monospace font didn't solve the issue. I'll likely keep the new font as it is easier for me to read everything but will have to keep searching to find out what the issue is with spacing.

EDIT2: Looks like it is an inherent problem with the libtcod library. This guy (who I've also seen on the roguelikedev subreddit) explains the problem in good detail = https://www.gridsagegames.com/blog/2014/09/fonts-in-roguelikes/  (starts talking about the libtcod issue at the header "Grid-Based Display"

EDIT3: Alpha V12 is now released. First post updated.
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V12
Post by: leeor_net on August 15, 2018, 07:54:33 PM
... really?

Try this link (http://lmgtfy.com/?q=bitmap+font+generator).
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V12
Post by: lordpalandus on August 15, 2018, 08:35:12 PM
Why was that necessary? Seriously, why?

I stated beforehand that I was using a .png file for the font. You could have mentioned that in order to use a TTF file for my purposes, that I'd need a font generator, instead of just saying here is what you need without explaining how to make it useful. I am still new to development; I don't know the jargon, the acronyms, or even what design methods I'm using that the gang of four would recommend. I've never been exposed to this kind of stuff before so how would I know that to use a font file I'd need a font generator. 

If you don't know what to google, how do you google it? Hmmm?

If you have a problem, but don't know how to put that problem into words, or you don't know fully what the problem is, how can you find a solution?

 

Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V12
Post by: leeor_net on August 16, 2018, 08:37:54 AM
There's something to be said about not knowing something and asking for help versus asking to be spoon fed and hand held through a process. Your response made it obvious you didn't even try, you immediately dismissed it.
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V12
Post by: lordpalandus on August 16, 2018, 11:43:26 AM
You give me a file format and you expect me to know what to do with it? How am I supposed to know that you can convert a TTF file to a PNG? I have never done that before or even heard of that before.

When someone doesn't know anything on a subject, is it unfair to expect at least some spoonfeeding? I get it that you don't want to do all my work for me, but giving me a resource when you could clearly tell I knew absolutely nothing on the topic; after all I did call it a sprite sheet, and not a glyph table... I've never worked with fonts before.

An analogy: It is like taking a young student into a metal-working workshop, giving them a piece of metal, and then telling them to make a ring out of it. They don't tell you anything about safety (except to wear safety equipment but not how to use equipment safely), or how to use the various tools available to you or even suggest a specific order to the process of creating a ring from the lump of metal you have and then leaving you to it. Case in Point, this also happened to me in 8th grade, and my teacher got pissed off at me when I wasn't doing it right, despite not taking the time to give the barest of spoon feeding so that I could help myself. Eventually the teacher got so mad at me, that he ripped the metal out of my hands and made the ring himself. Suffice to say, I hated that and I learned nothing from the course.

I'm still quite new to programming and development. You have like 10 years of experience on me; things that seem simple to you, are likely nearly impossible to me... like building a custom interface. If you are going to offer some complex technical help, with jargon that I've cleared never even heard of before, you need to be willing to grill me on the basics and give me some spoon feeding on the process, so that I can then take it from there.

If you had said that you can find monospaced font files on the internet, they come in ttf format and you can find a program to convert it into a font that I could use in my game, then that would have been enough information to get me started and to help myself with getting more information, if I get stuck. But leaving the font generator out, I did not know that it was a needed component in the process and didn't know that I should even look for one.
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V12
Post by: leeor_net on August 16, 2018, 08:28:25 PM
I'm still quite new to programming and development. You have like 10 years of experience on me; things that seem simple to you, are likely nearly impossible to me...

25 years, actually (I started learning programming when I was 10)

Anyway, I can appreciate your point of view and you're right, sometimes I forget that you aren't drawing off two and a half decades worth of research and experience. Still though, there are often times when I don't know terms and jargon and yet I've never really found that to be a roadblock. With Google, it's very easy to get information and many times I have to sort through a lot before I find what I need. Good example is the connectedness algorithm used in OutpostHD -- I'd never had to solve that problem before so I started by searching for something similar -- the pipe game algorithms -- which lead me to the term `connectedness` which lead me to depth-first and breadth-first graph searches. To me suggesting monospaced fonts ought to have been enough -- from there you'd look for how to make an image file out of a truetype file which would have eventually lead to a bitmap font and ultimately a bitmap font generator. It requires some reading, yes, but that's part of the discovery and the understanding of it. Having complete answers dropped in your lap does a disservice to you, it forgoes you learning the hows and whys of things which in game development is far more important than you may be aware of.
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V12
Post by: lordpalandus on August 17, 2018, 12:03:27 AM
Okay, 25 years.

I understand what you are saying, but it isn't quite that simple. How for me to elaborate...

If a person has spent enough time with something, they have a whole lot more "memories/experiences/knowledge/etc" to draw on with their brain's heuristic algorithms to figure out a way around a problem. The more times you use heuristics, the stronger that portion of your brain will be, allowing you to get around more complex problems. If you have very little knowledge on a subject, it is nearly impossible to figure out a solution, using straight heuristics, as the brain lacks sufficient data to create a guess or even an assumption to help the person get around the problem.

So, in relation to this, you may know little about fonts yourself, but your years of experience gives you the ability to figure out heuristically what you might need to get around the issue. I lack those years of experience, and I lack the experience with fonts and thus I find myself getting stuck and requiring more info.

Discovery is great when you can discover it on your own, but until one has strengthened their internal heuristics, spoon feeding is often necessary to get a point across. Having complete answers CAN be a disservice; not knowing any way of creating a main event loop or even how to proceed and then given one is not a disservice. However, once you do know how to create a simple main event loop, it would be a disservice giving them the answers for optimizing the main event loop or eliminating possible memory leaks; learning how to do that is an important aspect of coding.

A person needs a foundation to build anything from; once that foundation is present, then it would be a disservice to just give them a full featured house, but until that person has a foundation, they need to be spoonfed to get them to the point of having a solid foundation. That is why people often ask for help online or do tutorials; they need that foundation before they can move forward and make something beautiful.

Or think of it this way: If you were 12 years old again (as I have about 2 years worth of programming experience), and someone gave you a true type font and told you you could use it as a png file, despite it being a ttf, would you be able to say that you could figure out that you'd need a font generator to solve that problem, despite never touching fonts up to that point (assuming of course there was a search engine available and a font generator out there)?

Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V12
Post by: Hooman on August 21, 2018, 01:18:20 AM
Huh, that article about the fonts was quite informative. Seems libtcod made the decision to use square spaces for fonts to preserve x/y distances on maps, while normal reading typically uses fonts that are taller than they are wide. Hence, if you're limited to a single font, you either have expanded text with extra spaces making it harder to read, or you have squished maps where things look much closer in the x direction than the same distance in the y direction.
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V12
Post by: lordpalandus on August 21, 2018, 02:33:55 PM
Yeah. I wonder though if one could use two fonts with the libtcod library; one for the grid-based maps and one for text-based interfaces. I'll look into the feasibility of that later. Right now, I'm working on learning how to create custom menus and interfaces, and hopefully have a redesigned interface for at least a few of the menus for Alpha V13.
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V13
Post by: lordpalandus on August 25, 2018, 02:26:00 PM
Alpha V13 is released.

Mostly a quality of life update, to make it easier for new players to get into the game.

Spent most of the week working on learning how to use Class Inheritance, new ways of manipulating Strings, and work towards an interface overhaul. Hoping to have some interface improvements in for next week's build.
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V13
Post by: Hooman on August 25, 2018, 11:20:41 PM
I'm adding a Linux usage note, mostly so I don't have to look this up again.

The libtcodpy library can use the environment variable LIBTCOD_DLL_PATH to find the libtcod library. That means when you compile libtcod, you can do a usual system install (sudo make install) to copy the files to /usr/local/lib, and then set LIBTCOD_DLL_PATH=/usr/local/lib before running the game. This can be done either on the line to run the game (LIBTCOD_DLL_PATH=/usr/local/lib python Game.py), or you can permanently set the environment variable in ~/.profile or similar with export LIBTCOD_DLL_PATH="/usr/local/lib".

Source (Note comment #3 from from libtcodpy/__init__.py):
Code: [Select]
    pathsToTry = []
    # 1. Try the directory this script is located in.
    pathsToTry.append(os.path.join(__path__[0], libname))
    # 2. Try the directory of the command-line script.
    scriptFilePath = sys.argv[0]
    scriptPath = os.path.dirname(scriptFilePath)
    if len(scriptPath):
        pathsToTry.append(os.path.join(scriptPath, libname))
    else:
        pathsToTry.append(os.path.join(os.getcwd(), libname))
    # 3. Try the environment variable LIBTCOD_DLL_PATH.
    if "LIBTCOD_DLL_PATH" in os.environ:
        envPaths = os.environ["LIBTCOD_DLL_PATH"].split(";")
        for envPath in envPaths:
            if os.path.exists(envPath):
                pathsToTry.append(os.path.join(envPath, libname))
    # 4. Try the top-level path in the development tree.
    potentialTopLevelPath = os.path.realpath(os.path.join(__path__[0], os.pardir
, os.pardir))
    pythonPath = os.path.join(potentialTopLevelPath, "python")
    if os.path.exists(pythonPath):
        pathsToTry.append(os.path.join(potentialTopLevelPath, libname))
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V13
Post by: Hooman on August 25, 2018, 11:54:13 PM
Ok, way too much wall of text. It's particularly bad because the font spacing makes it so hard to read. I just wanted to play, but instead I was greeted with page after page of text. I got bored and stopped reading it. Even still, it was minutes before I even got to see the game.

The character selection was asking me to make decisions that could impact the rest of the game, yet I had no experience with the game yet to inform those decisions. At best I could use my experience from other hopefully similar games to guess what I wanted.

The game was asking me to name my character, while also simultaneously telling me this didn't really matter and had no impact on the game, and how my name would be capitalized. Way too much info. And if it has no bearing on the game, maybe it can be skipped, or delayed until later once I've had a chance to try the game.

For character naming, I rather liked how Final Fantasy 3 (FF6 if you follow the Japanese releases) introduced and named characters. They'd start off with a cut scene, show some character, build some back story, get some emotional engagement for the new character, and then and introduction of sorts, such as "why hello, and your name is...?", and then the character name prompt pops up. With a suggested name already filled in.

Naming of characters was nicely delayed until you know who the character actually was, what they were about, and had some emotional engagement as to why you should care.

As for the character classes, and attribute bonuses, that could also potentially be delayed until in game. Examples might be FF2 (FF4 if you follow the Japanese releases). They let you choose, and change, your profession during the game. If you've made a mistake about how you're developing your character, you can change focus and go down a different path. That doesn't play so well with race, which people view as unchangeable, but it does work with profession. Of course, that's not to say you can't delay the race selection in a similar manner to delaying character naming.

Another alternative is how Runescape worked (or the FF2 Japanese release, not released elsewhere), where character stat increase depends on what you do. The stats you actively work on are the ones that get better. Again, this delays or even eliminates the in game selection of what your bonuses will be.
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V13
Post by: lordpalandus on August 26, 2018, 02:21:54 AM
I'm in the process of making an interactive tutorial, it just didn't make it in for this build. I also intend to make a help directory, and break up the walls of text into manageable reading bits, delivering a specific piece of information. The intent is that with the interactive tutorial, is to teach all of the basics of gameplay, and the help directory is used to refresh oneself on a particular topic, or learn about a more advanced mechanic. Also, most of the initial text can be skipped and read again later, either with the Help/Tutorial menus, or accessing it via the Pause Menu (esc).

Never played a final fantasy game. Most of the RPGs that I played always asked you up front to design your characters. However, they never really bothered to explain what different things will do. I tried to make the user informed about what each choice does... maybe I failed to provide enough instruction.

In most games, the name of a character is irrelevant. Even in story driven games like Mass Effect, your name is irrelevant except for your last name, which is Shepard. The reason I mention that the name has no relevance is that all the previous choices HAVE relevance. Thus, the player can name their character as they so please, and have no concern for the consequences.

The issue is that the characters are basically irrelevant in the grand scheme of things. Well, at least the "bodies" are. What I mean is that the Chaos God has trapped your soul in the Cataclysm of Chaos, and whenever you go insane, the Chaos God destroys your body, creates a new one, and sticks your soul into the new body. So, in a lot of ways your body is simply a temporary vessel, being used to accomplish goals until it's usefulness runs out, and the cycle repeats. Every time you go insane, you generate a brand new character, and are told that you entered the Cataclysm of Chaos as that person, when in reality, it is just something created with certain memories applied to the body. At least, that is how I was thinking of doing the lore. ... However, giving each character more backstory could be beneficial, so I'll look into doing that and add more character to the characters.

The secondary purpose of the interactive tutorial is to help the player figure out what kind of character they want to play as. However, with that said, you can always change your playstyle by putting the effort into whatever way you want to play. As an example, you might want to play as a powerful spellsword. You might choose choices to give your Physique a large starter advantage and then focus on building up Intelligence, and thus be able to build both attributes reasonably well. But, that is more for advanced players. The game gets a lot of inspiration from Elder Scrolls games, in that you can be whatever you want to be, but your starter choices make certain things easier and others harder. But, with enough diligence, you can take that berserker nord, and turn into an exemplary thief.

The last point is Attribute Training in a nutshell. If you focus on melee/martial, you train Physique. If you focus on ranged/stealth stuff, you train Dexterity. Etc... It is just that your starter choices impact how easily it is to train different Attributes.

Thanks for the feedback, and I'll see about integrating some changes into the next build.
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V13
Post by: Hooman on August 26, 2018, 05:25:53 AM
Quote
In most games, the name of a character is irrelevant. Even in story driven games like Mass Effect, your name is irrelevant except for your last name, which is Shepard. The reason I mention that the name has no relevance is that all the previous choices HAVE relevance. Thus, the player can name their character as they so please, and have no concern for the consequences.

Why are you explaining this? ;)

As for backstory, I'm not saying you need to add that. In some cases, maybe you shouldn't. In Final Fantasy, I think it worked out well. I'm not so sure about a rogue-like.

Keep in mind that Final Fantasy, particularly FF3 (aka FF6), was a story telling game. A rogue-like has a much different focus.
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V13
Post by: lordpalandus on August 26, 2018, 12:54:01 PM
I was explaining it because you seemed to have an issue with giving your character's name right away. The only real reason I take the player's name immediately is because the Chaos God is intended to use your name with their messages; doesn't do so yet, as I've been focusing on quality of life and usability features for the last couple builds.

It is true that many games will have you do a tutorial first and then name your character, ie Elder Scrolls games. However, as I currently lack the tutorial, I just request it immediately.

Mostly I was explaining it because not everyone has played a lot of RPGs and may not know that it is common practice to get a name up front immediately or that the name is basically just fluff.
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V13
Post by: Hooman on August 26, 2018, 11:49:13 PM
... and why are you explaining that?  ;)
(Hint: I'm not looking for an explanation!)  :P
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V13
Post by: lordpalandus on August 27, 2018, 01:03:09 PM
Sometimes I reply to a question, without considering why I'm replying to a question. Other times, I answer because I can. Further times, I do as Cthulhu commands.
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V14
Post by: lordpalandus on September 01, 2018, 06:41:50 PM
Alpha V14 Released.

Was a frustrating week designing out the new interactive tutorial and the help directory system, meant to supplement the tutorial. Tossed out several prototypes, and took me a few days to fully debug my new help directory system, so didn't get much in the way of code implementations done. However, as the biggest feedback from players is the need for a really good tutorial and better formatting for the help systems, I felt that prioritizing these this week was critical.
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V14
Post by: Hooman on September 02, 2018, 12:28:14 PM
... I don't want a help directory. I don't want to read. I want to play!

The menu systems when starting the game seem a bit buggy. I get blank screens until I click the left mouse button. After each screen of text, it blanks out, and I need to click to see the next one. Additionally, it was eating most of the letters I typed when trying to name my character. Very frustrating experience.

Also, there is very little feedback concerning ranged attacks. It seems some monsters avoid me completely, where they don't come attack me, but I also can't get near them. If I click to do a ranged attack, then they attack me. After a few rounds of not much happening, I wandered off. At some point I was killed with no enemies around me, and some text that suggested I was killed by a ranged attack, though there was no obvious feedback that I was being attacked.

Also, I'm not sure I can see the entire text log at the bottom. I think it cuts off for me. I tried to enlarge the window (it's already max screen height), but the enlarge button doesn't respond at all.
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V14
Post by: lordpalandus on September 02, 2018, 12:59:56 PM
I am aware that players don't like to read (which is surprising as so many people still want Game Manuals, for some reason and why many of the older roguelikes, like ADOM has a large Help Directory). However, the tutorial wasn't finished and I didn't want players complaining about CTDs or broken save files. The Help Directory is meant to supplement the tutorial when completed, and is also meant to phase out the huge walls of text, into smaller bite sized bits.

For the text input, how long was your name? Also did "backspace" help to clear letters so that you could enter in fresh letters?

Mouse support for menus is buggy; has been since the beginning. The tutorial maker added mouse support to the menus, and that then caused numerous other errors. I fixed or duct-taped those issues, but the big issue is the "double window" bug. For some reason, with mouse support, it creates two of the same window, overlaid on top of eachother. My workaround, which works with keyboard inputs, is to effectively make the window invisible. But for some reason, when you click with a mouse, the invisible window appears, creating a blank, black screen. When I figure out how to create good interfaces, I'll look into trying to solve the issue. It took me about 5 months to create a workaround for the double window (after trying out at least 30 other failed solutions to the problem), so don't expect a fix anytime soon. I've run through the code numerous times and I do not know how to solve it yet.

What is your threat value and their threshold values? If your threat value is <= to their threshold, they are non-hostile; this is called Passive Stealth (can read up on it in the Help Directory, under Advanced). If they are nonhostile, attacking them causes them to be hostile towards you. If they are a Treasure Fiend (black T) they always move two spaces away from you, unless you are using Active Stealth. If you hit a mage with a ranged attack, they flee, moving at two spaces per turn; if you attack an archer and get too close to them, they also flee away from you moving two spaces per turn. Most of this information is already in the game, and available for players to help themselves, rather than, say I spoonfeed them everything.

I'm not sure I know what you mean by no feedback. I regularly check my health bar, and scan my environment before moving forward. What about the message log? Any time you get attacked, a new message appears in the message log. I know that in most games, you have graphical animations or sound effects to produce feedback. In most roguelikes, the feedback a player gets is a change to their health bar or a message in a log. I understand in modern games this is insufficient and I do intend to build in more reliable feedback systems. When you say feedback, what kinds of things would you like to see?

The window mostly fills my tiny laptop monitor of 1366 x 768, with a bit of empty space on the edges. Vagabond mentioned back around V5 or V6, that he had a problem with the window size, that fixed itself by entering fullscreen (ALT + ENTER) and then hitting it again to bring it back to normal size. The window is a somewhat poorly designed terminal interface, and thus the only way to currently make the window larger is fullscreen (ALT + ENTER). I am looking into resolution scaling or aspect ratio type stuff, just haven't gotten to it with the focus on the tutorial.

Thanks for the input!
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V14
Post by: Hooman on September 02, 2018, 01:32:32 PM
The game seemed to be dropping random letters when entering the character name, as if the key was never pressed. It was intermittent. I had to press keys a few times repeatedly to get the letter to appear.



I think having to regularly check the health bar is an issue. If there are no enemies around, and no visible log messages (the log might overflow the screen), then it's very hard to see any unexpected health bar updates. If the health bar flashed, or if the screen flashed or tinted red when you were low on health, that would alert the player to trouble.

For a ranged attack, I would expect to see some kind of animation indicating a ranged attack.



The message log cuts off the last 2 lines when not in full screen mode. Using Alt + Enter works. The maximize button does not.



When there are many enemies on screen, I've noticed some performance issues. There is noticeable lag between pressing arrow keys and seeing the character move.
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V14
Post by: lordpalandus on September 02, 2018, 01:59:05 PM
Okay. I'll look into it. The method I used for keyboard input may be the incorrect one to use (there is like 5 different functions it uses to take in input), so I'll see if I chose the wrong one for the job.

I am planning on creating a longer message log (again not a priority) as I really liked it with the old build with the smaller font. I'll see about trying to get the health bar to flash when low on HP, or tint the screen red or perhaps a popup window that says you are low health. I'll look into having an animation play when an attacker attacks you.

Maximize button not working isn't surprising. Annoying, but not surprising.

The lag is one of two things: 1) the method that the game uses for taking in input is creating the lag or 2) the enemy pathfinding code is computationally expensive. I'm leaning towards the pathfinding code being the culprit. Will look into ways of optimizing it.

EDIT: If I can get the tutorial done swiftly, I'll try to implement some of the stuff you suggested Hooman. If not for this build, then likely for the next build. All of your feedback definitely highlights areas where improvement is necessary, but as you pointed out yourself... you don't want to read. Thus, the priority for this week is to create an effective, informative, and interactive tutorial so that players can learn by playing rather than reading.
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V14
Post by: Hooman on September 03, 2018, 12:03:58 AM
For the love of God, no popups!

Although it may be instructive to solve the keyboard issue when entering a character name, perhaps there is a better course of action. Consider this: The player starts up the game, and bam! they're in the dungeon. If they want to load a previously saved game, they can select that from the menu. Their current game is discarded. They want to choose a character class or profession, they do that in game, by finding some appropriate map marker or quest point and moving onto it. Choice selection is controlled by character movement, rather than a menu system.

As for naming the character, maybe just dump that feature. If it's really desired, perhaps add it in game, as a delayed choice. My preference is to just dump it though. Names are more relevant when you have multiple characters to control. For a single character game, it's just noise.
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V14
Post by: lordpalandus on September 03, 2018, 12:37:12 PM
Ahh popups, the bane of players... unless it is a 4x game. I'll just have to find another way of doing it.

Interesting idea. Kind of reminds me of Dragons Dogma's character creation where you choose your starter class by picking up an item (a sword, a dagger or a staff) in a room.

I only really included the name as many games offer the ability to name your character. But in this game it is likely just fluff/noise, so I'll consider removing it.

Thanks for the input.
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V15
Post by: lordpalandus on September 08, 2018, 04:56:16 PM
Alpha V15 is now released.

EDIT:

Although I didn't get it into this release (as the problem flummoxed me), I have managed to implement flashing health bars and flashing energy bars when below 25% of maximum values, into the next build. They do not strobe, but the flashing effect is quite noticeable, to help draw your attention to your health or energy meters.
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V15
Post by: Hooman on September 12, 2018, 10:41:53 PM
Where did the enemies go? As far as the heath bar updates go, I couldn't find anyone to flash me!  ;)

The game got considerably easier though, and I was finally able to completely explore a map.

Side note, you've got kind of an open dungeon theme going on here. There isn't really a concept of rooms. Very unlike the original Rogue in that regards. I also didn't see anythings stairs like that suggested it would lead to a new dungeon, or back some way I'd come.
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V15
Post by: lordpalandus on September 13, 2018, 01:42:58 AM
Sigh.

Anyways, stuff will be different for Alpha V16. Things will be made clearer. Sigh.

EDIT:

I get it, you do not like to read, Hooman. So, how would I, a developer, make a player such as yourself, aware that you are playing an interactive tutorial?

I mentioned in the first post of this thread, in the Changelog that comes with the game, and within the game itself that the first level has been made into the interactive tutorial... one you learn by doing, experiencing things, and exploring the level, free from enemy threats, while the player learns and masters the basic controls.

With the current iteration of the interactive tutorial, you are given a series of tasks, with instructions on how to complete those tasks in the Task List window (Shift + 1), and once you have completed those tasks you can leave the floor. In the next build, I am going to be making it clearer that the interactive tutorial is active, such as mentioning that you can view the task list with Shift + 1 (this keybind is mentioned once in the current build, but it can be easily missed).

Yes, I have noticed that as I develop the game further, it definitely lacks things that Rogue had, namely, Rooms, Permadeath from Death, and Food Timers.

As for your question, there is actually three possible exits to the level; one is found in a corner and the other two are randomly placed in the level somewhere. You'll know you found one if you either find the ">" symbol or an object called a "Descending Runic Gate".
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V15
Post by: Hooman on September 14, 2018, 01:03:37 PM
I explored the whole map, and nothing stuck out as an obvious gateway. Maybe a different symbol or color would stand out more. I suppose I didn't read any of the instructions, but then, after having to click through so many walls of text I had become largely blind to instructions.

Would be nice if exits were highlighted even when not currently visible by the player. Something to make them standout even when the player is far away, though only after they have first been uncovered.

For an interactive tutorial level, perhaps consider making it smaller. You probably don't need a full sized map for a tutorial. I think a smaller map with more limited play space would go better with a smaller more limited tutorial environment. At the very least, there would be a visual cue that something is different. As for monsters and combat, those probably are an important part of an interactive tutorial. Though I noticed previously the levels seem to spawn an infinite and increasing number of monsters. I think a tutorial should have a set number of monsters.

As for rooms, they can help guide an interaction. They limit options. You can only leave through a set number of corridors. That would be particularly useful in a tutorial, where you want to guide a player along a specific path. As the game progresses the number of options can be slowly increased. Perhaps more corridors, to larger rooms, to merged interconnected rooms, to open areas with a handful of obstacles.

I think the open dungeon theme reminds me a bit of the Caves area of Diablo. I think I would rather start in an area like the Cathedral or the Catacombs, where movement is more guided.
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V15
Post by: lordpalandus on September 14, 2018, 02:44:20 PM
Well, I've actually already implemented in this coming build something to address that. The Runestone, Primal Chaos Portals and Descending Runic Gates are now prismatic, constantly changing colors and will even do so when they are out of FOV. The Horde Portals and Ascending Runic Gate are chromatic (not sure right word), and shift between black, grey and white constantly.

The reason I chose the format for the tutorial is to have the tutorial representative of the actual game; exploring a large map, collecting loot, training skills and attributes and gaining levels. The first level, is the "basics" tutorial; it is meant to teach the player the basics of gameplay, such as using the mouse to look around, perform various common commands like crafting items, and exploring the map, without being constantly attacked. The second level, will be the "advanced" tutorial, introducing the player to combat, horde monsters and other advanced topics, and the advanced tutorial will be in the coming up build. If I have time, I'll include the "expert" tutorial, involving Primals, and Endgame related stuff, but may not have time to do so with the other stuff that needs to be in for this build. More likely I'll wait on the expert tutorial until I've figured out how to code in the Portal Levels, Chaos System, Harvester (ever wondered where all those Crystallized came from?), and Primal Chaos abilities are put in.

Again, that (rooms) would defeat the purpose of having a tutorial that represents actual gameplay. The problem I find with many tutorials, is that you are thrust in essentially a controlled laboratory experiment, that is hardly ever representative of actual gameplay, and are taught mechanics that are rarely if ever used in the actual game. For example, while doing the Dishonored 2 tutorial, you have to do a sprinting slide maneuver. In the actual game I never found an actual useful situation where that maneuver would be useful... in the tutorial you had to use it to get under a gate that would close too fast if you simply tried to run and crouch under it.

Don't you mean the lava caverns in Diablo? There were cave sections in the catacombs as optional quests, that were very guided and restrictive.
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V16
Post by: lordpalandus on September 15, 2018, 02:11:19 PM
Released Alpha V16.

Another large release, and updated the first post with a list of major feature changes.
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V17
Post by: lordpalandus on September 22, 2018, 03:39:40 PM
Released Alpha V17.

Mostly a major bugfixing release, with a little more content and the Advanced Tutorial now fully works.
Title: Re: Cataclysm of Chaos, Remade (ASCII) - Alpha V18
Post by: lordpalandus on September 29, 2018, 12:00:20 PM
Released Alpha V18!

This build started work on the Interface overhaul, and about 50% of the overhaul was completed this week. Also fixed a variety of bugs that occurred after the user finished the tutorial.
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V19
Post by: lordpalandus on October 06, 2018, 01:47:58 PM
Released Alpha V19.

Stuff happened. Nuff said.

Also game name change!
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V19
Post by: Hooman on October 06, 2018, 03:29:47 PM
I like the name change  :)
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V20
Post by: lordpalandus on October 27, 2018, 03:02:48 PM
Thanks, Hooman (sorry for the delayed reply). I like it too, and so does the internet, so that is what it shall be.

Released Alpha V20. Major change this week is a complete redesign and overhaul of the item generation system:
1) The original system was written by me, about 5 months ago, when my coding ability was still quite new.
2) That system was about 2000 lines of code long, and it took me about 10-20 minutes, in a long series of steps, to add a new item or enchantment.
3) The new system is less than 500 lines of code long, while retaining all functionality of the old system.
4) I can now add a new enchantment or item to the system, in less than 1 minute and it is now a single step process.
5) I have added several new items and much more enchantments to the game now.

So, despite it taking nearly three weeks to do, I'd still say that the effort was a major success. I've also been thinking about changes to my design and programming process, and have opted for having 5 major tasks to be completed in a month, rather than 10 tasks to be completed each week. I've found that I often underestimate how long it will take to address some tasks and overestimate how long it takes to do others. With an entire month to work on tasks, I can more easily prioritize things and not feel bad if I don't complete them in a week. I have a breakdown of each major task, in the second post of this thread.

I will now get back to doing weekly releases, and simply report what progress I got done on the 5 major tasks, each week. I'm planning on pushing myself, whether realistic or not, to have the first Beta of the game in January of 2019.
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V20
Post by: Hooman on October 27, 2018, 11:09:40 PM
That sounds like a huge benefit from a design and maintenance perspective.

Even better, the knowledge and principles of how you did it can be applied to other things for years to come.
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V20H
Post by: lordpalandus on October 28, 2018, 01:04:55 PM
Hopefuly, yeah!

Also released a Hotfix addressing a few gamebreaking bugs identified by a player off Reddit.
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V20H
Post by: Hooman on November 05, 2018, 12:03:22 PM
I gave the new update a try. The interface seems much improved.

There was one persistent issue that proved to be quite annoying. The game seemed to randomly drop certain keys during game play. For instance, I'd press an arrow key and nothing would happen. I'd press it again, and then the character would move. I noticed this multiple times during game play. The frequency of this is probably < 10%. Might be unrelated, but I seem to notice it more around flashing objects. Perhaps it's a lag issue where keys can be swallowed and forgotten under certain conditions.

More hinting is needed about what certain flashing points do. Moving over them doesn't seem to do anything, and they continue flashing after moving away. And no, I don't want to read the manual to find out why. ;)
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V20H
Post by: lordpalandus on November 05, 2018, 01:07:35 PM
Thanks!

I think it is a libtcod library issue actually. The black-boxed function that watches for inputs, sometimes ignores inputs and other times, duplicates the input and performs it twice. I'm not sure how to fix it at this time. I have noticed that the function is more prone to input errors when there is a lot of stuff going on, in terms of enemy pathfinding, but haven't noticed the issue where it ignores inputs around flashing objects.

Did you do the interactive tutorial? I ask, because the interactive tutorial does try to teach you what things do and how to get information on something by hovering the mouse over it.

EDIT: Also, if you press escape and get to the Pause Menu, there is a Map Legend option in the menu that gives a quick overview of all the objects that you can find on the game map and their colors.

Most things flash to help the user notice them. On some maps some objects are harder to see than others, and thus I made the objects flash to help the player notice them.
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V20H
Post by: Hooman on November 06, 2018, 06:54:08 AM
The flashing is kind of nice, particularly if there is a key objective you must reach, though I would caution about over doing it. Making every object in the game flash is probably going too far. Flashing should be reserved for very important objects, or things that absolutely need attention.

I didn't notice any mouse hover tips, though part of that is being a text game, I didn't think to use the mouse.

Not sure if I noticed the escape menu or not. A legend of symbols would definitely be helpful. I suppose that's one of the problems with text games. A simple character doesn't convey as much information as a fully graphical image could.
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V20HH
Post by: lordpalandus on November 06, 2018, 12:32:25 PM
Most things in the game map that do flash, are very important for the player to take note of. Such as:

1) Enemies flash, so you don't forget about them when you go to move, so you don't die unnecessarily, which always feels unfair.
2) Runic Objects (Enchanter, Pool, Forge) flash so that if you are looking for one to do upgrading, elixir refilling, or crafting, then you don't miss them. Also, they flash on the map out of FOV, so you know where to go after you've passed one.
3) Portals flash, to make you aware of them, so that you don't stay too close to them. That's where the enemies come from.
4) Stairs flash, to help the player find the way out of the sea of ASCII characters.
5) The Runestone flashes, as it is a combination of the Enchanter, Pool and Forge, rolled into one and attuning to it acts as your respawn point.
6) Biome-Specific Lootables and Chaos Strongboxes have the potential of having really great loot inside, and thus the player will want to notice them.
7) Treasure Fiends drop a lot of loot, if you can kill them, making them something the player will want to focus on.

The most important objects flashes prismatically; all 7 colors of the rainbow. So these are biome-specific lootables, Chaos Strongboxes, Treasure Fiends, Primal Chaos Portals, Descending Runic Gates, and the Runestone. Otherwise flashing is there to help a player notice them on varying biomes with different floor colors; ie an Archer is normally Yellow, so that is going to be hard to see on a Light Yellow floor color of the Desolate Ruins biome... so by making it flash, you actually notice them.

Well, that is why I suggest doing the interactive tutorial. It has almost fully phased out the old textual tutorial (which is found in the escape menu if someone ever wants to read it) and helps to teach most players the basics of gameplay so that they can play the game successfully. After implementing the interactive tutorial, the number of complaints from brand new players about not knowing what is going on, has greatly been reduced. So, I suggest you do the interactive tutorial; if it is not active, go to Options at the Main Menu, and activate it (I made it an option to disable it for returning players that didn't want to redo the tutorial). Mouse information appears on a line above your health bar, by the way.

Well, if you ever went to save the game manually, you'd have to press escape (ESC) to do it. If you simply closed the application, forcefully, then it wouldn't save. Unless you had been playing for at least 5 minutes, in which it would have autosaved, or if you had switched floors, then it would also autosave.

Sometimes a simple character can convey a lot of information, but it generally requires the user to play that game a fair bit to be able to recognize quickly what the symbol means. I've tried to work on this system further by color-coded various objects as well, so even if you don't recognize the character, the color of the character is consistent. As an example, all melee horde are blue, all ranged horde are yellow, and all spellcaster horde are red. All melee primals are green, all ranged primals are orange, and all spellcaster primals are purple. Specific walls are always the same color so a person should be able to recognize an illusionary wall from a solid wall.

I understand that narration in games and graphical tiles can greatly improve the UI and the ability for a user to recognize key objects, but right now I'm working with what I have, and trying to do the best I can do with my limited set of tools and abilities.

EDIT: Forgot to upload the second Hotfix here. Updated main post!
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V20HH
Post by: Hooman on November 07, 2018, 11:10:42 AM
You just listed 7 flashing items. That sounds like way too many. Be careful your game doesn't end up looking like a porn advert.

Quote
Well, that is why I suggest doing the interactive tutorial. It has almost fully phased out the old textual tutorial (which is found in the escape menu if someone ever wants to read it) and helps to teach most players the basics of gameplay so that they can play the game successfully. After implementing the interactive tutorial, the number of complaints from brand new players about not knowing what is going on, has greatly been reduced. So, I suggest you do the interactive tutorial; if it is not active, go to Options at the Main Menu, and activate it (I made it an option to disable it for returning players that didn't want to redo the tutorial). Mouse information appears on a line above your health bar, by the way.

This leaves me feeling like I need to read a tutorial just to figure out how to load up the interactive tutorial.  :(
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V20HH
Post by: lordpalandus on November 07, 2018, 12:15:21 PM
All things listed are important for their own specific reason. I could perhaps look into reducing the list down to a more reasonable number of flashing objects... perhaps:

1. I could give specific enemies a unique color on tilesets that they are hard to see on. So, if Yellow is hard to see on a Light Yellow background, maybe have archers a dark yellow color to make them stand out better. I made these critters flash originally because players kept reporting getting attacked when they couldn't see any foe within FOV.

2. I could reduce the frequency of flashing for less important objects. Runic objects are important, but aren't critical for most moment to moment decisions (unlike enemies), so maybe reduce the frequency of their flashes by 50%. Have them flash on occasion... to make more of a sparkle effect, to remind you they are there.

3. The other objects listed need to flash, to indicate their importance. People have complained about missing staircases (descending runic gates) so I need to keep them flashing. Portals will be of great importance next month when I work on creating side-levels with them (sore of like how oblivion gates worked in Oblivion) and currently are where enemies spawn. Runestone is by far the most important object in the level. The last three are important for player choices; risk v reward mechanism.

=====

The interactive tutorial is on by default. Unless you are not using the default profile that comes with each release, the tutorial should be active when you boot up the game. The option to disable it is there for players who've done the tutorial at least once, and don't care to do it again.
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V20HH
Post by: Hooman on November 08, 2018, 01:38:25 AM
In regards to the flashing, you might apply the phrase:
"If everything is a priority, then nothing is a priority"

Adjusting colors to maintain contrast for different color themed areas sounds like a good solution.

I don't think enemies need to flash, but when they attack, perhaps there should be some kind of flash or animation then. Attach the visual cue to the important event, rather than the object itself.

Rather than flash, you might also consider having a static color that shows through the current visual field, while other objects turn simple black/white when out of the field of view. That way important discovered objects stay prominently visible on the map. I think that would work well for stairs.



As for the interactive tutorial, I think that should simply be the beginning levels of the game, rather than something separate.

If game concepts are incrementally introduced, that gives time to learn them. As for my first experience, there were so many different enemy types introduced all at once, there was no real time or way to learn much about them. They were all just a hoard of monsters, with no clear distinguishing characteristic. Maybe introduce one new monster type every level or two, rather than all at once.
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V21
Post by: lordpalandus on November 10, 2018, 07:05:33 PM
Updated to Alpha V21

Implemented the two major tasks, and some quality of life stuff for this release.
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V21
Post by: Hooman on November 16, 2018, 06:43:05 AM
Of course this means I have to go look up what "two major tasks" are, which requires remembering you've been editing the first post of your thread (which isn't all that obvious).  ::)

If you post the details of the update in the new message, you'd end up with a nice history of how the project has evolved.  :D
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V21
Post by: lordpalandus on November 16, 2018, 05:40:32 PM
Interesting feedback. Back when I did modding for games like Space Pirates and Zombies, people would always complain when I provided the update information in the post and kept complaining until I put all of the updated information in the very first post of the thread. They'd always say that people check the first post, of any thread they visit, for the most up to date updates.

Although to be fair, I have been a bit lazy about updates here. Criticism of any kind has dried up both on Reddit, Roguebasin, and here, so I figured that if people really are that interested in what changed, they'd either check the changelog or the longterm plan, that comes with each release.

If you want, I will go back to a more verbose style of updates here, and post the update in both the first post and in the post announcing the update.
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V21
Post by: Hooman on November 16, 2018, 08:32:05 PM
I suppose there will always be someone who complains about something, no matter what you do. :P

As for criticism drying up, it could be that you need to make it easier for people to provide criticism. If the effort is too high to check new changes, people might stop. In particular, if they don't know what changed between releases, they probably won't go looking to find out.

The other part is people sometimes simply get tired of checking out new changes. Though that could be an indication they aren't having a whole lot of fun or excitement.
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V22
Post by: lordpalandus on November 17, 2018, 08:17:24 PM
Very true.

Well, next build I'll look into producing some gifs to go along with the release, so that should help to partially address this.

Well, I know that some people do get burned out from constantly playing / testing releases, so that might be part of it. This recent build should increase the amount of tension and challenge in the game, so hopefully this lack of feedback changes.

-----

Anyways, new release. Also, noticed that the longterm plan is in the second post, in case you wanted to at a glance look at the major tasks I have set out for myself for the time being. I don't think I'll get everything done in two months, but I should be significantly closer to a beta once I get as much as I can done in the next two months.

This is the 22nd Alpha Release:
-> Completed the about half of the major task: Challenge (Longterm Plan is in the second post by the way)
-> Overhauled the Chaos system, making the game more challenging in mid to late game.
-> Added story primers for each of the Adventurers in the Journal.
-> I also recently purchased a bundle of sprites and sound effects off Humble bundle, so I can look into testing out that stuff sooner, rather than later.
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V22HH
Post by: lordpalandus on November 20, 2018, 03:17:24 PM
Updated the game to Hotfix 2 (forgot to post Hotfix 1 yesterday).

Both hotfixes fixes a gamebreaking bug and provides some additional balancing for the Entertainment Value system.
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V22HH
Post by: Hooman on November 21, 2018, 01:44:58 AM
And I completely forgot about (or was never much aware) of the second post containing a long term plan.

Interesting that you've purchased a graphics and sound bundle.
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V22HH
Post by: lordpalandus on November 21, 2018, 09:33:56 AM
Well, the second post was originally used to store my weekly task list. Since I got rid of that, and switched over to a monthly task list, I decided to reuse that post to share the production goals for that month.

The reason I bought was threefold:

1. I do intend to offer the option to tile the game and have sound effects. Having a bunch of visuals and sounds to mess around with is very useful for testing purposes.
2. I do intend to look for funding at some point. Having even just placeholder graphics and sounds, can go a long way to encourage people to invest into it. Then when the funding drive succeeds, I'd have an idea of how I want the game to look and sound, and thus be able to more easily find artists with a particular visual style (or even the original creator) and particular sound style. Art and sound get expensive when the developer constantly requires them to redo their work because it wasn't quite what the developer wanted; communication failure. By having a particular art and sound style determined already, it will make it a lot easier to narrow down the specific requirements of game assets.
3. If the funding drive fails, which considering that your first, second, third, etc... may not be finicially viable (especially in todays market), then I can safely keep the visuals and sounds without concern about legality, finish off a few last features and release it, then move onto the next project once it is finished. Even if it isn't worth money to players, finishing off a completed game is quite the achievement in of itself.
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V23
Post by: lordpalandus on November 25, 2018, 10:35:01 PM
Released Alpha V23:

-> Added powerful bosses that cannot be hurt by normal means. They can only be killed with a Holy Hand Grenade, and give roughly 2-4 times more loot and xp than a Treasure Fiend.
-> Made the character symbol change color to grey or black when stealthed; white when visible.
-> Changed Fabrication costs to create an Epic item with the Runic Cube of Fabrication.
-> Didn't manage to get any of the work for Artifacts started yet.
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V23
Post by: Hooman on December 01, 2018, 03:55:48 AM
Ok, I kind of have to lol at "Holy Hand Grenade" (https://www.youtube.com/watch?v=xOrgLj9lOwk).

The character color change seems like a good and intuitive idea.
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V23
Post by: lordpalandus on December 01, 2018, 02:34:35 PM
Well, the language is Python, and I think that makes it fair game for Monty Python references.
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V23
Post by: Hooman on December 01, 2018, 11:52:44 PM
Fair point, yes. I hear that's how the language got it's name. I've also read that you're encouraged to put random Monty Python quotes throughout your code. Probably not an actual good programming practice in general, but an amusing suggestion.
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V23
Post by: Vagabond on December 02, 2018, 06:08:48 AM
That's pretty clever. Nice Easter egg for a player to stumble on I think.

-Brett
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V24
Post by: lordpalandus on December 03, 2018, 06:39:06 PM
This is the 24th Alpha Release. Main page links updated.

-> Added three powerful artifacts, that remain best in slot at all times, scaling in power as you go deeper into the game.
-> Added the Trials menu (Shift + 4), and 6 Trials. Completing a Trial, ends the game in a Victory, doing everything that they properly need to do so. The ending message is a bit bare bones at the moment. Saving Shift + 3 for the Milestones menu, which will allow for unlocking Legendary Runes (which didn't make it in this release).
-> Fixed a bunch of nasty crash bugs, that delayed the release for 2 days. Everything should be running smoothly now. I hope.
-> Moving closer to the Beta release now!
-> Got roughly (albeit in most cases bare bone frameworks) 70-80% of my monthly November goals accomplished. This week I'll try to get my Legendary Runes to work (so that I can attach some to my Artifacts) and start working on Map Generation improvements.
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V25
Post by: lordpalandus 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!
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V25
Post by: Hooman 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.
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V25
Post by: lordpalandus 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.
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V25
Post by: Hooman on January 16, 2019, 02:25:49 PM
Ahh, perhaps you'll want to give Semantic Versioning (https://semver.org/) a read.
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V25
Post by: lordpalandus 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!
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V26
Post by: lordpalandus 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/
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V28
Post by: lordpalandus 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)



Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V28
Post by: Hooman 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.
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V28
Post by: lordpalandus 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.
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V28
Post by: Hooman 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.
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V28
Post by: lordpalandus 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.
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V28
Post by: Hooman 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. ;)
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V28
Post by: lordpalandus 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.
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V28
Post by: Hooman 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/
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V28
Post by: lordpalandus 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.
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V28
Post by: Hooman 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.
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V29
Post by: lordpalandus 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
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V29H
Post by: Hooman 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.
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V29H
Post by: lordpalandus 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.
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V29H
Post by: Hooman 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?
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V29H
Post by: lordpalandus 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!
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V31HH
Post by: lordpalandus 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
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V33
Post by: lordpalandus on June 08, 2019, 05:05:41 PM
Released V33 today.

Monthly update, and game links are in main post as usual.
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V33
Post by: Hooman on August 16, 2019, 07:48:09 PM
Hmm, curious, I noticed your most recent version had 15 downloads. Increased interest?
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V36
Post by: lordpalandus on August 31, 2019, 01:45:46 AM
So, its been a while since I last posted here. I have a 3-month update on Roguelikes that goes into better detail = https://www.reddit.com/r/roguelikes/comments/cxspdh/3month_update_empires_of_eradia_the_cataclysm_of/

The tl;dr version = Bad stuff happened, and I am embarking on a necessary codebase rewrite of the entire game. 

Otherwise:

Binary V36 = https://www.mediafire.com/file/d42hrh4q9xlt640/Binary_V36.zip/file

Main post will have the uncompiled version.
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V36
Post by: Hooman on September 02, 2019, 11:18:57 AM
I like that the code is uncompiled now  :)
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V36
Post by: lordpalandus on September 02, 2019, 12:39:42 PM
Wasn't the main post always uncompiled? I can't remember.

Anyway, I'm working on a hotfix to address some minor issues in the Tutorial.
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V36
Post by: Hooman on September 02, 2019, 01:52:53 PM
I think you had one archive with the original source, back at like V8 or so. After that I remember it being mostly compiled.



Thought I'd mention a common coding pattern, and how it can be refactored to something shorter.

Code: [Select]
if booleanExpression:
  flag = True
else:
  flag = False

This can be shortened to:
Code: [Select]
flag = booleanExpression



For a concrete example from Player.py:
Code: [Select]
def Exploit_Fear(obj):
    if obj.fighter and obj.fighter.feared == True: 
        FearAdvantage = True
    else:
        FearAdvantage = False   
    return FearAdvantage

This can be shortened to:
Code: [Select]
def Exploit_Fear(obj):
    return obj.fighter and obj.fighter.feared


Edit: Looking at the function name Exploit_Fear versus the variable name FearAdvantage, it seems the later may be a better description. The name Exploit_Fear is a verb phrase, but it's a get method, rather than an action with side effects. It may be more clear it name it as FearAdvantage, a noun phrase describing the value being returned.
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V36
Post by: Hooman on September 02, 2019, 03:19:27 PM
Looking in Inventory.py, another section which can probably be shortened:
Code: [Select]
    if len(List_Equip) > 0:
        for Equipment in List_Equip:

If the length of List_Equip is 0, then the loop should be skipped entirely anyway, so the if doesn't provide any real protection. This can be shortened to just:
Code: [Select]
    for Equipment in List_Equip:


If there is a chance that List_Equip is not an iterable object, then you may want an if guard. However, by testing len(List_Equip) > 0, you're already making an assumption that it is iterable (or at least that it provides a length). Not to mention the variable has "List" in the name, so if it represented anything other than an iterable list, you've got bigger problems.

If for some reason you have a nullable type, which might represent a list, or might represent a null value, then it may make some sense to test first. Same if you have a variant type, where the type can change, so you can't know if any given property will exist. For more on that, you might consider reading:
How to know if an object has an attribute in Python
 (https://stackoverflow.com/questions/610883/how-to-know-if-an-object-has-an-attribute-in-python)
I would pay particular attention to the discussion of look before you leap versus asking for forgiveness rather than permission. It seems idiomatic Python may be to catch exceptions after the fact, rather than test for the existence of a property before hand.



Here is another example where an if test seems to be making an assumption about the value which it seeks to protect from:
Code: [Select]
            if Equipment.equipment.melee_damage_bonus > 0:
                Melee_Damage += Equipment.equipment.melee_damage_bonus

Presumably not all objects are weapons, and so not all objects will have melee_damage_bonus, and so you're only adding in the bonus for objects of the correct type. However, the if test accesses this field and compares against 0, and so implicit is an assumption that melee_damage_bonus exists as a field, and is a number. Assuming the only problem number is 0, you can just add it anyways, as it won't change the result. If objects that aren't weapons will have melee_damage_bonus set to 0, adding it unconditionally is still correct. I'd recommend just using:
Code: [Select]
            Melee_Damage += Equipment.equipment.melee_damage_bonus

Granted, the results are different here if negative values are allowed. I assume they aren't, or if they were allowed, they maybe should have been added in anyway.


A possible exception to the above, some languages will return a null value for fields that don't exist, rather than throw an error, and some languages can have unexpected comparisons when dealing with certain values, such as infinity, non-a-number (NaN), or null. As an example, if melee_damage_bonus was set to NaN, you might not want to add in the bonus. And as a cool effect, infinity should compare greater than 0, so that will be added in as a bonus.  :)
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V36HH
Post by: lordpalandus on September 02, 2019, 04:42:27 PM
Exploit_Fear is only used during combat calculations to check if you have an opposing element (ie to exploit fear, you use cold or shock). The returned FearAdvantage tells the combat code to critically hit the target and then it removes the fear effect after critically hitting them.

A lot of the reason for the rewrite is because coding standards, practices, and methods are different throughout the codebase and the rewrite is meant to bring everything up to spec.

Anyway, released the second hotfix, grabbed here or on the main post:

https://www.mediafire.com/file/fopck6ef5zq5ylq/Binary_V36HH.zip/file
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V36HH
Post by: Hooman on September 02, 2019, 10:28:46 PM
Point taken. As the project is a simple archive, there is no version control history, so there's no info on how old any given section of code is. I was probably looking at one of the older sections.
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V36HH
Post by: lordpalandus on September 03, 2019, 02:01:53 AM
Well, the Inventory.py is a refactoring of very early code (believe I implemented it in Prototype 5 or 6), which roughly took up about 8 times more lines of code and had a ton of redundancy. It is not to say it couldn't benefit from more work, but from what it was, it is a massive improvement.

Similarly, the exploit fear code was very early stuff, that I haven't touched in over a year. Improvements could definitely be made for that stuff.

But basically, I've learned a lot about coding, refactoring, and designing out good code, so I figure it is time for a rewrite. I'd prefer to keep refactoring it, but there comes a time in development where it is faster to rebuild than to refactor. And as the refactor was looking like it would require ripping out over 60% of the codebase, I figured I should stop putting off the rewrite and just get it over with (as I have known for a while now that I'd probably need to do a rewrite, but I had been putting it off to attempt to refactor it).

Also, not sure I mentioned it anywhere, but I have a Trello board, that I'm using to keep progress on the rewrite for anyone interested in knowing how that is going. I also do updates on my subreddit. I plan on releasing a few tech demos, once the rewrite is a bit farther along to show off some of the new stuff I'm including into the rebuild. I believe you need an account with Trello to view the board, but its not private so you should be able to see it without an invite. Though I don't know as I've not used Trello before.

Trello = https://trello.com/b/orskgQxa/eoe-the-cataclysm-of-chaos
Subreddit = https://www.reddit.com/r/EmpiresOfEradiaCOC/
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V36HHH
Post by: lordpalandus on September 05, 2019, 09:10:22 PM
More bugs identified by players, so additional hotfix is ready.

Link = https://www.mediafire.com/file/ledx1xm55epfoey/Binary_V36HHH.zip/file
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V36H6
Post by: lordpalandus on September 09, 2019, 07:12:31 PM
Even more bugs identified by players (and I forgot to upload them here):

https://www.mediafire.com/file/md50ko48v9ic9q6/Binary_V36_Hotfix_6.zip/file

Also includes a potential method of modding the game, for those interested.
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V36H6
Post by: Hooman on September 18, 2019, 04:50:07 AM
Sometimes a rewrite may be faster, though I've found refactoring to be such an important skill that I generally tend to try and exercise it anyway. I've also heard that statistically, a rewrite carries a great chance that a project will fail. When doing a rewrite, there tends to be a lengthy period of time when the project either doesn't build, or builds but produces a less complete and inferior seeming program. Something about the psychology of that situation has a way of killing momentum. By refactoring, you maintain a working and complete program, which sidesteps some of the psychological barriers.

Trello is awesome. I used to use it, though at some point let it fall by the wayside.

I've recently learned GitHub has a project board similar to what Trello offers. I haven't really played with it yet though. Apparently it can automatically move cards around as you check in code, based on tags in commit messages. I should really get around to giving it a try.
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V36H6
Post by: lordpalandus on September 19, 2019, 12:53:06 AM
Yeah. I've preferred to refactor it in the past for this very reason, but I'm projecting that it will take about 4-8 weeks to refactor the chunk of code (roughly 60% of the codebase has the issue) that desperately needs addressing, and the rewrite would take about 3-6 weeks, to repair all of the codebase. In the past it has been faster to refactor and so I've refactored it, but the seriousness of the problems that I'm currently facing, the rewrite looks faster, and thus far hasn't been an issue yet.

I think the number of projects that fail due to a rewrite is above 50%. So the odds are stacked against me to succeed, but honestly, if I'm willing to put the effort in, then there shouldn't really be any concern. I'm currently bogged down with reading through the libtcod documentation. A bunch of my game's problems is due to a lack of understanding of how to create UIs, UI elements (ie buttons, scrolling, line highlighting, etc...), and how to modify menus. The docs explain hwo to do stuff... not well, but they explain stuff.

The game is fairly stable at the moment. All my duct-tape is keeping things from flying apart. Its only if I try to add new stuff, will it threaten to fly apart. Some bad design decisions, introduced when i didn't know how to code well is what is creating issues. Hence why a rewrite is faster, as I've learned a whole lot more in the past several months.

...

Interesting on Github. I didn't know it has such a feature.
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V36H6
Post by: Hooman on September 20, 2019, 06:47:42 AM
Speaking of GitHub and refactoring, the op2ext library has recently been getting a lot of refactoring. An example of one of the smaller branches that was recently completed is:
Update windows error reporting #127 (https://github.com/OutpostUniverse/op2ext/pull/127)

You can click on each of the commits to see a color highlighted diff of each of the committed changes. Aside from one or two commits, most of them are very small and targeted, making them easy to read and understand (well, assuming you know a bit of C++).

If you look closely next to the commit hashes, some of them have green check marks. Those indicate the code was built and passed all units tests. If there was a problem, it'd show a red X instead. Not all commits have a build and unit test run associated with them. The builds and unit test runs can sometimes take a little while, so for faster feedback, the continuous integration servers don't build every commit. They only build the most recent commit after a push.

From the two green check marks you can determine a bit about the pace of development. The first set of commits were done together, and then pushed up to GitHub where the continuous integration servers saw them and did a build. A short while later another few commits were pushed up to GitHub triggering another build and test run.

You can also see some code review comments further down in the thread below the commits. The reviewer can make comments on the code, and can choose to also accept or reject the changes. It's possible to not allow merging of the changes without an approving review, or when there is a rejecting review, though none of the OPU repositories are setup that way. Anyone that's part of the organization can just merge if they feel like it. Waiting for review and following the recommendation is more of a convention.

Towards the very top of the page is a link to a list of Issues, and a list of Pull Requests that are still awaiting review and approval (and sometimes are still being finished).
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V36H6
Post by: Hooman on November 02, 2019, 02:55:42 PM
I was just thinking back to your project today, and it got me wondering what Python has in terms of Continuous Integration support. This got me thinking more specifically about Unit Testing. It seems Python has built-in support with unittest (https://docs.python.org/3/library/unittest.html). I thought it might be worth taking a quick look at the "Basic example" section. Having a few unit tests could potentially really help with refactoring.
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V36H6
Post by: lordpalandus on November 04, 2019, 12:42:17 AM
Looks like there is also a unittest module for the version of Python I'm using (2.7). I'll give it a read over and figure out how to use it. Thanks for suggesting it. Also looks like I forgot to update the thread here as well. However, as the current uncompiled build is a bit of a mess as it is mid-refactor, I figure I'll just update the thread once V39 is released. V39, will be a major overhaul of a lot of systems, so it will be worth the wait.
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V39
Post by: lordpalandus on May 07, 2020, 08:32:31 PM
After many months of development hell, dodging burnout and depression, here is a new build.

It has a new form of changelog and known issues, allowing you to view them in their entirety from within the game itself.

Link = https://www.mediafire.com/file/dmbpqthbm6cr0jw/Binary_V39.zip/file
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V39H1
Post by: lordpalandus on May 09, 2020, 01:39:00 PM
Released a Hotfix addressing a few issues raised by some players.

Link = https://www.mediafire.com/file/8m17oj647bk5u3e/Binary_V39H1.zip/file
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V39H2
Post by: lordpalandus on May 09, 2020, 10:26:35 PM
Released a second hotfix, fixing some more typos and some more crash bugs.

Link = https://www.mediafire.com/file/g8pi4ani3uy0qx4/Binary_V39_H2.zip/file
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V39H2
Post by: Hooman on May 21, 2020, 10:15:48 PM
You know, I was actually thinking of asking about this project right before you posted. I didn't get around to downloading the update until just now though.




As per usual, I like to peruse the source code, and see if there is anything that can be tweaked. The following method caught my eye:
Code: [Select]
def Distance_To_Object(Me, You):  
    '''This function determines the distance between two objects and. makes negative values positive.
    It then determines which value is higher, and returns that value to the calling function.'''
    X_Value = Me.x - You.x 
    if X_Value < 0:
        X_Value = X_Value * -1
    Y_Value = Me.y - You.y 
    if Y_Value < 0:
        Y_Value = Y_Value * -1
       
    if X_Value > Y_Value:
        return X_Value
    else: #less than or equal.
        return Y_Value

First off, I noticed the "X_Value * -1", which seems very mathematical, and something I've sometimes been tempted to write. It can of course be simplified using unary minus "-X_Value":
Code: [Select]
X_Value = -X_Value

Of course, each if block is just performing absolute value:
Code: [Select]
if X_Value < 0:
        X_Value = -X_Value
There is an absolute value function:
Code: [Select]
X_Value = abs(X_Value)

That can of course be combined with the subtraction expression, resulting in more simplified code:
Code: [Select]
X_Value = abs(Me.x - You.x)
Y_Value = abs(Me.y - You.y)

The next if block is then determining the max value:
Code: [Select]
    if X_Value > Y_Value:
        return X_Value
    else: #less than or equal.
        return Y_Value
There is also a function for this common operation. It could become:
Code: [Select]
return max([X_Value, Y_Value])

Of course you can inline expressions, so the function becomes:
Code: [Select]
def Distance(obj1, obj2):
    return max([abs(obj1.x - obj2.x), abs(obj1.y - obj2.y)])



But wait, there's more! :P

If you were to represent positions as compound (x, y) objects, rather than as individual components x and y, you could potentially do vectorized operations, which work on all components simultaneously (from a programming interface perspective, more so than a computational hardware persepctive). In particular, you're doing the 2D case of: Point - Point = Vector

Imagine instead of individual x and y components, you had a single object representing the compound value (x, y), and imagine that it had overloaded subtraction operations. You would then be able to write code such as:
Code: [Select]
obj1.position - obj2.position
That could effectively represent a conceptual vectorized operation:
Code: [Select]
# Not valid syntax
(obj1.position.x - obj2.position.x, obj1.position.y - obj2.position.y)

Since it's very common to operate on both x and y components together, and in the same way, this can save a lot of typing over a large code base.

If the resulting Vector result was also an object, it might provide a length method representing your chosen distance metric. In particular, the maximum of the difference between x and y values. The function could then be written as:
Code: [Select]
def Distance(obj1, obj2):
    return (obj1.position - obj2.position).length


I haven't done much work with Python, but a quick Google search shows it is capable of operator overloading:
Operator Overloading in Python (https://www.geeksforgeeks.org/operator-overloading-in-python/)

The Complex number class looks very similar to the code you would need for a Point (position) or Vector (displacement) class.
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V39H2
Post by: lordpalandus on May 23, 2020, 08:12:47 PM
1) I didn't know that I could just do:

X_Value = -X_Value

2) I don't use absolute value function because I'm trying to make this function as highly performant as possible. It is used in three main chunks of code (its used elsewhere, but these are the big ones): the renderer for gradient shadow effect, enemy pathfinding when A* isn't used, and targeting foes with AOEs. As such, this particular function is called anywhere from 1000 to 3000+ times per turn. From what I understand, absolute value takes more ram and cycles than multiplication, so I use multiplication. Yes it may be peanuts in terms of differences in today's limits, but I have to keep in mind that not everyone has a powerful rig like I do, that may be playing the game. I am trying to address other bottlenecks that are more obvious a problem, but as this one does get called a lot each round, I wanted as good performance as I could get out of it. Before I made this function call, I was using square root to calculate distance, which was then converting the value from a decimal to an integer.

3) I forgot about the Max function, when designing this function. Thanks for the reminder.

4) I try to avoid inline statements as I find it harder to read, and figure out what it does. I have this function and other functions in that file as commonly used functions. When I visit that file looking for an ideal general-case common function I want to be able to look at it quickly and pick the ideal one out of the bunch. Or build a new one, if one isn't present.

EDIT:

Don't I have a function in that file, that does what you discuss? Like this function:

Code: [Select]
def Distance_To_Coordinates(Me, X, Y):
    X_Value = Me.x - X
    if X_Value < 0:
        X_Value = X_Value * -1
    Y_Value = Me.y - Y
    if Y_Value < 0:
        Y_Value = Y_Value * -1
       
    if X_Value > Y_Value:
        return X_Value
    else: #less than or equal.
        return Y_Value   

It uses just the object's x,y coords with submitted x,y coords provided for it. I believe this function is used by the Treasure Fiend's Blink ability, which teleports it to a random point on the map.

Also why is that not valid syntax? With class composition, it should work...

obj1 is the owner class, position is a class member variable and x/y is a member variable of the position class.

I might be able to convert the obj.x = a and obj.y = b to obj.position = (x, y). The complexity however is the Tile class and how the map is stored into memory. How it works is it creates a nested list comprehension of 0 to map width and 0 to map height, and makes each x and y, an instanced object of class Tile. For example:

Code: [Select]
    LIST_Map = [[ Tile(True)
             for y in range(MAP_HEIGHT) ]
           for x in range(MAP_WIDTH) ] 

Thus, when it checks for blocked tiles, it checks in this fashion:

Code: [Select]
    LIST_Map[x][y].blocked     #with .blocked a member variable of class Tile

So, I tried to change it from a list, to a dictionary of x,y coordinates, and the libtcod library really, doesn't like it and refused to display the map. Some internal, poorly blackboxed function requires it to be stored in a list, in this fashion of list_map[ x ][y], otherwise the map fails to be placed on the screen. Not sure why, and don't have access to the C source, so I cannot really say why it does this.

There is a lot of things about libtcod that I don't like, as I spend more time working on it. So, I'm doing what I can to phase in improvements now with each build, and clean up the codebase as I go along. Right now, V40, is in the process of rebuilding and updating the XP Calculating and Awarding systems.
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V39H2
Post by: Hooman on May 24, 2020, 03:32:06 PM
Yes, the code I initially presented was pre-existing, taken from your project. I was giving an example of how to shorten it.

As for the supposed invalid syntax, you're right, that does seem to be valid syntax for Python. Though with the slight caveat that it produces a Tuple, rather than another Point object.

As for the abs() function, it's a very cheap function to call. There's a good chance it is implemented as a simple conditional, much like you already had. That's often how I see it implemented in standard libraries for various languages. Actually, when translated to assembly code, it can be done even without a conditional branch. Having branch free code can help prevent pipeline stalls. A common instruction sequence uses the 2's complement identity where flipping the bits and adding 1 produces the negative of the previous value. The typical absolute value sequence I've seen in Outpost 2 code consists of 3 assembly language instructions:
Code: [Select]
cdq  ; Sign extend eax into edx  (convert double word to quad word) (edx becomes 0 if eax is positive, and -1 if eax was negative)
xor eax, edx  ; (conditionally flip bits: eax is unchanged when edx is 0 (eax is positive), and flipped when edx is -1)
sub eax, edx  ; (conditionally add 1: eax is unchanged when edx is 0 (eax is positive), and adds 1 when edx is -1)

All 3 instructions are very cheap, and with low latency. In contrast, a multiply instruction, while still being reasonably cheap, tends to have higher latency. The end result is these 3 instructions are likely comparable in executable time to a single multiply instruction, and the multiply would need to be somehow made conditional, so you'd need an extra instruction or two to handle that.

Now if you convert inline if block code to a call sequence, there may be overhead from the call sequence, so I don't know for certain if abs() of an if block would be faster. Though the difference would be so small, it would be hard to measure. You'd probably need millions of iterations to reliably measure a difference, and even then, the difference may be lost in statistical variations. Plus, given the nature of Python being an interpreted language, it could be the abs() function is highly optimized, or inlined, and perhaps executes faster than a compound if statement could be interpreted. It's hard to say without measuring it. Very likely though, there won't be a significant difference either way.

I would encourage you to measure the difference if you're concerned about speed matters. The results might be interesting.



There will be a different memory layout between a list and a dictionary. If libtcod is coded in C, then it likely uses a fixed memory layout, and so you'd need to pass values that match that expectation. That may be why it requires that data in list format.

Anyway, I'm not too certain what the difficulty is concerning LIST_map. If the x and y values were packed into a single object, you can still unpack the values manually where needed (and generally only deep in the API, in very few places):
Code: [Select]
LIST_Map[position.x][position.y].blocked
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V40H1
Post by: lordpalandus on June 14, 2020, 08:51:28 PM
Ok good to know. Thanks for the indepth reply.

EDIT:
Also, released a hotfix for V40, making the tutorial completeable again (V39 apparently broke a whole lot of the tasks).

Link = https://www.mediafire.com/file/hjecrau6kf939yb/Binary_V40H1.zip/file
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V41
Post by: lordpalandus on July 01, 2020, 06:16:10 PM
Finished work on V41 for anyone interested. Link = https://www.mediafire.com/file/8fcvcslaea7qrlh/Binary_V41.zip/file

This release focused on improving the UI significantly in a lot of different areas and added a bunch of lore to the game, found in external text files (for better readability, until I can figure out a more permanent solution).
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V43
Post by: lordpalandus on September 08, 2020, 01:51:07 PM
After a long trial of bugs, delays, and headaches, V43 is finally ready for consumption.

I'll be posting a 3-month update on Roguelikes, and I'll update this post when that is ready (as well as the main page, as usual).

Link = http://www.mediafire.com/file/fvl1v3eh4h73mh7/Binary+V43.zip/file

EDIT = 3 Month Update = https://www.reddit.com/r/roguelikes/comments/ip0lde/empires_of_eradia_the_cataclysm_of_chaos_3_month/
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V43H
Post by: lordpalandus on September 10, 2020, 01:42:56 PM
Got a lot of good feedback, recently, and pushed out a hotfix release fixing a lot of things.

Biggest change is I found a pair of very readable, rectangular, Terminal fonts, that has improved the game drastically. Defaults to 8x12, but a 10x16 is available.

Link = http://www.mediafire.com/file/6cr9zer14et2bx7/Binary+V43H.zip/file
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V43H2
Post by: lordpalandus on September 12, 2020, 07:43:37 PM
Got some more good feedback, and pushed out the second hotfix.

Link = http://www.mediafire.com/file/ggd1fnxyb68v9yh/Binary+V43H2.zip/file

Fixes a rare crash bug, adds some new fonts, and severely reduces the amount of text in most menus, making them much cleaner and easier to use.
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V43H2
Post by: Hooman on October 05, 2020, 11:13:57 PM
Oh hey, good that you're keeping up with this. I missed like 3 updates.

I should probably check the forums more regularly. I've been a bit spotty about that as of late, though that may be due to broken notifications.
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V43H2
Post by: lordpalandus on October 06, 2020, 05:34:48 PM
Yep, still chipping away at it. V44 is nearly ready for consumption (have a bit more UI cleanup, some balancing of numbers, and then bughunting run). Then V45, will be a more technical focused release, as I implement an Event Handler and Dispatcher into the game. That might take a while; codebase is coming close to 30,000 lines of code.

To be fair, not a whole lot has happened on the forums in the past few weeks. I think the gog release of Outpost 2 has put a damper on a lot of projects, as those projects relied on the old exposed code, and now have to be somehow updated to the new form.
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V44
Post by: lordpalandus on October 09, 2020, 12:54:00 AM
New update is finally ready for consumption. Link = http://www.mediafire.com/file/kq93kd8a3owgdmy/Binary+V44.zip/file
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V43H2
Post by: Sirbomber on October 09, 2020, 10:56:44 AM
To be fair, not a whole lot has happened on the forums in the past few weeks. I think the gog release of Outpost 2 has put a damper on a lot of projects, as those projects relied on the old exposed code, and now have to be somehow updated to the new form.
The mission development API is what it is, so there's no "new form" that anything needs to be updated to.  If anyone wanted to change it, they'd need to have access to the OP2 source code, and then also access to the source code for all the base missions, since those would also need to be updated to work with any hypothetical new API.
Also: Speak for yourself.  I've been quite (https://forum.outpost2.net/index.php/topic,6352.0.html) busy (https://forum.outpost2.net/index.php/topic,6363.0.html).
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V44
Post by: Hooman on October 11, 2020, 10:53:56 AM
The GOG release had implications for the main game package, though that got sporadic attention at best. The other projects have generally been quite careful about avoiding potential copyright issues. The nature of the GOG release also avoids potential binary compatibility issues. I get the sense they no longer have the source code, so they're limited in what they can change. It would be a huge amount of effort on their part of break binary compatibility in such as way that new missions or addons would be affected.

I suspect any lull in activity is just the periodic ebb and flow of how things go here.

The OPHD project has had quite a bit of activity over the past year or so. Mind you, a lot of that discussion happens over on Discord, rather than on the forums.

Btw, you should drop by on Discord sometime. (Do we have an official Discord thread or link anywhere?)
(Edit: Found a relevant thread link: Topic: Discord question (https://forum.outpost2.net/index.php/topic,6308.0.html))
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V44
Post by: lordpalandus on October 11, 2020, 11:12:52 PM
@Sirbomber; I'm always busy.

@Hooman; I didn't know OPU had a discord.
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V44H1
Post by: lordpalandus on October 13, 2020, 03:21:20 PM
Minor hotfix addressing two reported bugs:

http://www.mediafire.com/file/abfltd0b0uol3fm/Binary+V44H1.zip/file
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V44H2
Post by: lordpalandus on October 20, 2020, 12:56:52 AM
Another hotfix is ready for player consumption = http://www.mediafire.com/file/qcx870gfk5pwsf9/Binary+V44H2.zip/file

Fixes a variety of bugs and some other changes. Ingame changelog tells all!
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V44H3
Post by: lordpalandus on October 20, 2020, 02:51:56 PM
A third hotfix is ready, after further feedback from players, fixing additional bugs.

Link = http://www.mediafire.com/file/cxadj5nicbhkdts/Binary+V44H3.zip/file
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V44H5
Post by: lordpalandus on October 22, 2020, 04:43:59 PM
Two more hotfixes, close together, so didn't bother with uploading the 4th. But here is the 5th!

Link = http://www.mediafire.com/file/tdmo5x0kjkpj6c4/Binary+V44H5.zip/file
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V44H7
Post by: lordpalandus on October 24, 2020, 12:30:13 PM
Got more feedback, so heres the latest hotfix.

Link = http://www.mediafire.com/file/xcqwpguvq6lgi93/Binary+V44H7.zip/file
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V45H10
Post by: lordpalandus on January 29, 2021, 05:08:35 PM
After almost 4 months, V45 is finally ready for player consumption.

https://www.mediafire.com/file/edue2cemkljp296/Binary+V45H10.zip/file

Link to 3 Month Update (technically 4.5) = https://www.reddit.com/r/roguelikes/comments/l8cv1k/empires_of_eradia_the_cataclysm_of_chaos_v45_3/

Link to 2020 Retrospective = https://www.reddit.com/r/roguelikedev/comments/l8zlvl/2021_in_roguelikedev_empires_of_eradia_the/

EDIT: 10th hotfix

===========

New Changes to V45:

You can control the game exclusively with the mouse or the keyboard, if you so desire. I suggest using a bit of both though.

I've tried to give support for Azerty keyboards. Simply switch the keybinding layout in the Ingame Menu (hit Esc when ingame).

I've done a severe optimization pass on AI, Rendering, Turn Processing, Looting, and Combat Code. The game now more easily and more consistently maintains a solid framerate, even with hundreds of foes running around.

I've implemented a new Technique system, with redesigned Techniques. Each has two mastery unlocks, one at rank 5 and one at rank 10, with a max of rank 10. With the Mastery Unlocks and changes to combat code, each Technique is uniquely useful for handling different kinds of situations.

I overhauled the Root Menu (which has all the game's keybindings in one handy menu) and made sure that things worked consistently in it as out of it. In V44 sometimes things didn't work correctly.

I implemented a Round Reports menu, that keeps track of the 20 most recent game rounds. Each report gives detailed information on what occurred that round and it stores any messages, produced in the message log, for that round. That way if the message log overflows, you will never miss an important message again.

I completely rebuilt the AI pathfinding code, completely rebuilt the Rendering code, and completely rebuilt the Turn Processing.

I've added a new Enemy Scaling system, so that enemies scale a bit better and doesn't eat up a ton of processing time to do it. The system is now quite streamlined, taking very little time at all.

I've implemented a brand new system of Traps. Each spawns with three properties, and each of these has 3 options, resulting in 27 different combinations of traps. Some are pretty scary now, while others are more situationally scary. Also this release sees the implementation of the Explosive property and the Sentry property, mentioned way back in time (I think I first tried implementing them in V32 or something)

I've implemented Elemental Bombs; a way to hurt your foes when out of Energy and are specifically designed for weakening enemy defenses. So if you find a particularly tough foe, using an Elemental Bomb on them first, will significantly reduce the number of rounds needed to kill them.

I've Implemented Quickstrikes, which replace the old bump, quickshot, and quickzap, rolling them all into a single attack. The active quickstrike is based on the active barrier and thus which attribute is used to boost the stats of the Quickstrike.

Control scheme has changed, with a new set of keybindings. The mouse LMB allows you to either attack a location, move to that location (if adjacent), or if you click on yourself, wait a turn. The RMB now brings up the Root Menu.

You now have access to a Keyboard Cursor, and the Cursor remains always active. Can switch easily between Keyboard and Mouse Cursor. For Qwerty, you control the keyboard cursor with qweadzxc keys. The S key functions like LMB now. Numpad still is used for movement.

I created a new Satchel interface that only displays the items you currently possess.

I implemented a new and improved Threat System that is easier to understand and allows a lot more build freedom. You can thus cast spells with heavy armor now, if you want.

Do note: The tutorial has been disabled. I plan on implementing a better one in V47. The old one broke, when I did the overhaul of the current codebase, so its currently non-functional (which is why it got disabled).
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V46
Post by: lordpalandus on May 21, 2021, 05:07:48 PM
Well, it took an absurd amount of time, about 3.5 months, but it is finally complete and ready for consumption. Link = https://www.mediafire.com/file/xupuct8wyvl9a9v/Binary+V46.zip/file

The changelog for it is massive, and you can view it ingame, if so inclined. I'll be working on the 3-month update, covering why it took so long, and I shall post it here.

3-Month Update = https://www.reddit.com/r/roguelikes/comments/ni51gm/empires_of_eradia_the_cataclysm_of_chaos_v46/
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V46
Post by: Hooman on May 22, 2021, 10:08:15 AM
Good to see you posted an update.


I was just browsing through the source a bit. I notice you have a nice data driven design. I approve of that approach.

I believe it would be possible to use a more terse syntax for some of the data definitions. For instance, I was looking in _RECIPES.py, and noticed the function used to initialize LIST_Weapons_Recipes. You could potentially fully initialize the list when you define it:
Code: [Select]
LIST_Weapons_Recipes = [
    Crafting_Recipe('Metallic', 100, 'Equipment', 'Longsword'),
    Crafting_Recipe('Metallic', 100, 'Equipment', 'Waraxe'),
    Crafting_Recipe('Metallic', 100, 'Equipment', 'Warhammer'),
    Crafting_Recipe('Metallic', 100, 'Equipment', 'Glaive'),
    Crafting_Recipe('Metallic', 200, 'Equipment', 'Greatsword'),
    Crafting_Recipe('Metallic', 200, 'Equipment', 'Greataxe'),
    Crafting_Recipe('Metallic', 200, 'Equipment', 'Greathammer'),
    Crafting_Recipe('Metallic', 200, 'Equipment', 'Halberd'),
    Crafting_Recipe('Metallic', 100, 'Equipment', 'Crossbow'),
    Crafting_Recipe('Both', 50, 'Equipment', 'Dagger'),
    Crafting_Recipe('Both', 100, 'Equipment', 'Spear'),
    Crafting_Recipe('Both', 50, 'Equipment', 'Nailer'),
    Crafting_Recipe('Both', 50, 'Equipment', 'Slugger'),
    Crafting_Recipe('Both', 50, 'Equipment', 'Shotgun'),
    Crafting_Recipe('Both', 50, 'Equipment', 'Slicer'),
    Crafting_Recipe('Organic', 100, 'Equipment', 'Stick'),
    Crafting_Recipe('Organic', 100, 'Equipment', 'Sling'),
    Crafting_Recipe('Organic', 200, 'Equipment', 'Staff'),
    Crafting_Recipe('Organic', 100, 'Equipment', 'Wand'),
    Crafting_Recipe('Organic', 100, 'Equipment', 'Rod'),
    Crafting_Recipe('Organic', 100, 'Equipment', 'Scepter'),
    Crafting_Recipe('Organic', 100, 'Equipment', 'Ankh')
]

That eliminates all the repetitive .append calls. It also eliminates repetitive assignment to the Recipe variable.

One slight difference is that a full initialization means the contents will always be exactly what you specify. The existing code, using .append, would produce an enlarged list each time it was run. That might be bad if you accidentally run the function twice and duplicate the contents of the list. On the other hand, if you're filling the list with other data elsewhere, it may make sense to append a particular list of entries, rather than reset the list to a fixed set of entries.

Looks like similar can be done for the other recipes in that file, potentially drastically reducing the size of the file. Might also make it easier to update the data in the file later on.
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V46
Post by: Hooman on May 22, 2021, 10:17:03 AM
I was looking at the function:
Code: [Select]
def Exploit_Fear(obj):
    if obj.AI.Fear_Duration > 0:
        FearAdvantage = True
    else:
        FearAdvantage = False
    return FearAdvantage

When you assign a boolean in the if/else blocks like that, you could instead assign it the result of the if conditional:
Code: [Select]
def Exploit_Fear(obj):
    FearAdvantage = obj.AI.Fear_Duration > 0
    return FearAdvantage 

Of course with this simplification it becomes easy to return the result of the expression directly, without assigning it to a temporary variable:
Code: [Select]
def Exploit_Fear(obj):
    return obj.AI.Fear_Duration > 0 
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V46
Post by: Hooman on May 22, 2021, 10:26:43 AM
I noticed this block of code:
Code: [Select]
    if x_dist < 0:
        x_dist = x_dist * -1
    if y_dist < 0:
        y_dist = y_dist * -1
           
    if x_dist > y_dist:
        Distance = x_dist
    if x_dist < y_dist:
        Distance = y_dist
    if x_dist == y_dist:
        Distance = x_dist

The first section is effectively computing abs(x_dist) and abs(y_dist). The second section is then computing the maximum of those absolute values. This can be simplified to:
Code: [Select]
Distance = max(abs(x_dist), abs(y_dist))
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V46
Post by: lordpalandus on May 23, 2021, 11:30:28 AM
Hi Hooman. Yep it finally got a release. Been lukewarm received in most places, but such is life eh.

All of those are pretty good ideas. With the FearAdvantage one though, would it also return a False, if False, or only return True, if True?

The recipes one probably would work better that way. The list is initialized or re-initialized, when data is unloaded/reloaded. So it doesn't usually get changed often.
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V46
Post by: leeor_net on May 25, 2021, 08:11:08 AM
It will return the result of the expression which can only be true or false. It's a way of expressing the same conditions in a smaller amount of code and without if/then chains. E.g., return the result of a boolean expression rather than test the boolean expression and return a boolean type based on the result of the expression.
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V46
Post by: Hooman on May 26, 2021, 04:45:17 PM
Indeed, a boolean expression always has a value.
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V46
Post by: leeor_net on May 26, 2021, 06:11:25 PM
So question... how do I run this? I don't really want to install the entire Python runtime globally but I imagine this would run fine with a stand-alone interpreter set up. Any suggestions on a reasonably good one for Windows?
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V46
Post by: lordpalandus on May 27, 2021, 05:29:21 PM
The attached zip, at the first post is for those that want to compile (technically freeze) it locally so that they can run it on linux/mac (as I haven't quite figured out how to cross compile builds).

The binary builds come with a local interpreter, of the necessary version for python. They are frozen with the module "pyinstaller", but in order to freeze for a particular OS, you have to run pyinstaller on that OS. Hence, why I haven't figured out cross compilation.

For the binary build all you need to do is download it, unzip it and then run game.exe. Or, if you want to catch any errors that post (should be very few; did spend a month debugging it), run the .bat file instead. All the necessary files are there to run it. There are also some optional font files that you can use to replace the font file in the main directory, in case you want to change the screen size / make things bigger/smaller. Also haven't gotten dynamic resolution / per pixel scaling in yet.
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V46
Post by: Hooman on May 28, 2021, 03:58:46 AM
If you're curious about providing packages for different platforms, some of the OPU projects use Continuous Integration servers to build for Windows, Linux, and MacOS. The Continuous Integration builds are tied into the version control system, so the project builds automatically for all platforms whenever someone pushes new code to the repository. We've been using a free account on GitHub to host the central code repository, and a free account on CircleCI for the Continuous Integration builds.

You still have to figure out and write the build pipeline for each platform, though the infrastructure is taken care of by free third party providers.
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V47
Post by: lordpalandus on August 19, 2021, 01:59:39 PM
Well after 3 months of effort, the next build is ready, with the new Interactive Tutorial System installed.

Link to 3 Month Update = https://www.reddit.com/r/roguelikes/comments/p7l0d4/empires_of_eradia_the_cataclysm_of_chaos_v47/

Link to Game build = https://www.mediafire.com/file/xcbjkhu7iagh2zn/Binary+V47.zip/file

-----

I'll have to take a look into Continuous Integration then. Thanks for the suggestion, Hooman!
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V47
Post by: Hooman on August 19, 2021, 04:53:39 PM
Oh excellent. It'll be life changing. Trust me. :)
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V47H3
Post by: lordpalandus on August 20, 2021, 02:40:48 PM
Well if it can solve my current issue of cross compilation, it will be a start XD.

Also, ANOTHER hotfix is ready:

https://www.mediafire.com/file/efyljta07jn062j/Binary+V47H3.zip/file
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V47H3
Post by: Hooman on August 21, 2021, 04:09:03 AM
It'll not only solve cross compilation, but also packaging and release management. You won't need to constantly post those updated links anymore. ;)
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V47H3
Post by: lordpalandus on August 21, 2021, 11:11:55 PM
That would be nice. Do I need a github account to use CI or is it simply advised to have it?
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V47H3
Post by: Hooman on August 26, 2021, 07:31:04 PM
Continuous Integration is a concept. There are many tools to achieve it. Though yes, many tools do integrate well with GitHub, and I would recommend it. In particular, there are many providers that integrate with GitHub and take care of the infrastructure for you, so your code would build on their servers, which is super convenient.
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V48
Post by: lordpalandus on September 13, 2021, 01:21:11 PM
Next major release is completed:

-> Completely rebuilt the AI decision tree and routines.
-> Severely improved their retreat code.
-> Added in offensive/defensive abilities for the major entity types, that they try to use as intelligently as possible.
-> Added in monster infighting, telefragging, and annihilating (when something gets on the map edge or beyond).
-> Also severely balanced the Stealth combat, to be more challenging, but still very rewarding.

Link = https://www.mediafire.com/file/pc2e1wz8emlr4c5/Binary+V48.zip/file
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V48H1
Post by: lordpalandus on October 09, 2021, 08:35:33 PM
A hotfix is finally ready.

Link = https://www.mediafire.com/file/wjacy16vi2ppcbt/Binary+V48H1.zip/file

Reason it took so long to get the hotfix out, was the I wanted to bundle the first of the racial empire's lore entries with it and was more complicated to do than I had thought. Creating an interesting race is easy... creating an entire civilization based on that race... not so easy.

It also includes a new prototype movement system allowing you to click anywhere on the map, and you will move to that point. It will deactivate if you are about to step on a trap, or an enemy is visible.
Title: Re: Empires of Eradia: The Cataclysm of Chaos - Alpha V48H3
Post by: lordpalandus on October 24, 2021, 05:13:30 AM
Released another Hotfix.

Added another empire lore. Improved some UIs and added a basic dungeon feels system.

Link = https://www.mediafire.com/file/fp9n16jmlnrgsox/Binary+V48H3.zip/file