From the looks of things, Dwarf Fortress does use A*, but it's forced to recalculate paths often and that's the main thing that holds it back.
That explains the lag that happens every few seconds, instead of constant lag. It's probably recalculating paths every X "turns" then just making them walk along those paths for X turns. Pretty bad.
Algorithms aside, I expect that there are many needless calls to unnecessary functions and things like that.
Also, this is a game where the actors have attributes. He could solve the hallway blocking problems by allowing more forceful dorfs to get precedence or punch their way past (which would also lead to more interesting behavior).
The other interesting thing about the issue is that although the globally optimal solution would be that the sum of the lengths of the paths is minimized, the locally optimal solution from each dwarf's point of view would probably involve a fight.
It's definitely the case that not only is an "imperfect" solution often much faster than a perfect one, they're also often much more interesting - changing the problem is often better than changing the solution.
It would have to be a community project. I have little time to add much more than specs and guidance. ^_~
Oh no! I was hoping you would do all the work. So much for that idea.
Anyone else interested? My programming skills are based more in theory than practice, but I'm willing to learn as I go, and I have plenty of ideas and enough free time to devote to the right project. Also, experience in kicking butts to get a project finished.
It would be interesting and fun, but one would have to feel a little guilty about it.
If you guys are truly interested in making a DF clone, your first step should definitely be experimentation. Try out various things like Scott's grid idea. You need to understand everything that is involved for the most difficult aspects of the problem.
If you guys are truly interested in making a DF clone, your first step should definitely be experimentation. Try out various things like Scott's grid idea. You need to understand everything that is involved for the most difficult aspects of the problem.
Definitely true. It would be rather embarrassing if the result was epic fail. I'm more interested in playing around with specific problems anyway.
Here's how we do this. I'll make an extremely basic foundation. It will make a grid, put some dwarfs on it, and draw it. I did basically the exact same code for that back in college for a combat/tank game, so it should take me almost no time. I'll slap it up on Github, and then we can add things one at a time.
Contributors will be able to on the specific things they are interested in. So if you really just want to work on the path finder, go nuts. If you wan to work on digging, also go nuts. Someone who just wants to contribute all the different types of rock can do data entry.
There is just one technical decision we have to make right now. That is language. There are pretty much three reasonable choices that I see. XNA, Java, and Python+SDL. Pick one, and I'll get it going.
There is just one technical decision we have to make right now. That is language. There are pretty much three reasonable choices that I see. XNA, Java, and Python+SDL. Pick one, and I'll get it going.
Assembly. Hey, it was good enough for Roller Coaster Tycoon.
I will not vote, as I will at most provide non-code help. But, Python probably makes this more readily accessible to more people. It also gives me an idea.
If we use Python, and the framework is in place, we can have a "Learn Python" club for you listeners who are always saying you want to learn to code. You guys can learn it by poorly implementing a lot of discrete functions and "glue." That stuff would actually be really important to the project, and could be re-implemented better later, but it would give you purpose and clarity of vision in terms of arsing to actually learn to code.
Java is similarly an option in this light, and does offer certain benefits. I would suggest either.
I want to call it Project D.O.R.F. DORF can stand for something. Dwarves of Raging Fury? Dwarf Operation: Rebuild the Fortress?
I know better than to shit talk about this project. But I will promise that if you guys actually start committing code, and it doesn't fade away, I'll provide material support in the form of publicity, specs, and management. So, this happening is entirely in you guys' court once Scott lays the groundwork.
I will be happy to act as a tester for this project, as all my skills lie in physics and chemistry, not the computer sciences , however I do have a large number of friends who are fluent in other languages who would defiantly help with any translation work that would need to be done. Also I am willing to proof-read any in-game text.
However, I'd be happy to contribute whatever I can, though as is obvious from the above sentences, in a non-coding capacity.
Oranges at half-time, maybe? Motivational speaking? I know, we'll appoint you Chairman of the Committee to Have Justin Bieber Endorse Our Game. Sound good?
Oranges at halftime (unrelated point) are terrible for dental health. Surprisingly so, in fact. They destroy tooth enamel rapidly due to the combination of slightly dry mouth and direct prolonged contact. It's a terrible tradition that should probably end. ^_~
Oranges at halftime (unrelated point) are terrible for dental health. Surprisingly so, in fact. They destroy tooth enamel rapidly due to the combination of slightly dry mouth and direct prolonged contact. It's a terrible tradition that should probably end. ^_~
Interesting project you have here and it's relevant to my interests.
In theory I should be able to do something for the project, not so sure if I'm really able to help, but if this happens I will be following the project. For language I'll let the people with more experience decide, I have most experience with java, but if I get good reason to learn something new that's cool.
However, I'd be happy to contribute whatever I can, though as is obvious from the above sentences, in a non-coding capacity.
Oranges at half-time, maybe? Motivational speaking? I know, we'll appoint you Chairman of the Committee to Have Justin Bieber Endorse Our Game. Sound good?
Aw, ain't you adorable. Nine, Get in here, Maybe you can teach him something, he's weak in skills, but the willingness is there.
But seriously, if you think Coders and the "Ass Kicking" you claim you can provide are all the project will require, you'd even stupider than I am. I can't code, but I've got a vast number of other skills which could be useful.
But seriously, if you think Coders and the "Ass Kicking" you claim you can provide are all the project will require, you'd even stupider than I am.
Ouch. Take a chill pill, bro.
Meh, I say harsher things than that without even straying from being nice to someone. However, you're not used to it, I'll keep that in mind in future.
If anything, you should take it as a sign of Churba being friendly with you. That's how I roll with my friends too.
Oh, I do too. I'm not butthurt. Now that I know the score, Churba, you arsewipe, call me anything you like <- see that, it means I'm joking! (for serious(in a joking way))
Oh, I do too. I'm not butthurt. Now that I know the score, Churba, you arsewipe, call me anything you like <- see that, it means I'm joking! (for serious(in a joking way))</p>
It's cool, I know you didn't mean anything by it. I'm just somewhat gruff by nature.
Comments
Also, this is a game where the actors have attributes. He could solve the hallway blocking problems by allowing more forceful dorfs to get precedence or punch their way past (which would also lead to more interesting behavior).
An end to shit-talking, perhaps?
Anyone else interested? My programming skills are based more in theory than practice, but I'm willing to learn as I go, and I have plenty of ideas and enough free time to devote to the right project. Also, experience in kicking butts to get a project finished. One can if one wishes, but I won't.
I'm more interested in playing around with specific problems anyway.
Contributors will be able to on the specific things they are interested in. So if you really just want to work on the path finder, go nuts. If you wan to work on digging, also go nuts. Someone who just wants to contribute all the different types of rock can do data entry.
There is just one technical decision we have to make right now. That is language. There are pretty much three reasonable choices that I see. XNA, Java, and Python+SDL. Pick one, and I'll get it going.
Java - I have a tiny amount of experience with it.
Python - I've heard good things.
My vote would be for Python.
If we use Python, and the framework is in place, we can have a "Learn Python" club for you listeners who are always saying you want to learn to code. You guys can learn it by poorly implementing a lot of discrete functions and "glue." That stuff would actually be really important to the project, and could be re-implemented better later, but it would give you purpose and clarity of vision in terms of arsing to actually learn to code.
Java is similarly an option in this light, and does offer certain benefits. I would suggest either.
I want to call it Project D.O.R.F. DORF can stand for something. Dwarves of Raging Fury? Dwarf Operation: Rebuild the Fortress?
I know better than to shit talk about this project. But I will promise that if you guys actually start committing code, and it doesn't fade away, I'll provide material support in the form of publicity, specs, and management. So, this happening is entirely in you guys' court once Scott lays the groundwork.
However, I'd be happy to contribute whatever I can, though as is obvious from the above sentences, in a non-coding capacity.
In theory I should be able to do something for the project, not so sure if I'm really able to help, but if this happens I will be following the project. For language I'll let the people with more experience decide, I have most experience with java, but if I get good reason to learn something new that's cool.
But seriously, if you think Coders and the "Ass Kicking" you claim you can provide are all the project will require, you'd even stupider than I am. I can't code, but I've got a vast number of other skills which could be useful.