Show HN: Classic Video Poker (lfgslots.com)

578 points by appstorelottery ↗ HN
I'm a Unity 3D refugee, certified expert, started in 2005 when it was a two man-band with Joachim and David.

I've been lucky enough to make a good living out of Unity with my own consultancy over the years making data visualisation applications (Wind Energy) and innovation projects (Visualising accounting data for Wolters Kluwer etc.).

Godot is pretty amazing in my opinion. Wrote this game over a few days and was productive in Godot basically instantly. I couldn't get up and running in Unreal despite trying a few times.

It's my ambition to start a niche agency developing 80's style games of skill and chance for the corporate world.

So... If anyone has any leads for making Space Invaders for Nike - please help! Happy to pay 5% on whatever work I get.

222 comments

[ 3.7 ms ] story [ 244 ms ] thread
Ended on a hand of: K J A A Q and did not receive the Jacks or Better $1 payout. According to a brief search about the rules of video poker, a pair of aces is considered better than a pair of jacks.
I also had a pair of aces and did not "win". Definitely a bug (probably aces are low in his code).
same here
yep, definitely a bug - seems like with when getting a winning of aces after the second deal. interestingly if you get a pair of jacks you get your winnings correctly. guessing aces are low.

https://imgur.com/a/H1Nzno3

> after the second deal

It's different on or before the second deal?

I came here to complain about the same bug. I want my money back!
Aces are low in this game - it's deliberate. But given the constant feedback maybe I should just make them high ;-)
I think you're getting constant feedback on it because that's the way almost all versions of Poker are played.

Aces _can_ be low in the case of an A-1-2-3-4 straight, but they can almost always be high as well, and almost always beat K.

Having aces always be low/never be high is super uncommon (it may not even exist in Poker, but I can't say for certain).

If it's deliberate, how do you expect anyone to get a royal flush?
Awesome.

I remember when everybody played basically this exact machine in middle school when we used to sneak to the market during recess. There used to be all kinds of different varieties of slot machines at basically every market and gas station in Finland, regulated by a sanctioned monopoly called RAY. Nobody really cared if you played one at whatever age, especially in the 90's. Wild times.

People cared even less on cruise ships. Those were mainly using paf machines though, probably for legal reasons. Search "paf joker poker" for images of the classic machine. Nice features was the joker and double or nothing.

I played this kind of games a lot since I was 7 years old because we used to travel a lot. One time I made a win sharing deal with my brother to reduce risk of an unlucky streak, but I immediately hit the jackpot after that. Good times.

Lol. Awesome theming. For a minute I was stuck wondering "why is there a link to a screenshot on the HN frontpage"?
how big is the wasm file ?
26.07 MB (index.wasm)

and 16.35 MB of resources (index.pck)

The original IGT binary version on EEPROM? Probably 2Mb, but also including all gaming machine monitoring code, attendant screens, device drivers, network protocols etc, with room to spare on the EEPROM.
The CRT looks really good. Definitely a good reproduction of classic video poker.
Nice. Sounds seem to only come from left channel, and also had the "pair of Aces" issue, but otherwise job well done.
looks great. the audio got me interested
Yeah, applying some realization about learning instruments, I'm currently more or less forcing me to just do stuff in Godot. More focus on doing and learning, less focus on the result.

It's part struggle with other programming mindsets I have from backend servers for game and other web applications - "Oh, just shove all data into this system" is a valid answer, and "really, really just do what you need right now" is a good idea.

And having implemented some of this on straight up SDL, it's pretty impressive how something that would cost you like 1-2 days to make fall down to... 10 minutes of clicking around in a tileset editor.

I have a hard time actually making games. Not in Unity or Godot specifically, but games in general. I end up going down rabbit holes in the infinite. Like, I was making a puzzle game, where you need to move pieces in a way to move from A to B. I ended up theming it as crossing a river where A and B are on different sides. I think I've spent 95% of my effort on that game on writing a water shader with the look and feel I'd like. But it's inconsequential to the actual gameplay. I could have just copied some code online or bought an asset and moved on.

But at the same time, I'm enjoying myself. I like learning this stuff, and perhaps my goal is really to have fun rather than actually ship something. So it's OK.

This is art. Art shouldn't be confined to foreign interests like making money
IMO it all depends on the goal. If you're just noodling around on the guitar to have some fun, you're not strictly trying to pick better. If you're doing picking exercises, you're not exploring what a new pedal can do. If you're exploring a pedal, you're not trying to learn a specific song.

For example, I'm currently deliberately moving slower in an idea to figure out good ways of doing things in Godot as well as reading a lot about thes systems. And I've learned a few things along the way. However, if I was in a Ludum Dare mode of working, I could've had something doing the same things I have now much, much faster, because if you don't have core game mechanics working in 8 - 12 hours you're utterly doomed in that context.

Just me or is it super unintuitive that you HOLD rather than dismiss cards? Happened like a dozen times now that I throw the cards I want to keep.
(comment deleted)
Usually you only have 1-2 cards you want to hold. So it's 1-2 clicks.

If you had to throw them, it would be 3-5 clicks.

I flushed a flush for this reason :(
I suppose it is emulating the original. But yes, same experience here. I made the mistake multiple times.
The screen seems somewhat distorted/deformed when displaying on my phone browser.
It's a CRT, it's supposed to look like that :)
All that's missing is the cigarette smoke and the sense of small-town desperation.
I guess you could tractably compute the optimal policy for every hand. What is it?
There’s pages on the internet for this, with nice mental shortcuts. I remember trying to study one such page before going out in Vegas. It’s pretty silly because even playing optimally your EV is still negative
That’s what I figured, you always lose in the end.
Lovely game and art style, and the idea of 80s style games is great!

I would throw in my two cents with the following idea: I would love a modern, well made collection of classical games such as the one linked, available on many platforms, with cloud saves, even to the point of which game was picked. I would love to decompress by playing Solitaire for 5 mins in my lunch break on my iPhone, come home, open the computer and finish the game up on the big screen and enjoy the cards jumping all over the place.

Awesome. Please make your games supportable in Linux(or Proton) as well if your game ships natively.
It works in your browser. Why do you need more platforms support?
If you extract the (I think) data.pck file, you can run it with the normal godot engine wherever it's supported. (as long as there's no missing features the game uses on that platform.) It'd be easier for the developer to do it, but anyone can theoretically.
I really like Godot so far but the debugging tools are massively inferior to any other IDE and language I've ever used. I waste so much time trying to track down bugs. Proper variable inspection would be a life saver, for instance.
And this is the magic of open source and the current situation. There will be many like you and a few with the dedication and skills to make that happen for the benefit of us all.

The Unity move was VERY silly considering the state of Godot and Unreal.

Literally treating your entire user base like that.

I spent $400 for the Pro license when I was a poor Uni student back in '09 and it didn't translate to the newer versions - I just cut my losses and never looked back.

> There will be few people with the dedication to benefit us all > The Unity move was VERY silly considering the state of Godot and Unreal

In my opinion, opposite, Unity just pulled its oligopoly strings. It wasnt bad management or desperate business choices; they knew the state of the industry.

If they knew, why then did they need to adjust their fees after initial announcement? Looks like the management is pretty disconnected and desperate to me.
Unity is an advertising company that also has a game engine hobbyists use - I don't think what they did was necessarily a bad financial move, they just shafted the part of their userbase that doesn't generate much money and then wound it back when they realized it was really bad PR.
If you're using C# instead of GDScript you can use Visual Studio (or VS Code or Rider) and get access to all the debugging tools available in those IDEs. You can also use VSCode for GDScript but I've never tried it so not sure how the debugging experience is with that.
I have no clue about game development, apologies for the basic question. When does one use Unreal and when does one use Godot? Or does it not matter?
I'd summarize it as: The Unreal Engine, especially in the 3D realm, gives you a far higher ceiling of possibilities, but it requires a lot more work and effort to use it. Godot, Unity, GameMaker, RPG Maker, RenPy and many more limit your options, but also need less work to get something going.

If you have 1-10 people trying to make something cool, you'd never reach for the Unreal Engine because it is just so much stuff to lift and juggle. If you're a large AAA studio looking to make Fallout 5 though... Godot might end up a bit limiting.

Thank you, this gives me some idea
This is so cool, I really dig the CRT look! Nice job!
Side remark, but it is always intriguing to see what can be achieved with wasm technologies. There seems to be still significant potential in this direction and Godot's html5 export gives a good example of how to tap it.
I feel the same. I've worked with Unity for quite some time (though gladly don't anymore), but always had trouble trying to learn Unreal. Recently I tried godot and I found it quite easy to get started!

I love the game. Had a lot of fun playing for some time. but just one question, shouldn't pair of A be considered "higher than jacks"? Because it looks like it's not: https://imgur.com/a/ov2UP1D

Happy that you like the game :-) Aces are low in this version.
Missed requirement :)
It's nice but the CRT filter in a big monitor burns my retinas. CRTs didn't look like that unless you got too close to the screen. I guess I'm supposed to move away from the screen but then I can't reach the mouse, :)
Is there a reason it's only playing sound effects on the left side? Using macOS/Chrome/Earbuds there's nothing on the right.
Nice work! Good to see another Godot convert on here as well :-)

It is great how quickly you can get something up & running & then iterate on it.

The visuals are perfect, looks very much like a CRT...nicely done.

I think I found a bug though...pair of Aces doesn't pay as "Jacks or Better": https://imgur.com/a/78B3oPV

Okay, I though I was getting something wrong there.
Indeed, I encountered the same. Rock solid otherwise, so far!

Something at the end (bankruptcy) besides just locking up (other than the mute button) would be a nice touch.

Yes. I've got plans for this - sign up for free credits. lol :-)
Aces are the low card in the game. You are not the first person to say this! I need to look at the math again to make them high cards...

However in my opinion (at risk of getting everyones ire) - I think the ace is the "1" card.

... That's not how poker works though. I haven't had the luck to reproduce it, but is 10-J-Q-K-A also not recognized as a straight?
So if aces are considered "1", how do you think a Royal Flush works? It wraps back around to 1?
Ace needs to act like 14 for Jacks or higher purposes, and both 1 and 14 for straights.

Very cool and nostalgic app. I remember playing this for hours on my great-uncle's little pocket game.

After it's fixed you can add an option for "around the corner" straights, which count an ace both ways and wrap. For example: Q-K-A-2-3
This has me very curious. What lead you to believe that an Ace is a low card in poker?
Because it is in an A-5 straight
It's also in a 10-A straight though (generally; I'm not referring to this particular implementation). It also wins in poker hands that come down to simple high card, highest pair, etc.

Essentially, the A-5 straight is the outlier where A behaves abnormally.

but royal flushes exist in this game. A royal flush is T-J-Q-K-A
Perhaps I should have been more specific with how my question was worded. What leads OP to believe that an Ace is _exclusively_ the lowest value card?
> However in my opinion (at risk of getting everyones ire) - I think the ace is the "1" card.

Except that poker is an established game with clear rules where the ace is the highest card?

Honestly, I've never seen a CRT fisheye as bad as someone aping the aesthetic.

I also have a similar rant about VHS video filters.

(comment deleted)
I imagine it would be disorienting to actually play this on a CRT.
Ummm why didn't my two aces qualify for jacks or better? Also if I changed enough settings (moving the bet up and down) then the game glitched out on the first deal.
AH, memories. Card faces are from real machine - Novomatic American Poker 2 - back in time did lot of hacks on this platform. Even wrote a emulator in x86 assembly to speedup the development.

This Godot game is quite good to recreate the atmosphere of the ancient video poker machine. Lacks only cards autohold and sound could be a bit more polished, but these are minor things that could be easily improved.

Thank you! Yes, I wondered about auto-hold but in the end decided that it was a bit more engaging and fun not to do that...
Very cool. I got my first royal flush in my poker history. Too bad it isn't real $!
That's huge. The odds are roughly 1 in 46,000 hands of this.