web based deal generator
#1
Posted 2009-April-02, 08:10
I used to enjoy http://www.rpbridge.net/xwd2.htm
I've tried http://www.playbridge.com, but I don't think it works properly. For instance when I specify I want a hand with 5-6 spades, it almost always deals 6.
#2
Posted 2009-April-02, 08:36
http://www.bridgebas...aler/dealer.php
You'll need to read the docs. Dealer is quite powerful. I'm open to suggestions for improving the web utility.
We use this Dealer program in the web version of BBO as well. A teaching table (or a Partnership bidding table, for that matter) can use constrained hands, and the constraints can be expressed as raw input to Dealer.
So if you're looking for a way to practice (say) "Strong NT sequences when opener has a 5 card major" with your partner, you can use the web version of BBO, using the web page above to tinker with Dealer until you're confident that you have the constraints down pat.
The Partnership bidding tables in the web version offer ( currently free ) robots for use in the EW seats. They don't bid like Kokish, but IMO their bidding is adequate for practicing sequences.
You can login to BBO via the web at
http://www.bridgebase.com
Uday
#3
Posted 2009-April-02, 08:47
uday, on Apr 2 2009, 09:36 AM, said:
I changed the action on the default script to 'print(north)' and the output was:
1. 2. 3. 4. K Q 7 2 A Q 6 2 A 9 8 5 A Q 6 A T 9 9 2 J 9 J 4 3 J 8 A 9 4 2 A K J 3 A K Q K J 7 5 A Q 3 T 5 4 A K Q 7 5. A Q 8 2 K 6 A 6 5 2 9 3 2
Looks like the spaces that dealer generates are not hard spaces. Frequency charts suffer from the same space issue.
#5
Posted 2009-April-02, 10:41
uday, on Apr 2 2009, 05:36 PM, said:
Hi Uday
Thanks very much for integrating Dealer in to BBO.
This is a feature that I've been looking forward to for the better part of 10 years.
From my perspective, the main enhancement that you need to think about relates to "content" rather than "features".
The real value in Dealer is the ability to construct elaborate custom scripts for (virtually) any conceivable hand type.
We all know that 99 users out of 100 will never want to learn anything about Dealer's scripting capabilities. What we need to do is figure out some way that the "geeky" 1% who like writing scripts are able to effectively share their work everyone else.
As a simple example: Let's assume that some BBO user creates a script that does a near perfect job generating 15-17 HCP 1NT openings. In an ideal world, the BBO GUI would provide a simple interface into that Dealer script. The obvious problem is separating the wheat from the chaff... How do we identify "good" scripts for a given opening? In particular, how can we do this when there is bound to be a lot of disagreement about what constitues a "legitimate" 1S opening playing 2/1, SAYC, whatever.
I think that a good starting point actually involves the BBO forums. Create a new section of the forums where users can post / discuss scripts. With luck, we'll be able to reach some consensus for some of the "simplier" cases [What hands are suitable for a 15-17 HCP 1NT opening].
If we can reach agreement on this, we'll see how things go...
If we can't reach agreement on this, the enter idea can be shelved as a bad idea.
#6
Posted 2009-April-02, 15:06
I was excited enough about this feature that I left work early so I could play with it.
I just tried a "Baptism by Fire" I input one of my old MOSCITO scripts and the system behaved with flying colors.
Here's an example of the type of stuff you can do with this new system:
The following script provides a decent enough approximation of my opening style playing MOSCITO.
The initial "X" lines of this script define all of the nromal opening bids.
I can edit the last line of the script to state what bid I want the hand generator to create. At the moment, the script will cause Dealer to generate Two Diamond openings. (Please note: These are assumed fit 2D openings that show
4+ Diamonds,
4+ cards in either major
insufficient strength for a constructive opening
and enough strength / shape for a preempt
THIS FEATURE IS REALLY REALLY COOL!!!!!!!!!!
_____________________
######### Definition - Opening Points
# 11 is the index for c13
# This function allows the user to define valuations for cacluating
# HCP
# Most hand evaluation is performed used a modified version of
# the 4 Aces Point Count.(Ace = 3, King = 2, ...)
# All values are multiplied by 100 to avoid fractions
altcount 11 300 200 100 50 20
############## STRONG OPENINGS
one_club =
(
hcp(north)>=17
or
c13(north) >=1000
or
(hcp(north)>=15 and cccc(north)>=1600 and c13(north)>=900)
or
(hcp(north)==14 and cccc(north)>=1900 and c13(north)>=900)
or
(hcp(north)==13 and cccc(north)>=2000 and c13(north)>=900)
or
(
hcp(north)>=15 and
shape(north, any 4333 + any 4432 + any 5332 + any
5422)
and
c13(north) >= 900
)
)
#####
#Opening strength defines the minimum strength for a limited #opening bid
#####
opening_strength =
(
(
cccc(north) - 25 * shape(north, any 4441 + any 5440) >= 1050
or hcp(north) >= 11
)
and
c13(north) >= 600
)
and not
one_club
#MOSCITO Opening structure
#################### SINGLE SUITED PREEMPTS
#################### MAJORS
four_diamonds =
(
(
spades(north) >= 8 and
hascard(north, AS) + hascard(north, KS) == 2
)
or
(
spades(north) == 7 and
hascard(north, AS) + hascard(north, KS) + hascard(north,QS) == 3
)
)
and
hascard(north,AC) + hascard(north,KC) +
hascard(north,AD) + hascard(north,KD) +
hascard(north,AH) + hascard(north,KH) <=1
four_spades =
hcp(north) <= 9
and
(
(
spades(north) >= 7 and
hascard(north, AS) + hascard(north, KS) +
hascard(north,QS) + hascard(north, JS) >= 3
)
or
spades(north) >= 8
)
and not four_diamonds
three_spades =
spades(north) >= 6
and
(
hascard(north, AS) + hascard(north, KS) +
hascard(north, QS) + hascard(north, JS) >= 2
)
and
(
hearts(north) <=1 or
diamonds(north) <=1 or
clubs(north) <= 1
)
and
hcp(north) <= 9
and not four_diamonds
and not four_spades
four_clubs =
(
(
hearts(north) >= 8 and
hascard(north,AH) + hascard(north,KH) == 2
)
or
(
hearts(north) == 7 and
hascard(north,AH) + hascard(north,KH) + hascard(north,QH) == 3
)
)
and
hascard(north,AC) + hascard(north,KC) +
hascard(north,AD) + hascard(north,KD) +
hascard(north,AS) + hascard(north,KS) <=1
four_hearts =
hcp(north) <= 9
and
(
(
hearts(north) >= 7 and
hascard(north, AH) + hascard(north, KH) +
hascard(north,QH) + hascard(north, JH) >= 3
)
or
spades(north) >= 8
)
and not four_clubs
three_hearts =
hearts(north) >= 6
and
(
hascard(north, AH) + hascard(north, KH) +
hascard(north, QH) + hascard(north, JH) >= 2
)
and
(
spades(north) <=1 or
diamonds(north) <=1 or
clubs(north) <= 1
)
and
hcp(north) <= 9
and not four_clubs
and not four_hearts
############## MINORS
three_nt =
hcp(north) <= 9
and
(
(
clubs(north) >= 8
and
hascard(north,AS) + hascard(north,KS) +
hascard(north,AH) + hascard(north,KH) +
hascard(north,AD) + hascard(north,KD) <= 1
)
or
(
diamonds(north) >= 8
and
hascard(north,AS) + hascard(north,KS) +
hascard(north,AH) + hascard(north,KH) +
hascard(north,AC) + hascard(north,KC) <= 1
)
)
three_clubs =
clubs(north) >= 6
and
hascard(north, AC) + hascard(north, KC) + hascard(north, QC) == 2 and
hascard(north, AD) + hascard(north, KD) +
hascard(north, AH) + hascard(north, KH) +
hascard(north, AS) + hascard(north, KS) == 0 and
hcp(north) <=9
and not three_nt
three_diamonds =
diamonds(north) >= 6
and
hascard(north, AD) + hascard(north, KD) + hascard(north, QD) == 2 and
hascard(north, AC) + hascard(north, KC) +
hascard(north, AH) + hascard(north, KH) +
hascard(north, AS) + hascard(north, KS) == 0 and
hcp(north) <=9
and not three_nt
two_nt =
(clubs(north) >=6 and
hascard(north, AC) + hascard(north, KC) + hascard(north, QC) +
hascard(north, JC) == 2
and
hascard(north, AD) + hascard(north, KD) +
hascard(north, AH) + hascard(north, KH) +
hascard(north, AS) + hascard(north, KS) == 0
and
hascard(north, QD) + hascard(north, QH) + hascard(north, QS) <= 1
and
not three_clubs)
or
(diamonds(north) >=6 and
hascard(north, AD) + hascard(north, KD) + hascard(north, QD) +
hascard(north, JD) == 2
and
hascard(north, AC) + hascard(north, KC) +
hascard(north, AH) + hascard(north, KH) +
hascard(north, AS) + hascard(north, KS) == 0 and
hascard(north, QC) + hascard(north, QH) + hascard(north, QS) <= 1 and
not three_diamonds)
and not three_nt
preempts =
four_spades or
four_clubs or
three_spades or
four_hearts or
four_clubs or
three_hearts or
three_diamonds or
three_clubs or
three_nt or
two_nt
###############################
## Weak Opening Bids
###############################
two_diamonds =
not opening_strength and
hcp(north) <= 12 and
c13(north) >= 325 and
shape(north, any 4432, any 54xx, any 55xx, any 65xx) and
clubs(north) <= 3 and
diamonds(north) >=4
two_hearts =
not opening_strength and
hcp(north) <= 12 and
c13(north) >= 325 and
shape(north, any 4432, any 54xx, any 55xx, any 65xx) and
hearts(north) >= 4 and
(
spade(north) >= 4 or
clubs(north) >= 5
)
two_spades =
not opening_strength and
hcp(north) <= 12 and
c13(north) >= 325
and
(
(
shape(north, any 6322, any 6331, any 7222) and
spades(north) >=6
)
or
(
spades(north) >=4 and clubs(north) >=5
and hascard(north, AS) + hascard(north, KS) + hascard(north, QS) >= 1
)
)
############## LIMITED OPENINGS
##### Pre-Definitions
bad_spades = hascard(north, AS) + hascard(north, KS) + hascard(north,
QS) == 0
bad_hearts = hascard(north, AH) + hascard(north, KH) + hascard(north,
QH) == 0
balanced = shape(north, any 4432, any 5332, any 4333)
########
two_clubs =
opening_strength
and not preempts
and
(
(
clubs(north) >= 6 and
spades(north) < 4 and
hearts(north) < 3
)
or
(
clubs(north) >= 6 and
spades(north) == 4 and
bad_spades
)
or
(
clubs(north) >= 6 and
hearts(north) == 4 and
bad_hearts
)
)
one_notrump =
opening_strength and
(
(
balanced and not
shape(north, 5xxx, x5xx, 44xx, 4x4x, 4xx4, x44x, x4x4)
)
or
(
hearts(north) == 4 and
balanced and
(hcp(north) == 11 or hcp(north) == 12)
)
or
(
spades(north) == 4 and
balanced and
hearts(north) <= 3 and
(hcp(north) == 13 or hcp(north) == 14)
)
)
one_spade =
opening_strength
and not preempts
and not one_notrump
and
diamonds(north) >= 4 and
not one_notrump and
hearts(north) <4 and
spades(north) <4
or
(
diamonds(north) >=6 and
(
(spades(north) == 4 and bad_spades) or
(hearts(north) == 4 and bad_hearts)
)
)
one_heart =
opening_strength and
not two_clubs and
not one_notrump and
not one_spade and
(
(
spades(north) == 4 and
spades(north) > hearts(north)
)
or
(
spades(north) >= 5 and
spades(north) >= hearts(north)
)
)
one_diamond =
opening_strength and
not two_clubs and
not one_notrump and
not one_spade and
not one_heart
and
hearts(north) >= 4
and not
(balanced and hcp(north) <= 11)
###########
two_diamonds
#7
Posted 2009-April-02, 15:18
hrothgar, on Apr 2 2009, 11:41 AM, said:
If we can reach agreement on this, we'll see how things go...
If we can't reach agreement on this, the enter idea can be shelved as a bad idea.
Richard, I don't quite understand the point. I can't see anything close to universal agreement on how to script a 15-17 NT precisely, and even if we could script one that satisfies a significant majority, what would be the purpose?
Perhaps it would be useful to have a few example scripts so that people unfamiliar with Dealer could see how things work. But, the scripting itself is pretty easy once you become familiar and probably would take less time than searching through available scripts in a large library.
#8
Posted 2009-April-02, 15:23
#9
Posted 2009-April-02, 15:31
TimG, on Apr 3 2009, 12:18 AM, said:
Perhaps it would be useful to have a few example scripts so that people unfamiliar with Dealer could see how things work. But, the scripting itself is pretty easy once you become familiar and probably would take less time than searching through available scripts if you build up a large library.
My assumption is the following:
1. Most users would like to be able to generate hands that correspond to common auctions. For example:
A SAYC type 1N opening
Or hand that match an auction like: 1N - (P) - 2C
2. Most of these users will NEVER learn how to write scripts, regardless of how easy that might be. The only way to support these users is to link a GUI to some kind of pre-existing scripts. (Or quite right that said GUI needs to be designed carefully. However, we should start by defining some scripts)
3. There are a number of ways that these scripts might come into existence...
If we whine for long enough, there is always the chance that Fred / Uday, Aaron / whomever will miraculously write them for us. Personally, I think that stepping up to the plate and writing things for ourselves is a better way to go...
4. I agree that we will NEVER get perfect consensus regarding the definition of any of these bids. However, I hope that we can achieve rough consensus... Moreover, I like to believe that scripts that are developed in an open, peer reviewed process have a better chance of producing quality code... (Admittedly, the forums has its own deviant views regarding a number of topics. However, I still tend to trust the judgment of a collective over the judgment of an individual)
#10
Posted 2009-April-02, 16:15
#11
Posted 2009-April-02, 16:22
hrothgar, on Apr 2 2009, 04:06 PM, said:
I was excited enough about this feature that I left work early so I could play with it.
I just tried a "Baptism by Fire" I input one of my old MOSCITO scripts and the system behaved with flying colors.
Here's an example of the type of stuff you can do with this new system:
The following script provides a decent enough approximation of my opening style playing MOSCITO.
The initial "X" lines of this script define all of the nromal opening bids.
I can edit the last line of the script to state what bid I want the hand generator to create. At the moment, the script will cause Dealer to generate Two Diamond openings. (Please note: These are assumed fit 2D openings that show
4+ Diamonds,
4+ cards in either major
insufficient strength for a constructive opening
and enough strength / shape for a preempt
THIS FEATURE IS REALLY REALLY COOL!!!!!!!!!!
_____________________
######### Definition - Opening Points
# 11 is the index for c13
# This function allows the user to define valuations for cacluating
# HCP
# Most hand evaluation is performed used a modified version of
# the 4 Aces Point Count.(Ace = 3, King = 2, ...)
# All values are multiplied by 100 to avoid fractions
altcount 11 300 200 100 50 20
############## STRONG OPENINGS
one_club =
(
hcp(north)>=17
or
c13(north) >=1000
or
(hcp(north)>=15 and cccc(north)>=1600 and c13(north)>=900)
or
(hcp(north)==14 and cccc(north)>=1900 and c13(north)>=900)
or
(hcp(north)==13 and cccc(north)>=2000 and c13(north)>=900)
or
(
hcp(north)>=15 and
shape(north, any 4333 + any 4432 + any 5332 + any
5422)
and
c13(north) >= 900
)
)
#####
#Opening strength defines the minimum strength for a limited #opening bid
#####
opening_strength =
(
(
cccc(north) - 25 * shape(north, any 4441 + any 5440) >= 1050
or hcp(north) >= 11
)
and
c13(north) >= 600
)
and not
one_club
#MOSCITO Opening structure
#################### SINGLE SUITED PREEMPTS
#################### MAJORS
four_diamonds =
(
(
spades(north) >= 8 and
hascard(north, AS) + hascard(north, KS) == 2
)
or
(
spades(north) == 7 and
hascard(north, AS) + hascard(north, KS) + hascard(north,QS) == 3
)
)
and
hascard(north,AC) + hascard(north,KC) +
hascard(north,AD) + hascard(north,KD) +
hascard(north,AH) + hascard(north,KH) <=1
four_spades =
hcp(north) <= 9
and
(
(
spades(north) >= 7 and
hascard(north, AS) + hascard(north, KS) +
hascard(north,QS) + hascard(north, JS) >= 3
)
or
spades(north) >= 8
)
and not four_diamonds
three_spades =
spades(north) >= 6
and
(
hascard(north, AS) + hascard(north, KS) +
hascard(north, QS) + hascard(north, JS) >= 2
)
and
(
hearts(north) <=1 or
diamonds(north) <=1 or
clubs(north) <= 1
)
and
hcp(north) <= 9
and not four_diamonds
and not four_spades
four_clubs =
(
(
hearts(north) >= 8 and
hascard(north,AH) + hascard(north,KH) == 2
)
or
(
hearts(north) == 7 and
hascard(north,AH) + hascard(north,KH) + hascard(north,QH) == 3
)
)
and
hascard(north,AC) + hascard(north,KC) +
hascard(north,AD) + hascard(north,KD) +
hascard(north,AS) + hascard(north,KS) <=1
four_hearts =
hcp(north) <= 9
and
(
(
hearts(north) >= 7 and
hascard(north, AH) + hascard(north, KH) +
hascard(north,QH) + hascard(north, JH) >= 3
)
or
spades(north) >= 8
)
and not four_clubs
three_hearts =
hearts(north) >= 6
and
(
hascard(north, AH) + hascard(north, KH) +
hascard(north, QH) + hascard(north, JH) >= 2
)
and
(
spades(north) <=1 or
diamonds(north) <=1 or
clubs(north) <= 1
)
and
hcp(north) <= 9
and not four_clubs
and not four_hearts
############## MINORS
three_nt =
hcp(north) <= 9
and
(
(
clubs(north) >= 8
and
hascard(north,AS) + hascard(north,KS) +
hascard(north,AH) + hascard(north,KH) +
hascard(north,AD) + hascard(north,KD) <= 1
)
or
(
diamonds(north) >= 8
and
hascard(north,AS) + hascard(north,KS) +
hascard(north,AH) + hascard(north,KH) +
hascard(north,AC) + hascard(north,KC) <= 1
)
)
three_clubs =
clubs(north) >= 6
and
hascard(north, AC) + hascard(north, KC) + hascard(north, QC) == 2 and
hascard(north, AD) + hascard(north, KD) +
hascard(north, AH) + hascard(north, KH) +
hascard(north, AS) + hascard(north, KS) == 0 and
hcp(north) <=9
and not three_nt
three_diamonds =
diamonds(north) >= 6
and
hascard(north, AD) + hascard(north, KD) + hascard(north, QD) == 2 and
hascard(north, AC) + hascard(north, KC) +
hascard(north, AH) + hascard(north, KH) +
hascard(north, AS) + hascard(north, KS) == 0 and
hcp(north) <=9
and not three_nt
two_nt =
(clubs(north) >=6 and
hascard(north, AC) + hascard(north, KC) + hascard(north, QC) +
hascard(north, JC) == 2
and
hascard(north, AD) + hascard(north, KD) +
hascard(north, AH) + hascard(north, KH) +
hascard(north, AS) + hascard(north, KS) == 0
and
hascard(north, QD) + hascard(north, QH) + hascard(north, QS) <= 1
and
not three_clubs)
or
(diamonds(north) >=6 and
hascard(north, AD) + hascard(north, KD) + hascard(north, QD) +
hascard(north, JD) == 2
and
hascard(north, AC) + hascard(north, KC) +
hascard(north, AH) + hascard(north, KH) +
hascard(north, AS) + hascard(north, KS) == 0 and
hascard(north, QC) + hascard(north, QH) + hascard(north, QS) <= 1 and
not three_diamonds)
and not three_nt
preempts =
four_spades or
four_clubs or
three_spades or
four_hearts or
four_clubs or
three_hearts or
three_diamonds or
three_clubs or
three_nt or
two_nt
###############################
## Weak Opening Bids
###############################
two_diamonds =
not opening_strength and
hcp(north) <= 12 and
c13(north) >= 325 and
shape(north, any 4432, any 54xx, any 55xx, any 65xx) and
clubs(north) <= 3 and
diamonds(north) >=4
two_hearts =
not opening_strength and
hcp(north) <= 12 and
c13(north) >= 325 and
shape(north, any 4432, any 54xx, any 55xx, any 65xx) and
hearts(north) >= 4 and
(
spade(north) >= 4 or
clubs(north) >= 5
)
two_spades =
not opening_strength and
hcp(north) <= 12 and
c13(north) >= 325
and
(
(
shape(north, any 6322, any 6331, any 7222) and
spades(north) >=6
)
or
(
spades(north) >=4 and clubs(north) >=5
and hascard(north, AS) + hascard(north, KS) + hascard(north, QS) >= 1
)
)
############## LIMITED OPENINGS
##### Pre-Definitions
bad_spades = hascard(north, AS) + hascard(north, KS) + hascard(north,
QS) == 0
bad_hearts = hascard(north, AH) + hascard(north, KH) + hascard(north,
QH) == 0
balanced = shape(north, any 4432, any 5332, any 4333)
########
two_clubs =
opening_strength
and not preempts
and
(
(
clubs(north) >= 6 and
spades(north) < 4 and
hearts(north) < 3
)
or
(
clubs(north) >= 6 and
spades(north) == 4 and
bad_spades
)
or
(
clubs(north) >= 6 and
hearts(north) == 4 and
bad_hearts
)
)
one_notrump =
opening_strength and
(
(
balanced and not
shape(north, 5xxx, x5xx, 44xx, 4x4x, 4xx4, x44x, x4x4)
)
or
(
hearts(north) == 4 and
balanced and
(hcp(north) == 11 or hcp(north) == 12)
)
or
(
spades(north) == 4 and
balanced and
hearts(north) <= 3 and
(hcp(north) == 13 or hcp(north) == 14)
)
)
one_spade =
opening_strength
and not preempts
and not one_notrump
and
diamonds(north) >= 4 and
not one_notrump and
hearts(north) <4 and
spades(north) <4
or
(
diamonds(north) >=6 and
(
(spades(north) == 4 and bad_spades) or
(hearts(north) == 4 and bad_hearts)
)
)
one_heart =
opening_strength and
not two_clubs and
not one_notrump and
not one_spade and
(
(
spades(north) == 4 and
spades(north) > hearts(north)
)
or
(
spades(north) >= 5 and
spades(north) >= hearts(north)
)
)
one_diamond =
opening_strength and
not two_clubs and
not one_notrump and
not one_spade and
not one_heart
and
hearts(north) >= 4
and not
(balanced and hcp(north) <= 11)
###########
two_diamonds
Richard's post must be the second longest post ever.
#15
Posted 2009-April-02, 16:36
barmar, on Apr 3 2009, 01:15 AM, said:
For what its worth, I agree that its impractical to try to support every possible auction.
However, that's not reason not to knock off the easy cases...
#16
Posted 2009-April-02, 16:39
#17
Posted 2009-April-03, 00:04
The opening thread ideally will include a summary, with links to subsequent scripts posted. OP can edit it, and any moderator can as well.
John Nelson.
#18
Posted 2009-April-03, 04:26
Rain, on Apr 3 2009, 09:04 AM, said:
The opening thread ideally will include a summary, with links to subsequent scripts posted. OP can edit it, and any moderator can as well.
Would it be possible to create another section of the forums?
I think that it will enhance discoverability.
#19
Posted 2009-April-03, 06:18
Richard, I'm concerned that a new section will become a dead section ( from lack of use ).
What if we tried starting a thread ? If it sees traffic we can make it into a standalone section .
FG & I toyed with allowing Dealer specifications to be stored on the server side and made available in the client. Then we started talking about sharing & permissions and things got hairy, so we decided to set aside this aspect of the client.
Eugene's suggestion of a wiki is mildly interesting to me. Maybe we should build it, and if no one comes, toss it ?
#20
Posted 2009-April-03, 07:11
uday, on Apr 3 2009, 03:18 PM, said:
Richard, I'm concerned that a new section will become a dead section ( from lack of use ).
What if we tried starting a thread ? If it sees traffic we can make it into a standalone section .
FG & I toyed with allowing Dealer specifications to be stored on the server side and made available in the client. Then we started talking about sharing & permissions and things got hairy, so we decided to set aside this aspect of the client.
Eugene's suggestion of a wiki is mildly interesting to me. Maybe we should build it, and if no one comes, toss it ?
Hi Uday:
I would respond as follows:
So what if there is a dead section?
If the section gets use / grows / thrives then it has value.
If the section doesn't get use, its not costing anything.
The easiest way to proceed, might be to relable the "Full Disclosure Standard Systems" forum something like
User Contributed code for FD + Dealer
This won't clutter up the existing forum structure any more than it is now, but will still provide an area where folks can work.
As for the wiki idea:
If you're worried that folks won't use the resource, splitting users between two competing sites is the wrong way to go...
(In practice, a wiki is a poor substitute for a source control system)