Jump to content


Community Members
  • Posts

  • Joined

  • Last visited

  • Days Won


lexa last won the day on April 3 2015

lexa had the most liked content!

Previous Fields

  • Skype ID

Contact Methods

  • Website URL

Profile Information

  • Gender
  • Interests
    Web applications, Open Source, AI

lexa's Achievements


Discens (2/14)



  1. Hey, thx for your answer I'll check that out before the event Do you have links for the people to get started with AI bots development?
  2. Hi I am lexa from split-bot in case some of you rember I am an active member of Silex Labs, a non profit organization which aims at helping people contribute to free and open source projects. We organize events in Paris, mostly work shops and sometimes a big conference for Haxe (next one is in may, with all the core contributors and community) Next week we have decided to start a series of workshop on programming 0ad bots. 2 workshops of 2 hours are planed to start and see how it goes (this link is in French) Has anyone already organized events for 0ad community? If you have any idea, recommandation, please tell me Please let the world know about this initiative and the other activities of Silex Labs (see April news letter or the blog) And let's hope that this will unveil new french contributors to 0ad!
  3. Ok, I have set xres = 1680 yres = 850 And windowed = true Now it works
  4. Hello I have the same problem on my mac retina When I change the mac resolution to 1680x1050, it is almost ok : the screen size looks ok, but the mouse click has an offset of about 200 pixels up the actual mouse cursor... Maybe if I set the resolution in 0ad config files it would be ok, but how to do that on a mac?
  5. Also a way to get the chat messages typed by users would be nice (see what i mean?)
  6. The events would be called at the start of each turn. I was not thinking at something complicated like events called outside of the AI turn The events are clearly a better way to go for me, because it is much more natural/standard and easy to use in javascript. And often I would use it without having a collection to update.
  7. in fact in the svn ( http://svn.wildfiregames.com/public/ps/trunk/binaries/data/mods/public/simulation/ai/ ) I have found also scaredybottestbot
  8. mmmh so, we have these bots still compatible svn version rigth? JuBot (distributed with the game)qBot (distributed with the game)Marilyn (zip in this post http://www.wildfiregames.com/forum/index.php?showtopic=15483 )SplitBot ( http://code.google.com/p/split-bot/ ) it is a first step to a wiki page with third party bots / maps ... ?
  9. ah ok, thank you you mean the svn of 0ad sources? All the bots are distributed with 0ad?
  10. It's been a while since I did not touch SplitBot... Did someone try to make bots fight together? I need to make some comparisons because I am not a good player, so I guess I should get some inspiration from other bots techniques... Not sure to have the latest versions of all bots. Is there a place where they are listed with download links?
  11. You mean the event thing to update the collections? For example, let's say you have a collection of all of your workers. Each time you build a unit, you would provide a "onBuildSuccess" callback. And in this callback, you could get the unit as a parameter. Anyway you could maintain the collection of your workers up to date in the code of the "onBuildSuccess" callbacks.. I hope I was more clear this time... Don't hesitate to challenge me and see if we can get something interesting before Ykkrosh starts his job
  12. I find it good to have persistent entity collections, clearly but for the "automatic updating" of entity collections, I believe that it is better to have an event system which lets you update your model (keep the collections up to date), than to have this "binding"-like functionality just because in javascript and web languages it is much more common / standard and as far as I'm concerned, after a long time of practicing this languages for building complex web applications, I even prefer the callback version. the addEventListener version of an event system has a good point : you can add several listener, you will not prevent a callback to be called. but the problem is that at the end, it is much harder to debug. and also, callbacks force you to have a cleaner and simpler architecture. finally the preset filter functions should be useful. in splitbot i used a helper class to access these collection with a "cache" mechanism public static var myEntities:EntityCollection; public static var myPeopleUnits:EntityCollection; public static var myBuilderUnits:EntityCollection; public static var myBuildingStructures:EntityCollection; public function getMyEntities():EntityCollection public function getBuilders(entities:EntityCollection):EntityCollection public function getWorkers():EntityCollection public function getFondations():EntityCollection public function getBuildings(allowedTemplateNames:Array<String> = null):EntityCollection public function getResources(entities:EntityCollection, type:ResourceSupplyType = null):EntityCollection
  13. So, if I understand well, the main change will be in the way one can filter and keep entities organized? What I missed in SplitBot - persistance for the EntityCollections - ability to put metadata on a building when you start to build it (like you do it when you start to produce a unit) - an easy way to detect if a place is buildable with a given unit at a given position and orientation - an easy way to detect if there is water between a unit and a position What would really have helped me is an event system. To be able to give a callback and arguments in these cases: - when you start to build an entity or produce a unit: onBuildComplete and onBuildStoped - when you send a unit somewhere: onUnitArrived, onUnitBlocked - when you send a unit to harvest, onStart, onUnitBlocked, onResourceEmpty, onDropResource, onResourceIsFarAway... - ... Just in case it is useful to you : in SplitBot have filtered the entities in this arrays and used a kind of "cache" system to compute the array only one time per tour : I think that the "Filters.byMetadata" thing would make my life easier, would it be fast if done with a C function? And last thing : I do not think it is necessary to have the {'func': filter_function, 'dynamic_properties': ['owner', 'idle']} argument to keep a selection up to date. It can be done by hand easily if there are events.
  14. Hi, Just to say that I was waiting for the day when you start the task "Better engine support for AI scripts" Did I miss it?? Thank you Philip for your work!
  15. Maybe there is no way for the AI to know if a place is obstructed because of this special obstruction of the farms...
  • Create New...