The journey to Nintendo Switch(factorio.com) |
The journey to Nintendo Switch(factorio.com) |
Holy hell.
Just this week I started on a similar system for a game engine I work on (Zelda Classic). Main reason was for testing purposes, but another benefit is that it is SO cool to see the game replayed for you. Like those self playing pianos.
Hah
Things as simple as "believing you know the byte-width of a primitive data type" are dangerous.
In my C++ course, I require that the code runs correctly under 5 different compilers (GCC, LLVM Clang, Apple Clang, MSVC, Intel C++ Compiler Classic) on 3 OS (Ubuntu, Windows, macOS) in Release, Debug+Valgrind, Debug+Sanitizers modes, and students still get UB quite often.
Extra reading: http://evan.nemerson.com/2021/05/04/portability-is-reliabili... and discussion at https://news.ycombinator.com/item?id=27044419
Maybe I don't notice this with other games but that seems like a really long time.
Factorio is coming to Nintendo Switch - https://news.ycombinator.com/item?id=32825543 - Sept 2022 (359 comments)
> Even after the launch, there is much to do. Next to my screen there's a stack of post-it notes with future improvements, possible features and technical debt I need to solve. As mentioned in the announcement last week, after the launch I will also work on controller support for PC and Steam Deck.
And all the graphics stacks nowadays are similar, Vulkan, Metal, DX12, all share the same ideas
Also there are countless opensource cross platform GPU libs, bgfx [1] or sokol [2] for example
Are there significant CPU-specific optimizations that can be made for the Switch / ARMv8 that wouldn't apply to x86-64? I've never really dug into things at that level, I wouldn't know where to begin except for like vector instructions.
And that's heavily based on internal scripting with real code.
The recent "Minecraft"-in-Minecraft emulation was done with pure Redstone internal to the game, but has to be run on a specialized server that accelerates Redstone operations by several thousands to be even fast enough to record time lapses at a reasonable sped.
In-game simulations of logic gates that are generally running at fractions of a Hz are a pretty steep obstacle to overcome for any "real" computing like that. Just to calibrate your expectations.
The Switch supports OpenGL 4.6, Vulkan, and their own API NVN, which actually many engines make use of. Most likely Factorio is using one of the former anyway, so that problem is kind of out of the way, other that having to deal with the extensions and hardware/driver specific behaviors.
Then as they mention the blog, having to adjust the way the GUI works from a PC setup to an handheld.
Will I actually buy it again, just to have it on the Switch?
...yes. Yes, I will.
But there would have to be a touch only interface and that may be the killer.
How is this possible? I would imagine CPU requirements to be more or less same across any resolution / operating system.
This is what makes Nintendo Switch interesting to me. It's CPU is even less powerful than an Raspberry Pi 4. Even midrange android smartphones today are much more efficient and powerful than Switch and yet Switch can run Doom / Skyrim just fine.
(oops, that was the expansion, misread)
Unless I'm misunderstanding this section, that's about 5 weeks away.
> it still won't be ready sooner than in a year from now
This is a reference to the expansion.
What's a common new game trend since then? I can think of these: randomized microtransaction packs, online multiplayer PvP and co-op.
Are there any established trends that I'm missing out on, or new concepts emerging that old gamers may not have come across?
I like the Switch, but it definitely chugs, and I suspect had we not had the supply chain meltdown over the pandemic we would‘ve gotten a more significant hardware refresh.
As far as simulators go, I‘m playing Two Point Campus, and it definitely chugs and crashes occasionally.
I think the technical imitations can definitely hamstring their games, even the first party ones. breath of the wild comes to mind, and frequently dips into sub 30 fps which breaks the immersion factor.
Yes you don't need PC hardware to play those but non-console gaming environments are also about no lock-in, customisability etc as well.
You're right though - you don't need a fancy GPU to have a fun game, but what you DO need is permission from Nintendo to publish on their platform.
And the main reason the games are colorful on Switch is that Nintendo still, to this day, has a reputation of kids-only console. And Switch also pushed it towards "casual one-off gaming" which invites bright colors (think Candy Crush).
Gamecube and prior was roughly comparable to the competition, but after that the other companies were trying to outperform each other in graphical fidelity while Nintendo released basically another Gamecube but with motion controls. And it was a hit!
Pretty much every strategy / tactics game (outside a single one: Fire Emblem) runs terribly, below 30 fps, looks very burry and... the killing blow... has crazy long loading times. You can go grab coffee while Civ6 is loading and still won't be done by the time.
Quality control of games from Nintendo is very very poor. There are several games that came out which were unfinishable or unplayable and they just happily certified them.
Btw Factorio runs on any kind of PC well before it was on the Switch.
On the other hand, factorio is a load once and play for hours type game compared to something like mario which incurs loads on each level
I just timed Breath of the Wild (cartridge version), and from the time I launched the game from the Switch menu to seeing the game menu was about 16 seconds, and the time from selecting a save file to loading the game world was about 18 seconds. What exactly about this game makes it take so long to load?
They did this by overclocking the Switch during load. I didn't see any mention of boost/overclock in the Factorio writeup, though.
> The majority of time spent starting the game is preparing the images from disk into a format that the GPU can use. The images on disk being compressed and or not the exact format that GPUs want. Now, what that time on switch is spent on… I don’t know for sure but I would guess something similar.
I need to be absolutely sure i want to play the game five minutes before i do.
Thinking about it some more, there are also probably some tweaks you could use for situations with limited resources which wouldn't apply to most PCs, but would affect the Switch.
One cool thing about ARM is that vector instructions run in parallel with the regular CPU pipeline. You can do some neat optimizations where you interleave sequential part of an algorithm runs while the SIMD instructions are executing. However if you do this yourself the code is going to be super non-portable. In general, knowing that something is always going to be running on a Switch lets you dig deeper into architecture specific optimizations, since x86 has so much variance it would take a ton of effort to really dial in performance on the whole menagerie of Intel and AMD CPUs
For fun, I'll mention that there is a hardware hash function that you can use. The public A57 documentation has a performance guide available that is applicable to the Switch.
There may be some cases where the fixed ARMv8 instruction set allows them to use instructions that have equivalents on recent x64 processors but not back to their minspec PC.
Of course, being able to target a single hardware platform with very minor differences like the Switch also means the ability to make optimizations to that specific platform without having to care about possibly breaking compatibility with others. It'd be like being able to optimize your game for people with Nvidia cards and completely ignore those with ATI, Intel, or any other brands on the PC.
Factorio is pretty well optimized too, however the factory size Switch can handle are on the - can launch the rocket - scale. This is but a small fraction of the factory size people end up building
Also, they mentioned in the previous blog post that they've done some optimization to keep the framerate from bogging down, so maybe even the x86 requirements are lower these days (or will be when those optimizations show up in the public version, which might not have happened yet).
That "just fine" hides a massive understatement on just how compromised these games are on Switch. They usually run on settings even below lowest possible on PC and regularly drop resolution way down to even 640x360, making everything extremely oily and blurry.
These games run and can be enjoyable - but "fine" is not really a word that fits into their performance :)
A Core 2 Duo E8400 at 3ghz probably isn't.
They don't want to test and then list the minimum CPU for every generation of cpu for the last decade or more when listing system requirements. So they go a little higher in the stated requirements than is probably needed with newer gens so people don't get angry and disappointed that their older gen cpu doesn't run well despite having the listed clock speed.
That won't really happen in Factorio due to the shared state & makes possible insanely complex layouts that all players can see an interact with exactly the same. The downside usually is that eventually - just after you got that 20 GW nuclear power plant with trucked water & and steam going - the slowest player starts to have issues as his hardware no longer can keep with the complexity of the simulation.
Then you either start shedding players or call it a day and start again with a different objective or mod.
Many of us write C and C++, because we have to, not because we want to.
Rust will eventually reach there, however many of us want to deliver a product, not build an ecosystem from scratch.
I think it'll be referred to for years to come as an example of not only how seemingly simple decisions can come back to haunt you, but also how patient users can be if they really want to play something..
0: https://www.thegamer.com/gta-online-fix-loading-times-offici...
> actually finish debugging the game and errors abound
Literally EVERY software developer is guilty of this. I cannot count how many games have come out in this state and there wasn't an ridiculous backlash, just CP2077.
NOTHING comes out bug free nowadays, because we as an industry have this idiotic policy of shipping things ASAP
I'd be happy to as soon as it's possible for me to complete or discard the "Get a gun" tutorial quest that is stuck in my quest roster. Stuck quests are a category of bug that stick badly in my craw; personal preference.
> Literally EVERY software developer is guilty of this
Absolutely true, but there's degrees, and CP2077 was the buggiest game I played in 2021. When it works? It's... Okay, it's fine; I didn't find it as captivating as I hoped.
When it doesn't work, the results range from annoying to comical. I did have a good laugh the time that NPC got her handbag fused to her hand at a right angle, just gesticulating wildly in a conversation waving the thing around like an oven mitt. I did not have a good laugh when I got stuck in the floor crawling through an air vent to get into a locked room with a 'runner jacked into his chair, levitated off horizontally into the void so I couldn't move, and found that restoring from save took me all the way back to before I'd accepted the quest.
I'm old now; that shit eats into my finite time to enjoy games at all, and I have minimal patience for that category of error.
Edit: well, of course, a game bug, even if game-breaking, isn't safety critical. Yo have to plan what to spend time on.
https://www.reddit.com/r/factorio/comments/f2nab9/ram_speed_...
I'd be really curious to know how similar the Switch code is. On the surface, the game seems to have been extended quite a bit, but I feel like a lot of it is just uncovering functionality that already existed in the codebase, e.g. the ability to place arbitrary items on the outside grid, I'm fairly sure the "engine" already supported this, and it was the way outside objects were implemented, there was just no interface for adding/removing them.
https://www.reddit.com/r/gamedev/comments/fnfdic/nintendos_g...
Which is crazy since (having played NL and NH for a combined 1500 hours) even the little, deep details carry on from New Leaf. If I didn't know better I'd say NH was using an evolved NL engine.
My observation was the data structures/file formats were basically slight modifications of the ones used in other first party Nintendo games, primarily Mario Kart and Mario Party. So it seems like it's always drawn heavily from some internal SDK/engine, it's just not clear how much, or how much of that engine is saved between consoles.
Anecdotally, the DS and Wii (and ... maybe the GC? I don't remember now) used the same file format for the dialogue scripts, although the DS version was little-endian, and broke all my (terribly brittle) "tooling". The 3DS was totally different, and I ... Think the Switch was a variant of the 3DS format? It's been a hot minute since I've looked at any of this stuff :-)
I think the gaming world just really latches onto tends. A few years it was survival/crafting games, before that RPG's. Good luck figuring out what's next!
After a few weeks of that, the game format grew stale, and I stopped playing HG maps. Then a few years later a whole bunch of BR games hit the scene and all I could think of was how similar they were to the Hunger Games Minecraft maps.
That's just my guess from personal experience.
I think Minecraft can't be overrated as a vehicle for experimentation in multiplayer modes. Not only did the game have a huge modding and multiplayer community and have support for large player counts and maps, but it's unusually easy to create for and the game itself has no built-in structured competitive multiplayer gametypes, which means there's tons of demand for people to make gametypes from scratch and there's no built-in code for how matches work that needs to be worked around for new ideas to be attempted. Many other online games have specific ideas of how matches work built-in that reduce the demand for brand new gametypes and could make implementing a gametype where matches work differently daunting.
- Cosmetics. Tons of games have stuff you can buy (equipment, skins, etc.) to make your character look cool. Extra stuff that can be developed easily by an artist, doesn't affect game balance, and sometimes even costs real money.
- Battle pass. I've never bought one but I think you get stuff on two tracks for progression, a free track and a paid track. Progression resets and there are new tracks like 4 times a year or something. Makes people want to open their wallets for the paid track due to FOMO and "...but I already earned it!"
I think if you switch from free to paid you immediately get all the stuff on the paid track you've already progressed past. Also I think they want to charge you $10 four times a year, every time the new tracks come out.
- itch.io -- Sort of like Steam / Epic / GOG for indie developers too small to be on those sites yet.
If done incorrectly, though, procedurally generated quests or dungeons feel boring and soulless.
I found a GameFaqs forum thread[1] from shortly after the game launched that claims it was about 20 seconds. And a US Gamer article[2] that says the update that came a couple years later only shaved off about 5 seconds (seems within the ballpark of what I measured)
[1] https://gamefaqs.gamespot.com/boards/189707-the-legend-of-ze...
[2] https://www.usgamer.net/articles/breath-of-the-wild-load-tim...
It overclocks the CPU at the expense of GPU. It's suitable only for loading screens or other areas of the game where you don't need to render at more than single-digit FPS, but can produce a 20-50% improvement in loading time.
Perhaps they don't get to mess with the clock "willy nilly" and it's more like an API that enables a higher - but fixed - clock speed?
[1] https://www.shacknews.com/article/112895/crash-team-racing-n...
The first is "You misunderstood me. I'm hours into the game; that quest got stuck in the first hour or so, I didn't realize it was stuck, and rolling back to before I acquired it would basically reset all my progress. So it's just stuck there, like a splinter, reminding me how broken the game's mechanics are. Getting to live out twelve-year-old-me's fantasy of fighting Adam Smasher hasn't offset the irritation because that's my flavor of OCD."
But had the situation been as you expected, my response would have been "Because I respect my time more than these developers do and there's a literal sea of other games I could be playing that don't make me replay around script bugs."
As for the respecting time thing... does TurboTax respect my time while showing me a false progress bar when it actually completes its analysis near instantly? Does Microsoft respect my time when Edge constantly pesters me with popups asking to be the default? Does Instagram or Facebook respect my time when they pollute my feed with their business objective bullshit? Does a cop respect my time when he pulls me over and spends 15 minutes running my information? (Like WTF is he even doing... he punches my info into cop google and it spits out an answer! Where is all that time going!) What about if they arrest me? Does the radio respect my time when it airs commercials?
Another answer is: temper your expectations. Take the L and move on. The sunk cost fallacy is real.
I agree. That's why after deciding I wasn't having enough fun-to-bugs ratio in CP2077 about halfway through the game, I gave up and played something else. I've been playing quite a bit of No Man's Sky as of late. It's also buggy, but more fun. Satisfactory is a delightfully tight experience. Kerbal Space Program hides its bugs delightfully behind the overall "Failure is the point" game mechanics. Or I could play basically anything on a Nintendo Switch (main console, not the store) and get a nearly bug-free experience because Nintendo enforces some pretty stringent quality standards.
Everyone's preferences are different. Me, I don't get the buzz from the AAA-ness of a CP2077 to offset the annoyance of the underlying mechanics being kinda boring and kinda buggy.
... I'm not sure what to make of the comparison of playing videogames (an experience I spend double- or triple-digit dollars on for entertainment) to the experience of chores in real life, so I'm setting that aside.
Folks can quibble about the Gamecube if they like, but step back one generation and they were definitely trying to push the technology.
Most of those kids didn't know what 64-bit meant, but they knew it must be better than their old 16-bit piece of junk. That's 4x the amount of bits, therefore the console was 4x better!
It gets forgotten about because it didn’t sell all that well and because the tiny little 1.8GB discs kept most of the multi-platform blockbusters off it, but the GameCube was significantly more powerful than the PS2 (though not as powerful as the Xbox).
I wish I knew how to find the text of that post. The G4TV forums seem erased from history.
I think that's when they really started leaning into it again, but Gunpei Yokoi (Gameboy inventor) was a big proponent of the idea, which he called "Lateral Thinking with Withered Technology". So it's been a part of Nintendos design process for a while before that.
I suppose you could compare to the Neo Geo which was far superior technically, but it was at such a high price point that it never made much of a dent in the market. That generation was pretty much defined by the SNES and Genesis.