Poiuy, we come to you with a behemoth request! We need you to develop a streamlined PyAI compiler of sorts that compiles a designated aiscript.bin from lists of scripts held within designated folders. ... Yes, I know, PyAI already does that and you're probably confused right now as to what the hell this is about?
What we're proposing is a smaller and simpler separate stand alone program specifically designed to inject various AI's into Starcraft. No opening of scripts, no exporting, no save buttons, no editor, no external defs, no tbl or mpq management, etc. Tho a button to launch PyAI proper should be included. Scripts will be placed/stored into separate folders as Terran, Protoss, and Zerg. Much like the palette files in PyGrp, these scripts will then display in their appropriate window/column in the gui. A 4th window would then display the various titles of these scripts chosen from each window/folder. Finally a launch button would compile the scripts, inject this compiled aiscript.bin into a designated sempq (BWAI.exe) and launch said sempq. OR perhaps the program would close and launch a 2nd program that would automatically do this (inject the compiled script and launch).
I know I have come to you about this before, and the auto-launching injecting part seemed a bit out of your scope. This was before your extensive language studies such as C++ and I believe this is totally within reason now. I can, as you have seen with BWAIDowngrader etc, write a simple program that can take a file and archive it into an .mpq using Blizzard's own installer (which happens to support the .mpq structure) and I suppose something like this could be used, but an all-in-one program would be really slick.
The compiler itself would of course spit out any error messages for "bad" scripts, but the intended purpose is for this to be a launcher not an editor/tool. The scripts that are in this folder are 100% complying/working scripts.
Now, users can play any AI they want! Want to play Racine3.0T with AsharaP and Mesk's Zons? ... just select the 3 from each window and hit "play".. It's that simple. Wanna see how 3 non-cheating AI's fare against Zbath? Maybe want to play an older version of AhzzAi? It's all here because .txt files don't take up any space at all. Most importantly the ai is "built" by the user rather than pre-compiled.
This is a quick mock up of a GUI. Obviously "frame" stands for scripts.
What this will allow is for the non-modding community to be able to play around with all sorts of combinations without having to import, save, and then use winmpq or Mpqdraft etc. All these chores alienate the general non-modding audience. Additionally, modders can now supply .txt files for their AI rather than compiled .exes. Each .txt will file will be placed in the proper folder (Terran, Toss, Zerg). Best of all, this is a way to include EVERYTHING we have ever done at BWAI.com into one big simple package. Every script produced over the last 5 years will be playable with just a few clicks!
BWAI3.1 was good, and BWAI Gold was fun as well. BWAI Launcher would be everything those 2 programs fell short of and more as well as a great way to preserve what we've done here.
So where to begin?
EDIT: Damn forgot to mention something that came to me on the golf course today.. ENTROPYZE! A special button that will randomly pick one script from each race! If possible?..
Well I've been holding off on replying since I knew this would be a quick project. So here you are:
Download: Out of date.
It is Window's only currently, though it is almost 99.99% mac compatible and will probably have a Mac version released later. It comes with the default (T/P/Z)MC(x/u) scripts only, but just add your files under their race inside the Scripts folder. So give comments and feedback, i'll be happy to update it should bugs/ideas arise. Have fun!
Holly crap you are quick man! This is a "dream come true" for our BWAI series as well as the BWAIWar! Life and keeping up with all the scripts on the forum just got sooooo easy for us all! This is so replacing BWAI Gold as our most current version. I can't tell you how stoked I am about this program!
Maybe about the only problem I can forsee with this, is ppl being being careless with their titles and the database ends up with 12 different titled scripts for the same one. Much like your Starcraft map download folder. Ever see how many of the same maps there are with just a slightly different name?
So I propose that scripts follow the following guideline: (up for suggestions) War (name) (T,P,Z)(version).txt = AI vs. AI War scripts No$ (name) (T,P,Z)(version).txt = Non-cheating scripts meant for human play Pro (name) (T,P,Z)(version).txt = our cheating "pro" scripts $$$ (name) (T,P,Z)(version).txt = Extreme scripts.
so example: War Ashara T1.0.txt Pro Racine Z3.0.txt $$$ Zons Z3.1.txt
The race really isn't needed, but helps in distribution as well as avoids mixups so should be included. what do you think? seems it can't hurt.
The SEMPQ.exe would be nice if it was the latest 1.16.1FG.exe we have been using. This has the "scv interrupt" exe edit enabled for users in 1.16.1. Other SC versions still will work as well. Also, we have a special trigger that kicks idle players for our AI war battles. This shouldn't effect normal play.
Here is a quick zip package of our current AI war scripts + the above mentioned SEMPQ.exe. I'll try to go through our database tonight and round up all the scripts to relabel, check to see that they comply in the editor, and then place them in their proper location. [attachment=2194:BWAILauncher_files.zip]out of date
I gave the program a quick trial run, but am getting the following error when selecting "play" or "Entropy".
CODE
Exception in Tkinter callback Traceback (most recent call last): File "Tkinter.pyc", line 1403, in __call__ File "BWAILauncher.pyw", line 264, in play File "BWAILauncher.pyw", line 59, in execute File "Libs\AIBIN.pyc", line 303, in __init__ File "Libs\AIBIN.pyc", line 1779, in load_file PyMSError
prob something to do with my "windows" program. I can try more things if you need me to.
Edit: Also, is there a way to make the default window size setting be a bit wider?
Maybe not quite that wide ^^
Also any way to include a button to PyMs website or BWAI.com? And you gotta change "Entrropy!" to "Entropyze!".. it's too long of a story to explain.. it just has to be tho!
Exception in Tkinter callback Traceback (most recent call last): File "Tkinter.pyc", line 1403, in __call__ File "BWAILauncher.pyw", line 264, in play File "BWAILauncher.pyw", line 59, in execute File "Libs\AIBIN.pyc", line 303, in __init__ File "Libs\AIBIN.pyc", line 1779, in load_file PyMSError
Ah that was my bad trying to cut down files to make the DL smaller. For now to fix it go into BWAILauncher\Libs\MPQ\ and you'll need to create a new folder name "scripts" (without quotes) and add a bwscript.bin there. There also seems to be another problem loading the unitdef.txt with relative paths. If you are getting an error after fixing the first problem, you'll have to go into Libs\settings.txt, and replace the path for unitdef.txt to the full path everytime before you open the program (tedious but its just a quick fix till next version). Both these problems are fixed for the next version.
About file names, I don't know if i'll make the program enforce a specific format, but I definitely think its a good idea to have a guide for the names.
Yeah the SEMPQ.exe was just the quickest thing I had access to. There is an option to choose which file to target as the SEMPQ, though I have not made a way to change settings without manually editing Libs\settings.txt. I will definitely update the SEMPQ in a later version with the FG exe you uploaded.
Find a good default window size for me please. Resize your program to what you want, then open Libs\settings.txt and tell me what the value of the 'window' setting is.
And yeah, I'll be adding an about dialog like PyMS for the next version.
I seem to be getting read errors with all those Zerg scripts I uploaded including the Broodwar one supplied?
CODE
Saving Error: The Zerg script 'Blizzard Broodwar' could either not be read or had an error. It has been removed from the list until the next time you use BWAI Launcher.
Maybe I better check my bwscript.bin. EDIT: Ok, I see there are more directions besides just adding bwscript.bin. Will check back shortly.
CODE
'extdefs':[\ u'Libs\\unitdef.txt',\ ],\
not sure what needs to be changed here as per your instructions?
Btw, nice feature that takes a "bad" .txt file off the list.
@ the names and keeping things organized. How hard would it be to have a few script folders accessed by say different tabs on the launcher? (No$, AIWar, Pro, Extreme) Or maybe a string associated with a title to let the program know what category it should be in? The thinking is that scripts will be kept in their respective category which would make more sense for the "entropyze" button. Here new scripts could just be added to their respective folder. For a mod like Racine Rebels, the scripts would be chosen from the pro folder, Entorpy would be chosen from the No$ folder. AIWar scripts from the AIWar folder. If anything, it would be nice to be able to separate the "Entropy3" No$ files at the least ... Or just kill me now! We can live with an all-category random button.
I'll give you a screen size tonight as well as try to round up all the scripts on the site. Edit: how about '540x540+500+110' We plan to supply you with a good size database of scripts!
This little program is going to be so useful!
Question to scripters: Should users NOT supply version #'s with their script? This way they can overwrite their scripts with updated ones. Say for example script titles such as: "$$$ Zons Z.txt" and "No$ Archon_Wing T.txt" instead of "$$$ Zons Z3.1.txt and "No$ Archon_Wing T1.2b". The debug message can then supply user what version the script is in game. I think this might be a good idea so that if a particular script is found to have an error, it can be "updated" without having to remove the old one as well as keeps the database from getting bloated with old versions. dunno up to the individual scripters as to what they want to do/provide. any thoughts on this or other suggestions to keep this organized?
Edit: Btw, check out this thread at ShadowFlare's site back in 2005. Only took 4.5 years for it to become reality! Aiscript.bin external compiling
not sure what needs to be changed here as per your instructions?
Change the path to a full path, not a relative path. So if you unzipped the folder to the C drive then the full path is C:\BWAILauncher\Libs\unitdef.txt. So it would look like:
Actually, I've just thought of a way to make it so you don't have to do this everytime. If you move the unitdef.txt outside of the BWAILauncher folder and subfolders and put that full path in the settings.txt file it should be fine.
QUOTE(bajadulce @ Nov 16 2009, 07:48 PM)
Btw, nice feature that takes a "bad" .txt file off the list.
Glad you like it
QUOTE(bajadulce @ Nov 16 2009, 07:48 PM)
Question: Should users NOT supply version #'s with their script? This way they can overwrite their scripts with updated ones. Say for example script titles such as: "$$$ Zons Z.txt" and "No$ Archon_Wing T.txt" instead of "$$$ Zons Z3.1.txt and "No$ Archon_Wing T1.2b". The debug message can then supply user what version the script is in game. I think this might be a good idea so that if a particular script is found to have an error, it can be "updated" without having to remove the old one as well as keeps the database from getting bloated with old versions. dunno up to the individual scripters as to what they want to do/provide. any thoughts on this or other suggestions to keep this organized?
thats a good question, we'll have to brainstorm on what should happen here.
I just put the program on the c: drive and copy/pasted your code.. not that there's anything wrong with the desktop! Bingo it works now! NICE! SOOOOOOO NICE!
I thought about the category proposal a bit more and might suggest a simple solution: Rather than making the program so complex as to include various categories, we can supply different programs. So an Entropy III Launcher would only contain Entropy scripts, whereas a Racine Rebel Launcher would only contain those scripts. Each program would then target their respective sempq. Entropy program targets entropy.exe and RRebels.exe with its special triggers does it's own thing.
I'm kinda rambling now. I should take some deep breaths.. sorry for being so over excited!
I'm thinking there should be "AI Packages". So there would be a dropdown above the listbox's to select a package, each package having its own scripts and optionally a different SEMPQ or unitdef.txt. The "Packages" would have a folder layout like:
If you can do something like that we would really be in great shape!
For sure the 2 categories non-cheating (Entropy) and pro (Racine's Rebels). AiWar and Extreme fit in their own categories as well, but now we're getting into 4 categories... yikes! Would be nice, but it's not critical. I'll try to get the final SEMPQ's out to you ASAP.
Also, this entropyze button won't work in multiplayer due to the desync issues and I don't see an easy solution to this. It's still is a great feature for single player... which is the main target audience anyways. Love it.
EDIT: proposed solution for the multiplayer desync is to include the old school external jump scripts to the entropy folder in single .txt form. These Entropy Multiplayer(TPZ).txt scripts will be used for multiplayer games rather than the mix-and-match button. Also, because some scripts aren't optimized for all matchups, we may include a special aiscript.bin for the lib folder that contains some hardcoded permanent scripts that users can "jump" to in their individual scripts. Generic scripts such as Island maps + vs. race specific jumps they might not have. These generic scripts will of course have unique ID/labels.
EDIT2: Archon_Wing's E3.txt files are so big that he has used bwscript.bin as a place to store his Zerg files. If we use these bw headers, are there any issues with this compiler and the launcher? This would only apply to the multiplayer.txt files mentioned above.
Hmm, this could get messy. Remember, when importing a script with external jumps, you MUST also be importing the scripts it is jumping to at the same time (so you can't just house general scripts in an aiscript.bin). The only way I can see these happening in a clear and general way is if I implement a special "include" command. This command will look in the current directory, then a special "builtins" folder, for the filename you specify and "paste" its contents where the include command was. For the Entropy Multiplayer package, you would have your (T/P/Z)MC(x/u) as a '.txt' file, and all the other scripts as something else like '.ai'. This way only the main script will be listed, and the main script would then have something like:
CODE
include baja.ai include ashara.ai
At the top to make sure all the code is being imported and "jumpto-able". For the generic race specific/island scripts you would just put them in somewhere like "Libs\builtins\" then any script in any package can include that script and jump to its blocks.
Currently the bwscript.bin wont be saved and placed in the SEMPQ, but when I make it do that then there should be no problems with scripts being bwscript.
Also, I'm thinking of adding an #if pre-processor directive (for those non-programmers: a "command" that runs on the code before the code is imported) which can be used to make the debug messages toggleable. For example it would look like:
CODE
MYAI(0,000,aiscript): ... #if DEBUG debug(debugmsg, This is my ai v1) --debugmsg-- #endif ...
So the part between the #if and #endif will only be compiled if the DEBUG define is present. Then there would be a "Display script name" checkbox on the GUI which if checked would define DEBUG before importing.
@ the external jumps and importing all scripts at the same time: ah forgot about that... Yeah, this does sound quite messy and might complicate things. Simpler is often much better. If a mod is missing a particular matchup then so be it. We can update that script to include one or append it with a small generic one if we absolutely must have a working branch. The Multiplayer.txt file however will still comply with this rule and we can proceed with that as planned. And if this multiplayer.txt file happens to be randomly chosen by the mix-and-match button in single player, this is fine as well. I don't see a need for you to have to go to all the trouble to differentiate between the two types of scripts. We'll probably call our multiplayer.txt file something like "Entropy III Terran.txt"
No no it wont be messy if we use the way I described. I don't have to do anything special other then implement the include command (easy), which is required to do either of the things we're talking about. If you want one of the features I have to implement the include commands which makes it just as easy to do the other feature. Ultimately its up to the package makers on how they want to do it, I'm only making the program and then putting your guys scripts into default packages.
I'm thinking of also adding support for zips of scripts. So the program will list all the .txt files and all .txt files in .zip files from the packages Terran/Protoss/Zerg folders. It won't effect much other then the size of packages and adding a few more steps to edit existing script files, which should be rare anyway. Thoughts?
As for the remaining options/features, you just go ahead and do whatever you feel is best. You know what will work.
Edit: I changed the title of my first post to "Proposed BWAI Launcher (Development)". This will give you the opportunity to start a fresh topic with the next release to describe your program better than this thread if you so desire.
@copy/pasted shoutbox conversation in regards to the ability to target/browse for other sempqs.
(02:14 pm) bajadulce - Also.. I should really stop posting this stuff in the shoutbox. Shouts disappear when they fall off the list and this type of discussion is prob best left in the forum thread so ppl reading this at some future time can comment or offer feedback as well.
(02:12 pm) bajadulce - I actually like this idea to be able to browse for .mpq's. I was on edge at first because all my brain heard was "patch_rt". Say for instance some new scripts get built for a classic mod like ORAI or even the upcoming PEAI. Here users could select from a database of scripts in the accompanying mod folder (if that option exists-to add folders?). Easy, Medium, Insane, or even randomize option allow for some creativity for mods with AI script support. So being able to select a target has some neat perks.
(02:00 pm) bajadulce - or they get lost/deleted. But there is no reason why just having blizzard scripts alone wouldn't work. I'm prob just over reacting to the fact that if ppl have a way to screw something up, they usually do. smile.gif
(01:58 pm) bajadulce - tho blizzard scripts if untouched would suffice. The "untouched" part is suspect to modification being as accesible as the script folders are.
(01:55 pm) bajadulce - by covering butt, I meant give them an option to restore this target back to the original. just keep a default aiscript.bin stored somewhere in the program folder. Not just "blizzard scripts" to compile/inject, but a genuine aiscript.bin. guess that's what I was trying to suggest by cover butt.
(01:52 pm) poiuy_qwert - I don't think I should have to cover my butt. If the person wants to target the patch_rt they should cover their own butt
(01:49 pm) bajadulce - woah... epic shout length. Prob should have posted in the development thread instead. lol
(01:48 pm) bajadulce - the file aiscript.bin hasn't appeared to have changed throughout the versions. It's located in patch_rt because it obviously was part of the expansion, tho not sure why it wasn't placed in brooDat.mpq? Maybe it has changed? If it did, it must have been way back at v1.04 or earlier dunno. Whatever the case, the file works for all (modern) versions and so you can include an option to restore this target with the genuine blizzard file the next time they fire up the program. That would seem to be the best way to cover your butt here. Allow the option to inject both the custom compiled aiscript and the default one into a targeted .mpq.
(01:37 pm) poiuy_qwert - thats another good point baja. i've decided im still going to expose the option, and im not gunna add any backup+restore of files. its just gunna have bold warnings and popup dialogs saying its their problem to deal with if they want to choose a custom target
(01:29 pm) poiuy_qwert - lol tongue.gif
(10:51 pm) bajadulce - Oh I see he went to bed. smile.gif That guy used to stay up till 2-3 am. Glad to see him sleeping now! Students need sleep.
(10:45 pm) bajadulce - Tho a targeted sempq doesn't always comply with the users current SCraft either. Such is the case of gluchat.bin as an example.
(10:43 pm) bajadulce - Also some of these sempqs have other files as well. Triggers, .bin files, .pcx, .tbl... blah blah. How will the program differentiate between the different sempqs and what to place in patch_rt for one set of scripts and not the other. Racine's rebels for instance uses totally different files than Entropy. Not trying to throw a monkey wrench in the feature, just thinking of the different needs.
(10:35 pm) bajadulce - I just know we pissed a lot of ppl off when rama forgot to replace the "UMS" Ai scripts. ... what a tool smile.gif
(10:32 pm) Archon_Wing - good night
(10:32 pm) bajadulce - As long as you are injecting files into THIER patch_rt.mpq, you will prob be alright. when we placed a backup patch_rt in BWAI3.0, we weren't replacing it with thiers.. can't remember, but the code is all there at Entropy's site under older versions. When Starcraft went from 1.10 to 1.11, there were additional problems writing to patch_rt. I can't remember what we did to get around this.
(10:32 pm) Archon_Wing - I probaly need more and they need to be in bright red, but oh well.
(10:32 pm) poiuy_qwert - ok sleep time for me, goodnight guys
(10:29 pm) Archon_Wing - This is why I put all those disclaimers into Entropy III laugh.gif
(10:28 pm) bajadulce - i was just trying to be funny .. think of really stupid scenarios. I'm sure there's a good one I haven't thougth of yet. (10:28 pm) poiuy_qwert - good call baja, thats another way it could go funky. but then again I doubt anyone other then Archon_Wing will ever target the patch_rt anyway, and if they did I'll have a note in the settings dialog about it
(10:28 pm) bajadulce - it was a joke.. really. the user would go backwards after exiting starcraft.
(10:27 pm) Archon_Wing - wouldn't it just demand you download the latest version if you connect to bnet
(10:26 pm) Archon_Wing - If they delibrately select the option and do that. Well, "download at your own risk!"
(10:25 pm) poiuy_qwert - same general problem with iccup launcher
(10:25 pm) bajadulce - what if someone has 1.15.2.. runs the launcher and then connects to bnet? laugh.gif
(10:25 pm) poiuy_qwert - well dxwnd lets you run SC in a window, and I know how annoying it is wanting mods/ai's to use it (it will only target the starcraft.exe, no sempqs/fg exe's etc.)
(10:23 pm) poiuy_qwert - heh
(10:20 pm) bajadulce - all that stuff is Greek to me. I don't play video games too often.
(10:19 pm) Archon_Wing - Just consider chaoslauncher is probaly one of the most popular 3rd party progams, next to bwchart
(10:18 pm) poiuy_qwert - well really the functionality has mostly been there from the start, just a couple tweeks here and there to get it exposed
(10:17 pm) bajadulce - go for it. I have no idea what dxwnd is and don't have iccup launcher so I'm not qualified to say how "neat" something like this would be. I only see potential issues. risk-reward tho. If it's a kickass feature it's worth it.
(10:17 pm) Archon_Wing - mad props
(10:16 pm) Archon_Wing - Can't believe you have it all figured out in a few minutes lol
(10:15 pm) Archon_Wing - lol wow
(10:15 pm) poiuy_qwert - its no harder for me to implement really, and if it makes Archon_Wing happy I'm glad to do it smile.gif
(10:14 pm) poiuy_qwert - Also remember this would be an option. You would have to go into the options dialog, choose patch_rt as the target MPQ, hit the "Use different file as target EXE" and choose your dxwnd/iccup launcher
(10:13 pm) bajadulce - ahh you did, my bad. Do whatever you feel is best. I don't see the need.
(10:10 pm) poiuy_qwert - I said it would backup what is in the patch_rt then restore it. I wouldn't just shove the latest file into it...
(10:09 pm) bajadulce - because we keep screwing up their patch_rt? BSW_Rama did this in BWA3.0 for 1.10SC. We've had dozens of patches since then and we would have updated them as equally often. Also, what if someone is using an older SCraft? Not all ppl are on 1.16.1
(10:08 pm) poiuy_qwert - the chances of someone that plays multiplayer but is using custom single player ai's having a power failure while using BWAI Launcher is pretty slim
(10:07 pm) poiuy_qwert - the only problem would arise if the power turned off or if BWAI Launcher crashed. and sc patches would have no effect
(10:07 pm) bajadulce - and what happens if blizzard patches to 1.17? now they have to download some fix from us as well?
(10:04 pm) bajadulce - what if Starcraft crashes for some reason? or power goes off.. shit like that.
(10:03 pm) poiuy_qwert - after starcraft closes of course
(10:03 pm) poiuy_qwert - it will be practically the same as changing the target to a custom SEMPQ except DxWND or the iccup laucher can be used to get windowed mode
(10:03 pm) bajadulce - when does it restore? He asked if you could replace aiscrpit.bin in patch_rt. When does the program restore the file?
(10:03 pm) Archon_Wing - iccup launcher*
(10:02 pm) Archon_Wing - A lot of people use either iccup and chaoslauncher though, so that's why I'd think it'd be useful
(10:01 pm) poiuy_qwert - disconnected from games? it will backup+restore the files in the mpq so it wont effect anything other then where the scripts where placed for the time you played
QUOTE
bajadulce - I actually like this idea to be able to browse for .mpq's. I was on edge at first because all my brain heard was "patch_rt". Say for instance some new scripts get built for a classic mod... Here users could select from a database of scripts in the accompanying mod folder (if that option exists-to add folders?). Easy, Medium, Insane, as well as the randomize option to allow for some creativity for mods with AI script support. So being able to select a target has some neat perks.
Sounds like a winning feature! Sorry to have made such a big hoopla and fuss over the "terrible" things that could have happened.
Hey this is really slick and exciting! The Interface looks great, it's streamline and easy to use, and the way you went about the option to target another .exe looks trouble free. I'll take the rest of the evening to test it out and gather up some packages!
Couple questions: 1. I imagine a "new" aiscript.bin is compiled each time rather than adding scripts to an existing aiscript.bin? This works great as it avoids the potential of going over the size limit with old scripts that might be lingering around. Tho some of the UMS scripts such as shared vision, nuke paint, junkyard dog etc won't be available unless we somehow included those automatically. But does anyone ever play AI on UMS anyways?
2. Where's the option to enable the debug mode? didn't see that.
3. Adding packages for the user is as simple as including a copy of the settings.txt with any special SEMPQ that it might need? Looks pretty simple and clean.
4. Finally, this is more of a question for everyone. I noticed the AI packages are listed alphabetically and would like to propose a hierarchy of folders. Seeing that our non-cheating vs. human scripts are the most popular of the site, I would suggest this be atop the list. Our AIWar possibly second, Pro, and then finally extreme. I know numbers are a little corny, but here's one idea for folder labels, tell me what you think: 1) Entropy (Non-cheating) 2) AIWar (AI vs AI) 3) Racine's Rebels (Pro$) 4) Extreme (FMP$$$)
This would look like this:
These proposed folder labels might be a bit too complicated for ppl to use the .zip feature without botching it up? Lots of brackets, spaces, and whatnot. So something simpler would prob be better. Tho the AI Package window is really nice and big! Might as well take advantage of the space and describe what each package does.
I have 3 Sempq's to give you. (RRebels.exe, Entropy.exe, and a modified SEMPQ.exe can be used for Extreme and War) I'll get busy updating the non-ai files in the 2 exes so we can get this out for more testing. I can get started on the Extreme, AIWar, and RRebels packages as well tonight. I will leave our non-cheating scripts for Archon_Wing to round up/modify.
Just to clarify, this is how the debug on/off should be coded? Paying attention to the All caps on DEBUG.
CODE
#if DEBUG debug(debugmsg, This is my ai v1) --debugmsg-- #endif
1. I imagine a "new" aiscript.bin is compiled each time rather than adding scripts to an existing aiscript.bin? This works great as it avoids the potential of going over the size limit with old scripts that might be lingering around. Tho some of the UMS scripts such as shared vision, nuke paint, junkyard dog etc won't be available unless we somehow included those automatically. But does anyone ever play AI on UMS anyways?
Yeah a new empty one is created everytime, though I could have an aiscript.bin that is used as a base to keep campaign+ums AI scripts. I don't see a reason not to do it unless there is a possibility that 3 melee scripts could max out the file size.
QUOTE(bajadulce @ Nov 19 2009, 09:28 PM)
2. Where's the option to enable the debug mode? didn't see that.
Heh it seems I exposed the option for command line but not in the GUI For now you'll have to manually enable it by editing Libs\settings.txt and changing "'debug': False," to "'debug': True,"
QUOTE(bajadulce @ Nov 19 2009, 09:28 PM)
3. Adding packages for the user is as simple as including a copy of the settings.txt with any special SEMPQ that it might need? Looks pretty simple and clean.
Actually when adding a package the bear minimum is a folder with the three race folders inside, thats it. It has the options to have a settings.txt (if none is supplied it is created with all the defaults the first time its used), have a custom SEMPQ (path set in the package settings), and also can have custom unitdef.txt's.
QUOTE(bajadulce @ Nov 19 2009, 09:28 PM)
4. Finally, this is more of a question for everyone. I noticed the AI packages are listed alphabetically and would like to propose a hierarchy of folders. Seeing that our non-cheating vs. human scripts are the most popular of the site, I would suggest this be atop the list. Our AIWar possibly second, Pro, and then finally extreme. I know numbers are a little corny, but here's one idea for folder labels, tell me what you think: 1) Entropy (Non-cheating) 2) AIWar (AI vs AI) 3) Racine's Rebels (Pro$) 4) Extreme (FMP$$$)
Looks good to me.
QUOTE(bajadulce @ Nov 19 2009, 09:28 PM)
I have 3 Sempq's to give you. (RRebels.exe, Entropy.exe, and a modified SEMPQ.exe can be used for Extreme and War) I'll get busy updating the non-ai files in the 2 exes so we can get this out for more testing. I can get started on the Extreme, AIWar, and RRebels packages as well tonight. I will leave our non-cheating scripts for Archon_Wing to round up/modify.
Ok.
QUOTE(bajadulce @ Nov 19 2009, 09:28 PM)
Just to clarify, this is how the debug on/off should be coded? Paying attention to the All caps on DEBUG.
CODE
#if DEBUG debug(debugmsg, This is my ai v1) --debugmsg-- #endif
Yes. Anything, not just debug commands, that is between the #if and #endif will not be compiled.
I could have an aiscript.bin that is used as a base to keep campaign+ums AI scripts. I don't see a reason not to do it unless there is a possibility that 3 melee scripts could max out the file size.
That seems like a good idea. This base file however should be compiled fresh every time rather than just written to? I could see it getting really big if ppl used odd labels for their scripts and thus hung around? I guess you would use the base to compile a new one?
I don't see any reason to not include the UMS AI scripts as these aren't that big and are very useful if ppl ever build AI maps. This would also be a good place to store the Vanilla SCraft melee scripts as well. Vanilla scripts mixed in with Broodwar scripts has a random chance of not having any script when using the entropyze button. Those scripts should be put in with this base aiscript.
The campaign scripts should just be done away with. This will allow for our ginormous Entropy Multiplayer .txt files. I seem to remember it was necessary to remove the campaign scripts for Entropy AI to work properly.
I haven't tested compiling a script that has "warnings". I imagine the launcher just ignores those and there is no error reported? Or does it get removed from the list as well?
I'm putting together the Racine's Rebels Pro package right now.. wow there's a lot of warnings and some errors with some of these old scripts. PyAI really developed into a great tool. I'm happy to end the "BWAI" like this and turn it completely over to the fans/members.
I could have an aiscript.bin that is used as a base to keep campaign+ums AI scripts. I don't see a reason not to do it unless there is a possibility that 3 melee scripts could max out the file size.
That seems like a good idea. This base file however should be compiled fresh every time rather than just written to? I could see it getting really big if ppl used odd labels for their scripts and thus hung around? I guess you would use the base to compile a new one?
I don't see any reason to not include the UMS AI scripts as these aren't that big and are very useful if ppl ever build AI maps. This would also be a good place to store the Vanilla SCraft melee scripts as well. Vanilla scripts mixed in with Broodwar scripts has a random chance of not having any script when using the entropyze button. Those scripts should be put in with this base aiscript.
The campaign scripts should just be done away with. This will allow for our ginormous Entropy Multiplayer .txt files. I seem to remember it was necessary to remove the campaign scripts for Entropy AI to work properly.
I'm thinking i'll just include the default aiscript.bin and bwscript.bin files and use those as a base, then if a max file size error happens on compile I'll tell the user and ask if they want to proceed without the campaing+ums scripts. And the base files never change, they are only loaded.
QUOTE(bajadulce @ Nov 19 2009, 11:27 PM)
I haven't tested compiling a script that has "warnings". I imagine the launcher just ignores those and there is no error reported? Or does it get removed from the list as well?
They are ignored.
QUOTE(bajadulce @ Nov 19 2009, 11:27 PM)
I'm putting together the Racine's Rebels Pro package right now.. wow there's a lot of warnings and some errors with some of these old scripts. PyAI really developed into a great tool. I'm happy to end the "BWAI" like this and turn it completely over to the fans/members.
Yeah I'm quite happy with how PyAI turned out, aside from a few things I'm also very very happy to be a part of all of this!