/Monopoly-Deal

The Monopoly Deal card game playable online with your friends on the PC.

Primary LanguageJavaOtherNOASSERTION

Monopoly Deal

This is a recreation of the physical card game, Monopoly Deal, playable on PC platforms. Monopoly Deal contrasts from its board game counterpart in that it is quite fast-paced and can be played within 15 minutes or so. The objective is to be the first to reach 3 complete sets of properties.

I originally started making this project with the intention of it being something that I just play with my friends and myself. We had been wanting to be able to play Monopoly Deal remotely for the better part of a decade now, so I made it since there wasn't any solution that appeased us. While it is still in development and may have issues here and there, it has come a long way since its first inception. The amount of available customization and modding support can make the game exactly how you like it.

Screenshots

Click To View

How To Play

Option 1: Installer (Windows only)

Video Tutorial For Installer

Alternate tutorial for older version explaining how to get the basic functionality setup for the client/server(Mac-specific tutorial here). Credit to Zyga for kindly creating the videos.

Download the latest installer and install the game.

Running the Game

Run the client with the shortcut on your desktop(if you chose to create one), searching for "Monopoly Deal", or navigating to C:\Program Files\Monopoly Deal(or where you chose to install it) and running Monopoly Deal.exe. The client's data files are stored and can be found at C:\Users\<Username>\AppData\Roaming\Monopoly Deal.

You can play Singleplayer straight away, or connect to a server. To connect to a server, type in the IP:Port provided by the server host. If you're playing on a server hosted on your own computer, connect to localhost:27599.

Hosting the Server

Navigate to C:\Program Files\Monopoly Deal(or where you chose to install it) and run Start Server.bat. From there, you can play by yourself with bots, or you may invite your friends to play by giving them your IP and port used for the server(example: 123.456.7.89:27599). However, to be able to have your friends join, you will need to port-forward or use a proxy like Ngrok. The default port is 27599, this may be changed in the config.txt file that is generated by the server. The server files can be found at C:\Users\<Username>\AppData\Roaming\Monopoly Deal\server.

Option 2: Jar Files (All Operating Systems)

Expand Instructions

Java 8 is required to run both the client and the server. Later versions of Java probably will not work.

Running the Game

Download the latest client jar and run it with javaw.exe from your Java 8 installation. You will be asked if you want to store the client's data in the application data folder on your PC or in the same folder the jar is running in.

You can play Singleplayer straight away, or connect to a server. To connect to a server, type in the IP:Port provided by the server host. If you're playing on a server hosted on your own computer, connect to localhost:27599.

Hosting the Server

Download the latest server jar and run it with java.exe from your Java 8 installation. This will generate data files in the same folder the jar is running in. From there, you can play by yourself with bots, or you may invite your friends to play by giving them your IP and port used for the server(example: 123.456.7.89:27599). However, to be able to have your friends join, you will need to port-forward or use a proxy like Ngrok. The default port is 27599, this may be changed in the config.txt file that is generated by the server.

Useful Server Commands

  • start: Deal out 5 cards to all players and start the game.
  • reset: Puts all the cards back in the deck.
  • op [Player Name]: Give a player server operator permissions, allowing them to execute all commands that the console could right from the in-game chat(accessible with the T key). deop can be used to revoke these permissions from a player. Simply preface your chat message with a "/" to indicate you're executing a command in-game. Example: /start
  • addbot <Name>: Add a bot into your game.
  • kick [Player Name]: Remove a player or bot from the game and return all of their cards back to the deck.
  • stop: Closes the server.
  • edittools: Displays and describes tools that can help you in creating your own custom deck.
  • editdeck: A hub for editing the deck.
  • createcard: Shows a list of cards that can be created instantly.
Advanced commands Some of these commands rely on Card IDs and Collection IDs. These are visible when you enable "Debug" mode using the button on the top-right of the in-game menu.
  • listplayers: Shows information about the online players, such as their ID.
  • createcard action [Action Card Name]: Create an action card with the given name. Make sure to put the name in one word, such as createcard action justsayno.
  • createcard property [Value] [Base?] [Stealable?] [Property_Name] [Colors...]: Create a property card with the arguments. Argument details:
    • Value: Self explanatory. It's the value of the property card.
    • Base: Can be true or false. A base property means it can be used as a foundation for a color. The only properties in the vanilla deck that aren't bases are the 10-Color Property Wild Cards.
    • Stealable: Can be true or false. If a property is stealable, it can be targeted by Sly Deals and Forced Deals.
    • Property_Name: The name of the property. It must be contained in 1 word, but underscores(_) are converted to spaces.
    • Colors...: The colors the property has. These are the internal numerical colors. 0-7, starting at low quality and ending in high quality. 0 is the Brown property color and 7 is the Dark Blue property color. 8 is Railroad and 9 is Utility. Separate the numbers with spaces.
    • Full example: createcard property 6 true Triple_Color_Wild_Property 0 4 9 - Creates a base property named "Triple Color Wild Property" with the value of 6M and has the colors Brown, Red, and Utility.
  • createcard money [Value]: Create a money card with the given value.
  • listcards [Collection ID]: Lists all of the cards in the specified collection.
  • listids [Collection ID]: Lists all of the card ids in the specified collection.
  • collectioninfo [Collection ID]: Tells you the amount of cards in the collection and what type of collection it is.
  • transfercard [Card ID] [Collection ID] <Index> <Time>: Transfers a card to the specified collection, optionally specifying the index and the time(in seconds) it takes for the arrive.
  • transferall [From Collection ID] [To Collection ID] <Time>: Transfers ALL cards from the specified collection into the other collection, optionally specifying the time(in seconds) each card takes to arrive.
  • savedeck [Deck Name]: Create and save a deck with the given name using the cards that are currently in the deck.
  • setdeck [Deck Name]: Swap to another deck. The name of the default deck is vanilla
  • nextturn: Ends the current player's turn and goes to the next player.
  • setturn [Player ID] [Draw?]: Set it to be the specified player's turn. Draw can be true or false, if true the player will be able to draw.

Additional undocumented commands may be seen by using the help command.

Modding Support

The server supports modding. If you're a developer and are interested in creating mods, you can find the guide here.

Available Mods

  • Millionaire Edition Mod(made by me): Implements the functionality from the Monopoly Deal Millionaire Edition game.

To-do

  • Implement customizable decks
  • Implement basic bots
  • Implement Houses/Hotels [Implemented in v0.7]
  • Allow for the customization of game rules [Implemented in v0.7]
  • Create more robust and easier-to-use deck editor
  • Better document server commands
  • Implement needed infrastructure to be able to play Monopoly Bid

Discord

Come join the Discord if you'd like to chat about Monopoly Deal, make suggestions, ask for help, or look for a game.





This project is not affiliated with Hasbro in any way.