[HN Gopher] Open source rules engine for Magic: The Gathering
___________________________________________________________________
Open source rules engine for Magic: The Gathering
Author : moxvallix
Score : 170 points
Date : 2023-12-15 05:40 UTC (1 days ago)
(HTM) web link (github.com)
(TXT) w3m dump (github.com)
| mnky9800n wrote:
| There should be a screenshot on the homepage to show what
| gameplay is like
| 542458 wrote:
| Looks like this, but most aspects are customizable.
| http://3.bp.blogspot.com/-YCBsMRvKDQk/T1JrA2inI1I/AAAAAAAABu...
| archargelod wrote:
| There are a couple gameplay videos on youtube.
|
| https://www.youtube.com/watch?v=DKyJcVmHhEI
| archargelod wrote:
| That's my favourite way to play magic. Real cardboard magic is
| very expensive hobby. Digital magic (like Mtg Arena) is usually
| toxic, too competitive and meta-driven for my liking.
|
| So, instead, I enjoy playing against AI. And AI here is actually
| decent. It can't do combo or play slow control decks well, but
| with aggro archetypes it's an actual challenge.
|
| If you want to try it - start with Adventure - it is a mode where
| you get a starter deck and go into the open world to explore and
| challenge other planeswalkers. You earn cards and gold that can
| be spent on more cards. It's fun because you don't get stuck
| playing the same best cards over and over. All cards from a long
| magic history are available and have equal chances to show up in
| rewards. It takes a skill to build a deck from pile of random
| variable quality cards. But, oh boy, does it feel good when you
| get good at it.
| 542458 wrote:
| I mostly play commander, and find the AI to be pretty dumb to
| be honest. That's not saying it's not fun! But I find that even
| with the AI using simple deck archetypes I usually have to put
| three of them on an enemy team before they hit moderately-
| skilled-human-player levels of challenge. The AI is pretty bad
| at threat assessment, so removal, counters and board wipes get
| used pretty randomly sometimes.
| archargelod wrote:
| If you want to feel more challenge - try the "experimental"
| difficulty level for opponents. And maybe enable AI cheating
| (they would see cards in your hand).
|
| Normally, I believe, AI can blunder or miss some triggers.
| But with these settings they'll try to play more optimally.
| prepend wrote:
| Has anyone recreated Shandalar in this engine?
| archargelod wrote:
| The adventure mode is basically the Shandalar. It was added
| only a couple years ago by a single developer[0]. But it had
| excellent support since, especially in 2023. And right now
| it's very feature-rich with a lot of dungeons, bosses,
| artifacts, simple quest system, etc. New stuff comes out
| every month.
|
| [0] - https://www.slightlymagic.net/forum/viewtopic.php?f=26&
| t=304...
| ncallaway wrote:
| Are there any... archives of past MtG games or tournaments? Is
| there a standard format for recording a draft and a game of
| magic?
|
| Curious if there's any existing data to start training AIs on,
| or if these are more of the classic build an AI approach
| freeone3000 wrote:
| There's lots of _footage_ of games, and programs like 17lands
| to extract games you have played from the arena log, and
| commentary of games... but no easy-to-ingest recordings
| echelon wrote:
| > toxic
|
| I hear this about a lot of gaming communities. Smash, Xbox, any
| FPS.
|
| Why does this happen? How and to what degree does it manifest?
| How do you avoid it?
| loveiswork wrote:
| > Why does this happen?
|
| A blend of anonymity, low self-soothing ability, human
| instinct to talk trash during competition, people tying
| identity to performance, skew towards younger people playing,
| etc.
|
| > How and to what degree does it manifest?
|
| How? Mostly through voice and chat systems in-game. Also
| through quitting the game, or blatantly "throwing" a match.
|
| To what degree? From "You suck" to racial slurs to harm
| yourself. It's ubiquitous across competitive games -- you'll
| probably experience it every session.
|
| > How do you avoid it?
|
| The best way is to find a consistent group of folks to play
| with. Stay away from "random queue". Certain games you can
| turn off chat features, submit reports, etc. You can also
| just ignore it and accept it as part of the thing.
| tedunangst wrote:
| There's really very little one can do to be "toxic" in mtg
| arena, outside playing a control deck, which is clearly
| part of the game or they'd stop making counterspells.
| "Arena is toxic" means "I lost".
| moate wrote:
| If you want to avoid toxic behavior in your game, don't allow
| multiplayer.
|
| Some people will always be shitty, some people will want to
| play your game, and some number of people will meet both
| those criteria. The only way to fix it is after the fact, but
| there's no way to avoid it.
|
| As to the "how and to what degree" depends on the game and
| the type of person it attracts. The second something is
| competitive, toxicity is inevitable because many people take
| losing personally.
| akerl_ wrote:
| Imagine if we took this approach outside of gaming.
|
| "If you want to avoid toxic behavior at your workplace,
| don't get a job".
|
| We should be building systems and environments that can
| sustain interpersonal interaction while combatting
| toxicity.
| moate wrote:
| The better allegory (and actual advice that might be
| useful): If you want to avoid a toxic workplace, work by
| yourself.
|
| Now, that said I'm being specifically pedantic: these are
| steps to AVOID toxic environments. To COMBAT toxicity is
| a whole other problem with way too many variables. I went
| for the solvable problem.
| vmilner wrote:
| Even playing bridge (card game) with random people online can
| be pretty grim, though playing online games organised by some
| national authority (eg the English Bridge Union) is a lot
| better.
| JoshTriplett wrote:
| > Digital magic (like Mtg Arena) is usually toxic, too
| competitive and meta-driven for my liking.
|
| I found that Gatherer had a much more friendly environment. If
| you take a land-destruction or a counter/permission deck into a
| game there, folks will just resign when they realize what kind
| of deck you're playing, and word will get around to not play
| with you unless you change decks. It's more the kind of
| environment where you can play a fun, _decent_ , creative deck,
| and have a good time with other folks doing the same.
| piyh wrote:
| Playing face to face with friends is the best part of magic.
|
| I've proxied 30+ edh decks on my laser printer. I still money
| on real cards, but increasing my kitchen table meta diversity
| with proxies was a great move. Building infinite budget
| Slivers, having perfect mana bases, and exploring jank to cedh
| power levels are what I've wanted from this game all my life.
| PNewling wrote:
| Woah, did you have to hand cut all of those decks or how did
| you do that?
| grensley wrote:
| How is Arena toxic? There's basically no opportunity for the
| players to converse besides bland preset options which rarely
| even gets used outside of a greeting at the start of the game.
| j_m_b wrote:
| Great to see Forge making the front page! It runs on mobile too
| and the UI is frankly better than the desktop version. Definitely
| install a snapshot version so that your client stays up to date.
| The bots can play surprisingly well with agro and even control
| decks, but can't play any kind of combo... Or even assemble Tron.
|
| I've even used this to play local network games against other
| players. If they had a global server that allowed you to find
| games, it would be the perfect way to play MtG.
| 7373737373 wrote:
| Would it be possible to apply MuZero to this?
| mdaniel wrote:
| I went looking for MuZero implementations in order to see how,
| exactly, they interact with the game space. Based on this one,
| which had the most stars in the muzero topic, it appears that
| it needs to be able to discern legal next steps from the
| current game state https://github.com/werner-duvaud/muzero-
| general/blob/master/...
|
| So, I guess for the cards Forge has implemented one could
| MuZero it, but I believe it's a bit chicken and egg with a
| "free text" game like M:TG -- in order to train one would need
| to know legal steps for any random game state, but in order to
| have legal steps one would need to be able to read and
| interpret English rules and card text
| piyh wrote:
| I was floated the idea of doing an AI competition for
| Sabberstone, the open source rules engine for Hearthstone.
| Even though Hearthstone is hugely limited in game complexity
| compared to MtG, building an interface for a program to take
| actions in Sabberstone and evaluate boardstates is not
| trivial.
| bhickey wrote:
| How does it compare with Xmage and cockatrice?
| archargelod wrote:
| It's similar to Xmage, but with heavy leaning into PVE.
|
| There are around a dozen original modes to play against AI
| opponents: Adventure (a la Shandalar 1997), Quest, Planar
| Conquest, Gauntlet, Puzzles. Plus practically every somewhat
| popular format, including digital-only: Momir from Shandalar,
| Drafts, Sealed, Cube, Commander, Oathbreaker, Brawl, Archenemy,
| etc. etc.
|
| There's a way to setup online multiplayer games, but no hubs or
| rooms like in Xmage. It's also somewhat under-utilised feature
| and therefore not so well supported.
|
| I haven't actually tried cockatrice, but I believe it's more
| like a tabletop simulator, e.g. you have to shuffle, draw, and
| play the game almost manually? Forge is completely automatic
| like Xmage, Shandalar and Magic Online. It also could be a fun
| way to learn the rules of the game.
| khaki54 wrote:
| Is the adventure mode like that old Microprose Magic the
| Gathering game? My brother and I loved playing that as kids!
| Waterluvian wrote:
| Oh this is a gold mine for me. Recently I've wondered how games
| architect card game rules. So many rules feel kind of bespoke, so
| I wasn't sure if you could implement a sort of logic so that
| rules become configuration, or if each rule is just a function.
| Daegalus wrote:
| You might enjoy this official article on a bug in Arena rules
| engine that goes into how they designed their systems.
|
| https://magic.wizards.com/en/news/mtg-arena/on-whiteboards-n...
| mdaniel wrote:
| That's interesting, thank you. It seems what's old is new
| again: I had a lot of contact with CLIPS early in my career
| but I found that most of the programming tasks weren't heavy
| rules based as much as CRUD and reporting apps. Given that
| Forge is in Java, they may enjoy Drools
| <https://github.com/apache/incubator-kie-drools#readme>
| (which used to be a JBoss project but I guess has been
| donated to the Apache Foundation)
| LelouBil wrote:
| > Now we come to the other program that we rules engineers
| spend our time working on, along with the GRE, which is the
| Game Rules Parser (GRP). This program (written in Python)
| takes raw English rules text of Magic cards and converts them
| into one or more CLIPS rules. It's what allows 80% or so of
| newly written Magic cards to just work in MTG Arena
| automatically.
|
| Wow, didn't even think about this being a possibility! But I
| guess if they have a very strict dictionary and grammar rules
| for card effects this kind of thing can work !
| moate wrote:
| Tons of creatures with only evergreen/deciduous abilities
| would probably be super easy to template for something to
| parse, as would most lands.
|
| 80% feels "right" as someone who's done some game design in
| the tabletop space.
| OskarS wrote:
| Yeah, obviously a creature with Haste or Trample or
| whatever is very easy to make a simple parser for. But I
| can imagine because WotC is so strict on how they word
| text on cards, even more advanced interactions would be
| pretty straight-forward to parse. Like, if a card says:
|
| "When <card name> enters the battlefield, return target
| non-land card from your graveyard to your hand".
|
| Both parts of that sentence is always worded the same, so
| it's probably quite straight-forward to make a parser for
| this: just have a parse rule for "When <card name> enters
| the battlefield, <triggered ability X>", with a database
| of triggered abilities (and their implementation) that
| include all the ones that have already been printed.
| mdaniel wrote:
| It must be M:TG week, which I think is fantastic!
|
| https://news.ycombinator.com/item?id=38646892 is the I guess
| annual(?) repost of the "Magic: The Gathering Is Turing Complete
| (2019)" paper
|
| and then there were some other M:TG threads that may interest
| those who didn't see them
|
| https://news.ycombinator.com/item?id=38525978 _(I hacked Magic
| the Gathering: Arena for a 100% win rate)_
|
| https://news.ycombinator.com/item?id=38533105 _(Fine-tuning
| Mistral 7B on Magic the Gathering Draft)_
| 7373737373 wrote:
| Has anyone tried simulating the Turing complete deck?
| https://youtu.be/pdmODVYPDLA
| mdaniel wrote:
| In case anyone is curious, it uses Scryfall for the card art
| https://github.com/Card-Forge/forge/blob/forge-1.6.59/forge-...
| and I wish they'd offer a torrent (or IPFS) because I can't
| imagine the amount of bandwidth it must cost them and I would
| seed the hell out of any such thing
|
| Now, one possible reason would be copyright something-something
| but as it currently stands it's not like one needs to log in to
| download the card art one at a time, so ... I struggle to think
| of what risk they're driving down
| freediver wrote:
| Oh neat, would get us much closer to having a 'best deck
| simulator' like this:
|
| https://www.youtube.com/watch?v=Xq4T44EvPvo
| agazso wrote:
| I downloaded this and it looks cool and comprehensive, but for me
| the card artwork is missing.
|
| Maybe some server is hugged by HN? Or something needs to be set?
| 542458 wrote:
| It's a bit unintuitive, but IIRC you need to go into the
| settings and tell it to download the card art. Two reasons for
| this: 1, copyright and 2, it's a big download if you get them
| at full quality.
| agazso wrote:
| Thanks, I found it in the 'Content Downloaders' menu!
|
| It estimates the download time to 6 hours, and it's not
| because of the size but most likely their server works
| slowly. And in the meanwhile it does not let you play, well
| tomorrow then :)
| Marthinwurer wrote:
| There's a setting somewhere to auto download cards when
| they're seen. That should get you up and running quicker!
| pdntspa wrote:
| Wow, if this is what I think it was I remember using this to play
| MTG online vs some friends waaaaaaaaaaaaay back in the day. This
| was/is a really good alternative to MTGO
|
| edit- It is!
| LelouBil wrote:
| Here is an equivalent for Yu-Gi-Oh!
|
| https://github.com/edo9300/ygopro-core
|
| I find the CardScript repository very interesting to look at:
| https://github.com/ProjectIgnis/CardScripts
|
| And here is the actual game client :
|
| https://github.com/edo9300/edopro
| mdaniel wrote:
| https://github.com/ProjectIgnis/CardScripts#contributing
|
| > Please keep all bug reports and questions on Discord; do NOT
| open an issue or pull request for this purpose.
|
| Yikes : - ( chat streams are where information goes to die
| ryanbigg wrote:
| I've done some work on something "less serious" in Ruby:
|
| https://github.com/radar/mtg
|
| I view it as a wide project full of little interlinked code
| katas.
|
| I've thought about the card parsing stuff but that's beyond my
| ability.
___________________________________________________________________
(page generated 2023-12-16 23:00 UTC)