"We've just completed nine solid days of development on Gambit. Now
that's a "Codefest" alright! I thought I would share a little with
the curious about how I think it went...
Greg Brown flew out to my home in Oklahoma so we could work on
Gambit. It was nice to finally meet face-to-face. We've actually
programmed together on many projects these last couple of years, but
this was the first time we didn't do it over the Internet. We're
both grateful to the wonderful people at Ruby Central for giving us
We've had practice, so we work pretty well together by now. Greg
would probably say that I've almost beat all his bad habits out of
him. ;) True or not, I know he's always challenging me and pushing
me to new limits of what I can build. I think we both learned a lot
from working together on this project.
And boy did we work! We played two games, watched two movies, went
out shopping once and to eat twice over a ten day stay and the rest
of the time, we were working on Gambit. We ate a couple of meals a
day and I slept, but Greg appears to be one of those rare human
beings that needs very little sleep and because of that he kept us
working almost 'round the clock. We designed, implemented, tested
and built examples of usage in a continuous cycle.
Here's some fun little statistics for our work:
$ rake test
ruby -Ilib:test /usr/local/lib/ruby/gems/1.8/gems/rake-0.5.3/l
Loaded suite /usr/local/lib/ruby/gems/1.8/gems/rake-0.5.3/l
Finished in 0.163976 seconds.
57 tests, 715 assertions, 0 failures, 0 errors
$ rake stats
| Name | Lines | LOC | Classes | Methods | M/C |
| Gambit | 2084 | 1703 | 23 | 120 | 5 |
| Functionals | 1834 | 1513 | 12 | 88 | 7 |
| Units | 1618 | 1346 | 15 | 64 | 4 |
| Total | 5536 | 4562 | 50 | 272 | 5 |
Code LOC: 1703 Test LOC: 2859 Code to Test Ratio: 1:1.7
(Obviously, I borrowed Rails' statistic generation library there.
"Functionals" refer to our examples and "Units" to our unit tests.)
Which brings us to what we built. Some of you have expressed
interest in Gambit and I'm sure you would like to hear how it came
out. The short story is, very good. We met and even exceeded our
expectations in many areas.
The longer story: We've built a very hand model layer for common
game elements like Boards, Cards, and Dice. This is probably our
most polished work and has been a real asset to our internal
Our views layer started out pretty basic, and really still is in many
ways, but we're already using it to great effect. It has evolved as
we discovered our needs and will continue to evolve with future
development. However, it is already an adequate and effective tool.
Finally, our controller (the Gambit server) is still a little rough
around the edges. It's quite functional at this point, if not yet
elegant. There's probably still some lingering issues hiding in here
(we've been steadily uncovering and removing them), but I'm sure all
you beta testers will find those for us right quick! :) We'll clean
up our mess in here as we continue to refine this aspect of Gambit.
Which brings us to the final question. When can you get your hands
on a Gambit release? Naturally, the brave are welcome to pull down
our CVS and poke around. There's really a lot to find in there, but
no good guided tour at this point. For those that don't think that
sounds like fun, our official answer is "sometime this summer." We
have a few more minor tweaks to do to the controller, some general
clean-up, and an example to build.
While it's true that we already have many examples, they were built
at various stages of Gambit functionality and use a mis-match of its
features. We're going to unify that with a complete example that
will serve as your map to exploring our first release of Gambit.
That's important because the API is not documented yet and probably
won't be by the time we release. That's our number one priority
feature for the second version, scout's honor.
Well, that's where we, and Gambit, are at this point. Give us a
little time to uncross our eyes, pay a little attention to our other
lives, etc. and then we'll get a release packaged up and out for
Again, we send our thanks to Ruby Central and all those who have
shown interest in our project!
James Edward Gray II