{"action":"created","issue":{"url":"https://api.github.com/repos/chrsmith/bwapi/issues/134","labels_url":"https://api.github.com/repos/chrsmith/bwapi/issues/134/labels{/name}","comments_url":"https://api.github.com/repos/chrsmith/bwapi/issues/134/comments","events_url":"https://api.github.com/repos/chrsmith/bwapi/issues/134/events","html_url":"https://github.com/chrsmith/bwapi/issues/134","id":58688976,"number":134,"title":"Proposition: the external agent project structure","user":{"login":"GoogleCodeExporter","id":9614759,"avatar_url":"https://avatars.githubusercontent.com/u/9614759?v=3","gravatar_id":"","url":"https://api.github.com/users/GoogleCodeExporter","html_url":"https://github.com/GoogleCodeExporter","followers_url":"https://api.github.com/users/GoogleCodeExporter/followers","following_url":"https://api.github.com/users/GoogleCodeExporter/following{/other_user}","gists_url":"https://api.github.com/users/GoogleCodeExporter/gists{/gist_id}","starred_url":"https://api.github.com/users/GoogleCodeExporter/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/GoogleCodeExporter/subscriptions","organizations_url":"https://api.github.com/users/GoogleCodeExporter/orgs","repos_url":"https://api.github.com/users/GoogleCodeExporter/repos","events_url":"https://api.github.com/users/GoogleCodeExporter/events{/privacy}","received_events_url":"https://api.github.com/users/GoogleCodeExporter/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/chrsmith/bwapi/labels/auto-migrated","name":"auto-migrated","color":"ededed"},{"url":"https://api.github.com/repos/chrsmith/bwapi/labels/Component-Logic","name":"Component-Logic","color":"ededed"},{"url":"https://api.github.com/repos/chrsmith/bwapi/labels/Type-Enhancement","name":"Type-Enhancement","color":"ededed"}],"state":"closed","locked":false,"assignee":null,"milestone":null,"comments":39,"created_at":"2015-02-24T03:33:16Z","updated_at":"2015-02-24T03:33:24Z","closed_at":"2015-02-24T03:33:16Z","body":"```\nI appended an illustration of the structure change I have in mind. From my \nunderstanding of this project, here are the pros, cons and aspects sorted \nby devastation:\n\n#1- The AIModule.dll is loaded into Starcraft, is given full memory access \nwith no way to detect cheating. This lowers BWAPI's credibility as a \ncompetition platform. Since only \"legal\" data is copied to the shared \nmemory, no undetected cheating is possible from an AIModule.exe.\n\n#2- Debugging is currently not possible, but even if it will be, the \nAIModule.dll will be debugged in the starcraft memory space. The \nAIModule.exe can obviously be debugged and stepped-through quickly and \nindependently.\n\n#3- A contra. Dynamic information classes like UnitImpl will be hidden in \nBWAPI.dll. Unit will have part of that functionality exported from the \nBWAPIAgent.dll. Essentially code will have to be splitted. This means no \ngradual transition from one structure to another, but a major revision.\n\n#4- Since AIModule.exe's runtime is independent of Broodwars, you could \nclose AIModule.exe, recompile and start again without even pausing the \ngame in starcraft. Also, menu controling AIs become more managable.\n\n#5- Starcraft multithreads and is forcing BWAPI to do the same, including \nsynchronisation and instruction queueing, instead of simple calls to the \ndraw functions (ideal case). There is no drawback in instruction caching \nover the bridge. In fact, if implemented properly performance will improve.\n\n#6- A contra. AIModule's event handlers are usually called directly, but \nwill now have to be queued over the bridge. Considering that the event \nhandlers are not called very often, I just noticed that this is not much \nof a performance issue =D\n\nIn case you accept, I would like to join the team.\n\nbeeep ;)\n```\n\n-----\nOriginal issue reported on code.google.com by `goo...@teabix.com` on 23 Nov 2009 at 5:50\n\nAttachments:\n* [plan.png](https://storage.googleapis.com/google-code-attachments/bwapi/issue-134/comment-0/plan.png)\n"},"comment":{"url":"https://api.github.com/repos/chrsmith/bwapi/issues/comments/75693261","html_url":"https://github.com/chrsmith/bwapi/issues/134#issuecomment-75693261","issue_url":"https://api.github.com/repos/chrsmith/bwapi/issues/134","id":75693261,"user":{"login":"GoogleCodeExporter","id":9614759,"avatar_url":"https://avatars.githubusercontent.com/u/9614759?v=3","gravatar_id":"","url":"https://api.github.com/users/GoogleCodeExporter","html_url":"https://github.com/GoogleCodeExporter","followers_url":"https://api.github.com/users/GoogleCodeExporter/followers","following_url":"https://api.github.com/users/GoogleCodeExporter/following{/other_user}","gists_url":"https://api.github.com/users/GoogleCodeExporter/gists{/gist_id}","starred_url":"https://api.github.com/users/GoogleCodeExporter/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/GoogleCodeExporter/subscriptions","organizations_url":"https://api.github.com/users/GoogleCodeExporter/orgs","repos_url":"https://api.github.com/users/GoogleCodeExporter/repos","events_url":"https://api.github.com/users/GoogleCodeExporter/events{/privacy}","received_events_url":"https://api.github.com/users/GoogleCodeExporter/received_events","type":"User","site_admin":false},"created_at":"2015-02-24T03:33:24Z","updated_at":"2015-02-24T03:33:24Z","body":"```\nWhy is Util an own project, instead of just an include file folder for the \nother \nprojects?\n```\n\n-----\nOriginal comment by `goo...@teabix.com` on 28 Nov 2009 at 5:30"}}