By using this site, you agree to our Privacy Policy and our Terms of Use. Close
JustBeingReal said:
potato_hamster said:
Soundwave said:
potato_hamster said:
zorg1000 said:
potato_hamster said:

You do in console development. It's hardware - > engine for the most part (there are some exceptions). Skip the API. You don't seem to understand that.



Why exactly do consoles have an API then?



My apologizes. I have been vague and bit misleading. Consoles do in fact use APIs in similar ways to PCs. However, consoles use two different kinds of APIs. There first kind are lower-level "to the metal" APIs that interact directly with the hardware in a way PCs do not. This is not what most people mean when they refer to APIs. These low-level APIs are more streamlined more effienct, and, are optimized specifically for the single hardware spec. The console also has higher level APIs, which interact with the OS, controllers, networking etc. this is what most people refer to when they talk about APIs.  You can still actually send commands to things like the processor or GPU directly, but this isn't as common as it used to be. I was trying to make it easier and I ended up complicating things.

It was disingenous for me to say that consoles don't use APIs to interact with the hardware. They do. But they're not the same as the APIs that PC engines use and work in a fundamentally different way that calling them APIs in my experience tends to confuse people more than it does when I say they don't really use APIs.

Here's a little blurb on exactly what I'm referring to:

http://www.psdevwiki.com/ps3/RSX#RSX_Libraries

PC APIs are equivalent to the PSGL. Consoles have layers below that, including the ability to program to directly interact with the hardware.



 

The thing is though Nintendo is not beholden to make a platform just one way. Why can't a home platform have an API setup more like the PC if at the end of the day this serves Nintendo's needs of today better? It's not as if the world would stop turning. 

And the PC industry I imagine would be a pretty different place if there were literally just 2-3 different hardware congifurations from the same exact manufacturer, period. 

They can, but they would be throwing away very much needed performance, and limiting the capability of game and engine developers in doing so.

Just because technically can be done, but that doesn't mean it's a good idea to do so. If you have a console that's say 1.5x as poweful as the Wii U but from a development point of view it might barely more capable since their control over the device has to go through a relatively bloated API. Thus the games that come out for sucha  console, might look pretty much the same as Wii U games, aside from a few marginal improvements,  then consumers might have a hard time seeing the point of "upgrading".

Might not be the best move just to make development on multiple platforms easier when there are plenty of other things Nintendo can do to bridge that gap without pulling off such a dramatic move.

 

Nintendo wouldn't be throwing anything away, they'd be gaining so much more, because resources aren't dedicated to making games for 2 or more separate platforms.

Also you're ignoring DX12, Vulkan and Mantle, all of which are not bloated APIs, rather they're all low level and you know what? It's not necessarily the level of abstraction that brings performance gains anyway, it's the ability for all CPU cores to be able to freely talk to the GPU as and when they need to, rather than each core having to wait it's turn to speak or for all CPU cores to speak through a single thread.

Also there's the matter of a HSA set-up reducing the need for excess reads and writes, along with newer Asynchronous Compute tech allowing developers to make better use of GPU time.

Developers would literally only have to pick settings for each platform, when they optimize their game. No one is saying that Q&A testing isn't going to happen or that optimization to make sure things run as they should isn't going to happen here, but you're essentially trying to invent a problem where there isn't one.

Having to optimize for 2 platforms, with the same OS/API, development tools and architecture would be very easy. Hell Nintendo's own tools would likely undergo much quicker improvements because they're not having to divide their teams between 3DS and Wii U, with each existing in a vacuum.

I'm not inventing a problem where there isn't one. I'm taking a very pracitcal stance to this, and while none of what you're saying is false per se, it's very let's say "theoretical" in the sense that it looks good on paper, but not in the real world. This is a legit concern that you're completely undermining. You're downplaying how difficult such a thing would be to do. It absolutely isn't trivial. It certainly isn't "very easy". It might be "theoretically possible" but Nintendo has to execute this idea of yours. Nintendo has to develop an API that is not only super low-level, but incredibly powerful so that developers can just "pick the settings" (making it very high level) but all of the calculations that involve executing these settings have to be carried out on an a razor thin API using little to no processing time or resources (otherwise it's not low level). Are you seeing a problem here? Sure it might "be possible" but it certainly isn't practical.

On top of that, the team that would be doing it is Nintendo. Have you ever had to work with Nintendo? Used their Dev kits or test kits? Used their developer tools? Called up Nintendo developer support? I have. Let me tell you - They are about a decade behind where Sony and Microsoft are right now in terms of making developer tools that are actually useful compared to Sony and MS's offerings. I'm not joking - the original Xbox's developer tools are better and more powerful than the Wii U's in a lot of ways. And now you're going to take a team that for all intents and purposes has been mailing it in for generations, and now make the most advanced, sophisticated, yet light weight and easy to use API the video game development world has ever seen. And you tell me it will be "easy" for them? Sorry. It isn't easy. It's not trivial. Not for anyone, and not for Nintendo.

In an ideal world, sure developers would "only have to choose" x or y to get their game running on a different spec console, and the lightweight API would just make the magic happen, and *poof* game on new platform with minimal testing. But realistically, you and I both know that would be an incredible achievement, would likely win Nintendo dozens of engineering and desgin awards world-wide if they pulled it off. I do not have that confidence in them. Its fine that you think that Nintendo can pull that off, but I'm taking a far more realistic and grounded approach.


P.S. I also love how you act as if this isn't the funamental issue, but and then chalk it up to something that from what I can see, cannot be solved with an API. The ability for CPU core to send and recieve commands from the GPU simultaneously little to do with the API, and far more to do with the hardware design itself. No amount of API coding is going to get around a hardware bottleneck, and create new physical communcation channels where there are none. But I suppose you think that's trivial as well - making super lightweight ultra powerful APIs getting hardware to do something it's not designed to do. Maybe it's theoretically possible, but in the real world, a team actually has to program it to work that way, and that would not be trivial.