Magic Another Game Engine
Find a file
Jmlundeen 69e20b1061
Merge pull request #14061
* move setPT to Card

* Create DoubleFacedCard and DoubleFacedCardHalf to share code between …

* Create Transforming Double Face Card class

* allow putting either permanent side of a double faced card to the bat…

* refactor exile and return transforming card

* update ModalDoubleFacedCard references to DoubleFacedCard where relev…

* update for GUI

* refactor a disturb card

* refactor more disturb cards for test coverage

* refactor a transform card

* refactor more transform cards for test coverage

* fix Archangel Avacyn

* fix cantPlayTDFCBackSide inconsistency

* fix Double Faced Cards having triggers and static abilities when tran…

* fix Double Faced Cards card view erroring when flipping in client

* fix test_Copy_AsSpell_Backside inconsistency

* enable Spider-Man MDFC

* convert TDFC with saga as the front and add card references to Transf…

* refactor More Than Meets the Eye Card

* refactor a battle

* refactor a craft card

* update comment on PeterParkerTest

* Merge branch 'master' into rework-dfc

* fix Saga TDFC Azusa's Many Journeys

* fix double faced cards adding permanent triggers / effects to game

* move permanents entering map into Battlefield

* convert Room cards for new Permanent structure

* fix disturb not exiling

* Merge branch 'master' into rework-dfc

* fix Eddie Brock Power/Toughness

* fix Miles Morales ability on main card

* fix verify conditions for siege and day/night cards

* change room characteristics to text effect to match game rules

* update verify test to skip DoubleFacedCard in missing card test

* accidentally removed transform condition

* Merge branch 'master' into rework-dfc

* fix verify

* CardUtil - remove unnecessary line from castSingle method
2025-11-27 09:24:03 -06:00
.github dev: enable auto-labels for PRs (labeler) 2024-02-18 18:22:32 +04:00
.travis
Mage Merge pull request #14061 2025-11-27 09:24:03 -06:00
Mage.Client Merge pull request #14061 2025-11-27 09:24:03 -06:00
Mage.Common Merge pull request #14061 2025-11-27 09:24:03 -06:00
Mage.Plugins version bump 2025-10-06 23:53:07 +04:00
Mage.Reports version bump 2025-10-06 23:53:07 +04:00
Mage.Server version bump 2025-10-06 23:53:07 +04:00
Mage.Server.Console version bump 2025-10-06 23:53:07 +04:00
Mage.Server.Plugins Merge pull request #14061 2025-11-27 09:24:03 -06:00
Mage.Sets Merge pull request #14061 2025-11-27 09:24:03 -06:00
Mage.Tests Merge pull request #14061 2025-11-27 09:24:03 -06:00
Mage.Verify Merge pull request #14061 2025-11-27 09:24:03 -06:00
repository/com/googlecode/jspf/jspf-core
Utils [SLP] update and rename set 2025-11-25 21:06:56 -05:00
.gitignore Added data collectors, AI and testing tools improves: 2025-07-05 21:44:55 +04:00
.travis.yml Added data collectors, AI and testing tools improves: 2025-07-05 21:44:55 +04:00
clean_dbs.sh
LICENSE.txt
Makefile dev: improved makefile for better build process (#13306) 2025-02-07 05:56:49 +04:00
pom.xml version bump 2025-10-06 23:53:07 +04:00
readme.md docs: added faq for pixilated images problem, updated card stats 2024-09-13 00:55:03 +04:00
sonar-project.properties

XMage — Magic, Another Game Engine

Build Status Lines of Code Coverage Technical Debt latest release commints since latest release Join the chat at https://gitter.im/magefree/mage

XMage allows you to play Magic against one or more online players or computer opponents. It includes full rules enforcement for over 28 000 unique cards and more than 73 000 reprints from different editions. You can also find custom sets like Star Wars. All regular sets have nearly all implemented cards.

It supports single matches and tournaments with dozens of game modes like duel, multiplayer, standard, modern, commander, pauper, oathbreaker, historic, freeform, richman and much more.

Local server supports a special test mode for testing combos and other game situations with pre-defined conditions.

There are public servers where you can play XMage against other players. You can also host your own server to play against the AI and/or your friends.

XMage community and resources:

Servers status:

Beta server with un-released or under development features:

Features

  • Multiplatform app: Windows, Linux, MacOS;
  • Deck editor (support multiple deck formats and deck sources);
  • Two player duel or a multiplayer free-for-all game with up to 10 players;
  • Computer AI opponents;
  • Players rating system (Glicko);
  • Supports special formats like Commander (up to 10 players), Oathbreaker, Cube, Tiny Leaders, Super Standard, Historic Standard and more;
  • Single matches or tournaments supported (elimination or swiss type handling), which can be played with up to 16 players:
    • Booster (also Cube) draft tournaments (4-16)
    • Sealed (also from Cube) tournaments (2-16)

Bug report / feature request

The best way to report bug or feature request is github's issues page.

Installation / running

Wiki page contains detail information about private or public server setup.

Server options

The XMage server locates by default the configuration file from the current working directory to the relative path config/config.xml (config\config.xml in Windows). To change this location, start the server with the property xmage.config.path set to the desired location, for example -Dxmage.config.path=config/otherconfig.xml. The option can be set from the XMageLauncher in Settings > Java > Server java options.

Troubleshooting / FAQ

Github issues page contain popular problems and fixes:

Performance tweaks

If you have a good GPU, it's very likely you'll be able to increase performance by a lot through extra Java flags.

XMage runs on JRE 8, so this link should give you the available flags.

How to enable the extra flags

  1. Launch XMage
  2. In the menu bar from the launcher, click on "Settings", which will open up the Settings Window
  3. Go to the "Java" tab
  4. You can pass extra flags by editing the "Client java options" text field

Linux tweaks

Enable OpenGL

More info about OpenGL:

  • -Dsun.java2d.opengl=true

Possible problems:

  • Caveat: There's a bug with the file chooser when OpenGL is enabled (you use the file chooser when you, for instance, try to load a deck from disk). The suggested workaround will make the game crash, so it's not an option.
  • Workaround: When using i3, you're able to work around the bug by toggling the "floating" capabilities of the window and forcing it to re-render.

Enable XRender

More info about XRender:

  • -Dsun.java2d.xrender=true

Increase memory usage

This is not guaranteed to yield improvements, but it depends on your use-case. If you have a lot of RAM to spare, you can increase the initial heap size for good measure. More details about memory settings:

  • -Xmx2G

Developer

Full project documentation and instructions for developers can be found in wiki pages.

First steps for Xmage's developers:

Torch icons created by Freepik - Flaticon