Jump to content


Community Members
  • Posts

  • Joined

  • Last visited

  • Days Won


Everything posted by agentx

  1. > Do you plan to do such a thing ? It makes a difference whether a bot learns by running on one machine or hundreds.
  2. > Do you know an option for the AI to store informations or writing/editing files? There is none. Except another debugging tool reads and writes from stdout. > to remember past skirmish statistics. Even after shutdown the system. 0AD is deterministic. Every game is replicable on every computer. That means bots in a multi player game need *same* code, data and thus behavior. If one bots learned something, he needs to share it with all other, too. Otherwise you'll get out of sync errors very quickly. > Or maybe there is another way to do this? Sure, spend the bots a XMLHttpRequest object like browsers do to sync over the net. Some projects link to curl to embed it. Then the bots can make sure having same knowledge. Or, very advanced, let players train their private ally bots, then the game has to sync the full bot code across all connected players. In both cases I'm ready to work on the server part, syncing data or code. Just the c++ part is way over my head, especially to make it work async with callbacks.
  3. I don't know how many people work on the common api. If I had to guess, I'd say less than a hand full and once you got the quirks right, a documentation is not needed. So, I'm more in favor of documenting the quirks properly by hand than an automated documentation, because it would help to design a new bot api. But even that is far less interesting than an advanced attack/defense system useable as a plugin for bots...
  4. One can run Object.keys(Engine).forEach(k => print(k + "\n")) within a bot and get the list of available commands: ProfileStartProfileStopPostCommandIncludeModuleDumpHeapForceGCDumpImageMore is available via global, Object.keys(global).forEach(k => print(k + "\n")) : Same thing (Engine) in the GUI compartment looks different: What I miss the most is interactively firing methods a bot has during run time, like you do with the GUI console(F9). Once a bot runs, nothing can interfere. Access to the camera would also help with testing. Another trick would be to chat commands to the bot, but that doesn't work either.
  5. > In both computers 0ad runs smoothly. That's great. Sounds like it is perfectly playable. But I don't get it, what do you want to achieve by streaming the video out over the network? And what about audio? Do you get same error message if trying the other way round? (B->A)
  6. That would be quite a challenge. The graphics are composed finally at the graphics card after the shaders did their work. So X has to grab them from the GPU, convert into an internal format, send them over the network, convert them again on the other machine to display them. Assuming 60 frames per second * 1024 * 768 pixel * 3 colors, that will hit the fan on both machines. Without knowing any specs I think server B has far less to do with playing the game from its own hard disk. Decent graphics cards are needed in both scenarios anyway. But I'm curious, did you successfully test this with any other real time 3D game?
  7. Indeed, fertility festival is my first tech after advancing to town phase to gather the resource needed the most. Also, after a devastating attack with only a few units left it is a great feature to get back. But you're right dozens of females is an invitation for enemies, however, there is a deadly button to solve that. It is only a festival after all.
  8. Well, I just don't see the point to put this hurdle at the beginning of the ladder, so especially novices feel it. I'd challenge the player the most going from very hard to nightmare, not when he just learned to manage sandbox.
  9. Just learned I use Mongolian tactics a lot. Retreat and ambush backed by fortresses and towers.
  10. That's interesting, any links, background, keywords?
  11. I really miss formations, every cavalry battle looks like Mongolian versus Mongolian regardless of involved factions.
  12. Actually human perception works exponential. The step from 0.33 to 0.66 is like doubling the difficulty or plus 100%, while the step from 1.33 to 1.66 is mere 25% increase.
  13. Is there an option to load a saved game from command line? Found none in the readme.
  14. > Alas, i am a lawyer, not a programmer. That's not mutual exclusive. Actually skill sets do heavily overlap. Ever googled Code is Law? And it explains the over the top wealth formula - you want taxes in the game! Gotcha!
  15. Well, there are different types of reachability: Unit wants to go from land cell to another land cell, both not connected: No pathfinder needed, that's terrain analysis. The path can be blocked by water, mountains or other non-walkable cells. It helps to have a list of regions which are connected and the mean of transport (ship, feet). Unit wants to go from island beyond shore into water: pathfinder should stop at first or nearest dee water cell and no repeat. Unit wants to go from land cell to another land cell, obstructions can be non-movable (houses, etc), completely blocking the path or just some cells. If full blocking there is no need to run the pathfinder again as long as the house is still on the map. This can be solved by temporarily splitting a region into two and make the pathfinder listen to destroy events. Or there are other units blocking cells or the path. Here a time limit makes sense. I think the challenge is to tell the module asking the pathfinder, why the pathfinder failed and that module should be clever enough to not hammer the pathfinder with unsolvable requests. Basically a pathfinder response is success w/ path, partial success w/ partial path, permanently blocked by terrain, temporarily blocked by immobile obstruction or temporarily blocked by mobile obstacles with partial path if available. On top the size of a unit matters, elephants and sieges should not get lost in a forest. I'm not sure if temporarily blocked by wall should get a partial path or not. The player might want to destroy the blocker with his units or not. In case of an AI having it self locked out, I'm not sure too. But an AI should be clever enough to not build houses on the only way out of the village. Unfortunately that sounds more easy than it is. What should not happen are AIs randomly building structures on the map and destroying them because the pathfinder said so. What I have in mind for Hannibal is taking the CC, creating a circle around and from 10-16 points on that circle let the pathfinder compute a path to the cc. Then you have a list of cells from multiple paths. I think building houses on cells which appear multiple times in that list is not a good idea. The idea is to make "streets" an obstruction for buildings.
  16. > If any of my ideas is to enter game, i would be proud. That's called programming and it is only for people not fearing complexity
  17. I've collected quite some papers about RTS bots. From time to time I'll present here either a recently published one or one otherwise interesting. Research on agents in RTS games is very active, because the time constraints and the broad range of needed AI technologies is challenging. Doesn't doing science by playing RTS games sounds like an acceptable job description? I'll start with the 100 page thesis BDI agents for Real Time Strategiy games It is about an 0AD bot written by Andrea Dallatana. Unfortunately he no longer works on the bot. He describes in detail the mechanics of his bot. One idea I especially like is the job market to avoid units standing around doing nothing. Here is the module structure of ABot: Currently discussed at HackerNews is A Survey of RTS Game AI Research and Competition in StarCraft (2013), 19 pages. The authors specifically analysed bot versus bot games and state: ... the top three ranked bots in the competition (Skynet, Aiur and UalbertaBot) do not change their strategy at all depending on their opponent. For example, the Skynet bot (both in 2011 and 2012), always uses the same opening (two gates), except when playing a Terran opponent, when it uses nony. This reflects the trend that the performance of bots is still more dependent on carefully handcrafted and non-adaptive behaviors, ... The paper includes and describes a long list of detected bot strategies. Might be interesting to some human 0AD players too. Very technical is Kiting in RTS Games Using Influence Maps. Kiting is a trick bots can do easier than humans, because the micro management is overwhelming. In short a unit does a ranged attack on another unit and flees out of the range of the attacked unit before it reacts. I'm eager to implement this in Hannibal. Have fun reading!
  18. I'm leaning towards more simplicity and more sandbox. "pop/eco/military/building/tech formula" sounds like a ton of forum posts about "balancing" this formula. I would just make phases a costly tech. Then it is up to player to decide how he accumulates this wealth of resources. If someone spends an hour to advance to phase town with 5 units, well, then he earned it and it is not even unrealistic. Also, I think, if players start optimizing their game play towards a formula it restricts the game and many features remain unrecognized or unused. Not to mention the frustrating hours a newcomer must spend to grasp a rather complex formula. 1000 food and 1000 wood is hard enough to gather.
  19. Actually path finding should even not start if the target is unreachable as the result is always a very costly full map scan. I had another effect recently while playing a random game on Alpine Valleys against 2 AIs. My CC was in the middle so I isolated one AI completely with a wall. Framerate instantly dropped to 2 fps.
  20. Money has multiple functions: Something you can easily carry with you and enables exchange with anybody willing to sell his goods. That's covered in the game, the market doesn't care whether you deal with tons of metal or huge amounts of grain. Every deal needs the exact same time. It is like an economy driven by bitcoins. Also, if your storehouse burns down, you loose nothing, all resources are safe and secure in an invisible vault. and you can donate to other players, faster than wall street. What's missing is a bank, which takes interests for credits, threatens every client being late with payments and naturally earns the most during a war, e.g. the Iron Bank of Braavos. I see there is now a mix of 0AD warfare and 2100AD economic transactions. But I would not trade spending time with the beautiful 3D view for a spreadsheet like GUI to have more realism.
  21. > a massive speedboost While the blog is quite excellent, the boost is only about generator functions. They are tricky because they maintain state after exiting via yield. And there is no simple way to get this state out of a generator function to e.g. save it somewhere. And if you don't use yield, well, then normal functions do the same thing much faster. The other thing is while it is elegant and memory preserving to implement let's say a generator which provides a million Fibonacci numbers or primes you need another iterator function to get the iterator protocol running and the whole thing becomes really slow. So, you gain readable code and small memory footprint at the cost of speed...
  22. Oh, it is. There should be an option no one complains it is to difficult.
  23. I've added the dependencies and now there is a zip for the release (0.0.17) and the svn (0.0.18), rev 15952. Both work in parallel folders in the user folder like .local/share/0ad/mods on Linux. It would be great if there was a hook in GuiInterface.prototype.GetExtendedSimulationState() so that these 2 lines don't make so much work.
  24. > ai should be able to deal with saved games and this has been implemented in Petra Mimo, that's news of the year! Expect thorough feedback very soon. To begin with the saved games have a human readable and a machine part, any chance/tool to grasp the latter?
  25. Thanks Yves, that's a deep investigation. Probably I miss something, so let me ask: The pie charts express a percentage, is this the time spend running or where the tracer got caught? If it is the latter a difference of ~6% re IonMonkey _might_ still indicate a pretty big overall difference, given the huge optimization potential of native versus baseline. Also, is it a game with bots or only simulation?
  • Create New...