Magic The Gathering: Arena

Magic The Gathering: Arena Dev Tracker




15 Dec

Comment

There have been a lot of good suggestions here. Familiarity with the cards will definitely help. For the timer, direct/friend challenge games and not games against Sparky don’t have a timer.

On general assistance for the visually impaired, please let me know more about what would help you here (and the things currently there that help; your comment in sound cues is already making me think about ways we might be able to make them more useful). I’m really interested in anything you could share on this (either comment here or PM me if you’d rather). We definitely want to make the game accessible to all players, but it’s hard/expensive to get good insight into every different case.

Glad you’re enjoying the game, and please tell me more about how we can help.

Comment

It may be because you haven’t designated said deck as a Brawl deck, in the deck editor. I would check that first.


14 Dec


13 Dec

Comment

Originally posted by trinquin

Sol Ring was the best card in any of these decks change my mind.

I see no lie here.

Comment

Originally posted by voltaiclv

Any thoughts to pre-allocating larger blocks of memory, and using those, instead of hitting the wall with memory fragmentation?

Something more akin to the object pool pattern would probably be more helpful and squeeze performance out of your engine before even further tweaks would be needed.

Automatic garbage collecting is (usually) something to be avoided in the world of optimizing game engines, as I'm sure you're learning. I'm glad your team is making strides!

For sure. We use a fair amount of object pooling, both with GameObjects (like cards) to avoid instantiation costs and with Unity-agnostic data types (like Lists) to avoid allocations.

Comment

Originally posted by Alikont

There is a thing that finds most of the "leaks", it's called Garbage Collector, and .net already have it.

The problem is that it's very conservative in what it considers a leak, because if program can theoretically reach the object, even if it will never use it again, it's still a valid object.

There are few ways to make memory leak in C#, one of the common leaks is event handlers.

For example, when you create a new game, it creates an object, and game object needs to handle mouse input. So it's subscribing to mouse input evens. What it means is that input manager now have a valid reference on Game object, and notifies it about every mouse movement.

If after game is finished you throw away Game object, the reference on it still exists in Input Manager, and because it's theoretically reachable it will be invalid to remove Game from memory, because it will crash Input Manager.

This person knows what's up! We've had a few of the event handler one. :D

Comment

Originally posted by oreguayan

Can you nerd out for a bit on this and elaborate? I’m curious what that entails

DID SOMEONE SAY NERD OUT?!

I can do that. :D

SoneEv is pretty much correct with their explanation.

As a programming team gets more familiar with the problem they are solving, they learn better and better ways to approach it. It's always a careful balance between adding new features and "cleaning up" what you've done in the past. Too much cleanup and you stop making progress. Too little and you start moving too slowly make any progress.

Another manifestation of this is when you start hitting scaling limits. For example, Arena has a lot of rich visual effects and situational graphical elements. We have an elaborate set of rules for which one to play in a given situation. Hand-coding is inefficient because it's hard to maintain and limits the work to only engineers. So we have a flexible data system to specify all the rules. Our first system was fine when we had a few hundred visual assets and a dozen variables that affected them. But now we have thousa...

Read more
Comment

Originally posted by FormerGameDev

"least special" would be the ones that are the default food or somehow worse after effects.

It's already auto-selecting for mana abilities (without confirmation, except when the "auto-tap solution has changed" message pops up, which usually happens even when it hasn't changed), for Proliferate (which is exactly the interface I'd like for "sac a food"), for many (but not all) selections where you only have 1 option, and I'm pretty sure there's one other ability that already does a "select the most likely option and prompt for confirm" (besides Proliferate), but I can't think of what it is right off hand.

Even the determination of "is default food" is nontrivial, let alone "somehow worse". With a cursory look, I can count 21 different fields on a card that could somewhat-reasonably differ from Food to Food, and that's not even counting stuff like "can't block" (wouldn't you be upset if this system autoselected your normal [[Gingerbrute]] and not the one that's [[Trapped in a Tower]]?)

As for the other scenarios, those are places that we have indeed put in the work to do heuristics for selection (some of which will disagree with a strategic situation!). For Proliferate, we have a simple "good/bad" list for counters, and the rule is "if it's mine, preselect it if it has any good counters on it" and "if it's my opponent's, preselect it if it has a bad counter on it and no good counters on it."

I don't disagree with you that we could improve some play experiences by increasing the number of places where we propose automatic selections. I do think it'll be a worse experie...

Read more

12 Dec

Comment

Originally posted by FormerGameDev

Could you make it autoselect the least-special food amongst all your foods, so you just have to click "Confirm" or hit the spacebar, unless you're doing something special?

No, because "least special" is a pretty undefined concept :P. There may come a day when we use some heuristics to propose fast-and-loose recommended selections for various prompts, but our current philosophy is that it's bad player experience for SOME prompts to do stuff like that and others not to. #wotc_staff

Comment

Originally posted by C_Clop

I may be wrong, but I think they're asking you to confirm which Food token to sac because in theory, you could trasform that artifact into a creature to attack (with [[Animated Faerie]] for example), so you should sac the summoning sickness one first.

Then again it could just default to the tokens that came into play this turn...

Before we asked you "Do you want to sacrifice a food" before having you select a food. Now we just have you click a food or decline, saving a click. You still have to click your food if it's the only food you have (unless it's autotap eating it). #wotc_staff