Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Call for New Games #843

Open
lanctot opened this issue May 23, 2022 · 38 comments
Open

Call for New Games #843

lanctot opened this issue May 23, 2022 · 38 comments
Labels
contribution welcome It's a nice feature! But we do not have the time to do it ourselves. Contribution welcomed!

Comments

@lanctot
Copy link
Collaborator

lanctot commented May 23, 2022

Hi all,

I'm starting a thread to collect requests for new games and plans for upcoming games. We will keep this updated as new games get released, and as requests come in (please feel free to comment on this thread to add a request).

Games we would like to add to OpenSpiel:

Implementing one of these games is a great way to get involved with contributing to OpenSpiel. If you would like to volunteer to implement one, please contact us and let us know as we might already be working on them.

Games that have been added since posting this thread:

With these additions, OpenSpiel now has 95 games.

@lanctot lanctot pinned this issue May 23, 2022
@Jazeem
Copy link
Contributor

Jazeem commented May 27, 2022

  • Mahjong
  • Reversi
  • Yacht
  • Dominoes

Could be good additions

@lanctot
Copy link
Collaborator Author

lanctot commented May 27, 2022

We already have Othello (Reversi), but I will add the others, thanks!

@acforvs
Copy link
Contributor

acforvs commented Jun 27, 2022

What are your thoughts on adding 2048?
The original repo https://github.com/gabrielecirulli/2048 is under an MIT license, so I hope there shouldn't be any problems regarding copyright..

@lanctot
Copy link
Collaborator Author

lanctot commented Jun 27, 2022

What are your thoughts on adding 2048? The original repo https://github.com/gabrielecirulli/2048 is under an MIT license, so I hope there shouldn't be any problems regarding copyright..

Great idea, I'll add it to the list!

@dipplestix
Copy link

Is anyone working on Cribbage? I'd be willing to take on that one

@lanctot
Copy link
Collaborator Author

lanctot commented Jul 27, 2022

Is anyone working on Cribbage? I'd be willing to take on that one

I would really, really love to see Cribbage in the code base! I had some interactions with a redditor who said they would look into it, but have not heard from them in a while. I'll touch base with them and point them to this conversation and let you know soon.

@lanctot
Copy link
Collaborator Author

lanctot commented Jul 27, 2022

@dipplestix Ok heard back from them: they got replied saying they had been busy and was thinking of getting back to it in the fall, but it shouldn't stop someone else. If you finish it before the summer ends then maybe they could even help (they are thinking of doing research in the game). So, it sounds like you should go for it :) If you'd like to contact them, contact me by email and can give their reddit contact.

@PrashantPD
Copy link

Hi, I would like to work on the Pursuit-Evasion game played by 2 competitors say for instance: a company that employs an outside consultant and is receptive to recommendations and a company that makes decisions in-house as a canonical model deploying game theory. I will use the multi-armed bandit algorithm in which the company that employs an outside consultant will receive pricing recommendations based on historical moves to facilitate its decision making whereas the company that primarily takes decisions in-house can decide on the probability distribution for the choices available to it and the corresponding value attached to such a distribution.

@lanctot
Copy link
Collaborator Author

lanctot commented Oct 14, 2022

Hi @PrashantPD, ok I'm not seeing the actual game itself. Is there an example you can point to in e.g. a game theory text or Wikipedia? We're always welcoming of new games. It always helps if they are well-known in the MARL or game theory literature, but they are welcome either way (for now though, I'm curious about the structure of the game in extensive-game format). However, maybe let's continue this on the other thread you opened. I'll follow-up there.

@PrashantPD
Copy link

Hi @PrashantPD, ok I'm not seeing the actual game itself. Is there an example you can point to in e.g. a game theory text or Wikipedia? We're always welcoming of new games. It always helps if they are well-known in the MARL or game theory literature, but they are welcome either way (for now though, I'm curious about the structure of the game in extensive-game format). However, maybe let's continue this on the other thread you opened. I'll follow-up there.

Hi @lanctot, Absolutely - thanks see you there - will be on it and detail the structure of the game and point to the relevant literature. You should see it first thing tomorrow in the morning as you log in. The multi-armed bandit comprising of a player and the environment which can comprise of the competition struck a cord in a pursuit-evasion context where the competitive game ends in an equilibrium.

@PrashantPD
Copy link

Hi @lanctot I am working on the game for the other thread today - will message tomorrow on both the formats.

@lanctot
Copy link
Collaborator Author

lanctot commented Oct 15, 2022

Hi @lanctot I am working on the game for the other thread today - will message tomorrow on both the formats.

Thanks for letting me know, but there is no rush. And I may not replay for a day or two depending on how busy I am.

@thorsten-j
Copy link
Contributor

thorsten-j commented Dec 15, 2022 via email

@lanctot
Copy link
Collaborator Author

lanctot commented Dec 15, 2022

Hi Marc, on Gravon, Mahjong already is implemented. I could try to port the code to C++/OpenSpiel, if nobody else volunteers. Best regards, Thorsten

Cool!

@rezunli96 suggested that we was going to look into it after hus last PR which we just merged a few days ago; Zun, have you already started?

@thorsten-j: do you know if there would be any license incompatibilities?

@rezunli96
Copy link
Contributor

Hi @thorsten-j do you know which version of Mahjong Gravon has? The one I am currently looking into is Riichi Mahjong.

@thorsten-j
Copy link
Contributor

Hi @rezunli96 , Gravon implements Hong Kong Mahjong.
Hi @lanctot , afaik there is no license needed for Mahjong.

@rezunli96
Copy link
Contributor

@thorsten-j Sounds great! Then I think we do not really have a conflict here and we can work on our own versions of Majong separately. Maybe there is a unified implementation that can include all versions. But I guess this is not the primary concern for now?

@lanctot
Copy link
Collaborator Author

lanctot commented Dec 15, 2022

Hi @lanctot , afaik there is no license needed for Mahjong.

Right, that should be fine .. what I meant is, is the code on Gravon have a license like e.g. GLPv3? (Oh, maybe the Gravon code is not open sourced? Is it your own personal implementation?)

@thorsten-j
Copy link
Contributor

Gravon's code is not open source but it's written by myself.

@lanctot
Copy link
Collaborator Author

lanctot commented Dec 28, 2022

@dipplestix I am thinking of implementing Cribbage (as a slow side project). Just wondering if you plan to finish/contribute yours?

@lanctot
Copy link
Collaborator Author

lanctot commented Dec 30, 2022

Gravon's code is not open source but it's written by myself.

Hong Kong Mahjong would be a great addition. And it seems like @rezunli96 is working on a different game anyway. Does it have any "interruptions" as mentioned in #979 ? If so, I'm curious: how did you deal with them in a discrete turn-based API?

@thorsten-j
Copy link
Contributor

Does it have any "interruptions" as mentioned in #979 ? If so, I'm curious: how did you deal with them in a discrete turn-based API?

On Gravon, after a player discarded a tile, all other players have to either call that tile or pass. This way Gravon makes sure that no one misses a tile. For implementation that means that there is no interrupt but the game still is completely turn based.

@elkhrt elkhrt unpinned this issue Feb 8, 2023
@lanctot lanctot pinned this issue Feb 28, 2023
@lanctot lanctot unpinned this issue Feb 28, 2023
@TheSQLGuru
Copy link

Are there any war gamers, especially hex-grid style with dice or some other randomization factor such as card draw/play, to be found here? I reviewed the list of games and didn't notice any similar to the types I mention. I am just getting started in the AI/ML realm for a variety of reasons (after decades of consulting the SQL Server database applications realm) and have set myself a Bucket List item to build an AI opponent for the Advanced Squad Leader Starter Kit game. Having a (semi-)similar game already done in Open Spiel would obviously GREATLY benefit my pursuit! :-D

It is amazing that this project exists, and even more amazing is the number of games and algorithms that have been implemented in just 3 years!! I truly look forward to the time when I can understand and dig into the how's and why's of all that Open Spiel has to offer!

@lanctot
Copy link
Collaborator Author

lanctot commented May 31, 2023

Hi @TheSQLGuru

(after decades of consulting the SQL Server database applications realm)

Username checks out! :-p

OpenSpiel does not have any games in this category. It'd be a great addition to the library, but they are fairly complex to implement and sometimes it can be hard to include due to copyrights if it's a commercial game. But if there are any smaller ones that are non-commercial that can be used as an example, it'd be great to have in the repos. I think there are some good ideas of games that could fit this, and happy to brainstorm here or in a separate thread.

@TheSQLGuru
Copy link

Hello @lanctot - thanks for the quick reply! HAH, funny that you checked me out. I don't have much out there on the intertubz because I don't blog, stopped using twitter years ago, have had some major health issues since 2017 that drastically cut both my work volume and my travel to present at conferences around the world. Actually, I don't even have a website for my business, nor even a resume/CV, and I have been consulting since the mid-90's and started my company in 1999. But I do have several C-level references that will state that I saved/made their company. :-D

On to business: Let's start another thread somewhere/how. I will leave that to you - just let me know where to show up. I will collect some basic information from you (and from some of this project's files), especially concerning the various types of information, metadata, states and transitions, mechanics/decisions/rules/etc. and the potential ease/difficulty with which each element may be translated to Open Spiel. I will hit up various gaming forums and ask for inputs about the simplest games of the genre. I will review them and pick a few, and then distill enough info from them that you and I can have an informed decision about which might be the easiest/best to pursue first.

@lanctot lanctot added the contribution welcome It's a nice feature! But we do not have the time to do it ourselves. Contribution welcomed! label Apr 6, 2024
@Brunozml
Copy link
Contributor

I'd like to extend/add the most popular version of dominoes in Latin America, played with 4 players instead of two. There's already a great library under MIT license (see Dominoes library). I'd be interested in adapting it for OpenSpiel in Python and potentially also in C++.

Please let me know if that's okay, and point me to some useful resources if you can :) I've been trying to follow the guide in the docs but I haven't fade much headwind yet, I guess its normal since I'm not used to working on projects of this size.

@lanctot
Copy link
Collaborator Author

lanctot commented Apr 11, 2024

I'd like to extend/add the most popular version of dominoes in Latin America, played with 4 players instead of two. There's already a great library under MIT license (see Dominoes library). I'd be interested in adapting it for OpenSpiel in Python and potentially also in C++.

Please let me know if that's okay, and point me to some useful resources if you can :) I've been trying to follow the guide in the docs but I haven't fade much headwind yet, I guess its normal since I'm not used to working on projects of this size.

That would be great! I assume you mean as a python game which would wrap that Dominoes library.

I know the project has gotten quite big and can be intimidating, but we are happy to help you with this. Probably the best place to start is to follow-up on the other thread you started (#1204) where I asked a few questions that need to be answered and also gave general advice.

Since most of the games are in C++, how to add new Python game is not overly well-documented, and we will add extra bits of missing documentation as we go along.

@i-Madsen
Copy link
Contributor

Hi @lanctot , I'm trying to take a stab at implementing Spades.

Since Bridge is somewhat similar, I'm using its implementation as a starting point, but may periodically have some questions/need some help. The game rules and such are easy enough to change, but I'm still pretty new to RL related stuff.

Is it ok to make a help thread for making Spades here?

@lanctot
Copy link
Collaborator Author

lanctot commented Apr 19, 2024

I would absolutely love to see Spades in OpenSpiel! Yes, by all means feel free to start a thread for Spades. If you are new to OpenSpiel, the best place to start would be the video tutorial to get familiar with the API: https://youtu.be/8NCPqtPwlFQ?si=GiFg3x6P9Lm6McGX

@jin404861445lan
Copy link

Hello, I want to implement the Chinese Dark Chess game.
Have you already working on this game?
Is this game type Non-deterministic and with Imperfect information?
Can I refer to Kriegspiel for implementation?
If I can implement this game, I am willing to contribute the source code and look forward to your answer.

@lanctot
Copy link
Collaborator Author

lanctot commented May 11, 2024

Hi @jin404861445lan,

We are not working on this game. It is easier to think of this game as a perfect information game with chance events (where every time a piece is revealed, a chance event determines which one it is). This would make it easier for search methods like MCTS and expectiminimax to play this games. Something like backgammon should be a good starting point. Kriegspiel probably uses the underlying chess implementation which you would not want to do -- you'd want to write it from scratch.

@shinoi2
Copy link

shinoi2 commented Oct 16, 2024

Hello, has anyone implemented Gomoku? If not I'd like to help get it done.

@lanctot
Copy link
Collaborator Author

lanctot commented Oct 16, 2024

Hello, has anyone implemented Gomoku? If not I'd like to help get it done.

No, that would be a welcome addition!

@AussieSeaweed
Copy link

I think a better addition than gomoku is an m,n,k-game (generalization of gomoku). @shinoi2 Are you still working on it? If not, I can contribute.

@AussieSeaweed
Copy link

Hi, @lanctot, what are your thoughts about a Python game wrapper of PokerKit for non-holdem poker variants? I am thinking of doing it.

@dmarx
Copy link

dmarx commented Nov 26, 2024

The Resistance (original version, no plot cards or inquisitor role). The Resistance is a social deduction game, similar to Mafia/Werewolf. The game is extremely simple:

  • a minority of players are randomly assigned to an opposing team. The opposing team members have full knowledge of everyone's role, the players on the majority team do not.
  • at the beginning of each round, players share information (publicly) to try to influence the outcome of the round.
  • one player gets to nominate a "team" of players, who will determine the outcome of the round.
  • the information sharing culminates in a public vote. if the vote fails, the next player in the sequence gets to nominate the team for the round.
  • once a team is successfully chosen, the team members have a blind vote to determine the outcome of the round's "mission". a "mission" is only successful if the vote is unanimous.
  • the goal of the minority team is to "sabotage" some fraction of the missions. If they achieve this, the minority team wins. Otherwise, the majority team wins.

A minimal implementation could do the pre-vote information sharing as just communicating a credible interval for what a player wants the rest of the group to think their beliefs are wrt the other players' roles.

@lanctot
Copy link
Collaborator Author

lanctot commented Nov 28, 2024

Hi, @lanctot, what are your thoughts about a Python game wrapper of PokerKit for non-holdem poker variants? I am thinking of doing it.

Love this idea! Might make poker a bit easier to work with than via the ACPC code wrapper in C++.

@lanctot
Copy link
Collaborator Author

lanctot commented Nov 28, 2024

The Resistance (original version, no plot cards or inquisitor role). The Resistance is a social deduction game, similar to Mafia/Werewolf. The game is extremely simple:

@dmarx, The Resistance is an excellent game indeed, but to add something that is copyrighted is difficult (see #770). We'd ultimately want permission to host an open implementation in our repos, which is not impossible but sometimes difficult and a long process. Alternatively it can be hosted in an external repos and we can list it as a third-party (external) game on our games list.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
contribution welcome It's a nice feature! But we do not have the time to do it ourselves. Contribution welcomed!
Projects
None yet
Development

No branches or pull requests