Last set added: Abyssal Heaven
Navigation
Overview
Cockatrice is an free, open-source, multi-platform program for playing tabletop card games over a network.
Cockatrice’s features:
Lobby for finding games and chatting with other players
Deckbuilder
Replay function - automatically records all games to review later
Built-in keyboard shortcuts to manipulate cards, add counters, and track game phases
Easy to edit plaintext format for decklists
You can make a single player game to goldfish a deck, or create a local two-player game and control both sides to test a matchup
Pre-game:
In game:
Lobby:
Deckbuilder:
Installing Cockatrice
Download Cockatrice for free here:
Copy the Cockatrice and Oracle apps to your Applications folder. You don’t need the Servatrice app.
Open Cockatrice. The app will ask you if you want to update your card database. Press “No”.
(Mac users - by default the system will not let you open an app from an unregistered developer. Double click on the Cockatrice app and it will decline to open. Then go to System Settings → Privacy and Security, scroll down to the Security section and choose "Open Anyway".)
Download the Grand Archive card images
Download the Grand Archive card images and cards.xml here
If you have downloaded card images before 6/28/25, it is recommended that you delete all previous image files in the “Custom Image Folder”, and clear the image cache by going to Cockatrice → Settings/Preferences → Card Sources → Delete Downloaded Images.
Big thanks to Darthjeep on Discord for creating the current xml file! His xml includes rules text and card errata, as well as type and element data for easy searching.
Installing Grand Archive
In the menu bar, go to “Card Database → Open custom image folder”. Put the “GA Card Images” folder here.
Then go to “Card Database → Open custom sets folder”. Put the “01.GrandArchive.xml” file here.
Navigate up one level to Cockatrice/ and place the “cards.xml” file there. (Note: if you already use Cockatrice for Magic, skip this step and keep the old cards.xml file).
Navigate to Cockatrice/themes/ and place the “GA theme” folder there.
Quit and reopen the client.
In the menu bar, go to Cockatrice → Settings → Appearance and choose “GA theme” as the current theme.
If you also use Cockatrice for Magic: (you can ignore this otherwise)
If you’d prefer to only see Grand Archive cards, then go to “Card Database → Manage Sets”, disable ALL sets, then search for “Grand Archive” and re-enable only the Grand Archive sets.
The cards.xml provided in the installation download is just a blank dummy file so that the Cockatrice app won’t complain about not having a cards.xml file. If you already used Cockatrice for Magic, you’ll want to keep the cards.xml that’s already in your Cockatrice folder, since that has all the Magic card data. However, any cards that share a name in both Magic and Grand Archive (e.g. Cultivate, Frostbind, Favorable Winds), will display the Magic card oracle text in the description window. You can remedy this by renaming the Magic cards.xml file to something else, then replacing it with the blank cards.xml file from the installation download. It isn’t really necessary though, since the card pictures will still display the Grand Archive card images.
Logging in
(If you just want to test decks solo, you don’t need to register to the server or log in. Go to Actions → Start Local Game to start a test game.)
In the menu bar, go to Actions → Register to Server and register.
Go to Actions → Connect and log in to the Rooster Ranges server (default server).
After logging in, go to the Server tab and join the "Other Games" room.
If you’re looking for someone to play against, you can join the Grand Archive TCG discord and post in the Events → Looking For Game channel.
Playing and Controls
One minute guide to the controls and playing on Cockatrice: https://github.com/Cockatrice/Cockatrice/wiki/One-minute-game-guide
Play a card face down = Shift+Drag
Reveal a face down card to everyone = drag the card to the stack zone on left. Or Right Click → Turn Over.
Select multiple cards at once = Shift, Click, Drag
Look at material deck = Control-1. Or Right Click on the field → Sideboard → View Sideboard. You can leave this window open during the game.
Set life total = Command-L, or right/left click on your portrait to add/remove damage.
Roll a die = Command-I
Draw your opening hand = Command-M
Draw a card = Command-D
Go to end step/pass the turn = F10
Switch the turn = Command-Enter
When playing with cards with associated tokens (Fracturize, Herbs, Automatons, Powercell), you can Right Click on the generating card to quickly create them.
Crtl-G = duplicate the last created token
Decklist format for Cockatrice
Decklist.txt:
4 Hasty Messenger
4 Creative Shock
4 (maindeck card)
sideboard
1 Lorraine, Wandering Warrior, etc.
1 Grand Crusader’s Ring
1 Blanche, Sheltering Saint
1 (material deck card or sideboard card)
A line with the single word “sideboard” (lowercase) separates your maindeck from the other cards. Both your sideboard and material deck cards should be placed after the “sideboard” line. The order of the cards in this section doesn’t strictly matter, but it will be easier to play if all your material deck cards are grouped together.
Any line preceded by a “#” is ignored. (e.g. you can include a “#Material deck” line to make the decklist easier to read)
Capitalization doesn't matter, but punctuation does. Card quantities can be in parentheses - “(4) Zephyr” will work.
Sideboard and Material Deck
Since the client was built for Magic, there's no way to separate your material deck and sideboard cards by default. To simplify looking at your material deck, at the beginning of the game you can open your sideboard (uncheck the “sort by name” box), then play the sideboard cards onto the board facedown by Shift + Clicking them. Then tap them and choose Right Click → "Toggle Normal Untapping" so that they don't get mixed up with other cards during the game.
For any suggestions/feedback/typos, you can message me @blackmetallic. on Discord or leave a comment on this thread.
Enjoy!
If you also play Magic, be sure to check out Time Warp Dandân, a custom format I created:
Addendum and Misc.
(If you just want to play the game, you can ignore this section)
How to edit the xml file:
To add new spoilers or other cards, add entries to the Grand Archive xml file (05.ga.xml) in this format:
<card>
<name>Sabrina, Spirit of Water</name>
<set>PRX</set>
<tablerow>1</tablerow>
</card>
The tablerow code determines what zone the card is played to by default:
0 = back row - fractals, reservable objects
1 = middle row - champions, regalia, items, locations, phantasia
2 = front row - allies
3 = stack zone - actions, attacks
You can also add a <cipt>1</cipt> tag (comes into play tapped) for items that enter the field rested (Luxera’s Map).
The <related>Fraysia</related> tag lets you define associated cards that appear in a card’s right click menu (for Gather Herbs, etc.).
Add an image with the card's name anywhere in the Cockatrice/pics/CUSTOM folder.
The name of the image must exactly match the card name in the xml file, including capitalization and punctuation. Exception: if there is a colon (":") in a card image name, you can simply omit it. e.g. “Spirit Blade Ascension”
If you have a batch of card images with unformatted names (e.g. downloaded from shoutatyourdecks.com card list), running this zsh script in the directory will intelligently capitalize the names (exceptions for "of", "with", etc):
for file in *; do mv "$file" "$(echo "$file" | awk '{for(i=1;i<=NF;i++) if(i==1 || i==NF || !($i ~ /^(the|a|an|and|but|or|nor|for|from|with|so|at|by|for|in|of|on|to|as|if|is|this|your|you|are|and|it|that|with|has|have|be|of|into|as|an|by)$/)) $i=substr(toupper($i),1,1) tolower(substr($i,2)); print}')"; done
e.g. attune with the winds.jpg → Attune with the Winds.jpg
zsh script to add a comma after the first word in a filename:
for f in *; do [[ -f "$f" && "$f" == *" "* ]] && mv -- "$f" "${f%% *}, ${f#* }"; done)
e.g. Xuchang Frozen Citadel → Xuchang, Frozen Citadel
zsh script to add a comma after the second word in a filename:
for f in *; do [[ -f "$f" && "$f" == *" "* ]] && first="${f%% *}" rest="${f#* }" second="${rest%% *}" remaining="${rest#* }" && mv -- "$f" "${first} ${second}, ${remaining}"; done
zsh script to add an apostraphe before first word ending in “s” in a filename:
for f in *; do [[ -f "$f" && "$f" == *" "* ]] && first="${f%% *}" rest="${f#* }" fixed="${first%s}'s" && mv -- "$f" "$fixed $rest"; done