4
\$\begingroup\$

If I want to become a game developer, is learning Win32 API a must?

Does X-BOX or PS based game developers need to know Win32 API?

Is it possible for a professional game developer to develop games by only scripting game engines and not using Win32 API?

\$\endgroup\$

5 Answers 5

1
\$\begingroup\$

No.

Consider that many, many games are now made for and sold on platforms that don't even have the Win32 API; I doubt many Android or iOS game developers have a daily need for Win32. But even if you work on a PC/XBOX only title, chances are you will be using multiplatform middleware or your company's game engine and someone else has already done the Win32 programming. The likelihood of a new developer needing to do much beyond a bit of maintenance of Win32 code is pretty low.

In general learning APIs for their own sake is not a productive endeavor. You're much better off learning concepts and fundamentals, then when you need to do something on a specific platform you don't start reading the API documentation like you're starting over from nothing, you find the APIs that do what you already know you need to do. There are a few exceptions to this like learning sockets, as that API is basically a de-facto standard if you need to do that sort of thing on any platform, so knowing anything about networking (at least lowish level) implies knowing how to use sockets. OpenGL is close as well, as it is the graphics API for mobile and WebGL is gaining some steam, although knowing the fundamentals is still most important.

\$\endgroup\$
11
\$\begingroup\$

The Win32 API is not a must. Professional games can be developed in anything from AGS to Flash to XNA to low-level C++. The Win32 API is only used for some Windows games, and not at all on non-Windows systems.

I will note, however, that a skilled general-purpose game developer would be able to pick up the Win32 API and learn how to use it if it was the best tool for the job. I wouldn't pick Win32 as the introduction for a new game developer, but it can be a useful tool and isn't fundamentally different than any other API. I find its naming conventions and way of doing business irritating, but I know that I can use it if I feel the need.

\$\endgroup\$
4
\$\begingroup\$

The vast majority of game devs I've worked with have had only a passing knowledge of Win32 at best.

Only a teeny tiny fraction of a game's codebase is going to use any platform-specific APIs in general, and unless you're the engine dev who's writing the abstraction layers for those, you can get away without knowing anything about Win32.

Most indie games even just use a simple Win32 message loop (which you can practically cut and paste from Microsoft's documentation) or use an existing abstraction library like SDL or SFML.

\$\endgroup\$
2
\$\begingroup\$

Win32 API is simply an interface one uses to natively hook up one's game into the infrastructure of Windows. Managing the application handler, creating windows pertaining to your application/game and registering with the system.

This is what most indie game developers deem as boilerplate code, the bare minimum that has to be done on a specific platform in order to get your relevant code up and running. After you've done that, your code becomes game specific. Mostly you won't tie into Win32 for your GUI needs because you'll have something of your own cooked up. Or perhaps, someone else's solution.

While knowledge of Win32 is useful if you wish to write some hardcore native tools that will wrap around your game engine's content editing environment, you'll most likely find indie developers coding wrappers in a more forthcoming environment, like .NET's C# which makes Windows GUI development a breeze. But that will make your code on Windows dependent on .NET frameworks which forces users to download it, so if that irritates you, you might run back to Win32 and doing a little bit more boilerplate code in return for which you'll gain some sweet nativeness.

It is logical to keep your game code (and that includes everything, from low-level rendering to high-level game logic) separated from platform-specific code. That will open porting opportunities and many other sweet things. Not to mention the ease of development which comes from abstracting away the boilerplate and concentrating on what matters - the game.

In that respect, many choose SDL (and thus OpenGL) to do their boilerplate. And some simply enjoy the challenge of extended understanding and getting the most out of every platform. Remember, the easier it gets, the more conformed you are to a given platform.

"By using the technology of the mass relays, your society develops along the paths we desire" - Sovereign, Mass Effect

Applies here. So, it is not mandatory to know Win32. But it's nice. However, with today's many platforms and available runtime-managed solutions which tie in with OS-included tools for application development, it would be a shame not to utilize the offerings.

\$\endgroup\$
-2
\$\begingroup\$

No

The Win32 API is simply an interface, it is not that much required for becoming a game developer. Having knowledge of Win32 is also useful.

\$\endgroup\$