BAIT Community Project (thread 3)
Community Forums/Showcase/BAIT Community Project (thread 3)
| ||
![]() Welcome, BAIT (Blitz Artificial Intelligence Tournament), is a Blitz3D open source game for the Blitz Community. Anyone can participate. See HOW TO GET INVOLVED. Post a link to your code or media for the project, and I'll move it up here to this post so that it's in a convenient location. To familiarize yourself with what BAIT is, check out the Game Overview/Gameplay Rules page. HOW TO GET INVOLVED ![]() LINKS ![]() ![]() ![]() ![]() ![]() RULES ![]() ![]() ![]() ![]() DOCS ![]() DEMOS ![]() CODE ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() SUPPORTING FILES ![]() ![]() ![]() TOOLS ![]() MODELS ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() IMAGES ![]() ![]() ![]() ![]() ![]() SOUNDS ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() MUSIC ![]() |
| ||
Ryan, just in case you noticed, I added your name to the clock and league table code files, but I haven't actually uploaded them yet, so be patient. Will try to do so tomorrow... I was modifying Ryans league table code to fit the BAIT project, and I realized that we haven't really talked about exactly HOW a winner is determined. We spoke about having seperate Objectives in each of 4 seperate arenas, but how do you add them all up together in a fair manner? What I am getting at, is under the GamePlay Rules the objective for Arena 3 is to Evade the most attacks and the objective for Arena 1 is to Obtain the highest kill count. Now you could easily use the kill count as the 'point' value for Arena 1, but how many 'points' would you assign to an 'evasion' in Arena 3? Example: BotA gets 3 kills in Arena 1 and 2 evasions in Arena 3. BotB gets 17 kills in Arena 1 and 1 evasion in Arena 3. Supposing that a kill and an evasion each count as 1 point, the total would be: BotA = 5 points BotB = 18 points which would mean that BotB wins the game, but in actuality (according to the arena objectives), both bots should TIE since BotA won Arena 3 and BotB won Arena 1. After thinking about this, I decided that the best method would ultimately be to assign a point per number of bots. In other words, if two bots are playing, then only two points (three total) are achievable (one bot scores 1 point and the other bot scores 2 points depending on which did the better). If eight bots are playing then eight points (total of 36) are achievable. Any bot can score between 1 and 8 points. This will rank them in order for that arena. This way, at the end of the game, all we have to do for each bot is add together all of the points earned for each arena, and the final score will be an accurate representation of how they did in relation to the other bots (GIVEN THE OBJECTIVES). I hope everyone understands me... I TRIED to explain myself. |
| ||
Your method is probably the easiest and fairest way of doing it, I agree. how many 'points' would you assign to an 'evasion' in Arena 3? Simply say that the longer a bot lasts in comparison to others, the better overall rank it gets. My only concern is the number of arenas this tournament is spanned over - wouldn't 5 be a nicer number? Edit: With this ranking system, we'll need some code that converts points to ranks and deals with tied ranks - without dealing with tied ranks, if say in the Kill count round 5 out of 8 bots killed no bots, then one of these 5 bots would be allocated a score of 1, another 2, ... and another 5, which is clearly unfair. I'll work on that code. P.S. Did you catch John's post in the previous thread? Ryan |
| ||
how many 'points' would you assign to an 'evasion' in Arena 3? Which is exactly what I was thinking and trying to explain above.Simply say that the longer a bot lasts in comparison to others, the better overall rank it gets. say in the Kill count round 5 out of 8 bots killed no bots, then one of these 5 bots would be allocated a score of 1, another 2, ... and another 5, which is clearly unfair. Well, I was kinda thinking that maybe instead of each one getting a different number if they tied, they could each get the same number of points. Although, I'm not sure if they should each get 1, 5, or maybe even 3?Thinking about it a bit, I think they should each get the highest, because for example, if bots 2-6 tied, then - that still sets them below number 7 and above number 1. - number 1 would have been that far behind at least one of them anyways - it doesn't penalize them for tieing, the only one 'penalized' would be the one bot below the tie-ers (1), which didn't tie, since it would be 5 behind every one above. - I think if any bots are going to be penalized, it shouldn't be the tie-ers, so that leaves the bots below the tie-ers. I'll work on that code. Sounds good. P.S. Did you catch John's post in the previous thread? Yes, but I don't have time to look at the XML stuff. As for his bot code, I don't think we need any help there, since it would most likely not match our situation anyways. |
| ||
They would get 3 each - You would add up the "normal ranks" and divide by the number of bots tieing, an example:NAMES POINTS UNTIED RANKS FINAL RANKS Bot1 4 8 8 Bot2 3 7 7 Bot3 2 6 5 Bot4 2 5 5 Bot5 2 4 5 Bot6 1 3 3 Bot7 0 2 1.5 Bot8 0 1 1.5 I think the final ranks should be integers though, so I'ld floor the 1.5s to ones. Edit: Reading your edit WolRon, I'll have to traditionally disagree - If one robot killed all others, so this robot got max points and everyone else got zero points, then by your tieing system, the best robot would only be one point ahead of everyone else. It's common statistical practice to take the average of the ranks, and if we did that, then the bots behind the tiers won't have too much catching up to do, and the bots ahead of the tiers will have a reasonable lead. Ryan |
| ||
I guess I like that, except for the reasons I stated above, I think you should CEIL non-integers as opposed to FLOORing them. |
| ||
Ok, ceil it is, I'll try to get the code done by tomorrow. Ryan |
| ||
As you can see by the pics above, I've added in Ryans Clock and League table codes. I'll try to update the source files and demo in the near future. |
| ||
Thanks WolRon, it looks good! As promised, here's the code for the ranking system. Add the following three functions to LeagueTable.bb . The Function LTableRankScores should be called after LTableSort, and the note in LTableDisplay that says that tied scores are not treated differently should be removed. P.S. I've a bit more free time on my hands, any more simple 2D algorithms I can help with? Also, how is BVM coming along? Ryan |
| ||
This is coming along nicely... I'd like to have stayed involved, but i got myself into too many projects at one time :/ Neat work people. |
| ||
Thanks Cygnus! Do stop by again if you get some free time! Ryan |
| ||
I played the demo. I heard no sound, no bullets were shooting, and I didn't see different arenas. All I saw was 8 bots, randomly losing armor and ammo. ??? |
| ||
This is a work in progress my friend! Look at the ToDo list! Feel free to help us out with any aspects of the project though! Ryan |
| ||
Well, I'm going to attempt to update the WIP demo with the additions that Ryan made (the clock and league table codes) and the many additions that I made here and there. Many of the additions that I made were to make Ryans latest additions work with the existing code (this involved creating a seperate, but similar, file called ranksort.bb that sorted the bots ranks between rounds while the leaguetable.bb file sorts the bots ranks at the games end), and to improve the GameStateUpdate() function so that it now changes state from Arena to Arena. (You'll notice that there is no noticeable transition from one arena to the next, but this can be added in much later...) I would have liked to have added in some of the media that's been popping up, but without the bots actually doing anything yet (because the BVM situation isn't completly resolved yet), there wouldn't be much point to adding it in, so I guess that'll wait for now. And as far as the BVM situation is going, I've asked Koriolis a few questions about how to get it to work the way we want it to, and he replied with some suggestions. Perhaps the easiest way to show the suggestions is to just display the email here. So here it is... > Hello Koriolis. Hi > Thanks for attempting to help out. Here are a few tough questions (or maybe > not so tough?) for you to answer: > > (Unfortunately for your forum, I don't think posting on it is of much help > to others since these questions are mostly specific to BAIT.) > > First question: > In our talks, we discussed limiting each players bots abilities based on how > many lines of AI script they used for their bot. if we wrote a custom > interpreter, we wouldn't have a problem implementing that, but I'm not sure > if it can be done with BVM. I see that BVM can execute compiled modules or > can interpret raw Blitz code. > > We can certainly count the number of lines in a raw Blitz file (AI script), > but the problem I see here is that interpreting raw Blitz code leaves each > players AI script easily accessible/readable. This will be undesirable for > each player, since others can just write AI script that directly undermines > their AI script. This is not what we are trying to achieve. > > Each player submitting compiled modules can help correct this situation > since the compiled versions will be much more difficult to read. > Unfortunately, I don't know how or if we will then be able to COUNT the > number of lines of script that exist within the compiled file. > > So, my question to you is: Is it possible to count the number of (original) > lines in the compiled module? And if so, can we skip counting the commented > lines? > Or, if it's not possilbe to do that, then is there a way for a player to > distribute their AI script without it being easily readable (and yet still > usable by BVM)? Well, before trying to achieve this, I'd like to ask you if counting lines really is that meaningfull. As I see it it's a pretty poor way of evaluating the efficency/clerverness/whatever of a script. First because some stupid and blind rearangement of the script source could radically change the number of lines, and it would favor poor writing styles (no comments, no returns, all you can on a single line, etc...) IMHO a much more viable and fair/undiscutable solution would be to have something like "action points" (or call that "energy shells" consumption) associated with each bot command. Like rotating by N degrees takes N points, firing a rocket takes 50 points, reading the current roation takes 5 points, and so on. Besides the fact that it feels fairer and more correct (to me at least), it is pretty easy to achieve. If you like the idea we can discuss the more appropriate way to achieve this - mostly a gameplay design. Now if you really want to limit the number of lines, there is nothing stopping you from doing if the bot author has to use some tool provided by BAIT to compile the script. Let me explain: with BVM it takes like 1 line to call the compiler and compile a script into a binary module. Thus you can design whatever file format you like for compiled bots, a format that *embeds* the BVM module and adds additional information specific to BAIT, like the number of lines, the author name, etc. When loading such a file, you get the information you need (line number etc) and when it comes to run it, you extract the BVM module and make BVM execute it. Pretty easy. Actually even if you drop the idea of counting source lines, the custom file format is probably a good move as you can put in it whatever information you might want and need to read before even running a script. Just a note: to prevent easy hacking of the bytes storing the line number and othe information, you may want to make some basic encryption, like xoring all these custom fields with the control sum of the BVM module (well to be nitpicky, that would really be "obfuscation"). > Second question: > We also spoke about limiting the number of lines of AI script that a player > could use. We had suggested that if a player submitted a script with too > many lines (over 1100), that they would not be disqualified from playing, > but that they would just suffer the consequences of their actions by only > the first 1100 lines of their script being executed. After that point, > control would shift over to the next bot, and the rest of their AI script > would just not run. > > Once again, if we wrote our own interpreter, this would be trivial to > implement, but since we are trying to use BVM, I'm not sure how to implement > this. > > Now, I did notice that BVM can handle multiple processes and as such, can > Create/Kill/Pause and Resume them. I was thinking that once control was > given over to the players AI script to execute, the process could be > terminated (or paused or whatever) once 1100 lines of script had been > executed. However, there doesn't appear to be any way to Pause/Kill a > process after a certain amount of commands have been executed. > > I see that you can set up a process to time-out but that really isn't > helpful. The only delusional method I can see of implementing this would be > to set up the Process to time out in the smallest time element possible (1 > ms?) and HOPING that only 1 line of script was executed. Of course, I'm > certain that that would never happen... > > So, my question here is: Is it possible to limit the number of commands that > are executed? And if so, how? No. But again would it mean much? To me the script size means not much, the actual actions taken by the script do. Actually one big question you have to firmly answer before anything else - and whatever scripting engine you use - is how are the execution of all the bot scripts "parallelized" ? To me it seemed that a natural way would be to have some "Update" function called each frame, but maybe it doesn't fell natural to you. You seem to be going for a "forever execution" of the script, ie the bot script would need to have something like Repeat ...forever, with its action in the loop. Why not. Say you go for it, the process emulation would be a nice solution if you replace (or add) the "action points" by "time points". That is, each bot command takes a given amount of (virtual) time to execute. You would run each script as processes with a little timeout (there only to prevent blocky scripts), and each bot command would consume an amount of the time slice allocated to the bot for the current frame. If the counter reached zero the command issues a "yield" (using BVM_Sleep(0) ) on the current process, that is it makes another bot script execute. It's been a *very* long time I didn't touch anything concerning the process emulation, so it's really from memory and I may have missed some problem, but for now it seems to me this is very doable like that. > > Question three: > I noticed that BVM allows you to map more than 1 module to a context. The > question that arises in my head, is is it beneficial to create a seperate > context for each module (AI script) or is it best to just map all of the > modules to one context? What's the pros/cons of each method? Or rephrasing > it would be, what does using a single or seperate contexts actually allow me > to do? Let's be clear, if the scripts are entirely independent - that is you have not script A importing script B, nor have you scripts accessing themselves the BVM API to run other scripts - then using separate contexts is functionally equivalent. In such a case the only advantage of using a single context is to save some memory, as a single context means a single allocated stack (each context has its own stack) . > > Well, I hope that you aren't overwhelmed by my rambling. Not at all. > Please let me know your answers. I DO ENJOY lengthy replies... ;) > > Sincerely, > Ron I hope I helped. If not I'll do better next time :p Koriolis. |
| ||
Well, the new demo is up. Try it out. All of the code files have been updated to match the WIP demo as well. (Silly me though, when I made the game change states between arenas, I forgot to reset the bots stats, so now they just start where they left off... Oh well, I will have to fix this in the next update.) |
| ||
IMHO a much more viable and fair/undiscutable solution would be to have something like "action points" (or call that "energy shells" consumption) associated with each bot command. Like rotating by N degrees takes N points, firing a rocket takes 50 points, reading the current roation takes 5 points, and so on. "time points". That is, each bot command takes a given amount of (virtual) time to execute. Seconded. This will be far easier to implement than a line number system and will be fairer too. Tried the demo WolRon, looks good. The only thing I'ld change is the speed of the clock - it ran very slowly over here, I'm not sure what it's like on your computer. Now let's get some movement happening! Just to remind you, I've a little spare time to tackle any simple algorithms. Tell me if you can think of anything I could code. Ryan |
| ||
The clock is slow because your screen is apparantly being refreshed at 50Hz. I set it to update at 60Hz, so it matches my clock. Doesn't matter which way we set it up as far as the game goes. It just matters how most people want to view it(some too fast, or some too slow). So, would you rather watch it 20% fast or 17% slow? 17% slow is closer to matching everyone else than 20% fast is... Or maybe we should pick a value in between and the clock time is just off for everybody... |
| ||
Slow it is then! Ryan |
| ||
I'm thinking about changing the Procedure to add your bot to BAIT so that all the seperate bot files are combined into one file (kinda like a .wad or .cab file). This will make distributing your bot easier. So I started working on a Scripting tool in BlitzPlus. You can see a screenshot of it above. It's still got some work to be done, but it can currently take all 4 scripts and combine them all into one XOR'ed file (for simple encryption). After I've got the scripting tool a little more completed, I'll let you guys have a stab at it, and see if you like how it works... |
| ||
Looks very good WolRon! The fact that the screenshot shows 4 tabs, one for each arena, means that you can script different AI for each arena? Trés clever! Ryan |
| ||
Just a quick question regarding the models, maybe I've missed it somewhere but there doesn't seem to be anywhere that says how big the bots are or what the scale is? 1 unit of 1 metre is the usual scale. |
| ||
how big the bots are or what the scale is? Game Overview/Gameplay Rules and Procedure to add your bot to BAIT Units are just units. There is no relation to real world scales (such as meters). ----------------------------------------------------------- More work completed on the scripting tool... It now can include the bot model file and texture with the AI scripts. You can see the addition in the updated pic at the top. No encryption or compression is performed on any of the data (other than a simple XOR on the scripts), but it would be nice to encrypt/compress if possible... Note that I am going on vacation for a week in a week, so the following two weeks will be very unproductive from me. I will try to upload the Scripting tool .exe and source files soon (hopefully today or tomorrow), so that hopefully someone else can continue work on it (for instance, almost none of the Edit commands work...). |
| ||
You should use BlitzXML for your scripting. Then the users can code in XML. I made a scripting system with BlitzXML and it was very easy to set up and work with. But I'm not sure about your current setup - it might be better. |
| ||
It depends on the level of control you want to give your scripts. HTML is a script language, for instance, that doesn't really have good control over a bot's AI, not surprisingly since it is designed for use as displaying objects on a screen ;] It is of course possible through the use of custom tags, but then you need to code the routines to handle all these tags yourself. The exact same thing goes for XML scripting. There needs to be an interpreter behind it. The beauty of BVM is that the 'scripts' can be automatically just as powerful as Blitz3D in it's normal use. The interpreter is coded for you, and since all it does is act as a wrapper to pass commands directly to Blitz's built in commands, it also benefits much from the speed Blitz boasts. Now that Koriolis has generously donated a specific license for this project and WolRon (despite it supposedly being a community project:) seems to be making good progress with it, your suggestion to switch to BlitzXML is probably a little too late in any case =] |
| ||
Well, I've uploaded the Scripting Tool (with source) to the archive. You guys can check it out and (PLEASE! PLEASE!) improve on it. See if you like the idea of having all of the files combined into one file and then the BAIT game sorting out the files at runtime. Unfortunately, due to some possible Blitz and BVM restrictions, upon loading in the BAIT file, the included files may have to be saved to disk in order to be loaded back into the program. This isn't a really big deal, other than taking up extra HDD space and a small amount of time to create the files. But ultimately, I would think that it will make it easier for players to distribute their AI/bot files if they're all as distributed as one file. You'll notice that I didn't add in any code to count the number of lines (or commands) used in the AI scripts, since we haven't finalized on that yet. However, these checks (and others) could easily be added into the ValidateScriptsAndData() function. ----------------------------------------------------------- Well, my vacation will soon be here, and I have a lot of things to take care of, so I will be on the sidelines for a few weeks. Don't let my absence stop any progress from being made. I will sort out any updates that need to be made to the thread/file archive/source files/etc. when I return... |
| ||
Hi guys, I see this is coming on nicely, and, dare I say it, I may just be tempted to continue the work on the scripting tool, and possibly even an encryption routine! I'll be busy for a while too though, so be patient. I'll download Blitz Plus' demo to do this, and hopefully it will be somewhat similar to Blitz 2D for me to understand it. Happy holidays WolRon, speak to you later! Ryan |
| ||
Me again! I've written an encryption routine! Hurrah! Two things to note though: 1) You'll need to make a test file called "script.txt" to see it working. 2) As I've made this function public, you'll need to change the routine's seed, namely EncrypterEncryptionDisplacement, to a different value to reduce the chances of others cheating. It appears that any integer value will do. And here is Encrypter.bb! Here's an example of it's awesome power! BEFORE: BAIT (Blitz Artificial Intelligence Tournament), is a Blitz3D open source game f or the Blitz Community. Anyone can participate. See HOW TO GET INVOLVED. Post a link to your code or media for the project, and I'll move it up here to this pos t so that it's in a convenient location. ENCRYPTED: \[cn:B\åâÄö:[îÄâÇâ}â{å:cêÄååâüê}:nëÅîê{çêÄCF:âì:{:\åâÄöM^:ëèê:ìëÅî}:ü{ç:Ç ëî:Äé:\åâÄö:]ëççÅêâÄôH:[êôëê:}{ê:è{îÄâ}âè{ÄH:m:biq:ni:a_n:chpifp_^H:jëìÄ:{: åâêà:Äë:ôëÅî:}ë~:ëî:ç~â{:Çëî:Äé:èîëä}ÄF:{ê~:cAåå:çëÉ:âÄ:Åè:éî:Äë:Äéâì:èëì Ä:ìë:Äé{Ä:âÄAì:âê:{:}ëêÉêâêÄ:åë}{ÄâëêH:'$ DECRYPTED: BAIT (Blitz Artificial Intelligence Tournament), is a Blitz3D open source game f or the Blitz Community. Anyone can participate. See HOW TO GET INVOLVED. Post a link to your code or media for the project, and I'll move it up here to this pos t so that it's in a convenient location. Regards the actual scripting tool, that may be a bit of a tall order for me, and I still have some uni work left to do. Any volunteers to help beef it up? Ryan |
| ||
Ryan, the current version of the Scripting Tool basically already does that (that, meaning as, that level of encryption) using an XOR command. Use the Scripting tool, and create a BAIT file. Just type up (or copy/paste) some simple scripts (can be anything you want as long as you include an 'Execute()' command in the script somewhere) and then select a few files for the bot to include in the BAIT file. Use Notepad to open the BAIT file and view it and you will see how it's already being stored. If you're just trying to achieve it being unreadable in this fashion (meaning, using Notepad, or similar), then that's already been accomplished. When I asked for encryption, I was really asking for some kind of encryption that although the source files are public, the resulting encrypted files can only be read by the BAIT program. I'm not totally familiar with techniques on how to accomplish that, which is why I asked... |
| ||
using an XOR command Won't people know how to decrypt scripts then? With my version, you can choose a seed, resulting in many different possible ways of encrypting data, making it harder to crack. When I asked for encryption, I was really asking for some kind of encryption that although the source files are public, the resulting encrypted files can only be read by the BAIT program. Why can't my code be used to achieve this? Ryan |
| ||
Won't people know how to decrypt scripts then? Your correct. It just prevents them from unintentionally viewing the scripts.The code you wrote is only slightly better (creating 256 different possibilities), but could just as easily be cracked by a simple piece of code (especially since the source code is made public). (Actually, I think what you wrote is similar to what they call ROT13?, except that it would be more like ROT256) I was hoping for an encryption algorithm that is still hard to crack, even with the source code being made public. I hope no offense is given. I'm not trying to put down your efforts. "I" didn't come up with anything better... |
| ||
Oh, no offence is taken, I'm alright! I was hoping for an encryption algorithm that is still hard to crack, even with the source code being made public. I was wondering beforehand whether I should have emailed you my encryption routine instead, but that would have gone against the spirit of the project. It's a difficult trade-off, and I think we best settle with a not-so-perfect solution. We could always combine our encryption routines, thus doubling the number of possibilities to over 500. Of course, someone could still easily crack this, but would a contestant really go to that much trouble in trying to crack it? As I said before, I doubt I'll be able to tackle beefing up the scripting tool. Before you go, could you give us a small list of things myself and others could do which would be reasonably straightforward? Ryan |
| ||
i smell a shell. |
| ||
I'm not quite sure what you mean, but I'll let it pass. Come on guys! Can anyone help out with the scripting tool (or any other aspect of the project for that matter)? I'm busy with uni work at the mo, so any help would be appreciated! Ryan |
| ||
meant no harm, just a reference to a similar-ish project we attempted at blitzcoder back in the glory days of krylar and co. called...The Shell. |
| ||
Ah, I see. Are there any resources from that project that could be of use in this one? Ryan |
| ||
hi, this project seems to be quite interesting, so i wanna try to help![]() here is a first logo, if you are interested you can use it greetz mangoo |
| ||
Thanks Mangoo! Ryan |
| ||
I sent my bot to WolRon via email he supplied in his profile. keep it up guys. |
| ||
Got it Lenn. Thanks. Just in case anyone is wondering, I'm (slowly) working on adding in BVM functionality into BAIT. The work is slow due to personal time issues, the addition of the Scripting tool, and lack of familiarity with BVM. But I hope to get something working/running in the near future (most likely something that will require rewriting later unfortunately, but at least it's progress...). |
| ||
Is that screenshot of the blue droid called the ANOELanator, as it sure looks like him? |
| ||
Small update: I've uploaded skn3[ac]'s and Lenn's bots to the file archive. They haven't been added into the WIP file yet though. Lenns bot is listed as WORK yet, because it has some small flaws. There is a small 'dot' located on the left side of the bot that apparantly shouldn't be there and the bot itself is not 'centered' with the models origin. If Lenn or someone else could fix that, that would be nice. ------------------------------ To those that may have wondered where I've been that last month or so, and where the BAIT project is going (no, it's not dying...), I've been very busy over the summer months spending time with my family/friends and lots of housework. I promise to spend more attention to this project once the kids start school again and things quiet down at home. ;) I'd like to thank the half a dozen or so contributors to BAIT so far for their contributions and I hope that this project continues to see more involvement. |
| ||
I was precisely wondering how was the project coming. Glad to see it's still alive. Certainly no pressure from my part though, after all I myself have a hard time finding the necessary time to complete some "little" *cough*BVM*cough* project *cough*two*cough* that is now literally taking forever. In fact both news (still alive, and so to speak on hold for a few weeks) are good to me as it means a better chance for me to really give hand (which i'd really like to if time permits). |
| ||
Well, I fixed all of the dead links (I think) due to Drago losing his server space and moved all of the files over to my server. I will host as much as I can on my server unless I run out of space, at which point I will have to find more... I also took the time to smoothen out the characters in the BAIT font (just because I felt like doing it). I will try to get back into the swing of BAIT again and continue adding in the BVM functionality... |
| ||
I've read the posts regarding BAIT, and I hope it carries on. I'd like to commit but I've family/work blah going on. Once I cross the hurdle fo newbie then I may be able to lend a hand. Small people(children) soak up a 'little' of my time however. Keep up the good work.. |
| ||
This is a neat idea and I wish I could participate. Too busy though. |
| ||
You can. You just have to find time to help. Unfortunately, my own time has become increasingly less and less. Due to my 'real' job, on-the-side paid programming jobs I've been taking up, helping when I can around this website, and family life, my involvement in the BAIT project has diminished. I don't wish to quit involvement, but my involvement for a while will be very restricted. (but here I am posting...) |
| ||
After about 8 months, surely it's time to unsticky this topic by now? |