Unity or XNA or Gamemaker?

Started by
6 comments, last by AdrianC 11 years, 9 months ago
Hi guys,

I'm super new to programming, and I'm still trying to wrap my head around frameworks vs engines. I'm working on a 2d game that is a mix of both action and some light platforming, as well as some strong, traditional adventure game influences. The three Framework/engines that I have narrowed my search to are Unity, XNA, and Gamemaker 8. I want to be able to build this game comfortably, while also having the tools I need to do what I want. In addition to that, I also want to have the skills that I learn while making the project be useful to me in the future, when I tackle bigger and more complex game designs. If you were in my shoes, which of these three would you choose to use?
Advertisement
This is really a matter of what you are looking to accomplish.

If you're looking to score a job in the future, XNA is probably gonna do you best justice. In fact, XNA is not really the core concern here, it's more about the actual programming. Of course, if you're inherently interested in programming, then this is a path you might want to take. Consider though, that it'll take some time before you are capable of building a 2D sidescroller.

If you want to make your game without having to go all the way to the metal, Game Maker will probably be best for you. It's pretty straight forward, and I'm thinking you might be able to finish the game without writing a single line of code, but don't take my word for it.


Now, a lot of people don't draw a clear line between design and development, so if you had design in mind, you might want to choose one of the engines.

I have never used Unity so I can't say all too much about it. You might want to compare it to Game Maker and see if it suits your needs better.

That's the thought process I would go through if I were to make a decision about something like that.

Yo dawg, don't even trip.

In order of flexibility:
XNA (highest)
Unity
Game Maker (lowest)

XNA is incredibly code heavy, theres no click and drag or anything you have to write all of your code. However XNA isn't actually a game engine, its a framework so it only actually does the rendering, 2d pixel collisions, some limited 3d I think, input and sound. You have to tie it all together yourself. This does give the developer a HUGE amount of flexibility, ANY game genre can be made in it. Uses any language that runs on the .net framework although its intended for use with C#.

Unity is a bit of a mix between the 2. It offers alot of click and drag interfaces for those not inclined to programming while simultaneously offering a huge amount of code options aswell. Only game I know of using it at the moment is Kerbal Space Program, there are more I just haven't gone through looking for any. In the free version you have a choice of 3 languages. C#, UnityScript (statically typed version of javascript) and Boo. Any of those 3 will yield the same results although UnityScript isn't a language you'll use elsewhere (you might use javascript elsewhere though but usually embedded in something else) and Boo is a language not very well documented yet. Most unity projects use unityscript or C#. The pro version ($1500) allows some C++ programming (although your main code must be in C#, unityscript or Boo) and embedding of some external DLL's, through that some people have integrated ironpython successfully and no doubt other languages too.

Game maker is click and drag. There is a programming interface but its a pro feature ($25), game maker isn't incredibly powerful but its easy. With some trickery, a bit of kludging and some knowledge of how game maker works any 2d game will eventually work. The pro version uses Game Maker Language, I don't know much about it.


I've not used game maker or unity but have used XNA. Really if you want to make this journey you have to know how to program, as both unity and XNA can use it and its a popular language elsewhere I would use C#.
For a traditional side scrolling game ( were your new to programming ) I'd recommend looking at Stencyl http://www.stencyl.c...tencyl/overview ( free to try ).
If you want to learn the basics of 2D game coding, try Pygame http://www.pygame.org/news.html ( free )

If you actually know how game coding works, use XNA .... or just go for it, building your game from scratch with C++.

I cannot remember the books I've read any more than the meals I have eaten; even so, they have made me.

~ Ralph Waldo Emerson

Thanks for the replays guys! I've looked into all three options (stencyl looks a bit too simplistic for what I am thinking) and I think I'm going to go with either unity or xna. I'm in no real rush, so learning more and more code as I go is not a problem.

As far as the flexability that xna provides, what will that allow me to do that unity wouldn't? And also, since unity is primarially designed for 3d games, will I run into any major problems when attempting to make a 2d game?
I'd recommend a combination of the above suggestions.

I started with Python console programs, then moved on to Python+PyGame. I think this is a great way to learn programming fundamentals. Try to start slowly and make sure you really understand how things work before moving on to more complex systems. If nothing else, write a text-based guessing game and Pong before you try a big game.

When you do start coding your sidescroller, I recommend using Unity. It's even easier to write a Unity game than a PyGame game, and many complicated tasks are already abstracted away for you. A 2D game in Unity shouldn't be a problem, but you may have to do some work to get it functioning as expected.

As to the flexiblity of XNA: the average game is not even going to notice the flexibility difference between Unity and XNA. You'll be able to use more external libraries from XNA and do more filesystem stuff; that's about it for most games. Unity is more crossplatform (PC/Mac/Linux/iOS/Android/Consoles -- latter three if you pay).

Good luck with your project!

As far as the flexability that xna provides, what will that allow me to do that unity wouldn't?

For the average single player game not a huge amount. But lets take an mmo game, unity usually provides its own networking code that isnt suited to mmo's. XNA you can bolt on any .net compatible networking library you want.
Where XNA is a framework not a dedicated language it can be used outside of games development, I for instance am using its gamepad input libraries to convert gamepad input to a windows keypress in a console application. This just lets me control my PC to a basic level with my xbox controller.
Unity uses the physx physics engine, XNA doesnt have one of its own but if you need one you get a choice, so whereas unity limits you to just 1 XNA will let you use whichever one you want and if you want to you can combine multiple into one project.

These are things that for now, you don't have to worry about. I think unity isn't a bad option for you.
[color=#282828][font=helvetica, arial, verdana, tahoma, sans-serif]

[background=rgb(250, 251, 252)] But lets take an mmo game, unity usually provides its own networking code that isnt suited to mmo's. XNA you can bolt on any .net compatible networking library you want.[/background]

[/font][/quote]

I'd just like to point out you don't have to use Unity's built in networking. Things like SmartFoxServer, or PhotonServer work great.

[color=#282828][font=helvetica, arial, verdana, tahoma, sans-serif]

[background=rgb(250, 251, 252)]And also, since unity is primarially designed for 3d games, will I run into any major problems when attempting to make a 2d game? [/background]

[/font][/quote]

Well Unity is a 3d engine, so 2d games will be more difficult to implement. Not impossible by any means.

This topic is closed to new replies.

Advertisement