Author Topic: Chaotic Planar Prison - Prototype V6  (Read 906 times)

Offline leeor_net

  • Administrator
  • Hero Member
  • *****
  • Posts: 1717
    • LairWorks Entertainment
Re: Chaotic Planar Prison - Prototype V4
« Reply #25 on: April 06, 2018, 09: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.
- Leeor
LairWorks Entertainment

Titanum UFO's

Offline lordpalandus

  • Hero Member
  • *****
  • Posts: 567
Re: Chaotic Planar Prison - Prototype V4
« Reply #26 on: April 06, 2018, 09: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.

Currently working on Chaotic Planar Prison.
Link to OPU page = http://forum.outpost2.net/index.php/topic,6073.0.html

Offline Hooman

  • Administrator
  • Hero Member
  • *****
  • Posts: 4205
Re: Chaotic Planar Prison - Prototype V4
« Reply #27 on: April 07, 2018, 11:42:26 PM »
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.

Offline lordpalandus

  • Hero Member
  • *****
  • Posts: 567
Re: Chaotic Planar Prison - Prototype V4
« Reply #28 on: April 07, 2018, 11:54:34 PM »
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.
« Last Edit: April 07, 2018, 11:57:47 PM by lordpalandus »
Currently working on Chaotic Planar Prison.
Link to OPU page = http://forum.outpost2.net/index.php/topic,6073.0.html

Offline Hooman

  • Administrator
  • Hero Member
  • *****
  • Posts: 4205
Re: Chaotic Planar Prison - Prototype V4
« Reply #29 on: April 08, 2018, 12: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.
« Last Edit: April 08, 2018, 04:12:00 AM by Hooman »

Offline lordpalandus

  • Hero Member
  • *****
  • Posts: 567
Re: Chaotic Planar Prison - Prototype V4
« Reply #30 on: April 08, 2018, 03: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.
Currently working on Chaotic Planar Prison.
Link to OPU page = http://forum.outpost2.net/index.php/topic,6073.0.html

Offline lordpalandus

  • Hero Member
  • *****
  • Posts: 567
Re: Chaotic Planar Prison - Prototype V5
« Reply #31 on: April 08, 2018, 05: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!
Currently working on Chaotic Planar Prison.
Link to OPU page = http://forum.outpost2.net/index.php/topic,6073.0.html

Offline Vagabond

  • Hero Member
  • *****
  • Posts: 614
Re: Chaotic Planar Prison - Prototype V5
« Reply #32 on: April 09, 2018, 12: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

Offline Hooman

  • Administrator
  • Hero Member
  • *****
  • Posts: 4205
Re: Chaotic Planar Prison - Prototype V5
« Reply #33 on: April 10, 2018, 02: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.

Offline lordpalandus

  • Hero Member
  • *****
  • Posts: 567
Re: Chaotic Planar Prison - Prototype V5
« Reply #34 on: April 11, 2018, 11:48:35 PM »
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).
Currently working on Chaotic Planar Prison.
Link to OPU page = http://forum.outpost2.net/index.php/topic,6073.0.html

Offline lordpalandus

  • Hero Member
  • *****
  • Posts: 567
Re: Chaotic Planar Prison - Prototype V6
« Reply #35 on: April 14, 2018, 02: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!
Currently working on Chaotic Planar Prison.
Link to OPU page = http://forum.outpost2.net/index.php/topic,6073.0.html