Jump to content

wraitii

WFG Programming Team
  • Posts

    3.452
  • Joined

  • Last visited

  • Days Won

    77

Everything posted by wraitii

  1. I just moved the topic from the dev forums to the public forum (removed posts about that too for readability). Copied, in spoilers, are 3 of my posts originally in the dev forums about some more specific AI stuffs. Again, I stress that this is mostly informative. Defense: Multi-base support: Naval Manager
  2. Gave a look at this, should be fixable to some extent, in fact.
  3. Err, actually the error messages are really not that trivial to fix (basically they'd require making it serialize/deserialize fully, more or less). At least I believe. I can give if a look if it's considered nice enough that Aegis fails silently to make it default, else it's probably not worth it. Have qBot be default again if this is bad enough, then (should be trivial enough in the current SVN). I'm not 100% sure but I think I have added this to Aegis' description though. Will check. BTW, this would need to be verified too, but I'm fairly sure while qBot doesn't give error messages, deserializing it is also not that nice, so we probably shouldn't pretend too much that saved games with AIs work.
  4. Known issues, zoot, but thanks for reporting them, this could be useful. I'm assuming it's a punjab map? Basically to fix this requires rewriting many things or improving upon many things, which is planned but not for now. sanderd17: might be fixed actually, defense and attack were not mixing together so well because of an issue.
  5. Ok, I've given this some thoughts. I like your idea of the "restrict selection to bounding box" thing, it could be useful, but I also think we could try to avoid it if we had options for selecting particular stuffs in the bounding box directly. SO we do have the "add only military units" to selection. This should definitely pair with a "add only females to selection". We probably could use one for "Add only idle units to selection". I also do not think you can "deselect" a type of unit by any key combination when you've selected many right now, but I might be wrong (I mean in the GUI screen at the bottom). Furthermore I was re-reading the reviews to Celtic Kings (old, unknown RTS/RPG hybrid that was pretty interesting) and it appears they had hotkeys for "select weakened units", "select veterans", things like that. I'm not saying it's high priority, but I think it'd be fairly cool to have something like that.
  6. Think you mean the first 4 alphanumerics being "0", " " , "A" and "." which are all usually on top
  7. I see. I must say I can't think of anything in the AI code that could cause that. Use of random is still limited to the seed in the beginning. Furthermore I can't really see how a whole army could be missed. I'm kind of baffled.
  8. Any way to be sure this is related to the AIs? (also, to be perfectly honest, if it is indeed AI related, it's probably a weird issue, and I won't have time to fix it for Alpha 13…)
  9. Basically with 6 barracks it should hardly have to queue anything, though there's often a few barracks that do nothing. I'm not sure how efficient the AI is exactly at that but generally speaking it should not be too overkill. Choice of building to attack should be more optimal than it currently is. I think it has something to do with the stance of siege units. I'll try changing it to defensive yo see what it does. The fact it didn't attack the siege rams is more surprising. Perhaps it was busy elsewhere, there might be weird reactions in those cases.
  10. It has been changed anyway. Thanks for the report zoot . So anyway, I'll be going back to school now, I expect I will not have any time to work on 0 A.D. for the next weeks. Please report any errors (here or in the bugreports forum) nonetheless, and any weird behavior (if possible, try to debug them as much as possible, or try to find a way to replicate these errors, as this will considerably facilitate debugging). (edit: I committed a change this morning that may or may not be good. I'll test it, and revert if it's not).
  11. I'm opening a new topic since the API version 3 has now been committed. Kind of a conclusion on the past 2 weeks' work before I head back to school, and probably abandon developing 0 A.D. for a good 2/3 months. Warning: this is a huge wall of text, mainly intended for my own reading later, so that I may pick up where I left off without too much trouble . So basically I'm fairly happy of how much progress has been made on Aegis in these 2 weeks of holidays I got (on top of the work I did back then). Defense has been fixed to a fairly great extent, the attack has improved, the economy has learned how to deal with technology and phases without really losing much in terms of efficiency (there's room for improvement, though), and generally everything has been made more robust than it was before. There is however still a lot to do, as most players and myself can already tell. I would like it if we could release a "Hard" AI that did not cheat. Currently hard mode cheats by gathering 33% faster (and very hard 66%). In order to do this, many things to consider: First, the AI build order needs to be perfected. I've watched replays of mainly Quantumstate and Alpha123, but there is still work to be done, everything is not perfect. Furthermore the economy manager still isn't completely rational in the way it assigns workers, which makes the AI lose a few precious seconds now and the, but this is particularly problematic in the early game. Also, it doesn't trade. Secondly, the AI is still very hardcoded. I've switched most of the "time" checks to "number of workers" checks but this is far from enough. The AI is generally hardly aware of itself when it takes decision, thus leading to average decisions, and mostly to a lot of trouble with unexpected cases. In particular, raiding the AI early currently tends to cripple it, as it does not recover well enough, trying to start attacks instead of focusing on rebuilding an economy, things like that. Thirdly, building placement in general needs to be improved. the code for dropsite placement is in itself fairly efficient, and returns generally pretty good results. However, the code that decides when to build a dropsite is extremely inefficient. Placement of most other buildings is basically random with a few tweaks and doesn't really follow any particular logic, when it probably should. Third big issue: the defense system is still quite flawed, both from the "no sense of self" effect of the AI, which will make it defend useless things, defend in obviously losing battles, or not defend enough when it ought to, and the many flaws in the logic. It's basically very "instant" defense, it doesn't really consider what happened in the past or what might happen. Case in point: a tower on the border near an AI dropsite will basically make it get all its workers killed as it doesn't really notice. Fourth big issue(s): attack and unpredictability. The first subpoint is that the AI sucks at attacking. Basically it makes relatively balanced armies, but it sends them to the enemy and doesn't really consider how to use these units the most effectively, making its attack mostly useless against a skilled (micromanaging) player. Secondly, the AI is extremely predictable. It has only one real "strategy", if you can call it so, which is also extremely hardcoded and not at all enemy dependent. Work on that is less of a priority, of course. The AI should probably handle the above points first, and then we will be able to consider making it actually do interesting things. Finally, I'll post again the "to-do" list I had posted on the AI API version 3 topic back in early november, as most of the points are still valid -No real naval support. It can handle attack over water, in a basic way, but that's it (Update: that actually might have become slightly buggy) -No handling of multiple-island realms. For Aegis, its starting island is all there is on the map. -No handling of the cases where the AI runs out of resources to gather. It will start lagging and clogging the queue manager. Linked with the above points. -The defense system is really basic. It can't handle continuous frontier skirmishes, placement of defense buildings is not logical, no wall building, it's not reacting perfectly to attacks either. No sense of "this is a dangerous area, I should avoid going/collecting/building there". No support for building units that counter the enemy favorite units. So many other things... -No diplomacy support (see Fexor's post in the general development forum) -Economy is still perfectible: drop sites placement and building could be optimized, as could be building construction, or even Build Orders in general. There are some slightly insane behaviours here and then. Generally this is probably the area where the AIs hold up the best, particularly Aegis. (Update: see above.) -Very partial technology support. Aegis goes up in phases, but it's not flexible. The API support for tech may not be perfect either. (Update: actually, it now researches all techs, but chooses them randomly. So work needs to be done on that). -Partial attack system. It's OK at strategy, but bad at tactics and will generally attack inefficiently (though Aegis is better than qBot at that). -no LOS/scouting support. AIs see everything. (Update: this is actually linked to making the AI react naturally: even when cheating, it should be aware of its enemies and take decisions based on them) -optimization is far from perfect, though it's slowly getting better. Some possible improvements: hierarchical entity collection filtering, getting the AIs not to iterate over all units in a single turn once in a while but balance the load... (Update: probably better now, but there is still ton of room for improvements). A last word about something that is still bothering me: the queue manager. Currently it gives "accounts" to each queue which grow over time as the AI collects resources. It works fairly well, but it has a tendency to make the AI sit on resources, particularly when the gathering rates are low and the needs high. I think going for the most human approach here is what would work best, but I must say I actually have little idea of what the "human" approach is. Basically we might need the rest of the AIs to register what they will probably want to train/build in the next minutes for the future needs to be fairly stable (which will also help econ…). Then we need the AI to actually pass stuff, making sure it doesn't sit on tons of food just because the next item needs a little wood, and to do it with the maximal efficiency. I am not sure what the best system for that is, but I think the current queue system isn't quite perfect. Edit: moved to general forum.
  12. I think it does pretty well on Oasis. But generally it should be mostly equivalent on all maps. Aegis doesn't really like crowded maps though (tons of lonely trees that go in the way of building things), but it's not too damaging either…
  13. Okay, updated SVN. Some more bugfixes. The defense manager should also choose units more sensibly against attackers.
  14. Yves: thanks, that was actually a semi-serious issue that I hadn't considered. Should be fixed. Alpha123: thanks too... That bug is a lot more annoying as I'm not quite sure what could cause it. I'll add a check against neighboring dropsites that might avoid such situations, but I fear such an issue could remain for the time being.
  15. Okay, latest update fixes some of the remaining issues, makes it slightly more efficient, and adds difficulty support properly (in the GUI). It also changes the debug setting to false by default, and I changed the descriptions for Alpha 13. I have made Aegis default on RM. Please try the difficulty settings, easy should feel easy but not tooooo easy. Hard should be somewhat challenging to skilled players. Very hard should be challenging. Please report if it is too challenging, or not enough (I use a system of resource cheat: Easy AI gathers 33% more slowly, hard 33% faster, and very hard 66% faster.)
  16. I see. Hadn't really considered that, yeah.
  17. Is there already a possibility to only select females/only select idles when selecting units "in a box" with the mouse?
  18. They should probably have a lower arrow multiplier. BTW, is it wanted that barracks have such diverse costs? It seems to me like costing 100W/200S is much more advantageous than 300W in the early game, as you usually start with unused stone so you effectively only need 100W.
  19. Which is kind of dumb because OSX is where a remake would be needed (I don't think 10.8 can play it anymore).
  20. I believe that components are determined by the templates. I've never tried to add one at runtime, it might work, look for functions in ComponentManager.cpp (the ones starting with script_ in particular as they're linking JS and C++). (I'm not too knowledgeable about that particular part of the code either, I must say )
  21. I'm not quite sure I understand what you call the "container entity". Basically all entities have components associated with them (some more than others: some entities have no "UnitAI" component for example). And when you call Engine.QueryInterface, you provide an ID (the ID of the entity) and a component definition(it's actually a number). The component manager will then return the right one. To get the components associated to an entity, I fear you'll just have to try each of them (check GUIInterface.hs, the "GetEntityState" method).
  22. That's actually something that is quite not-obious-at-all (and don't be afraid to ask anyway). So basically calling "PostMessage" will trigger Script_PostMessage in source/simulation/system/componentManager.cpp . This will in turn trigger PostMessage (this time in the c++). Now the c++ "PostMessage" will iterate over a list of all components of that entity that subscribed to such a type of message (remember that each entity has its own subset of components. Things like the ResourceGatherer Component are actually created for all entities). For each of these Components, it will call the c++ function "HandleMessage". Usually this was automatically defined by a macro on creation, which calls "On--Whatever the message type--()" (like onResourceSupplyChanged() for example). Thus the JS function gets called. So here's your link between AIProxy and ProductionQueue: one entity has both a AIProxy and a ProductionQeeue Component. The Production queue will "PostMessage", what I just described above will happen, and AiProxy will see "OnWhatever()" called. (note: I'm pretty sure I'm right about this, but I may have said a few things that are wrong, so take it with a grain of salt).
  23. Okay, then I'll probably change that in my next commit. I just committed one that fixes most of the logic errors which I know of (slight fixes in economy, attack plans and defense), also makes the AI gather food with cavalry (to some extent). Though it changes CcmpAIManager recompiling is not necessary. The AI should send a chat message to its teammates when it starts an attack. Please report if this works incorrectly. I think next I'll work on a difficulty system with GUI support and possibly a resource handicap (I'm thinking the "hard" mode would have none, the "medium" one would have some slight handicap, the "easy" one a strong handicap, and there could be a "very hard" mode where the AI gets additional resources). I think this should also wait until this is committed (leper reviewed it a bit, should be mostly good) as this could help AIs slightly. And I'll change Aegis to default AI at that time. That'll probably be it for the time being. edit: chatting seems slightly broken, will fix.
  24. Status is "needs to be done but I've given it a shot already and it should be easy enough using the Configure screen. Might be changed later for a different system but for now it'll do. (and obviously I do mean after a few more days of testing.) Fabio: that cavalry issue is actually not what I was talking about, but that's a good point nonetheless.
×
×
  • Create New...