@dancing dead, thanks a million for the bizSpark heads up! Applied this morning, just waiting for their response :D
@visuar, hi and welcome to the forums! And thank you so very much for your help! Ok, so concern #2 and #3 are not that bad, but with the locks I should take it pretty seriously? I think it would be fine as the reading thread would not read very often, so I don't think the threads would keep each other waiting much. Learning locks it is! I think my approach will be to first just make the pathing work as it did in the old game, then try to migrate it to a multithread solution. It's hard enough to debug etc as it is, so it would be useful to have it at least somewhat working before I bring that whole threading thing into the picture.
Update 262Today learnt a little bit more about how the monodevelop debugger works while trying to hunt down some weird pathing behavior. It's not as bad as I made it sound, obviously - there's a ton of cool stuff I didn't consider back then because I didn't know it existed. Still in the process of learning it all - Step over, step in, step out. It's not all good though, some stuff still annoys me. I can't seem to examine the contents of a list where the instances are a custom class for example, and it annoys me that a super simple struct such as a Vector2 has to be clicked to have its contents viewed - there has to be some simpler solution. But the more I learn the easier it is.
Also did a thing I should've long ago, a mouse pointer object that displays the mouse position and what tile it's in. I've been putting that off forever, but now I finally took the 15 minutes and did it, which is going to be a huge headache releif in upcoming bug hunting.
Apart from all this debug stuff, I've done some actual work on the path finding algorithm as well. I've reached one of those road forks where you have to pick which problem to start to solve, and with which solution, and it stalls you a bit. In the end I will have to solve all of them though, so I might as well just pick whichever and get started, head first.
In slightly more exciting news I had a bunch of lizards path find at the same time, and it seemed to basically be working. Except it wasn't because the lizard animation/behavior isn't even started on, meaning they're just limp socks being pulled around by the head by a magical force. Meaning that if a bunch of them tries to squeeze into an opening at the same time they get hopelessly stuck. Or if one of them tries to get up or down a slope it gets hopelessly stuck. Or if they try to use a shortcut... they do, indeed, get hopelessly stuck.
When it comes to, for example, creatures getting stuck I tend to resort to cop out solutions such as making them shake around after being stuck for a while, hoping to end up in another not-as-stuck position and angle. Those solutions are nice because they end up saving the day despite the problem being sort of undefined, but this time I will really try to rely on them as little as possible. In the old game I had a mind set where I was always going to release the game in the next 2 weeks, so when I encountered a bug I quite often covered it up like that. I'd cure the symptom rather than the disease.
So say that something was slowly moving to the right but wasn't supposed to, I'd just add a slow leftward force to it and call it a day. Obviously that becomes a huge problem when you
don't release the game two weeks later, but these quick fixes start layering up instead. So, this time around I will keep that stuff to a minimum. It will take longer and be more annoying, but the code will be better and most importantly more dynamic. All those little quick fixes tend to act like a layer of rust on the mechanics - they're not in the way until you try to change something, then nothing works and you have to hunt them down and scrape them off again. So, this time I will really make an effort to actually solve the problems, exhausting as it may be.