I mean, if we want to do this thing hierarchic
You're the only one who's even mentioned that "AI Commander" thing. I've glanced through the document. Just looking at the "topmost-level" of decision making, the thing would have to be self-aware (and I for one will not be responsible for the robot apocalypse). Also, the author hasn't even attempted to implement that. It's all theory. And we're just a team of amateurs doing this for learning and for fun. Not going to happen.
Yes, its all theory. But all theory is any other approach that you present to me, even if it has been done already, unless you give me the source code of an existing implementation its all theory for me.
The real problem here, TH300, is that you want this to be your project. You're trying to get us to do things the way you want them done.
As long as my ideas make sense, I see no problem with that. If my ideas don't make sense, I expect you to give better arguments than "its all theory". I have made programs from "its all theory".
This is a tutorial first, and a project second. We need to work on things in small, manageable chunks, starting off easy and working our way up to the big stuff. Yes, this approach means we're going to have to deal with all kinds of problems later on. There'll be a lot of extra work tying it all together and fixing the bugs that will inevitably arise when we do that. But I'm not going to apologize for that.
This may work, but it doesn't motivate me. I have written so many unmaintainable programs, because I didn't design them properly. I don't want to produce another piece of s***. If we do this how you want, we'll end up doing it once, producing something that we won't want to continue working on and then starting new, using the experience from the first try. That will repeat until we decide to design the thing properly before we start coding. ("will" means here that I see a chance of this happening of above 90%)
If you can't handle working as a part of this team, then I think you need to step aside and let us get work done.
Wait, if I debate
your suggestions I cannot work in a team, even though
you are the one who wants to end the debate?
Tbh. I had seen that coming: several people have several ideas of how to do it. I do currently not feel like pushing my ideas through. But this means, that if you want to do things that look too stupid to me, I'll loose motivation and help less. Don't worry, this point is still a bit away. Regardless of this, I enjoy programming more if I am working on a new, interesting algorithm that no one implemented before. Give me the chance to make algorithms, otherwise I won't be motivated and hence be less productive. And thats not any decision that I make, its my nature.
Reply to Arklon's post:
I mean, if we want to do this thing hierarchic
Reading that Hierarchal AI article, what it proposes seems incoherent, particularly the part about the "AI commander" making abstract, strategic decisions. It proposes very little in the way of HOW the AI will "look ahead", process "what-if" scenarios, etc., and it seems to me that in order for it to do that you'd be looking at something that'd be more along the lines of true AI, which would be unfeasibly complex for this project.
Strategic decisions could be
- army A is facing enemy army B and is inferior. Hence it needs to be reinforced. Thats not at all difficult: there will be data structures that represent single armies (of the ai; for human controlled armies, we'd have to create some heuristic to figure out which tanks belong to an army - something that we'll need anyway)
- in base C the only structure factory got destroyed. Produce a new one a the base with most available capacities and send it to base C.
- the enemy is advancing quickly in military research, we shouldn't fall behind and thus we focus on military research.
- food stores are diminishing, thus we build an agridome in any of our bases.
I cannot thing of any example that we couldn't implement. And we don't have to do the "look ahead" and "what if" parts. I agree that those are a bit out of range. I merely want the hierarchic structure.
we'll likely want code that does search for a building location in a given base. We need classes that represent a base (and other instances in the hierarchy). Everything has to interface with those classes.
And how is it going to know what "a base" is, how is it going to know how, when, and where to make new "bases", etc.?
- What a base is? - the ai simply keeps track of which buildings belong to which base when building them. If two bases are close together they may be treated as one base. The point is that each base will need certain structures to defend itself. If the next vehicle factory is miles away it won't help much if a base is under attack.
- When to make new bases? - when more resources are needed or when it makes sense to defend a bottleneck in the middle of the map or when more space is needed....
- Where to build new bases? - depends on what the base is for. A mining base will be built where good beacons are found, a strategic base will be built where the position is easily defendable. That may be hard to figure out, but we'll need that anyway.
It seems to me that you're thinking about this from a "it'd be totally cool if the AI did this!" perspective and not from a realistic, programming perspective.
I believe that it can be programmed, because its after all just a system of entities (which are represented by classes)
We can make programs which model parts of the real world. Object oriented programming gives us that. One condition is, of course, that the model doesn't contain too many details. But this is given, because Outpost 2 itself doesn't contain too many details.