[DAO:uqac2qq] Community Module: Solitaire

by 0xc24789c6f165329290ddd3fbeac3b6842a294003

Should the following Tier 2: up to $3,000 USD in MANA, one-time payment grant in the Gaming category be approved?

Abstract

I am seeking funding for the development of the popular card game Solitaire. This module will not only provide foundational interfaces to simplify the process of developing future card games in Decentraland, but would also provide a free scene that can be deployed onto land.

Grant size

3,000 USD

Beneficiary address

0xC24789C6f165329290Ddd3fBEac3b6842a294003

Email address

thecryptotrader69@gmail.com

Description

Card games have been, and still are, a massively popular type of game. While there are a few places in Decentraland where users can participate in card games, there are very few resources for the community to use when developing or deploying their own card games. The creation of a single set of utilities would go a long way to help establish the foundation for future card game development and would hopefully result in more games for the community. By providing better access to modules for developing entertainment content we could further cement Decentraland as one of the best places to participate in metaverse gaming.

This community module would feature the full game of Solitaire in the 3D space of Decentraland. Common definitions (card values and houses) and functions (placement, hand, and deck management) would all be relegated to external interfaces, making further development significantly easier. Any developer looking to create their own card games would no longer need to reinvent the wheel and could simply pull upon the provided functionality.

Specification

This module will provide the core functional interfaces for users to create their own card games in a 3D setting, as well as provide a free to use implementation of the card game Solitaire. Included interfaces include: defining the seat positions of card piles, management of card collections (hands, decks, discards), and real-time movement of cards across the table. These interfaces will be decoupled from the game itself, making them easy to incorporate into other projects.

All coding resources and source would be released to the community through a github repository, making them available to anyone who would like to deploy the game onto their land or develop their own card game.

Personnel

I’ll be working on this project solo. I’ve been programming for over a decade, with a primary focus on gaming, and I’m currently employed as a software engineer (working mainly with C and Java). While I’ve only been developing in DCL for a relatively short period of time I have made good strides and am fully capable of implementing this project in the given time-frame. I’ve created several projects on the platform (including minesweeper and networked checkers) and I have a good understanding of the development pipe-line.

Roadmap and milestones

This project will be completed within 2 weeks of this proposal’s acceptance. The basic roadmap is as follows:

  • Week 1: Implementation of core features, rough demo scene made available for feedback.

  • Week 2: Scene/code polish, implementation of suggested features within scope.

As with any project, there will likely be bugs/flaws in implementation. I’ll be maintaining the main repository and will work towards fixing these as they get flagged.

Vote on this proposal on the Decentraland DAO

View this proposal on Snapshot

1 Like

How many different card games will this support? Will you be able to create different forms of soliataire (Spider etc). Will you be able to create Spades or Hearts or Golf or Kings Corners?

1 Like

Reach out to me on twitter or Discord. Would love to learn more.

The primary goal of the project would to establish interfaces to be used in the creation of card games and provide accessible examples to increase the community’s store of available knowledge. After they have been developed the process of implementing new card games would be significantly easier, so increasing the number of available card games could be done at a good speed. All that would be required is an understanding of the rules/logic steps that govern the game. With that being said, I’m only setting the scope of this proposal to a single style of solitaire so I can focus more heavily on the back-end development of the required interfaces.

The first targeted style of solitaire is FreeCell. I’ve chosen this one because the odds of winning are better than most other popular solitaire games. If I remember correctly, the odds for winning a game of spider solitaire were around 40% when I was researching the different types, while FreeCell provides the possibility of a win in nearly every round.

If there is a demand for further styles of solitaire or other card games that people would be interested in playing/deploying through Decentraland I could do so by request or through further projects, I just wish to keep this proposal in a scope that is manageable in the 2 week time-frame. In the future I could also tackle the creation of a peer-to-peer connectivity module that would enable multiple players to participate in the same game, but this is also out of scope of the current proposal.

1 Like

so just to be clear, this would be implemented as an SDK library and open-source?

1 Like

Solitaire is cool, but darts would be sweet.
Where can I go in Decentraland to play minesweeper and checkers?

1 Like

Yes. The set of interfaces would be provided as a stand-alone library, while the game would pose as an example of how to interact with them. Everything would be make open source and available for community to use.

2 Likes

I don’t believe either of those projects have been deployed in Decentraland yet, though their repositories are available for anyone looking to deploy them. I currently have their test scenes hosted as websites to showcase functionality (for the checkers game you will need to download and run the repo locally to see the peer-to-peer networking in action).

You can access the test scenes here:

2 Likes

Voted yes on this. I tested the minesweeper. Was really cool to see! I didn’t win :stuck_out_tongue: but very cool nonetheless. I think it would be great to have more of this type of stuff to encourage community engagement. Idk if this is within the scope of the project, imagine playing solitaire with someone at the WonderMine while mining xD

2 Likes

awesome, you have my vote :smiley:

2 Likes

Community Module: Solitaire

This proposal is now in status: PASSED.

Voting Results:

  • Yes 99% 1,034,406 VP (34 votes)
  • No 1% 979 VP (2 votes)
1 Like

I love this. Would be cool to see more content like this in world!

1 Like

Project is well on-track: the core interfaces and solitaire game are finished. Work has begun on hunting/killing bugs and optimising code.

More information about the project’s progress can be found under Update #1.

2 Likes

Community Module: Solitaire

This proposal has been ENACTED by a DAO Committee Member (0xbef99f5f55cf7cdb3a70998c57061b7e1386a9b0)

4,000 MANA at 0.75 USD per MANA
Enacting Transaction: Ethereum Transaction Hash (Txhash) Details | Etherscan

Project has been completed.

Source repository can be found here and a playable preview of the scene here.

More information can be found under Update #2.

1 Like

-Update system is stalling and doesn’t seem to want to push the update, so I’m just going to post it down here-

Introduction:
This project has successfully concluded.

Highlights:
This module is split into several overhead components that should make management significantly easier. Much of the functionality of a standard card game (such as card generation, management, and movement) has been pushed into a foundational set of files. This means that adding a card game to the project is significantly easier than creating a card game from scratch. The most work intensive task a creator will have is determining a card game’s rules and implementing their logic process.

On top of that we also have the base-line for a Game Table management system. The idea is that each table can hold the ability to play from any implemented card games, while handling the start/clean-up phase of their operation. This would let users or their friends play several different games while only taking the in-scene resources for the currently running game and placing all management for the system under a single interaction object (making it easy to manage in-scene and in-code).

Aside from the repository, we also have the playable solitaire game that comes prepacked with the kit. Running the game locally or deploying it onto your own land is as easy as grabbing the source from the repository.

It’s also important to note that all resources created and inherited (such as the card faces) are of an open-source nature. They have no strings attached, so anyone can use them in any way they see fit. Whether it’s deploying on your land in a mortised variation, adding new card games to the project, or simply downloading and code-hoarding you can do it.

Blockers:
One thing that did turn out to be an issue was the real-time movement system. It was initially planned to have all cards visually shuffle to their starting position from the position they held from the previous game, but this turned out to be rather intensive and could cause some decent lag. The end result was cutting any start-up card movements, but keeping all in-game movements.

Next Steps:
While the project has concluded, I’ll continue to update the project as bugs pop up or add to its functionality. One thing that I missed when designing the initial system was move tracing to handle undoing previous card moves, so that will more than likely be added down the line.

Additional notes and links:
Repository: GitHub - TheCryptoTrader69/Decentraland_CardGameKit
Playable Preview: Decentraland Preview

1 Like

Kudos on this @TheCryptoTrader69 !

@nearnshaw is there any chance we can display community projects like these on the Awesome Repository?

1 Like

Feel free to send a Pull Request :wink:

1 Like