947351932b
* add types and subtypes * add startingDefense attribute * [MOM] Implement Invasion of Ravnica / Guildpact Paragon * fix two small errors * refactor various instances of "any target" * fully implement defense counters * battles can now be attacked * [MOM] Implement Invasion of Dominaria / Serra Faithkeeper * [MOM] Implement Invasion of Innistrad / Deluge of the Dead * [MOM] Implement Invasion of Kaladesh / Aetherwing, Golden-Scale Flagship * [MOM] Implement Invasion of Kamigawa / Rooftop Saboteurs * [MOM] Implement Invasion of Karsus / Refraction Elemental * [MOM] Implement Invasion of Tolvada / The Broken Sky * simplify battle info ability * fix verify failure * some more fixes for attacking battles * [MOM] Implement Invasion of Kaldheim / Pyre of the World Tree * [MOM] Implement Invasion of Lorwyn / Winnowing Forces * [MOM] Implement Invasion of Moag / Bloomwielder Dryads * [MOM] Implement Invasion of Shandalar / Leyline Surge * [MOM] Implement Invasion of Belenon / Belenon War Anthem * [MOM] Implement Invasion of Pyrulea / Gargantuan Slabhorn * [MOM] Implement Invasion of Vryn / Overloaded Mage-Ring * [MOM] Implement Marshal of Zhalfir * [MOM] Implement Sunfall * implement protectors for sieges * partially implement siege defeated trigger * fix verify failure * some updates to blocking * [MOM] Implement Invasion of Mercadia / Kyren Flamewright * [MOM] Implement Invasion of Theros / Ephara, Ever-Sheltering * [MOM] Implement Invasion of Ulgrotha / Grandmother Ravi Sengir * [MOM] Implement Invasion of Xerex / Vertex Paladin * add initial battle test * fix verify failure * [MOM] Implement Invasion of Amonkhet / Lazotep Convert * [MOM] update spoiler * update how protectors are chosen * update text * battles can't block * add control change test * rename battle test for duel * add multiplayer test * [MOM] Implement Invasion of Alara / Awaken the Maelstrom * [MOM] Implement Invasion of Eldraine * [MOM] Implement Invasion of Ergamon / Truga Cliffhanger * [MOM] Implement Invasion of Ixalan / Belligerent Regisaur * battles now cast transformed (this is super hacky but we need to refactor TDFCs anyway) * add TODO * add ignore for randomly failing test * a few small fixes * add defense to MtgJsonCard (unused like loyalty) * implement ProtectorIdPredicate * small fixes |
||
---|---|---|
.github | ||
Mage | ||
Mage.Client | ||
Mage.Common | ||
Mage.Plugins | ||
Mage.Server | ||
Mage.Server.Console | ||
Mage.Server.Plugins | ||
Mage.Sets | ||
Mage.Tests | ||
Mage.Verify | ||
repository/com/googlecode/jspf/jspf-core | ||
Utils | ||
.gitignore | ||
.travis.yml | ||
clean_dbs.sh | ||
LICENSE.txt | ||
pom.xml | ||
readme.md | ||
RemoveHeaders.java | ||
sonar-project.properties |
XMage — Magic, Another Game Engine
XMage allows you to play Magic against one or more online players or computer opponents. It includes full rules enforcement for over 20 000 unique cards and more than 50.000 reprints from different editions. You can also find custom sets like Star Wars. All regular sets have nearly all implemented cards.
It's support single matches and tournaments with dozens game modes like duel, multiplayer, standard, modern, commander, pauper, oathbreaker, historic, freeform 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:
- Official XMage forum;
- Official XMage support and feature request on github;
- Reddit XMage group;
- Reddit XMage discord channel;
- Latest releases;
- Latest news;
- Project documentation.
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. There are another way to report bugs too:
- Feedback from xmage app's main menu;
- Bug thread in the Official XMage forum.
Installation / running
- Download latest XMage launcher file and put it to any folder like
D:\games\xmage
; - You need to have Java version 8 or later to run launcher;
- If you can't run it then create
run-LAUNCHER.cmd
text file in launcher folder and put that line to it and save as ANSI format:java -Djava.net.preferIPv4Stack=true -jar XMageLauncher-0.3.8.jar
- or just downlod and unpack that archive to launcher folder.
Look here for more detailed instructions.
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:
- Program freezes on startup (white/blue/black screen);
- Can't download images or it stops after some time;
- MacOS can't open launcher
- MacOS client freezes in GUI (on connect dialog, on new match);
- Ugly cards and GUI drawing in games;
- No texts or small buttons in launcher;
- Can't run client, could not open ...jvm.cfg.
Performance tweaks
If you have a good GPU, it's very likely you'll be able 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
- Launch XMage
- In the menu bar from the launcher, click on "Settings", which will open up the Settings Window
- Go to the "Java" tab
- 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 might as well increase the initial heap size for good measure. More details about memory settings:
-Xms1G -Xmx2G
Developer
Full project documentation and instructions for developers can be found in wiki pages.
First steps for Xmage's developers: