Factorio runs on Apple Silicon
factorio.com
factorio.com
I have so much respect for Wube. Absolutely amazing quality and care in everything they do.
There are a lot of different GPUs and drivers to account for on Windows, and adding in Linux to that compounds the problem[0] significantly and brings in a paltry number of users, so it is pretty understandable why they don't bother. And the Mac user base that cares about gaming is kind of a joke in terms of size.
[0] Steam Deck being relatively bespoke hardware might help there.
https://www.factorio.com/blog/post/fff-230
Factorio asks different things from GPUs. that today are much more used to accelerate 3D. not 2D graphics :
https://www.factorio.com/blog/post/fff-281
Also :
> Contemporary integrated GPUs are also significantly faster, and while it might not be as much of a challenge to render the game for them, they do share some resources with the CPU - be it the last level of cache, or CPU cooler, so the integrated GPU working hard may cause the CPU to slow down.
> However, the point I wanted to illustrate by this post is how broad a range of GPUs there is. People see a 2D game and expect to be able to play it on essentially anything. If we want to live up to that expectations, we have to impose a lot of limitations on ourselves, because 'anything' also includes a couple orders of magnitude slower GPU than is found in an average gaming computer of today. CPUs got a lot faster in the last decade too, but mostly due to increasing the number of cores and adding wider vector computation units. They didn't get that much faster when executing serial code, which is unfortunately most of Factorio's game code. So if you play the game on a laptop with a Core 2 Duo and GeForce 320M, you'll run into framerate issues due to the weak GPU much sooner than a UPS slowdown due to the old CPU.
https://www.factorio.com/blog/post/fff-333
But, yeah, Factorio is one of those games that don't impose a maximum limit of entities on themselves and are mostly bottlenecked by singlethreaded CPU than GPU performance, like any simulation-like game with lots of entities, each of which can have a gameplay (and not just display) effect on another :
https://www.youtube.com/watch?v=HvI_5S3aITk
(And also, specifically, RAM latency is important for Factorio : https://old.reddit.com/r/factorio/comments/4h647g/factorio_p... )
As you might hope, the game is exceptionally well-polished, at least once you get over the initial UI complexity.
Who actually claims that? The issue is more that the ROI just isn't there. Remember that porting to a platform incurs additional support costs that need to be payed.
Blizzard seems to disagree, as I mentioned in another comment. I’m just not sold on this argument tbh. It makes sense at face value but that’s not enough reason for me. Especially given how many games played on both PC and Mac from 2010-2020 and continue to do so. It’s not the empty desert for gamers it was in the 2000’s.
Maybe you're right, and the technical hurdle is fairly small relative to the money they stand to make from it. Whatever the case is though, Apple's current offerings are not really attractive to developers. People would rather target the APIs they already know than do Apple's dirty work for them. Maybe Apple should take a page out of Sony's book and actually compensate or assist the studios building on top of their technology.
Older games released by Blizzard might have a macOS release, but not the franchise they are pushing the most right now.
2. Isn't the topic at hand mac?
3. Are you sure you want to cite that kind of number? The most prominent one says this: "Though only 5.8% of his game's buyers were playing on Linux, they generated over 38% of the bug reports. Not because the Linux platform was buggier, either. Only 3 of the roughly 400 bug reports submitted by Linux users were platform specific, that is, would only happen on Linux." "The bug reports themselves were also pretty high quality, he said, including software and OS versions, logs, and steps for replication." That's free QA, not a burden.
Unfortunately this is not how many managers see it. They just see it as more work because people are "discovering" more issues that they now have to fix. The squeaky wheel gets the grease, or in this case, the squeaky community is considered annoying and gets neglected.
https://old.reddit.com/r/gamedev/comments/qeqn3b/despite_hav...
Not to say it's all positives, I'm sure a big title has a lot of linux users in the annoying 'enthusiastic youngster' phase a lot of school-age PC gamers go through. But the kind of spreadsheet math that doesn't even classify support interactions is lazy.
I've worked with multiple companies on projects with large support infrastructure and teams. I've seem many foreseeably-bad business moves called "data driven decisions" based on support metrics. Metrics aren't insight, but they do let a business team justify the decisions well on paper. I'll avoid writing a whole rant about supporting a call center, but I will say their cost and ancillary nature makes iterating with the data coming out of them (or just iterating on the design on the support system itself) poorly prioritized and full of noisy signals.
Behold, the actual reason AAA studios can't. Engineering excellence is not something you buy or otherwise invest in. It is your culture. It is who you hire. It is what kind of expectation you set internally for yourself and your peers. That is only marginally related to budget spent on salaries.
If you actually practice engineering excellence, the investment is small. If you don't, the investment is nonsensical.
It's not about "engineering excellence" unless you think exploiting hardware quirks for perf is poor engineering.
After all, Apple went out of their way to not support standardized cross-platform APIs like Vulkan.
The reason I ask is because there are so many different graphics APIs, of which Vulkan is the one that has the lowest rates of direct targeting.
You’re looking at custom platform APIs everywhere but Linux. Windows and Xbox only officially supports DirectX (including console variants here), PlayStation have their own, Switch supports their own plus Vulkan (and most people don’t target Vulkan on there).
Even Metal has significantly more games targeting it due to iOS support. Before people say those are only mobile games, thats a severe underestimation of what games are on mobile.
So every cross platform game needs to support multiple APIs anyway, and even if you count every API , Vulkan is by far in last place.
Edit: I’ll also add that both macOS and Linux had lack of games when their only API was a cross platform one: OpenGL. yes, macs GL is outdated today but it wasn’t always , and just like Vulkan, very few games directly targeted GL anyway.
EDIT : Ok, I see, more details here : https://news.ycombinator.com/item?id=33742823
----
Also, not every game has to target every platform, especially when we're talking about radically different inputs / outputs !
I'm honestly surprised about Factorio going to the Switch (especially since they supposedly started working on it before the Steam Deck, which I could have seen as having been a «tech demo stepping stone»), considering how much Factorio relies on precise mouse clicking !
PlayStation supports GNM not Vulkan.
Afaik the switch is the only recent console to support Vulkan but it’s not preferred, instead using the NVN api. Not counting the SteamDeck since it’s a general purpose computer.
There aren't really any practical differences and if anything, Direct3D being official never stopped it from rotting away at a faster rate than OpenGL and Vulkan - older games relying on Direct3D, even D3D9 despite how widespread that one was, are way more to likely to be broken in modern Windows than games using OpenGL and gamers nowadays often end up using tools like DXVK (which implement Direct3D on top of Vulkan) to get their older games work properly even under Windows.
The main reason Direct3D is more widespread than OpenGL and Vulkan is that D3D was also available on Microsoft's consoles which were themselves very popular. It isn't a coincidence that games were as likely to use OpenGL as Direct3D (or even offering backends for both) at the past but somewhere around the mid-2000s when XBox and XBox360 consoles started taking off Direct3D also took off.
Unfortunately that meant DX9 had the most market share at the time and for many years after.
While I agree that consoles helped the adoption of DX10/11/12, I disagree that it was driven mainly by the popularity of the XBox.
The big reason IMHO, and it’s similar with Vulkan, is that GL was fractured with tons of vendor extensions, much higher variation of feature support etc… DX was a more stable and consistent target.
There’s also the renewed investment by Microsoft into DX at the time, with a lot of investment into abstracting the other parts of the OS. That was probably driven by the Xbox like you say, but I think it’s a subtle difference in that it became the better API surface to target vs GL+other audio and input libs, instead of the ubiquity of the consoles.
It isn't like applications have to support all of extensions or anything like that. If some functionality was provided by, e.g. D3D10 then the same functionality would also be provided by OpenGL + some extensions.
If anything extensions are a good thing because it is thanks to them that OpenGL wasn't stuck in OpenGL 1.1 that Microsoft provided with Windows and how a lot of new hardware functionality was exposed to applications before even D3D had access to it - without even being locked to a specific OS or OS version (like the Vista you mentioned). And unlike Direct3D you didn't had to do a D3D9->D3D10/11->D3D12 complete rewrite of your code, you just used the new functionality where that makes sense.
https://cdn.factorio.com/assets/img/blog/fff-370-quick-panel...
Supporting open APIs does matter, moreso if «everyone» can get onboard, allowing for momentum to grow in service of continued support and development.
The numbers have been run many times by game studios large and small: it only makes sense to support Windows/DirectX and the three major consoles. Maybe Metal if you're targeting iOS.
No open standards. Those only earn you Stallman good boy points and you can't pay your bills with those.
No one is using OpenGL or Vulkan to a significant extent any more.
Absolutely untrue. See also: Android.
Windows supports Vulkan just fine, but engine support is lacking. IMO Metal prevents it from being universal in engines such as Unity, so instead a lot of effort goes into DX11 as the lowest-common-denominator to emulate i.e. with shaders. As a result, DX12 AND Vulkan progress is held back IMO because shader performance is necessarily worse when you have multiple layers of inefficient transpiling instead of running SPIR-V everywhere.
To add to that, I don't think most mobile developers are going to Metal directly; a huge number of them make use of it through Unreal or Unity. With Unity, customizing the rendering backend is not really possible without an insane amount of internal knowledge about it (not to mention source access at the read-only level or above).
I think that Vulkan is not particularly behind as an API, it's closer to a usable "almost there" state in terms of developer access. If Unity threw their weight behind improving their shader compilation pipeline and building it around SPIR-V/Vulkan, I think it would rapidly become more universal.
Even then, none of these game engines are using direct authored shaders anymore, instead using shader graphs which are much easier to target any backend on.
In the case of Unity they also support WebGL which is much more limited than any of the other APIs and somehow WebGL isn’t holding those back.
And, AFAIK, there's very little market even for games that don't require a high end GPU on Mac. My guess is the majority people who want to play games on a desktop/laptop just know to get a Windows PC.
There are lots of simple games in the App store, some ported from iOS, some indie games built on generic engines (Unity etc). The problem was Mac titles have to be continuously supported. Apple killed compatibility with older 32-bit games with Catalina which decimated my Steam library. I presume that's one of the reasons developers are not exactly flocking to mac en masse...
That’s not nothing, and arguably if you have a good game, you’ll be one of the shining few on the Max.
If you were a casual gamer, you'd be pretty satisfied on a Mac for that decade.
Things got significantly worse since the 32 bit support was dropped. Most companies aren't interested in going back to update a decades old game to support Mac gamers, so a ton of games that were available suddenly became unavailable. And with the M1, Bootcamp no longer works.
We'll have to see what the future brings. I never would have guessed things would have been as good as they were from 2009-2019, or that things would suddenly reverse as quickly as they did after 2019. So who knows what's around the next corner for Mac gaming.
For example, games like Factorio are incredibly niche and loved by people with builder/engineer mindsets (not necessarily working as engineers). Now you've got to ask yourself whether potential Factorio players are more or less likely to own a Mac, compared to the 3% (cited by another commenter) of all Steam users on Macs.
Also I wonder how this 3% figure was calculated. Is it based on monthly active users? I am a Mac user and I have Steam installed but I don't leave it running all the time because application itself is a dumpster-fire battery hog. I only start it up when I want to play a specific game, then I shut it down. Some games don't even require Steam to be running so I launch them directly without bothering to start Steam. Am I excluded from the monthly active users because I might go months without launching Steam, despite playing games regularly?
Develop your game for x86_32, suddenly Apple drops support and you have to rewrite your entire game again for x86_64.
Develop your game for OpenCL/GL, suddenly Apple drops support and you have to rewrite your entire game again for Metal.
Develop your game for x86_64, suddenly apple drops support and you have to rewrite your entire game again for ARM64.
That's without counting the fact that most games developed nowadays developed using Vulcan or DX12 which has to be rewritten to Metal.
People are installing Windows on their Macs to play games that used to run natively on MacOS. Imagine how bad the backlash if this happened on Windows.
So sure, sure, Apple "went out of their way to not support standardized cross-platform APIs" that didn't exist even as an idea by the time Metal was released.
Come to think of it, the fact that Fahrenheit -- next-generation "OpenGL" with a DX base and SGI-provided scene graph API -- failed probably set cross-platform graphics back years if not decades.
Doesn’t valve/the steam deck?
SGI and microsoft were in api-war between OpenGL and Direct3D (and the boids examples ha!). They started a collaboration to create 'Fahrenheit' (lowlevel) and Fahrenheit (XSG) Extensible Scene Graph. Microsoft was sandbagging, and simply working on Direct3D, bc of opportunity. Bc microsoft was still evil back then bc they had more power.
As far as I always understood, is that OpenGL and whatever was left of Fahrenheit and the coop became the Khronos group.
I have the beta disks still here somewhere
Adding a Metal renderer isn't the big deal. As others have said, the deal is that they won't get enough revenue from Apple sales to justify the development and support of Apple hardware.
But that's not what happened here, it wasn't really a choice of location or funds. It was a passion project that went viral.
https://www.indiegogo.com/projects/factorio#/
IIRC sold more than 3 million copies by now ?
P.S.: The evolution of trailers over the years is quite something :
2013 : https://www.youtube.com/watch?v=V1qOCAM9Syw
2014 : https://www.youtube.com/watch?v=9yDZM0diiYc
Factorio is the standard against which I compare not only other games, but all other software. For polish, stability and craftsmanship. I hope they read this thread because the love for the game everywhere is truly well deserved.
It is probably very unpopular but maybe one has to start asking in what way humanity as a whole does benefit from the creation of such addictive games.
Theodor Kaczynski wrote in one of his books that computer games will increasingly distract younger generations(males are obviously more affected) from solving urgent issues resulting in an erosion of freedom. maybe he was right
If you want to rail at wasted time, there are much better targets out there. Try corporate tax accountants, or insurance salesmen, or fossil fuel PR goons; people actively destroying value.
We have PFAs in the rain; plastic on Mt. Everest and the Mariana Trench. We have a warming planet alongside proxy oil wars. You want to solve those problems by looking at addictive computer games? Really? Not even reality TV, or corporate media monopolies - games? ..... I think your high horse is pretty sickly looking tbh.
I'm not saying that games cannot be beneficial especially for learning english but if you speak with a boy you will understand how these games have taken his brain hostage as many of thoughts will be about the computer game he plays.
This is a sweeping statement that doesn't apply to many games, Factorio included.
A game like Factorio being addictive gives little back to the developers, as there are no microtransactions; after the game is bought, the transaction is over. If one would like to be cynical about it, games like this only have to trick people into buying a copy (and playing just for long enough for a refund to not be possible).
In the case of games with microtransactions, GTA V being the most profitable example in history, then yes, addictiveness does bring more cash to the company who owns the game.
Now, this opinion you held was incomplete and thus, wrong. What else are you wrong about in your mental model about videogames?
I think games are fine as long as you are living an otherwise full life. Games are only problematic if they are an opiate that prevent you from achieving goals outside of virtual entertainment. Games should not be a present day "soma" to paraphrase some words from https://en.wikipedia.org/wiki/Amusing_Ourselves_to_Death
Also 1000 hours for a game can be similar to how many hours of TV many watch in a year, at least games involve more active engagement and problem solving.
That said, I have been impressed by mine’s abilities to memorize what each menu option does in menus that can go 4-5 levels deep.
The book is organized so that in the first ~100 lessons only one new spelling–sound association is introduced per lesson and all words use strictly regular spellings. Lessons have (initially somewhat stilted and then gradually more natural) sentences constructed from previously seen words, so that there is a natural spaced repetition built in. This is much more efficient than most reading curricula, because despite many exceptions English is at its core a phonetic system.
It takes about 10–20 minutes per "lesson", you can do maybe 2–14 lessons per week (we aim for about 1/day), and there are ~250 lessons, so overall it ends up taking about 6–18 months from start to finish, maybe 50–100 hours in total. Afterwards, your kid will be ready to read pretty well anything they can understand, and after a further year or two of practice (reading whatever kind of material they want) will be a strong and fluent reader.
Only real prerequisites are that the kid is interested and can sit still for 10+ minutes at a time, can recognize the letters of the alphabet, and can more-or-less make all of the sounds of spoken English.
For what it's worth, I do think we should ask the same questions about TV, or browsing HN. There are a lot of things that it's easy to mindlessly do for hours that, if given some reflection, we might find we'd rather not spend so much time on.
Nobody can and does spend 12 hours a day solving "urgent issues", we all need ton do something to decompress and relax, and video games are a modern way of doing so.
I'm inclined to think of it as stealing too much of people's brain power for too little return, like TikTok etc.
Doesn't it sound almost undeniable that we would be healthier as a society if people were forced to do sports, read a book, create something, or talk to their friends in order to relax instead?
(I play lots of video games myself so I guess I'm just theorizing here)
It’s certainly no less valuable to society than e.g. playing chess or go or poker, and on average probably a better use of time than reading the newspaper or chitchatting on this website. Many of the skills learned are largely transferrable to solving other kinds of difficult technical problems.
You can make an argument that aerobic sports are valuable for general health, but beyond the exercise and some measure of social activity, the game part of the sport doesn’t have any a priori importance, and if people prefer to get their exercise some other way that doesn’t seem like an inherent problem.
“Forcing people” to “relax” with particular activities seems pretty authoritarian.
First of all: It certainly is my own cup of tea; Like I said, I play lots of video games myself.
On a societal level I'd say there are basically two reasons why I think video games might be a worse pastime than the older ones. First it's that you are more likely to spend "too much" time on video games because they are more addictive, you don't really get tired and you can do them at basically any time. Second it's that I think video games is a lower value way to spend your time. Sure, you might improve a bit at problem solving, but I think the value per unit of time spent is still very low. I even think this might come at a cost because really figuring out/performing well in a game can be very mentally taxing at the expense of more productive use of that mental capacity.
These two points apply to the examples you mentioned as well: reading news and talking on social media. I'm not saying video games is the only bad hobby. Apropos Ted Kaczynski, it might be tempting to say that most "post industrial" hobbies are the bad ones.
Lastly, I'm not talking about "forcing people". Even if choosing video games as a hobby is a bad idea then people (including me) are free to make bad choices.
>> we would be healthier as a society if people were forced ...
* * *
People have been complaining since forever that other people waste too much time on board games / novels / playing or watching sports / playing or listening to music / traveling / attending live theater shows / going to the pub / gardening / hiking / stamp collecting / politics / mathematics / philosophy / cooking / going to restaurants / whatever other activity you can name.
It’s fine to say that many people would do well to prefer activities that are interactive and creative vs. passive, physically active vs. sedentary, social vs. individual, skillful vs. mindless, etc. But Factorio per se seems like pretty high-hanging fruit, especially if people are playing it together. (Disclaimer: I don’t really play computer games.)
And yes, I agree that Factorio might be one of the "smarter" games out there. But the point about addictiveness, and the point about being mentally draining rather than relaxing, still stands for Factorio.
Personal anecdote: I spend much of my time in high-ranked (think top 0.1% of players) video game matches, and I think it might be too mentally stimulating to the point where I don't have the energy or willpower to get other useful things done.
If video games are scratching some dark and antisocial itch leading to hours spent with them, it's easy to think of far worse outlets -- drugs/alcohol, sex/porn addictions, gambling, food, etc -- that have been with us forever.
I disagree. Firstly, video games are a very broad term so I'm not claiming that there are not video games that are made solely for the purpose of making money from people addicted to the dopamine rush. Bad actors are unfortunately present in all sorts of industries, but anecdotally, they are outliers.
For me, the video games that I play or played have brought me closer to my friends and left me with memories that I can look back on and smile at the thought of.
Infact, Minecraft Redstone[0] was a massive catalyst in developing my interest into putting small parts together into a working system, which eventually led me to learn programming.
If I'm understanding you correctly, you are suggesting that video games and similar dopamine machines are replacing more traditional past times such as sports/reading etc. Are you suggesting that before the prevalence of video games, people only ever engaged in things like sports/reading books?
TV is a thing, and before TV, people who didn't want to engage with sports or reading spent time with their friends in ways which weren't exactly productive. There are undeniable changes to society since the introduction of the WWW/electronics in general, but I don't think they've made society unhealthier in general; they've merely changed it in ways that we are still getting used to.
One last thing to note is that video games are a great way for me to also talk to my friends and have a purpose for hanging out(albiet online). Lots of them live way to far for us to feasibly meet in person on a regular basis, and playing a multiplayer game together is a great way to engage with each other and also have some fun on the side.
Basically, what I'm trying to say is that video games aren't necessarily unhealthier substitutes for past times we engaged in before they became prevalent.
Factorio has provided a sandbox for me to visualize and acquire skills on managing bottlenecks in data flows; skills that I have and am applying as the point software engineer to resolve critical bottlenecks in multiple e-commerce systems. I won't speculate as to the commercial value of resolving those data bottlenecks here, but whatever dollar number you're imagining is, I suspect, probably missing multiple zeroes.
1000 hours since release in 2020 comes out to about 1 hour and 22 minutes per day on average.
Regardless of whatever "benefits" Factorio might have to society as a whole, one and a half hours a day of recreation sounds completely reasonable to me.
Understanding Kafka with Factorio (2019) : https://news.ycombinator.com/item?id=20362179
Factorio and Software Engineering (2020) : https://news.ycombinator.com/item?id=24181783
Technical interview methods pale in comparison to playing Factorio with someone (2021) : https://news.ycombinator.com/item?id=26591966
1. Is dull
2. Promotes laziness
3. Is sedentary
4. Stunts societal progress and growth
5. Limits the mind
6. Promotes violence
The list goes on!
Yet can you believe that people can spend hours of their time on a game of chess? And parents allow their children to play it, which is most definitely irresponsible parenting. I would certainly never allow MY child to play chess when it's clear that it leads to such negative outcomes - nay, downfalls!
Source: https://gizmodo.com/chess-was-once-deemed-a-menace-to-societ...
But that said, I will echo everything else you said about it as a piece of software.
I considered the crash a Quality Of Life feature to make me stop playing and get some sleep.
With Factorio even the bugs are features.
I think Factorio's code quality allows the developers to make the ports relatively cheap.
Big studios have so many developers that come and go and just work on legacy code that seems to make assumptions about the platform on every level. The cost becomes too high and not worth it.
It's because one is greedy, but because it's bloated.
If I remember correctly the studio behind Mini Metro gave up Linux on their new game because it was too time consuming to run the game and test it. Obviously if you lack tests and need to have manual testers all the time, new platforms won't help you. (I'm making assumptions from the blog posts I read, I might be wrong about the real reasons.)
It doesn’t exactly take brilliant insight to see that this is a bit of a chicken-and-egg problem, and so them taking this justification to avoid porting (and I think you’re probably correct that this is their reasoning) creates quite a self-fulfilling prophecy.
It makes sense though, there are different circumstances in play.
One day back in ~2013 (or so) as i returned from work, a gamedev studio, i bought my first Android device (some cheap tablet that was sold in a basket) from a mall i often visited after work. Once i arrived at my place and checked it out for a bit, i decided to port my previous (current at the time) 3D game engine on it - downloaded the SDKs, read some docs and tutorials, etc and banged out code until some hours later i got the test game running[0] on the device.
All it took was some spontaneous decision and a few hours of my time at home. That's about it.
However if something similar (porting to a new system) was to happen for the game engine i worked on at work, it'd take much more effort - even after assuming the decision was already made. Different programmers worked on different aspects of the engine that would need to work on it (graphics, audio and low level / system support would be the least) and as the engine relied on middleware we'd need to also ensure the middleware supported whatever we wanted to target, the programmer responsible for that middleware had to take that into account and ensure the legal side was covered too (some middleware consider ports -or basically any executable you make- as separate licenses). We'd also need to have the buildmaster work into integrating the new platform for the automated builds and testing (and perhaps write some basic tests if needed). QA would need to allocate time to test on the new platform, not only for the platform specific functionality but also some tests would need to run on the new platform even for functionality that had nothing to do with it to ensure all new stuff worked as expected (this in turn could cause other ripple effects - for example some new functionality in the engine that worked in a powerful platform might prove too demanding/slow for the new platform - at that point someone would have to decide -meaning meetings, etc- if the new functionality will remain, if it will be altered to work on the new platform -this means some research time will be spent on this- or if it will become an optional feature that somehow is only available to the powerful platforms while not being available on the new one -which would require not only the programmer time to implement this switching but depending on the functionality, potentially also artist/designer time to specify where it will be used- but also depending on what that'd be about, it may require some fallback functionality too -again more programming time).
And that would be for a small-to-midsized AAA game developer at the time with a rather small engine team - in larger teams and companies there'd be way more people and friction involved. All that would translate to a lot of extra time and thus cost.
If you are an indie developer it is very easy to just add support for something, but much harder to do if you are a multi-billion dollar studio. A couple of years after the above i joked i could port my engine (same as the Android one) to Haiku if i felt like it - and then i did that[1]. Meanwhile that wouldn't even pass as a joke in the companies i worked at.
Also having good design vs spaghetti code.
I’d guess the majority of games are a hodge pocket of spaghetti code that’s iterated on until it finally works
it's because multi-billion dollar studios don't hire nimble, competent teams that can turn on a dime.
They higher large numbers of replaceable cogs, use massive engines and other commercial libraries from various vendors, in the hopes of shortening development time without sacrificing production value.
Unfortunately, this only works to some degree, and makes turning on a dime hard. Not to mention that their leadership tend not to be technically informed enough that making such a change seems risky for low benefit.
it's why i do not buy games from such multi-billion dollar studios.
Apple's hardware is unquestionably very good now, and their graphics APIs are actually seeing some uptake. The recent stories about Resident Evil Village especially sound positive.
> The main Proton issue is that it runs on DXVK, and MoltenVK is not always up to parity with implementing Vulkan API calls on Metal reliably.
https://github.com/ValveSoftware/Proton/issues/1344#issuecom...
An alternative would be using CrossOver (which pulls from Wine and adds stuff like MoltenVK), which is what Proton does as well (pulling from Wine and adding stuff, but not MoltenVK) and vendors internally, Valve "just"† doesn't pull from the CrossOver changes nor expose Proton on macOS.
† scare quotes because it may not be as easy as it seems
https://hypertexthero.com/mac-video-games-for-streaming/
I try to keep it updated and suggestions are always welcome.
I would not really care if my game library was going through Rosetta 2, as I'd rather take a theoretical performance hit (vs a native arm64 build) than outright be unable to play.
This kind of attitude just isn't conducive for gaming, where people like to build libraries in steam and expect everything to keep working for a long time.
On my PC, I can fire up games from 20 years ago and they work perfectly. Witcher 3, a 7 year old game, is getting an overhaul. I expect no problems in downloading it on steam from my library and playing it seamlessly on my relatively new PC.
IIRC win64 finally killed win16 support but that was rarely used for games and those games you can dosbox (which amusingly enough works fine on Mac in many cases).
They quote around 200 UPS average. It's hard to compare to the linked benchmarks because those quote p75 numbers instead of average, but it seems like the results are in the same general ballpark as the Ryzen 9 5950x.
0. https://factoriobox.1au.us/results/cpus?map=4c5f65003d84370f...
I think that the 13700k and 13900k with the same turbo ratio should perform almost the same in gaming workloads. The only difference should be in the 36 MB of LL cache vs. 30 MB. It's a modest difference, but factorio is memory subsystem performance sensitive.
I'll add a benchmark to that page in a few days with a 5.8 GHz clocked 13700k to test the theory.
I'm looking forward to your test results though as I'm considering building a new desktop around 13th gen.
I've been experimenting with different settings and found that unlimited PL2 and undervolting the CPU by -150mV give the best temperature to performance at ~80c during full load. It has been running stable for few days, and I'm pretty happy with the result so far.
Also, those numbers aren't far off the out-of-box behavior I had, but I like to tinker. I throttle with PL set to 190 but not at 180.
That doesn't mean the 13700k can't match (or exceed) the out-of-box Factorio performance of the 13900k when given better memory, hence the score of 304 UPS.
https://factoriobox.1au.us/result/21784265-472e-4275-847c-dd...
Bonus: E-cores have thermal headroom at stock and can be stable at 4.5 GHz if given +0.1 V, but this cuts into the thermal headroom of the P-cores in all-core workloads and lowers the overall performance. Bumping to 4.3 GHz from 4.2 GHz with no voltage increase is stable.
FPS: Despite being a 2D sprite game, sometimes it has trouble keeping FPS at 60, at least when running at max graphics and max zoom level with a graphically intensive mod. I would guess it's using OpenGL, and Apple's OpenGL stack isn't great. You can see the article mentioning the M1 Max only hitting 45 FPS in one of the tests, and this is without mods (but with a huge base and presumably a wide zoom level). In my experience, if you adjust the graphics settings appropriately (eg max sprite atlas size and max vram usage, since integrated graphics use unified memory), you can usually keep it at a smooth 60 FPS 99% of the time even in graphically-intensive setups with max or almost-max quality settings.
UPS: Scoring 199 UPS on the flame_sla 10k base puts the M1 Max above any other laptop processor for that benchmark. This matches my experience: the simulation part of the game almost never lags, except for unavoidably heavy operations (eg generating new worlds when playing with mods that do that). See a comparison at:
https://factoriobox.1au.us/results/cpus?map=4c5f65003d84370f...
It puts it above an EPYC 7763! I presume it wasn't using all 64 cores though.
Rosetta 2 is not emulation, at all, it's AOT, static binary translation, backed by hardware that implements Intel specific behaviour from the latest chips down to the oldest 8080 or something. It's eerily fast.
In fact, it happens that arm64-translated x86_64 running on Apple Silicon can often be faster than x86_64 running on the latest Macs with Intel processors.
So you really have to ask two questions here:
- does the x86_64 Factorio build run faster on Apple Silicon than on a comparable† Intel?
- on Apple Silicon, does the arm64 Factorio build run faster than the x86_64 Factorio?
† whatever that means
So, it is hardware emulation.
Imagine you only speak English and you want to read a novel in French.
Emulation: you hire a translator to read the novel to you. They translate each word while reading.
Static translation: you hire a translator to transcribe the book from French to English. They give you a printed book purely in English. But simple French words like flâner and râler are expanded into lengthy passages because there is no simple English translation.
Rosetta 2: you hire the translator to transcribe the book to English, but they leave in unique French words and teach you what they mean so you can understand them in an English phrase without even noticing that the word isn’t “real” English.
Rosetta 2 isn’t emulation because no instruction is translated on the fly to a different ISA. It’s static translation plus ISA extensions. There is no lower level emulating anything.
It does have JIT translation (not a JIT "mode" though, as it always use AOT translation, only relying on JIT translation at runtime for the parts that need it)
> which is a bit more like conventional emulators
Not at all†, Rosetta 2 does the same†† translation step on dynamic Intel code, whose arm64 output can be reused afterwards
> But it's used infrequently, eg when dealing with x86_64 apps that themselves use a JIT
Yes, although it's more like "exceedingly rarely" in practice since usually those interpreters are up to date enough to have a native arm64 release.
See there for details: https://dougallj.wordpress.com/2022/11/09/why-is-rosetta-2-f...
† Unless you've been meaning dynarec, but I would not call that "conventional" although it is a well-known technique https://en.wikipedia.org/wiki/Dynamic_recompilation
†† IIUC minus a few things that can't be done when just-in-time because some assumptions are not guaranteed to be satisfied.
I could probably extend the metaphor to an avant garde French novel that asks the reader to look up and include today’s headlines from Le Monde, but it was already stretched.
> So, it is hardware emulation.
It's more like there's a full Intel CPU in disguise, only with instructions and registers having another name.
Android is following with 32-bit deprecation this year, actually. Pixel 7 doesn’t support 32-bit apps.
Metal came out in 2014, Vulkan in 2016.
Better for someone else to build a Vulkan API on top of Metal, which is what has happened. It's not perfect, but it's the only thing that can work. The pressure on Apple should be for Metal to better support Vulkan by providing APIs it needs to work optimally.
Beyond that, Apple might want to contribute to the Vulkan-on-Metal implementation... though they're only going to do that if it makes strategic sense, which I don't see. For cross-platform, what makes more sense is to encourage games to use a higher-level engine that supports metal among its platforms, like Unity and Unreal.
Typically, if a game maker wants to make cross-platform a priority, they wouldn't target just Vulkan, they'd target a cross-platform framework. That would be true whether Vulkan was supported by Apple or not. And if they don't make cross-platform a priority, the chances of a mac port go down regardless.
So...
We're looking at the incremental gain of Apple providing first-party support for Vulkan vs the existing third-party support. Looks like a lot of work for Apple for little gain. Just doesn't seem worth it to me. Also, the Vulkan version would always be out-of-date since Apple would pin the supported version to an OS release, and would need to be conservative about it, since they aren't going to hold an OS release for Vulkan.
Really, Vulkan on macOS is much better done by the interested third parties, and the focus on Apple should be to get them to better support a Vulcan API on top of Metal.
I'm confused. Your previous statement was saying the main point is that Apple have kept a bad API.
> Vulkan is what people are using and Vulkan can translate from DirectX. Apple is shutting themselves off from the rest of the industry with this move, which I would argue (judging by how many Mac users wish they could game) is a bad thing.
Possibly, FSVO translate, but I don't think anyone was commenting on this new point. More with the previous points.
When did the rest of the industry drop Direct3D for Vulcan?
The industry uses Direct3D on Windows and XBox, Metal on Mac and iOS devices, Gnm on Playstation, and Nvn on Switch.
Aside from a subset of Android, what popular platform uses Vulkan by default?
DXVK is currently only used as a drop in replacement for DX9 games. DX10 has been forgotten (thank god), DXVK's D3D11 implementation is not good, and more and more games are going on D3D12 which affords a hell of a lot of control.
Additionally, DirectX is not just a graphics API, it's also sound (XACT and XAudio2), ray tracing (DXR), Input handling (XInput & DirectInput), CUDA-like calculations (DirectCompute), storage handling (DirectStorage), etc. Most of these have either an alright equivalent (DXR has an equivalent in Vulkan with extensions, and that's about it, and Valve's input implementation is _really good_, but it's not a usable API as far as I know.) or a wildly inferior alternative (at least for the PC space that is Windows/Linux/MacOS). D3D12 also is one of the drivers of new GPU programming features in the PC space (once again, the console side of things is a bit weirder, although MS does bring some lessons in from the Xbox side of things), while Vulkan is kind of stuck doing everything as extensions that may or may not be available, and Metal is still a piece of shit.
So, yeah, no, DirectX is far from irrelevant.
Remember, to start, Windows only officially supports DirectX. OpenGL and Vulkan comes from your GPU vendor and Microsoft waives all responsibility for them. Vulkan is, quite literally, a 3rd-party API that can run on Windows - not something Windows supports or endorses.
Xbox does not support Vulkan. DirectX or get rejected.
Only 60% of Android devices support Vulkan. Guess you’ll also need ANGLE or OpenGL for backwards compatibility.
PlayStation does not support Vulkan. Better learn gnm, gnmx, and PSSL.
Nintendo Switch has Vulkan but it is almost unusably slow, on a console that is already not known for speed. Better use NVN if you want anything decent.
iOS does not support Vulkan. Better use Metal.
So… what does Vulkan support, exactly? Windows, Linux, and not enough of Android. If your game only runs on desktop, it’s a good option - but why not target DirectX? Windows, Linux with Proton, and most of the Xbox support all in one. For this reason, I have yet to see a Vulkan game that does not have a DirectX mode.
Blaming macOS for being proprietary is disingenuous in an industry full of Proprietary APIs.
Windows doesn't "support" the DirectX version shipped by your GPU vendor either. The drivers shipped by your GPU vendor, and all the APIs provided by them, are supported by your GPU vendor.
So the real thing we're talking about is hardware vendors. Nvidia and AMD support Vulkan, OpenGL, and DirectX where applicable. Apple only supports Metal. The console vendors have always had weird variant APIs based on the open standards but not identical, except MS where the console is very close to desktop Direct X.
On mobile hardware vendors ubiquitously support OpenGL ES and there's widespread support for Vulkan.
So it's complicated. In the desktop space, as a percentage of market share, Vulkan is extremely widely supported. Same with mobile. Consoles have always been an odd man out.
So Apple, which doesn't sell a console, is absolutely breaking from the pack in the markets they target.
If you consider 60% of Android users, and 0% of iOS users, "widely supported," sure. That's less than half of mobile phones in use right now, making Vulkan the odd-one-out on mobile as well. You certainly can't build a mobile app right now that only uses Vulkan without cutting out huge parts of your audience.
> So Apple, which doesn't sell a console, is absolutely breaking from the pack in the markets they target.
Apple wants the same API on all of their devices, and I can't blame them. They are the odd-ones-out in Desktop only.
But does that really matter? If you are making a game only for Desktop, namely Windows, and weren't going to just use DirectX for some reason, it does (which I think, nowadays, is a rare situation). But if you are targeting any game consoles, or any mobile phones, you're adding multiple graphics APIs anyway and Metal is just another one.
But that's what we're talking about, if it weren't for Apple Vulkan would be a near ubiquitous desktop and mobile API. Apple is the one standing in the way of that.
If Vulkan were a near ubiquitous mobile and desktop API, _maybe_ the console vendors would be more willing to tolerate it.
Ubiquitous desktop: Windows
Uniquitous gaming consoles: XBox and Playstation
Ubiquitous phones (worldwide): Android
APPLE IS RESPONSIBLE FOR VULKAN NOT BEING EVERYWHERE (not in Windows, not on XBox, not on Playstation, not on 40% of Android devices)
Sony only cares about their console(s), so they prefer to focus on optimization rather than compatibility. (While Nintendo cares more about gameplay than graphics.)
Isn't that 40% of Android devices old / very cheap ?
Apple is one of the biggest (and especially, most profitable) companies in the world, and with great power comes...
Because only Apple has the power and hence the responsibility, not the tiny helpless companies Microsoft and Sony (~99% of consoles, 76% of desktop).
Edit: don't forget, Apple absolutely must support Vulkan (and others don't) because Metal is proprietary and non-cross-platform (just like any other graphics API on all major platforms) even though Vulkan appeared two years later than Metal (but neither Microsoft nor Sony are expected to drop their APIs which also appeared earlier than Vulkan).
Did I get that logic right?
Total addressable market matters here. 100% of Android-based VR headsets support Vulkan. Granted, that's mostly the Quest 2, but it's not the only HMD in town anymore.
Also, a lot lot lot of Android devices are garbage-tier <$100 that you wouldn't want to target anyways because you won't get any sales on them. So the % of Android devices supporting Vulkan may be misleading in the sense that you might be aiming for a segment of devices with much, much higher, if not complete, support for Vulkan.
Building for ARM is probably not a big challenge if you’re already building for Apple’s x86 toolset.
Metal would be more of a challenge I imagine, but a bridge probably worth crossing all else being equal (or one that you don’t need to cross at all if you’re using something like unreal or unity).
The Mac isn’t a games platform as Apple hasn’t shown much interest in the mainstream gaming market, and I can’t imagine major publishers are eager to fork over a third of their revenue on the App Store for sales they’ll probably pick up elsewhere without more work and cost. Sure theres Epic and Steam on Mac, but they’re ghost towns, and publishers are likely waiting to see what way the EU Digital Markets Act shakes out globally anyway (as other governments are pressured to provide the same freedoms).
There was talk at one point of Apple working on a game console (a more powerful Apple TV) but who’s the market for that?
They’ll not be cost-competitive with Xbox or content-competitive with PlayStation and Nintendo.
At best they’d be likely to produce a similarly powered box with little content and a high price tag in a market already retailing hardware below cost price.
The business case on this was a slam dunk. Other companies running virtual product stores with similar terms would have done the same irrespective of how popular Epic's products were.
Digital Foundry did some review of MetalFX in Resident Evil Village[1] and was pretty positive about it. (From DF's findings, MetalFX has some problems with transparent texture, but details preservation/restoration are pretty good.)
At a technical level it seems like they could get more console-like levels of tuning for their platforms. Very few chips to support, only a handful of thermal targets, all chips have a common CPU/GPU architecture, all devices have very fast storage. Conceivably they could field a winning platform for competitive gaming.
My guess is they look at Sony & Microsoft and don't see much value in reshuffling priorities to likely just be #3.
Edit: hajile above convinces me that rather than concerns about spending money to be #3 they probably already are in the top few by gaming revenue and could have lots of reasons for not being more aggressive about taking more share.
That seems to be changing though as there are pretty strong supply chain rumors that they are working on AR/VR headsets (allegedly delayed due to terrible market conditions and some supply chain issues). They've also made pretty big investments into their subscription game service.
I think Apple TV is very overlooked by developers too.
There's a lot of processing power in those things. The weak 2021 model has 15% more GPU power than a docked switch (30% more than an undocked switch). The older 2017 model uses an X processor which should give it even more GPU power (almost double an undocked switch). The latest A15 model (with a major price drop vs the previous generation) has more GPU power than the Xbox One S and isn't so far off from the PS4.
Nintendo Switch 500 GFLOPS (docked) 390 GFLOPS (portable)
Apple TV (A10x) 770 GFLOPS (2017)
Apple TV (A12) 580 GFLOPS (2021)
Apple TV (A15) 1500 GFLOPS (2022)
Playstation 4 1850 GLOPSS
Xbox One S 1400 GFLOPS
Apple TV shipments since 2017 seem to be in the 50-80M units range. Compared to 25M PS5, 17M Series X/S, 111M Switch, and 117M PS4, that's a pretty significant number.Because no one nows if the platform will be there or not. Apple's commitment to it has been lackluster. And since there are no dedicated controllers, you'll need controllers from a system... that you probably already own, so why play on Apple TV?
1. https://appleinsider.com/articles/21/10/03/apple-earned-more... (15.9*0.69=11B)
2. https://www.microsoft.com/investor/reports/ar21/index.html (Gaming: 15,370)
Contrary to widespread opinion, Vulkan is not an industry standard. It’s a 3rd-party DirectX alternative for Windows, the best API for Linux, and a curiosity on Android. And that’s literally it, nothing else supports it (except Switch, but it is so slow, almost no games use it, opting for the proprietary NVN).
"Vulkan is not an industry standard" I mean yeah, in the same way Microsoft word is not an standard.
"except Switch, but it is so slow" again that seems to be a lie, doom eternal orks way, way better on it than it would be on similar software on a different API.
It is completely honest. On a fresh install of Windows, if you don't have graphics drivers, you can't run Vulkan or OpenGL. Windows washes their hands of any responsibility. You can at least run DirectX with software rendering regardless of hardware support. It is also for this reason that the locked-down Xbox where Microsoft can assert more control has zero tolerance for OpenGL or Vulkan.
> "Vulkan is not an industry standard" I mean yeah, in the same way Microsoft word is not an standard.
Microsoft Word, and the DOCX format by extension, has >90% market share. Vulkan has almost no presence on consoles, presence on less than half of smartphones in use, and mixed presence on Desktop because MacOS doesn't have it. Word is more of a standard than Vulkan.
> "except Switch, but it is so slow" again that seems to be a lie, doom eternal orks way, way better on it than it would be on similar software on a different API.
DOOM Eternal is one of the few games that uses Vulkan. >90% of Switch games do not use Vulkan, and found it preferable to use the proprietary API. That developers would overwhelmingly opt not to use Vulkan on Switch tells you all you need to know about the state of it. If adding another graphics API (such as Metal) was such a big deal, why in the world would they do it if Vulkan was cross-platform and worked fine? It doesn't work as well as it needs to - and adding another graphics API isn't as much of a blocker as we like to think.
DirectX with software rendering doesn't actually result in games actually being playable, unless they are 2d games that barely touch the GPU to begin with. So the software rendering fallback is completely irrelevant here, and what matters is what APIs will work when you do have the GPU drivers correctly installed. And at that point, it doesn't matter what degree of support Microsoft provides for Vulkan, only the degree to which the GPU vendor provides that support. (And the software rendering fallback actually makes it less straightforward to diagnose why a game isn't running as expected, in the case of GPU drivers not being installed. Plus, what game developer cares about the software rendering fallback enough to even test their game against it?)
So no, it's not completely honest. It's a disingenuous red herring.
Honestly it doesn't matter. The whole "Macs can't game" has no basis in facts. The goalposts are continually moved.
To give some examples of arguments.
- Not enough games for it. There is actually more games in the Apple store than most other gaming stores. You can also play a lot of iOS games now.
- The majority of games are terrible. The majority of games in other stores are terrible too (sadly).
- It can't play [insert PC game]. Neither can a Nintendo switch but that doesn't mean it can't play games.
- I can play [insert PC game] but doesn't count because it's too old. You can't win on this one.
- It's not a real game unless it uses a GPU. There are countless games out there that don't meet this requirement.
Really the only argument for Macs not being gaming machines is that the majority of buyers do so not to play games on it, but to get stuff done.
Anyone who can afford a Mac is likely to have at least a console and/or PC Gaming rig.
The gaming industry will go where the money is.
The majority of the industry revenue is now on mobile and the lions share of mobile revenue is on iOS and Metal.
I think Apple Silicon Macs will end up benefiting from studios having experience with Metal on iOS in the same way that XBox benefited from studios having experience with Direct3D on Windows.
You have…
- App Store (OSX and many IOS)
- Steam
- Epic Store
- Blizzard Store
- Crossover and Parallels to do some windows games.
- Mame and it’s like exist.
- You even have free games on GitHub.
If you can’t find the games the issue isn’t with the Mac.
Having access to a lot of mobile games doesn't matter for hardcore gamers.
Your claim means that the Nintendo switch is not a gaming platform.
A AAA game is not denoted by how many platforms it releases on the first day.
Your other comment about mobile games is just another form of gatekeeping. Again the Switch is mobile gaming and would not meet your criteria.
I study Computer Engineering, so having a good laptop was important. Prior to this I owned refurbished ThinkPad running Linux which cost me around $500 but had multiple issues with performance and speed, to the point where buying an M1-class machine was almost necessary for me.
This comment has very little to do with Apple Silicon, except to say that I imagine its a faster platform than the Switch, and that Factorio is addictive fun. Here's hoping the promise of the post turns into reality.
I don't mean to diminish the work of porting here, clearly a native version is better. I'm also impressed that the port didn't seem that difficult, the only technical hard thing he mentions is getting a copy of the arm64 libraries to link against. But mostly I'm impressed that the port wasn't entirely necessary because Apple did such a good job on x86 emulation.
What's confusing here is he clearly says "After we had a functioning universal binary, we ran benchmarks and conducted manual tests to see what improved. We ran benchmarks on 3 different Apple Silicon machines, using the same compiled release binary and run settings."
So it's a universal binary. Surely it'd run natively on the Mac Studio. Maybe this was a typo?
The 2020 Mac Mini is not intel [0]. The 2021 Macbook Pro is also not intel [1].
> So it's a universal binary. Surely it'd run natively in the Mac Studio. Maybe this was a typo?
Yes, the new universal binary can run natively. That's what they are announcing: the new native support. They are comparing the native performance against using rosetta [2] to run the x86 binary (which, in prior versions, was the only option). By using the same binary they are ruling out that it's due to any other performance improvements between versions.
[0]: https://support.apple.com/kb/SP823?locale=en_US
[1]: https://cdn.factorio.com/assets/img/blog/fff-371-ups-graph.p...
I went as far as buying a i9-13900 because my previous 8 year old pc could no longer handle my megabase I was working on (11K SPM).
It's funny that this processor gets around 240 UPS and the M1 Max can get to 200 UPS at a fraction of the power budget.
Well worth trying.
Maybe someday I'll retire and be able to spend 100s of hours playing Factorio, without it feeling like I'm just putting in extra hours at work.
- "Factorio feels just like programming ... but without the constraints of having to be reliable, or having to do what other people tell me to" => fun.
- "Factorio feels just like programming .... but I don't get anything out of doing it" => not fun.
Also you’re missing the fact that it already ran under emulation. This is a native port.
Would be great to hear more about this: > reduced the time to set up a clean Mac for Factorio development from a few hours to a few minutes
Beware.
And the Switch one was like - then we optimized it.
Great...
Hmm... He could have tried to optimize his Factorio build to consume less power on the laptop running it... Or, as he did, to optimize the whole game for every ARM Macbook in the world.
Thankfully he chose the latter. Or, wait... I have a Macbook... Damn... Goodbye productivity :)
It's not in depth, but it's 99% of the why. The M1 is just a bigger, reworked A15.
"Write once, run anywhere" :)
Anyway games are going to pre-allocate large arrays and work on them, for cache affinity. That doesn't depend on C++ vs. Java. No need to create a separate object for each item in your factory, but rather a row in the array(s).
And even if you do create a new object for each item, it's better to do that on heavily optimized heap, than manually allocating/deallocating memory in the same thread. You end up writing that heap in C++ anyway.
Clearly someone has not grown the factory large enough.
Besides, their game is already one of the most cross-platform capable games I've ever seen. There's not a lot of feasible platforms that Go/Java would open up.
Also, choice of programming language isn’t what makes porting games difficult. It’s the platform specific graphics, input, window management, sound, etc. All of which aren’t handled by switching to one of the languages you mentioned.
It seems to me like Factorio is exactly the kind of game that would benefit from a low level language, as it's relatively simple graphically and all the complexity is in the simulation, making it CPU-bound.
In this kind of game, no matter how well it runs, there will be someone who has built enough that they're wishing it would run even better.