Readit News logoReadit News
Posted by u/dougdonohoe 2 years ago
Show HN: I've open sourced DD Pokergithub.com/dougdonohoe/dd...
I'm the original author of DD Poker, a Java-based computer game that ran on Mac, Linux and Windows and originally sold in stores in physical boxes.

I shut down the backend servers in 2017 but the game is still functional and people can still play each other online even though the central lobby and find-a-game functionality no longer work.

I've been asked over the years to release the source code, especially during the pandemic, and again this year. I finally got motivated to clean up the code and put it out there.

The code is 20 years old and uses some ancient Spring, log4j, Wicket and other dependencies, but it still works on Java 1.8.

v64 · 2 years ago
Thank you for taking the time to clean this up and release it. I've never played DD Poker, but have experienced the loss of other games when servers go down and the software stops being updated.

I realize source releases aren't always possible, so it's a great gift to the community when one can make it happen and they put in the effort to do so.

dougdonohoe · 2 years ago
Thanks for the kind words. It did take a bit of work, but it was my pleasure to do so. I hope it is valuable to someone!
SloopJon · 2 years ago
This was a bit of a bear to get running on my Mac. Everything depends on ddpoker.rc, which doesn't behave as expected unless an OSNAME environment variable is defined. I don't have that on macOS 14 (Sonoma) Mac using either zsh or bash. I hopped onto a 10.13 (High Sierra) hackintosh, and it doesn't have that variable either.

For the person who was having trouble getting this to work on an M1 Mac (flagged, really?), try this (after installing Java 8 and Maven using Homebrew):

    % git clone https://github.com/dougdonohoe/ddpoker.git
    ...
    % cd ddpoker
    % export OSNAME=darwin
    % source ddpoker.rc
    JAVA_HOME changed, version now openjdk version "1.8.0_422"
    % mvn-package-no-tests
    ...
    % poker
I built this before figuring out the OSNAME thing, so I can't actually vouch for the build step working out of the box.

Anyway, thank you very much, Doug. This looks really cool.

dougdonohoe · 2 years ago
I'll have to fix the OSNAME thing, my apologies. That's an env var I have in my local ".zshrc" I had overlooked. I'll fix it later today.
dougdonohoe · 2 years ago
This is fixed. Proper variable is `OSTYPE`, which I've fixed. `OSNAME` is a personal historical artifact.
dougdonohoe · 2 years ago
I added a `TL;DR` section to the base readme with jus this info.
_mlbt · 2 years ago
Thank you for taking the time to open source this! It’s fun peeking at the source code of old games from bygone eras and more open source games are definitely a good thing.
dougdonohoe · 2 years ago
My pleasure. Thanks for taking a peek.
jonrosner · 2 years ago
Wow thanks a lot! We played DD Poker during the Pandemic. It really saved us from going insane:)
dougdonohoe · 2 years ago
That's great! You are the 2nd person who's told me that. You don't happen to know someone named Ryan in Oakland?
jonrosner · 2 years ago
No, I am from germany. Also good job on programming a game that plays flawlessly on pretty much all systems after so much time. Also, online play via IP address was super easy.
dudinax · 2 years ago
Any plans to release the source for War Age of Imperialism?

I bought and played the heck out of that game years ago but never could get anyone to try it multiplayer.

Thanks for the great games!

dougdonohoe · 2 years ago
Glad you enjoyed the games! Unfortunately, I don't own the IP rights to War! Age of Imperialism, so can't release the source code.
romac · 2 years ago
I wonder if this could be made to work in the browser using CheerpJ?

https://cheerpj.com

dougdonohoe · 2 years ago
Interesting. I hadn't heard of this before. I'll have to check it out.
apignotti · 2 years ago
Lead dev of CheerpJ here, if you need support you can find us on Discord: https://discord.gg/X9ruPkchM5

Edit: Tool a quick look at the repo, if the game is a Java 8 Swing application (as it seems) then it will most likely work out-of-the-box with CheerpJ

BatmansMom · 2 years ago
Ported my java game to Cheerp and it was the easiest thing ever. I highly recommend and you can see the results here: http://liarsdiceonline.com

Only criticism is that it can take a few MINUTES to initially load the game and there isn't a loading bar or anything

fnord77 · 2 years ago
ah, good old Java Swing. Spent years working on big Swing projects.

BTW, you want to wrap statements like this in a logger.isDebugEnabled() especially in the paint loop because otherwise you always incur the cost of string concat, debug or not!

> logger.debug("REPAINT COMPONENT "+(CNT++)+" ("+ImageComponent.getDebugColorName()+") portion " + bounds_.x +","+bounds_.y+" " +bounds_.width+"x"+bounds_.height);

dougdonohoe · 2 years ago
That code block is in an "if (debug)" block, which is enabled if "settings.debug=true" is set.
indigodaddy · 2 years ago
“Even though DD Poker and the backend servers was shutdown in July 2017, folks continue to play it by manually sharing game URLs”

Anyone have more details about how the above works?

dougdonohoe · 2 years ago
The in-game help explains, which I have a copy here:

https://static.ddpoker.com/gamehelp/help/hostonline.html