Hacker News new | ask | show | jobs
by amarsahinovic 4658 days ago
As with everything else in life, it depends. If you want to build 3D games, then by all means, use Unity (or equivalent). But if you want to build 2D games, I think that GameMaker does a good job (I know you can do 2D games with Unity, but still).
2 comments

Unity 4.3 is gaining "native" 2d tooling: http://blogs.unity3d.com/2013/08/28/unity-native-2d-tools/
I just saw that, seems interesting, I'll be checking it out.
Unity offers a full C# or JavaScript(-esque) development environment, far more flexible than GameMaker. It also supports 2D or 3D depending on your preference, even allowing you to switch between them if you want. Keep in mind a lot of "2D" games are really just 3D ones with no depth because OpenGL and Direct3D are the only way to do real-time graphics.

Unity "free" is superior to GameMaker in virtually every regard, and the Unity Pro version, which costs three times as much, is a significantly more capable platform.

It probably is superior (I haven't used it, read a few tutorials just to check it out), I'm just saying that there are people who don't need all the stuff Unity provides and are very satisfied with GameMaker.

I remember using GameMaker years ago, and was very pleased when I made my first "game", and all I did was use couple of basic features. For the things I am interested now (simple 2D games), GameMaker seems like the best choice. When Unity 4.3 goes out, I'll check it out and see how it compares to GameMaker based on my requirements.

> OpenGL and Direct3D are the only way to do real-time graphics.

I'm sorry, what?

How else do you get pixels to the screen at reasonable frame rates? You load it into a texture and place it on a 3D polygon that just happens to be sized the same as the screen, making it in effect a 2D canvas with 1:1 texel to pixel mappings. Doing old-school "bitblitting" isn't going to cut it today, the overhead is too huge. GPU texture manipulation and layering is orders of magnitude faster than what you can do in the CPU space.

Windows uses Direct3D for the native UI, and OS X uses OpenGL for the same thing.

Your definition of "reasonable" really needs a qualifier here.

If you're doing AAA games in 2D, yeah you will use the GPU. But an indie game? You probably don't need it. Especially if you're writing the game without Unity (i.e. straight C++). The costs of setting up and working with 2D in OpenGL is high. I've done it. It's not fun, it's not pretty. It's a bitch, plain and simple. Texture atlases, font rendering, UV coords, texture uploading, vertex buffers, shaders. That's a ton of crap you have to worry with. Just to render simple 2D sprites to a screen. Many people can and do skip it and go straight to SDL or somesuch. It works, and modern CPUs are more than adequate.

Most of the popular 2D engines use OpenGL or Direct3D in the back-end, it allows them to do compositing much more easily, and at near zero cost. You don't have to worry about a thing if you're using the right library, it's no harder than the usual canvas calls.

This isn't just about performance. On a phone it's about not burning the battery down by loading down the CPU with expensive tasks that the GPU can do more easily.

Don't forget you can do your font rendering in the classic environment, then ship that texture image over for placement. It's not all that difficult with the right tools, many of which get packaged up for you transparently. You're not stuck in OpenGL by any means.

Most "2D" games are just 3D games rendered in isometric mode, top-down, with the depth information being used for layering.

> This isn't just about performance.

Yes, but let's not forget you made it about performance.

There are plenty of reasons to choose to use OpenGL. Lots of freebies come with it. But you can still do 2D games without the GPU. That's the point. You can't just keep moving the goal posts however you want.