tslocum 3 days ago

Hey there, author here. Glad to answer any questions.

If you don't know how to play backgammon, check out this guide[0] and/or this video[1]. There is a lot of history[2] behind backgammon. bgammon.org is AGPL-licensed, the client[3] and server[4] source code is publicly available. The graphical client is powered by the excellent Ebitengine[5] game engine.

  0. https://bgammon.org/blog/20240201-how-to-play-backgammon/
  1. https://www.youtube.com/watch?v=KDvvKWi0ijs
  2. https://bgammon.org/blog/20240115-history-of-backgammon/
  3. https://code.rocket9labs.com/tslocum/boxcars
  4. https://code.rocket9labs.com/tslocum/bgammon
  5. https://ebitengine.org
  • honksillet 3 days ago

    It might be worth while looking at lichess and take some direction from their interface, which is quite nice.

    • tslocum 3 days ago

      Lichess has been a large inspiration for the project. I gave Lichess a shout-out for its influence in this blog post: https://bgammon.org/blog/20240101-hello-world/

      • cdelsolar 2 days ago

        That's awesome. I also took inspiration from Lichess for https://woogles.io - a way to play a Scrabble-like word game online that is also open source, AGPL, etc. (Also like yours, written in Go!) It's hosted a number of big tournaments and I believe we're about to hit 6M total games (5.984 million so far! within the next day or two). Computer analysis with a WASM program that is going to improve, etc. I hope bgammon achieves a lot of success; I've always wanted to learn backgammon and will give it a try.

        • tslocum 2 days ago

          Thanks. Lichess really has paved the way for other libre online games. Congrats on the upcoming milestone. :)

          • cdelsolar 2 days ago

            I'm really tickled by a lot of the stuff on your page. For example your own backgammon interface language (UBEI) - I'm also coming up with a language (UCGI) and slowly translating our clients, bots, analyzers etc to use it :)

            I'll plug your site on our Discord, it's neat.

  • porphyra 3 days ago

    Is there a way to resign a game? I don't want to play against a bot until I get totally demolished.

    Also, if I click in the text input, a huge keyboard shows up even on desktop, obscuring much of the game. Why?

    • tslocum 3 days ago

      Yes, you can type /resign when it is your turn to end the game.

      Thanks. The keyboard input should only show up if your browser is indicating there is a soft keyboard available for the device. On Android, the device keyboard doesn't work for some reason. It definitely shouldn't show up on desktop, though. I will look into this.

      The desktop version[0] shouldn't have this issue, if you want to give that a try.

      0. https://bgammon.org/download/

  • bonzini 3 days ago

    Why does "Play now using your browser" link to the play store?

    • tslocum 3 days ago

      If the user-agent claims to be Android, the play link is changed to the Play Store. This is because the web client runs single-threaded[0] and has reduced performance when running in a browser on desktop, let alone when running on a mobile platform. When running as a native Android app, all of the device's CPU cores are utilized.

      0. https://github.com/golang/go/issues/28631

      • salviati 2 days ago

        It would be best to also change the text then, not just the link. The text could read "Install the app and play now" when the link is changed to point to the play store.

      • Y_Y 2 days ago

        I would much prefer to run single threaded in the browser than be cajoled into installing another fucking app.

        • tslocum 2 days ago

          I would rather offer the browser-based version to everyone, but it is an objectively worse experience because of the state of the Go compiler. You can still visit the broswer-based version if you want to, it's just a link swap on the page done in JavaScript.

          Out of curiosity, what do you think I should do? Keep in mind, not everyone feels the same about being "cajoled" into installing an open source application. But virtually everyone won't appreciate the UI hangs.

          • Y_Y 2 days ago

            Maybe you could offer both links, with a note that says what you just said?

            (I don't think you're forcing free open backgammon down people's throats, but there's an existing fatigue due to less scrupulous publishers detecting mobile browsers and pushing people away from otherwise functional websites.)

      • postexitus 2 days ago

        Why would a backgammon game need multiple threads?

        • CodesInChaos 2 days ago

          I agree than the basic functionality should require so little work that multiple threads should be useless. Some features like bots or game analysis could benefit from multiple threads, and should at the very least run outside the main UI thread. However these are only nice-to-have, and I'd be happy with a web-client that either doesn't support these at all, or only uses a single worker thread. And I see no reason to support this on desktop, while redirecting to an app on mobile.

          Moving those features a webworker so the UI stays responsive should be easy, however I'm not sure how synchronizing multiple webworkers to take advantage of multiple cores compares to synchronizing multiple threads in a native app.

        • TylerE 2 days ago

          So the UI can respond while the CPU is calculating. Assuming the AI is using some sort of alpha-beta search the CPU also will scale embarrassingly well across multiple threads.

huimang 2 days ago

Something I've thought a lot while playing backgammon locally is "I wish there was a site like lichess, but for backgammon"... so kudos for going out and starting your own! Are there any plans for post-game analysis?

There seems to be an issue with the login/signup form, as it doesn't pull up the native keyboard for my phone, but some random keyboard.

  • fforflo 2 days ago

    I got a feeling that this may be a cultural aspect there too: Backgammon is not considered "sophisticated," I think. I'm from Greece (I don't play backgammon myself, though), and backgammon (tavli) is extremely popular but widely considered "a game for the masses." It is played mostly in tavernas and old-style coffee shops, and each game has a social aspect, too. People discussing (sometimes shouting and finger-pointing "no! You should have done this or that! Ah! just get up and let me play, you're a noob!"

    I can't but laugh thinking who would be the GMHikaru or GothamChess of tavli :D :D

    Edit: This can be misinterpreted. I don't play tavli not because is not considered sophisticated, I just find the rules confusing for certain setups.

    • TylerE 2 days ago

      Interesting, I've seen the opposite. In the US it's hardly played at all, nowhere near something like chess or poker, but a large (relative) percentage of the play that happens is for money, often at absolute nosebleed stakes.

    • chongli 2 days ago

      That sounds great! Here in Canada the bar scene is mostly about watching hockey on big screen TVs. That’s a lot less interesting to me than games.

      I never learned backgammon though.

    • huimang a day ago

      After I learned backgammon from my parents, I also wonder why almost no one plays it in the US compared to chess. Seems mostly European and Middle Eastern folks play it (my parents are from Romania).

      I like it because it's not as serious as chess, at least when it's not played for money. Just roll and go. I always carry a portable set with me, made by sondergut.

    • kzrdude 2 days ago

      chess should be a game for the masses too, and I think it is. People play that in cafes too

      • huimang a day ago

        It's not that you can't play chess in cafes (I've also done that), but chess is more complex and is -perceived- to be much more complex and serious.

        Backgammon has dice rolls and less complex strategy, so it's nicer to play over coffee and chatting. Rolling doubles also gives potential for comeback swings so it can be fun for spectators too.

      • TylerE 2 days ago

        Backgammon is arguably a much better game for casual play. In Chess, unless the skill levels are pretty close, one player (the stronger one) is going to win almost every game, and many of the non-wins will be draws.

        Backgammon has just about the perfect amount of RNG injected into it... weaker players can win, especially a single point (backgammon is typically played to a point target.. a game is normally worth 1 point (except for a few edge cases where one player loses very badly), but there is a doubling cube that starts in the middle. At their turn either played can pick up the cube and double, at which point their opponent can either accept, and play for double points, or resign for the _original_ stake. The cube is then handed to the acceptor, and then he can redouble later, etc, etc.

  • tslocum 2 days ago

    Thanks. Yes, I hope to support analyzing games in the future. I experimented with interfacing with gnubg to accomplish this, and hit a brick wall, as gnubg really isn't designed for computers to use it. From what I can tell, I would need to scrape the terminal output of gnubg to do this programmatically. I haven't found any open source engines that seem easier to interface with, if anyone knows of one, please share.

    The internal keyboard is shown rather than the device keyboard because on many devices, using the device keyboard does not work. It either doesn't show at all, or it is shown but key input is not registered. I hope that the game engine powering bgammon.org adds support for using device keyboards soon, and will be glad to revert to using device keyboard as soon as possible.

  • me_me_me 2 days ago

    https://www.playok.com/

    its english version of polish kurnik.pl (henhouse)

    Its as old as polish internet, very rudimentary but always active for all kind of games

euph0ria 2 days ago

Great game! Some feedback from a first time ever backgammon player:

- Thank you for getting me to play for my first time!

- Once a move has been utilized, then grey out that dice

- Rename the button "OK" to "Skip turn", I was wasting many turns until I figured out it skips your turn

- Make the color of your player more visible, I didn't know if I was black or white, thought I was white for the longest time

- For desktop users, do not show the popup keyboard, super difficult to chat with other players since it hides the text I'm writing

- Once I've done my two/four moves, autoclick the "ok button" so it speeds up the gameplay

closedl00p 3 days ago

Hi, nice snappy interface (even after making the HN front page...) and I like the gentle highlighting of possible moves for a piece.

In two games against the bot I _think_ I had the luck to run into a corner case bug with the rules engine: in the position shown in this screenshot https://ibb.co/dQ3HsM4 I'd rolled a 4-6, but the UI would not let me move my piece on 9 four spaces to hit the opponent on 5 -- the UI only wanted to let me move that piece six spaces.

I can imagine how this bug could happen-- all my pieces except this one are in my inner table, so it looks like my piece on 9 is the only piece that can legally use the rolled six, and you're required to fully use your roll if possible... except in this particular case, once I move that piece four spots, I'd be fully in my inner table and could use the six to bear off a piece.

[sidenote: I realize I don't know the best 2024 way to host a temporary image for posting on a text-only forum like HN... but imgbb looked reasonable...]

  • tslocum 3 days ago

    Thanks for reporting this and including a screenshot. I appreciate it.

    I've just resolved this on the server and in the web client (now v1.3.5p1, displayed at the lower right when the game loads).

  • dumbo-octopus 3 days ago

    While we're on the topic of ancient link-based sharing websites, here's a pastebin of the Typescript code I wrote years ago that I just dug up to see if it'd handle this case. It does! It uses an actually-pretty-fast backtracking implementation to check for valid moves - validating Backgammon moves is a harder problem than you'd think, especially doing so quickly enough to effectively run monte tree search with. Even with all the thought I've put into it, I still don't have a quick explanation I can give a human trying to learn that game what the valid moves are, especially in the endgame and with blocked moves.

    https://pastebin.com/QeSdnQpM

    And the test cases I have for it: https://pastebin.com/vmMEjSMz

somat 2 days ago

The opening position of backgammon always worries me, not because it is bad, but because I don't understand it. And backgammon is old enough that getting to the origin and meaning behind the position is not trivial.

My best guess is that the game started out with all the pieces off the board and you had to get them all on and around and off the far side. However this takes too long and some bright Persians who understood the game far more than me who only plays an occasional game with my father started creating and playing strategic openings. Positions with interesting interactions with the dice but now the game was much shorter and exciting. And the game we all play and enjoy today was one of the more popular openings.

A good theory, hard to prove. But why on earth do you start with five tokens already in your home???

  • tslocum 2 days ago

    I think the opening position evolved out of a desire for more interesting openings and resulting middle and end games. The position does seem strange at first, but it is sort of the foundation for more sensible positions, like turning 6-1 into a fortification of two pieces on the same space. Without the opening position, you would only have at most one checker on a space with this roll. I have absolutely nothing to prove any of this, it's purely speculation, as this is something I've wondered about as well.

bonzini 3 days ago

Backgammon had a pretty large community at Yahoo! Games. With the demise of Yahoo! Games the only place to play online was FIBS, for which you had to download a Java client... Glad that finally someone scratched their own itch and built this, I will check it out and suggest it to my father.

  • starmftronajoll 2 days ago

    I’ve played for a long time at BG Galaxy, judging by online backgammon forums (and activity on BGG itself), it’s a pretty popular place to play.

    https://www.backgammongalaxy.com/

    Edit: Hey tslocum, rather than downvoting anyone who mentions other sites where people can play backgammon, I’d love for you to tell us more about why you believe your site is or will become superior to the existing options. There’s room for improvement in this space, but you’re definitely not there yet.

  • lstolcman 2 days ago

    Check https://www.playok.com/ - it has backgammon as well as other games. The site is using html 5 and following "keep it simple" principle; it just works

    • 2-3-7-43-1807 2 days ago

      very nice web site! thanks for recommending it here. just had a nice game of gin rummy.

CamelCaseName 2 days ago

I'm on mobile, clicked "Play now" where it said "Play now using your browser" and it brought me to the play store.

Downloaded the app, and tried to sign up, but everything was flashing -- I think it keeps flipping between screen sizes

mieses 3 days ago

bgammon.org register and login pages do not allow copy/pasting of usernames and passwords. i'd love to play but that's kind of annoying.

  • swebob 2 days ago

    Agree, terrible security not being able to fill the form using a pw manager.

mandymoorefan 2 days ago

My GF plays a ton of backgammon online. This isn't related to the post. Just sharing a project / software that is related in concept.

heroes.backgammonstudio.com

Whoever runs this project does a fantastic job. It feels like they really care about the game. There's some friction to signing up and rules that force you to finish games that results in a stable player base.

ulf-77723 2 days ago

I love the game, created a german niche website about backgammon with steady traffic since years. Always happy to see new solutions.

How do you cover the server costs, without ads?

  • tslocum 2 days ago

    I've designed the server and its embedded backgammon engine to use very few resources, so it's all able to run on a dual core VPS that I am already using for my numerous other projects. Everything needed, including Postgres, currently uses less than 256 megabytes of memory and negligible CPU.

    As it grows, I intend to follow in Lichess' footsteps by offering a paid supporter badge without locking any functionality behind a paywall. Because the server is lightweight, just a few paid supporters should be able to offset the costs for many free users.

oldmariner 2 days ago

Pretty cool, thanks!

I was casting my pieces off, guaranteed a win, but my opponent left, so it didn't count as a win for me to my disappointment.

Perhaps if someone leaves and doesn't return within 60 seconds, the game should be a win for the person remaining if the remaining person's pip count is lower.

  • anamexis 2 days ago

    I think whoever abandons the game should forfeit, otherwise you get weird incentives (like to quit anytime your pip count is higher)

    • oldmariner 2 days ago

      That's why I only mentioned a different condition which hopefully doesn't lead to bad sportsmanship.

  • oldmariner 2 days ago

    Happened a second time :-( although this time my opponent still had a chance.

    Both games where my opponent left, now show as wins in my history.

    Also, I like the dice addition, but on desktop, the dice images are not matching up with what is rolled and displayed in the log.

    How long does an opponent have until they auto forfeit if they don't move?

    • tslocum 2 days ago

      Thanks. The way inactivity is handled is covered in the FAQ: https://bgammon.org/faq/#what-happens-if-a-player-goes-inact...

      You shouldn't need to wait more than 30 seconds to see a win in your history after you also leave the game.

      Will you please share a screenshot of the dice issue?

      • oldmariner 2 days ago

        https://imgur.com/a/bqyWblS

        Maybe it was the Firefox addon Canvas Blocker? That addon was crashing the game, so I disabled it and appears to work now. The game still makes my laptop fans kick on though.

        • tslocum 2 days ago

          Thanks. Yes, that makes sense. The web version of the game is powered by WebAssembly and renders to a canvas.

          The game is only able to utilize one CPU core when running in the browser, maxing that core out probably set off your fans.

m101 2 days ago

Can you add support for tavli?

https://www.bkgm.com/variants/Tavli.html

The first game of tavli is portes which is the most common variant of backgammon played. Tavli is played by Greeks at least (and I'm sure many more)

NooneAtAll3 2 days ago

When I press "Play" button in the corner, it shows loading message and then black screen...

Is this website even worth it, if I don't like short backgammon and prefer long nardi?

  • tslocum 2 days ago

    If you have JavaScript, WebAssembly and/or Canvas elements disabled, the game won't be able to run in your browser. If you take a look at your browser's console, there might be a helpful error message.

    Acey-deucey and tabula games are supported in addition to backgammon.

_tk_ 3 days ago

Congrats, this looks like an amazing project!

29athrowaway 3 days ago

I never understood that game. Maybe I should watch a tutorial or something.

floed 2 days ago

So clean. So fast. Finally an OS client for all platforms.

floedel 2 days ago

So clean. So fast. Finally a client fo Android without tons of BS.

floedel 2 days ago

So clean. So fast. Finally an OS client for all platforms.