Philosophy on finishing projects

posted in mousetails RPG
Published July 09, 2015
Advertisement
Let me start with the boring stuff: I implemented a system where items show the "Fake name" until they are identified using a identifier or by being used. The new name is only used in the inventory, since I now need a more complicated API to know the real name.
Now the interesting, philosophical part. At the beginning of this summer, I made a very complicated 2do list, with sub points, time estimates etc.

Right near the beginning, my 2do list was a subtask "Make and test a AI for using ranged combat." One purpose for ranged combat was so monsters could use it, so a AI that could use it, so this was a essential part of the major task "Ranged combat", so I went ahead and designed a type of monster that would shoot arrows, made a image for it, etc. Then I was about to code the monster, when I decided this was going to be easier to do after I had the XML loading in place, and then just add a attribute whether the monster should be able to throw stuff, what it should be able to throw, etc. The next major task on the list was item identification, but again I decided this would be easier to do after the XML loading also, so I went on to the next major task which was the XML loading itself. This one had a lot of subtasks, especially a lot of attributes to add for basic objects, like ways to define starting inventory, drops, etc. The list of stuff to do was growing faster then how fast I was plowing threw the work, and the work was very confusing, hardly visible, and I ended up procrastinating a lot. At the end, I decided that most of the attributes where non-essential and just move on to the next task, which was the very much related and a lot of the subtasks where more related to the other system really, like "A system to scramble the fake names so you don't know which item is which even if you replay the game" This would need to be implemented in the XML loading class, perhaps with a attribute added to a attr tag, something like "Scramble category", and then scramble the marked attributes later. This system would be important because I want the images to still match the name, even when the function doesn't. The complicatedness of this task was insane so I moved on to some other, later tasks (In this case, ability to limit a item or monster to a maximal amount of incarnations, that was incorrectly put under the item identification)

Now, however, my efforts are getting way to spread out. I am definitely not happy yet with the XML loading, so every other day I tell myself "Just finish that first" Then I look at the stuff to do, and decide I will jump to the next major task, which is very difficult to do without enough monsters registered, so I go back to another task, find it's do difficult also, and usually find a minor task I can do eventually. However, working on to many tasks at once feels bad for me (This is the philosophy part) since I end up working on none of them at all. All the tasks I skipped still really want me to do them before the later tasks, since I am afraid I will have the dirty work left after the summer, which is exactly the part I have the time to do now, but I also don't want old tasks to block my progress and motivation, where finishing new tasks first will make doing the old ones later easier, since even when they are unrelated I am avoiding writing code I will need to rewrite later. While I will probably decide which one to do in a couple of days, any advice on dealing with this situation is appreciated.

(And yes, the new game I downloaded has something to do with it)
Previous Entry XML loading working
Next Entry Multithreading!
2 likes 5 comments

Comments

Eck

Take a little break, then come back and get your XML stuff working. DO EEET!

What language are you using because in C# it's built in and I can share some code with you if you like?

July 10, 2015 04:34 AM
Aardvajk
Interesting reading, but PLEASE can you split your posts into paragraphs? Don't mean to sound critical but that large wall of text is far harder to read than it could be smile.png
July 10, 2015 08:10 AM
mousetail

@Aardvajk Sorry about the paragraphs, something must have gone wrong on saving the post

@Eck I am using python, and the parsing is not the problem, I have a good library to do that, the problem is finding ways to define variables of wierd types, like nested dictonaries, lists, or items that should have a random value every time

July 10, 2015 12:07 PM
Aardvajk
I've given up using the formatted editor on this site. I type long posts up in Notepad using manual tags and paste them into the editor with the formatting option turned off.
July 11, 2015 06:52 AM
Eck

I'm not sure how it is in Python, but in C# complex types are fine. You mark up your code with attributes on what should and shouldn't be serialized so something like nested dictionaries is just auto-magic.

To do something like random values for different fields, you could do that a few different ways. Let's say you wanted to deserialize a monster with random HitPoints. You could have a GenerateHitPoints field with a dice code (3d12+6). Then if HitPoints isn't specified, you roll your three, twelve sided dice and add 6. It HitPoints IS specified, you use that instead. That way you can save out a specific monster and not get random health every time.

July 12, 2015 03:53 AM
You must log in to join the conversation.
Don't have a GameDev.net account? Sign up!
Profile
Author
Advertisement
Advertisement