I've made some good progress on Yahtzee this past week. In fact, I think that I am mostly done with it! Players can take turns, and they're even notified when the game is over (and who won, of course). I have a work around for the bug that I mentioned last time (just tell the NSArrayController in the second window to update itself - not the best in the world, but it'll work). I need to test it with M a few times, but it should be mostly good to go.
I've had a few offers to test it as well, from people across the Internet. That will be a good test too, although I'm not sure why it wouldn't work. Only one way to know for sure, though.
The one feature that I've thought of that might be good to add would be some sort of chat feature. Currently, there is no in-game way for the players to communicate with each other. Sure, they could start up a separate IM chat or Skype call, but that doesn't seem to be the best way to handle things.
While chatting is easy enough to implement, the problem that I have doing so is how to display the text. I'm using an NSTableView to display the messages, and all is well if they are short. However, if the text is longer than is visible, the control appends "..." to what's visible instead of auto-sizing the column. Even better, I can't find any way to set the column to auto-sizing to contents. Nor can I find an easy way to tell it to wrap the text (I'd have to compute the height of the row myself, which is more work than I'd like to do, really).
Maybe for now I'll just leave things as-is and require a separate communication method of some sort. This just a quick and dirty app, after all - not something that I'm looking to sell or anything.
Overall, I think that this project went really well. The UI part of it was finished very quickly - that shows that I'm finally starting to get the hang of Cocoa for UI, thankfully. The client/server communication wasn't too bad, but it was definitely hindered by my lack of knowledge of general Cocoa/Objective-C APIs. That part should also get better with time and practice.