GNUBridge

Latest version: 0.1.19 published on September 25 2010 19:01:00.

GNUBridge is a Contract Bridge program written in Java and available under GNU public license v. 3.

Please comment on Gnubridge's vision statement if you want to have input into the program's future.


Users Developers
You can download the jar gnubridge-0.1.19.jar, and run it with % java -jar gnubridge-0.1.19.jar, or by double-clicking if you're in Windows (but beware of Internet Explorer - it will try to force a .zip extension on the file). You will need JRE 1.5 or later. Developer blog
Screenshots: bidding and gameplay.
There is a mailing list you can join where you can post your questions or watch for program updates. You can also browse the archive. Source code is available on github: http://github.com/pslusarz/gnubridge.

September 25, 2010
Version 0.1.19. This release contains a few bugfixes in bidding detected thanks to Jonathan Campbell's testing contributions, and some minor code tweaks that accumulated over the past several months. After a long break, Gnubridge development is restarting, so this release is to provide a clean start before new features will start coming in.

February 10, 2010
Version 0.1.18. Sasha added support for doubling in scoring. Also: Suit and No Trump overcall responses from Pavlicek's Bridge Basics lesson 7 (no takeout doubles). Can force the computer to move early by clicking on the countdown area. Improved responsiveness when doubleclicking to play a card. Color partners during bidding. Several stabilizing bugfixes to bidding, and automated tests to prevent this from happening in the future.

January 12, 2010
Version 0.1.17. Sasha added support for vulnerability in scoring. Paul added basic suit overcalls from Pavlicek's Bridge Basics lesson 7 (the computer will make an overcall in a suit if conditions apply).

January 4, 2010
Version 0.1.16. Sasha Slutsker implemented scoring. Score is maintained across multiple deals. Support for vulnerability and doubles/redoubles will be added in the future.

December 17, 2009
Version 0.1.15. Two new features: Player can restart a game, and Gnubridge now runs on JRE 1.5. Happy Holidays!

November 25, 2009
Version 0.1.14. Two new features: player can review most recent trick (click on the card icon in upper left corner of the table), and there's visual feedback on the time remaining for computer to make a move (countdown timer). Time per move was reduced to 15 seconds. A questionable pruning strategy was disabled (play lowest card to lost trick).

September 29, 2009
Version 0.1.12. Fixed bugs in search. These bugs were introduced as I was putting in new optimization strategies. I put in a set of tests to assure these kinds of problems are automatically caught in the future.
I also peeled away the Swing GUI classes from tests, so that the CI server build is finally working. This is important, because you can now download the latest version that's automatically tested and build on the CI server each time a code change is made.

July 20, 2009
Tonight I worked a bit on GNUBridge's continuous integration (CI). I wanted a model where every change to repository would result in all tests being run, and a publication of the latest jar. Folks at Viewtier have been great at giving me all I asked for so far, and so tonight we have the first take. I could not get the acceptance tests to run on the server yet, and so it's just the unit tests for now. What does CI mean for end-users? You can monitor the code change comments, and if you want to try out the new features, you can just get the latest jar from the CI server, without waiting for a formal release.

July 16, 2009
Folks at Viewtier have genrously set up a Continuous Integration project for GNUBridge. For now it just builds the jar, but I'm planning to get it to run the acceptance tests shortly.

July 14, 2009
Version 0.1.11. Fixed a bug with pruning cards that were in sequence with cards already played. Removed this pruning strategy for now until I can get it fixed.

July 12, 2009
Version 0.1.10. Fixed a subtle bug with always playing lowest card if trick cannot be taken. Basic rebids: raise partner, show unbid suit, rebid original (from Pavlicek's Lesson 5, except NT rebids). Responding bid rules only fire if it's a true response, not a rebid.

June 22, 2009
Version 0.1.9. Responses to 1 Color in Pavlicek's lesson 4.

June 16, 2009
Version 0.1.8. All things being equal, play lowest value card. This should result in a visibly stronger play. Fixed bug with trick display count lagging one trick behind. Display contract, instead of just the trump, and display tricks taken by each pair.

June 9, 2009
Version 0.1.7. If there's only one reasonable move, take it, instead of waiting for the search to terminate. This should speed up gameplay considerably.

June 8, 2009
Version 0.1.6. Fixed a crash when dealing with partner's pass in response to 1NT. Raise major suit opening, and more accurate distributional point counts (basically made it half-way through Pavlicek's lesson 4 before discovering the crash bug). I don't take crashes lightly, so I added a suite of random end-to-end tests that will hopefully catch bugs like that before they make it into a release.

May 26, 2009
Version 0.1.5. Deeper search through duplicate position removal and a simple heuristic. On my machine I'm able to get 13 cards to go 4 tricks deep, and then up all the way to full depth at 7. Search is capped at 45 seconds. Also, at some point in the past, I fixed the bug where dummy was showing cards before West played the first card.
I am now thinking of going back to Pavlicek's lessons and work on improving the bidding in the next few releases.

May 21, 2009
Some time this weekend I'm planning to post a new version of GNUBridge with improved search algorithm. I just noticed, it's been a year since the last update. This project is not dead, just idling in a self-perpetuating "lack of feedback" loop. Without hearing from actual users, I am prone to spend time on search optimization and refactoring code. Without new friendly features few people want to try GNUBridge out, which means no feedback, which means even more invisible search optimizations... I'll try to break out of that loop a bit this summer and focus somewhat on usability.

May 4, 2008
Version 0.1.4. Prune moves of sequential cards on player's hand. Based on my experiments this provided an order of magnitude improvement allowing the program to search one trick deeper. Introduced variable depth search based on how many tricks have been played. In the beginning, the program searches 3 tricks deep, when there are 7 cards left the search goes up to 4 tricks, and at 5 the full tree is searched.

April 14, 2008
Version 0.1.3. Fixed bug with trick count and dummy cards not being updated in time. Human hand also gets updated after a card is played. Can play a card by double-clicking.

April 10, 2008
Better prompting to play a card, and high card is highlighted when displaying previous trick.

April 6, 2008
Squeezed additional 50 pixels out of the vertical height on the play screen.

April 4, 2008
Made and build script to create an executable jar and made the jar available for download.

April 1, 2008
I never thought it'd happen, but here it is - first cut of a playable bridge game. Let's see if I can make the committ before April Fools ends in 3 minutes... I will shortly make a distributable jar.

Feb. 18, 2008
The first cut of the program is to consist of 3 modules: double-dummy solver, bidding, and GUI. Double-dummy solver, whose role is to come up with optimal play knowing all the cards on the table, is currently able to search 5-6 tricks deep in a few minutes. It uses plain alpha-beta pruning. I am currently struggling with the bidding module. I'm working through Richard Pavlicek's Beginner Bridge online lessons and implementing all the bidding rules as I see them. It is very tedious work, even as I'm constantly reshaping the classes to make putting in new rules easier. I am on lesson 4 out of 12, and don't see getting done with it in a month.

Feb. 6, 2008
The program is not playable yet, but you can download the latest source code by connecting anonymously to the subversion repository at http://gnubridge.org/subversion/gnubridge or by browsing online