Why do programs like Xmage not have any problem implementing all the cards for a set just a few days after the full spoiler comes out while it seems to be so hard on mtgo? Sure bugs after implementation aren't that rare on platforms like this, but they mostly get fixed quickly. Ian not saying Xmage would be better than mtgo, it has a ton of problems, i'm just wondering what takes them so long, while a small team is so fast in comparison? (It's not because quality takes time, that's for sure...)

My theory has always been the roots of magic online, the core code, is a mess. Could be for multiple reasons, bad design, poorly paid workers, bad schedules, bad programmers, etc. I’m not sure what language it’s written in. I would have to assume it’s some kind of object oriented code. I would certainly hope so.

Anyway, the tree has sprouted, branches grown. They try to trim the tree every now and then, but it’s a mess and it continues to grow into a bigger mess. They all know it, there’s no good way to fix it... probably without ripping it out from the ground up and starting over.

Don’t get me wrong, the tree is still a tree. It has problems, but I would call it mostly good.

Yes, they could give it a glossy new paint job, make it look nicer, but that doesn’t stop the problems from being there. Businesses being businesses, they see the product making money, so they refuse to fund development of this product to fix it correctly. Especially with their attention divided between this and magic arena. I don’t see much more development time given to this product compared to arena. Arena is the new baby.

And now I realize I went off on a tangent. 😞

I actually assume its because many of the cards do not operate against a global rules set.

So one can probably assume that Shock, Lightning bolt, Lightning strike all work the same and just apply a game rule against the system while played because they are simple. Likewise all vanilla creatures.

When you get into cards that have confusing or frankly illogical rulings based on timing, global effect ordering, layers, etc, they likely have to code the individual card to function against it's own rules set to make sure it interacts with all the other cards in the game that it applies to. Once you do this for one card, it has this cascading effect that when other cards come out that interact with that card in non global ways you have to develop unique logic not only for that card, but then for other subsequent cards that already exist, potentially not only editing that cards logic but the older cards as well to have said unique interaction.

That being said, it's not just magic that suffers in this regard. Games like Hearthstone, which are digital only, also suffer from this issue almost every single release. There are so many cards in that game that function in such a unique way that they literally cannot avoid coding specific logic into specific cards just to get the interactions to function.

The one that always fascinated me in that game was the interaction between Flare and Counterspell. Counterspell is literally a thing you put into play and triggers when an opponent plays a spell, countering that spell. Flare is a spell that wipes out all secrets, of which counterspell is. Which wins?

Now in Magic, we have the stack and we can logically work that interaction out based on when in a turn which was played, etc. In Hearthstone the interaction has see sawed back and forth as sets have been released based not only on the game rules but the intention of the developers to ensure the card works as they intended, not specifically how player base or even the game rules interpret. There have been times where similar card interactions have come out that mirrored this one and literally worked differently just because of how the global game engine interprets them.

@Protoaddct As someone that has been a software engineer in the past, I really want to see how it's built out of sheer professional curiosity (honestly). Like, since it's most likely Object Oriented. What do the interfaces look like. How do they program the classes, what properties are given. How do they do the programming? Do they do it test driven (which I'm a huge advocate of) or do they program it and test it later?

It's not to find out how bad or good the code is, I just want to know. Heh

  • 65
  • 20348