Dota 2 For Mac



The Race

  1. Dota 2 Download Torrent
  2. Dota 2 On Steam
  3. Optimize Dota 2 For Mac
  4. Dota 2 For Mac Free
  5. Dota 2 Mods For Mac

37.6 / 3.2 The first metric shows how much time of the main thread is spent inside the portability library, compared to the total execution time (which is the actual time minus all the sleeping). It was measured with Time Profiler on a simple scene (see screenshot). Dota 2 is in reality the sequel to the popular Warcraft III Defense of the Ancients and although it was announced in October 2010, it was not released on Mac until summer 2013. It was initially promoted in the The International Dota 2 Championship where teams from around the world battled it out for a stunning $1,000,000 prize. The Dota 2 client on Mac is acceptable, it'll run about the same on Windows if you dual boot from my experience (on a non-Retina Macbook though, your mileage may vary). There's been a few major problems with the Mac client in the past but I don't think there's any particularly big issues at the moment.

gfx-rs is a Rust project aiming to make graphics programming more accessible and portable, focusing on exposing a universal Vulkan-like API. It’s a single Rust API with multiple backends that implement it: Direct3D 12/11, Metal, Vulkan, and even OpenGL. We are also building a Vulkan Portability implementation based on it, which allows non-Rust applications using Vulkan to run everywhere. This post is focused on the Metal backend only.

As our portability implementation matured in terms of Vulkan Conformance Test Suite coverage, we started to ask questions about performance. Fortunately, just around this time frame Valve announced official Metal support for Dota2, via MoltenVK. We couldn’t miss the opportunity to test gfx-portability on Dota2, and substituting MoltenVK with our portability implementation appeared straightforward. The initial results were… slightly discouraging. For a while we weren’t able to get the game to start, due to our Metal backend was missing some required features, like compressed texture support.

Once Dota2 became functional under our portability implementation, we entered a long period of implementing a mixture of stability and performance improvements. We had to rethink our state caching architecture, resource lifetimes, lock contention, and much more. After finally figuring out all the issues we were having with Apple, Metal, and Dota2 itself, we were ready for the race.

Modes

Our portability library has been tested in two different modes of the Metal backend:

  • “Immediate” - We record the underlying Metal command buffers “live” as the corresponding Vulkan command buffers are recorded. Doing this allows the user to parallelize the recording as they see fit, allowing them to make sure everything is ready to be submitted.
  • “Deferred” - We collect the commands internally in our command buffer format, only starting to record them to Metal’s command buffers at submission time. This is what MoltenVK is currently doing as well. This approach makes the recording feel much faster, since the work is done at submission time. The real benefit, however, comes from us knowing at submission time the order of command buffers to be submitted, allowing the Metal driver to process them simultaneously as we record them, resulting in lower latency overall.

Please note that technically “Immediate” recording has less CPU overhead. Additionally, “Immediate” mode’s more explicit threading model results in no surprises at submit time. That’s why we consider it to be the superior mode, and that was the focus of our optimization efforts. However, to capitalize on the benefits provided by “Immediate” mode, the application needs to make sure to not hold onto the recorded command buffers for too long and submit more often than once per frame. Failure to do so increases latency, limiting the number of frames produced, as observed in Dota2, which has been programmed to only allow at most a single frame of latency.

Another interesting observation is that 71% of time spent by gfx/immediate (when recording the commands only) is actually spent inside the driver, according to our instrumented profile. This gives us an upper bound for Vulkan Portability overhead on Metal to be about 40%, although that includes some OS and Metal run-time bits as well.

Results

Test/Librarygfx/immediategfx/deferredMoltenVKOpenGL
CPU % of Main thread35%12%21%?
platform A (Intel, dual-core)
fps/variability on low settings41.5 / 4.447.9 / 4.640.5 / 6.345.0 / 5.2
fps/variability on high settings33.9 / 3.541.3 / 4.035.9 / 5.334.9 / 6.6
platform B (AMD, quad core)
fps/variability on low settings58.1 / 11.474.5 / 11.271.7 / 12.677.0 / 12.7
fps/variability on high settings51.1 / 9.359.2 / 7.461.4 / 10.049.0 / 5.8
platform C (NV, quad core)
fps/variability on low settings54.3 / 10.066.0 / 7.764.0 / 7.856.7 / 7.0
fps/variability on high settings40.6 / 4.443.1 / 3.842.1 / 3.937.6 / 3.2

The first metric shows how much time of the main thread is spent inside the portability library, compared to the total execution time (which is the actual time minus all the sleeping). It was measured with Time Profiler on a simple scene (see screenshot). Note that the submission is done on a separate thread by Dota2, so that time isn’t taken into account here. Interestingly, the less time we spend on the main thread the faster our frame rate ends up being. Or, in other words, it’s a race of who gets to the submission first :)

The rows “fps/variability” metric is from the Source2Bench.csv produced by timing the dota2-pts-1971360796.dem demo in the range 40000 .. 50000. The “low” settings refers to adding -autoconfig_level 1 to the command line, while the “high” settings is when we passed -autoconfig_level 3 instead. We followed the instructions provided by GamingOnLinux. Note that lower fps variability is better, as it translates to a more stable framerate.

We were running the same scene as Phoronix, just with a longer time frame and some slightly adjusted settings. The benchmark scripts can be seen at the gfx-portability PR:

Platforms

PlatformABC
ModelMacBook Pro 2016MacBook Pro 2016MacBook Pro 2013
CPU3.3 GHz Intel Core i72.9 GHz Intel Core i72.6 GHz Intel Core i7
number of cores244
GPUIntel Iris Graphics 550AMD Radeon Pro 460NVIDIA GeForce GT 750M
OSmacOS 10.14 betamacOS 10.14 betamacOS 10.13.6
resolution1440 x 9001680 x 10501440 x 900

Conclusions

MoltenVK does a good job translating Vulkan to Metal. Interestingly, though, it can be slower than OpenGL on low settings. This doesn’t match Phoronix nor Valve/MoltenVK’s numbers. We suspect the difference to be explained by Phoronix using a 10x shorter run with pre-loaded pipeline caches. In this case GL would struggle creating all the new pipelines and will not have time to reach the full speed - not exactly an Apples to Apples comparison :)

Strangely, MoltenVK exhibits some sort of “warm-up” behavior, where the second run can be up to 5% faster than the first one (we do include this in the comparison). This is unlike gfx-portability, which shows consistent performance. We are not sure what might be causing the warm-up effect, given that we cleared dota/shadercache/vulkan/shaders.cache before each run.

Mac

Either way, our benchmarks show that OpenGL is still fairly good on MacOS, and it’s a high bar to beat for any Vulkan portability implementation, at least in the context of Dota2 performance. The performance shift seen on high settings could be explained by the higher scene complexity (which is where low-level APIs generally help). Dota2 also starts to use compute shaders on higher settings, which are not available on MacOS’s older OpenGL version, so that can also be a contributing factor. In other words, the perfromance shift might not be because of the raw performance gain from using Metal on MacOS but instead the additional supported features which allow certain workloads to use the GPU more efficiently.

We believe that “Immediate” command recording has great potential that hasn’t yet been realized with Dota2 as it is architectured today with it’s one big submission per frame, which increases latency on the already latency-limited program. Hopefully, we’ll see more applications taking advantage of this in the future.

Rust

Rust has proven itself viable in complex high-performance systems. We were able to build solid abstractions and hide the complexity behind tiny interfaces, while still being able to reason about and optimize the low-level performance. Iterating on large architectural changes was a breeze - we would just change one most important piece and then fix all the compile errors.

Optimizing our implementation wasn’t different from optimizing one written in C++ other than the feeling of safety when doing so, and the fact that a typical profiler considers Rust programs to be mostly moving bytes around. In the end, our portability implementation was able to compete toe-to-toe with the official alternative (MoltenVK shipped as Dota2 DLC), surpassing it by 16% on a dual-core system with integrated GPU, and by 3% on quad-core systems with dedicated GPUs.

To be fair, we don’t think MoltenVK has put as much effort into optimizing the code to date as we have. So while we can see a lot of potential in improving our Metal backend further, MoltenVK likely has more low-hanging fruits to grab at this point.

The Rust ecosystem deserves a special mention: hooking up extra dependencies took mere minutes, and most of the time things just worked. Special thanks to:

  • @SSheldon for macOS API libraries
  • @Amanieu for the faster locks
  • @danginsburg for help in understanding Dota2 rendering pipeline
  • @jrmuizel for performance investigation assistance
  • gfx-rs hackers - you are the best!
  • Rust team and contributors

Dota 2 On Mac

Dota 2 On Mac

For all you Mac gamers out there, the release of the Valve’s Dota 2 client on Steam was a welcome sight. Steam have updated the Mac client, after early launch problems. The game is now more stable but i have still encountered a few bugs, which should get sorted in further patches.

Anyone who doesn’t yet know or haven’t played it yet, Dota 2 is Valve’s free-to-play MOBA (Multiplayer online battle arena) This game looks and sounds simple to play but it can be a tough cookie to crack. It has a steep learning curve for beginners and it can take a lot of patience and commitment to get to a decent level. After playing Dota 2 for a week or so, here is my insight into the game and i hope it helps you make a decision whether to give Dota 2 a go or not.

The Beginning

When the game starts you will begin by doing the tutorial. This teaches you the basic mechanics of the game through a few simple quests over a few scenario’s. You have to complete a certain amount of this section to unlock the battle options. You can complete the whole training parts but at sometime you will have to get your feet wet and commit to a battle. Trying a few different classes and getting into battles is an important step to skill building.

And So To Battle!!

Once you enter the Battle mode (Two teams of five players each side. Selected to match as closely as possible your current skill level) you will be able to choose a Hero. The classes range from Melee, Ranged, Tanking and Healing. Being thrown into a battle with a class that you have no idea about can seem daunting. Valve have included a basic Guide. This is accessed by clicking the book icon top left of the screen. This gives you info about your chosen class the spells, gear tree and a brief explanation about the role of your chosen Hero.

Dota 2 Heroes come in all shapes and sizes. Each will a different skills and mechanics. Each has a defining term for their on battlefield role. A couple of examples are:

Dota 2 Download Torrent

Carries as they are called aren’t the strongest class at first but they build damage quickly if defended by a stronger class until later in the game where they come into their own.

Supports, are the perfect class if you want to work together with another player and to provide healing to a stronger class for instance.

There are more than 100 heroes available, so learning a few favorites can be a good thing as you may not be able to select the same class each match. Due to different in game modes and the fact someone might beat you to the selection as one one of each class can fight in a battle.

Dota 2 is a complex game which has Two teams of five each side of a map. This map has three paths called lanes. The Top, Middle and Bottom lanes are the main routes to your opposing teams base. You can cut across country, this is slower but you can find some special bosses and a secret shop where you can buy certain special gear items. The lanes have Two Towers and a never ending stream of AI controlled Goblin like creatures traveling from both sides. These creatures will eventually meet and start to fight. This is where you step in with your chosen Hero and try and up the stakes for your side. Killing the opposing Goblin’s and destroying the Towers as you make your way along the Lane. As you kill the creatures you gain XP which level’s your Hero and unlocks spells.You also collect gold to buy weapons, armour and trinkets to improve your Heroes stats.The spells once unlocked, appear at the bottom of the UI and are simple click attacks, available when you have enough Mana and/or the cooldown is available.

Obviously at sometime you will encounter a Hero for the opposing side and this is where the fun starts. You frantically (at first) try to find the ultimate combination of attacks to remove your opponent’s health as quickly as possible. Doing so will gain you even more XP and you will also steal a quantity of gold from them as well as sending them to their base where a timer holds them for a length of time before re-spawning them. This also helps you continue to kill goblins and build your XP and level faster than them. This leads to a certain amount of battle points being acquired at the end of the Battle which get added to your Battle level. This increases more or less quickly depending on certain circumstances i.e. Winning a match, losing a match, scoring highly etc. Once you hit 1000 Battle points you gain a level which can allow you for example: new higher level gear at the end of match’s.

Dota 2 On Steam

Battling can be tough at times but once you get a hold on Hero mechanics it’s also very enjoyable. The balance of good games and bad games are close together. You may have a brilliant battle and score incredibly well then the next few Battles you may be slaughtered. it really can be a tough learning curve, but it is worth it when things click and you start to know how a certain Hero works properly , this gives a real buzz. It is tough though, until you hit a high level you may suffer numerous defeat after defeat. This is slightly where the game falls down. As a new player you seem to be left with very little back up. But the players i have encountered have been more easy going than the players in League of Legends. I can’t remember a point where I’ve had a terrible score and i was bludgened by evil name calling over the team chat channel. A fairly regular thing on LoL. Though i have seem it at others, this type of game will always have that type of content and a thick skin is very important at those moments. You can always report this is if gets out of hand and Valve collect this information and try their best to stamp it out. And you’ll receive a notification of thanks from Valve for the help provided.

There is another piece of important game information that you must adhere too. Leaving the game is a real negative point, not only does it ruin the battle for your teammates, but Valve also collects this information too. This can if you continue to leave mid match lead to you being dumped into battles containing other quitters. Should all the quitters turn out to be Dota 2 wizards you could face a very tough match indeed.

Graphics and Gameplay

Dota 2 requirements for mac

Graphically this game is a great to look at. The map has great detail. Add to this the awesome spell effects and great voice and sounds effects it’s a excellent package for a free-to-play game.

Apart from the steep learning curve the gameplay is excellent too. From the very simple spells, the easy click and attack, heal etc plays a dream. Add to this the excellent shop for buying and upgrading gear. The great interface, tutorial and in- battle hero guide.

Closing comments

The Dota 2 community isn’t filled with moaners and groaners. And you will get a lot of great players who are fun to play with, so don’t be put off if you get a grumpy one!

Optimize Dota 2 For Mac

If you want to get more serious you can also join a Dota 2 ‘Clan’ there are lots of options out there with a quick web search. These include the social more easy going type of Clan to the real hardcore clans that battle in leagues and major competitions.

Dota 2 For Mac Free

Dota 2 is a very involving game which will take up hours of your life trying to master. This is a level tough to achieve. The game system is so varied that you will have a run of fantastic games, only to be brought back down to earth very quickly with a few bad ones. No matter how good a player you are. But have a patient mind and battle through the tough beginning you’ll see why this game is so addictive. And well worth a try.

Dota 2 Mods For Mac

Thanks for your time

iMacAndy