ec2-3-235-40-122.compute-1.amazonaws.com | ToothyWiki | ChrisHowlett | RecentChanges | Login | Webcomic

PyDraft is offline

I recently changed my broadband supplier. As such, PyDraft is not currently available for download, and the PyDraft server is offline. I will re-upload PyDraft to another location soon.
PyDraft is now available again, and has a running server. I will update this page with details RealSoonNow.

PyDraft is an asynchronous, trust-based draft suite for the trading card game MagicTheGathering, written in Python.

In more detail - PyDraft is a suite of Python programs designed to run MagicTheGathering booster drafts between participants who are not necessarily online at the same time (hence Asynchronous), provided they are willing to trust each other not to deliberately cheat (hence Trust-Based).

As a Python-based project, PyDraft should work on any system which has a Python 2.5 (or later) distribution available - see [the Python homepage] for more information. PyDraft has been verified to work on the follwoing platforms:

PyDraft has been verified not to work (yet!) on the following platforms:

The current version of PyDraft is v0.5.
Download it [here] (470 kb)!
You will need to install Python to run PyDraft - get it from [the Python homepage].
Installation instructions and manual are contained in readme.html, which is also viewable [here]. More readable examples of drafting using PyDraft are viewable [here].

Version 0.5 adds support for draft Bots - documentation to come. It also fixes a couple of minor bugs in SetParse.py and with server support.

You can upgrade from v0.4 to v0.5. Download the [patch package], and extract it over your current install.

v0.4 changed the way PyDraft understands expansions. Any expansions added prior to v0.4 with SetParse.py will not be understood by versions of PyDraft from v0.4 onwards. You should remove any such expansions, and re-add them using SetParse.py once you have upgraded to v0.4 or later.

(You can determine your version of PyDraft by checking the file changelog.txt - the top-most version number corresponds to your version. Alternatively, you can run "pydraft.py -v". If changelog.txt is missing or "pydraft.py -v" fails, we recommend downloading the entire package).

At present, PyDraft understands the following sets:

Comments? Questions? Feature Requests?
Post here!

In your PyDraft installation directory there'll be a file called _VE-_VE-_VE1.dft, or something similar. This is a list of the picks you've made. If it's for a set you're not that familiar with, then you may want to also consult the Verdia.txt file in the expansions directory and maintain a separate list containing all the details you want (e.g. the full card text).  _VE-_VE-_VE1.dft is read-only, and for good reason - don't edit it directly. --AlexChurchill
Somewhat non-obvious, but exactly what I was looking for.  (And I'm tempted to wonder what happens if I change who it thinks I'm sat next to...) --Vitenka
It gets horribly confused (it'll send your picks to the wrong person) in a probably non-recoverable way - don't do it. --CH
That could be made to work, I think. I think you'd have REJ as a special "set-code" that, when present on a Magic string, indicated "each card that follows will have its own set code attached. You cannot read this booster until you understand each of those sets". Then we should indeed be able to fairly easily parse a list of 45 "code : name" lines and shuffle them to produce your boosters. You could even have the ability to parse more than 45 lines, and pick a random 45. --CH
On the other hand, as Alex and I realised, that method would allow a player to naughtily seed their 45 "rejects" with one or two powerful cards, knowing they'll get first crack at them. Part of Reject Rare Drafting should be having no idea what's in your boosters (and, potentially, the card pool), which requires synchronising the pool of rejects before drafting. How to do so intelligently is tricky. --CH
Of course, anyone willing to cheat like this probably fails the "trust-based" criterion anyway. --AC
That would be quite nice, indeed. --AC
Agreed. Shouldn't be too hard to knock up, either. --CH
Could have an ascii-art table with everyone's name by their seat? --qqzm
Um, ibble. There's no bound on the number of drafters, either upper or lower. That means I need to dynamically work out how large / what shape to draw the table each time. Although I suppose I could always have a rectangular table, with half the drafters on the top edge and half on the bottom edge... --CH
Yeah, that's exactly what I'd imagined, which shouldn't be too hard. Isn't there an upper bound of 15? As after that you'd split into multiple separate drafts... --qqzm
Well, yes. But I don't enforce it. Anyway, how's this?
The seating order is:
   3      2      1
  Alex  Stuart  Max
 |                    |
 |                    |
 |                    |
 |                    |
  Vitenka  Chris  Alan
     4       5     6

Looks good. I don't think you need the seat numbers though (and they are slightly confusing given that you don't use the standard numbering). --qqzm

Players seeking games:

Planned Changes

ec2-3-235-40-122.compute-1.amazonaws.com | ToothyWiki | ChrisHowlett | RecentChanges | Login | Webcomic
Edit this page | View other revisions | Recently used referrers
Last edited December 8, 2010 4:42 pm (viewing revision 66, which is the newest) (diff)