$49 ### Image of the Day Submit IOTD | Top Screenshots ### The latest, straight to your Inbox. Subscribe to GameDev.net's newsletters to receive the latest updates and exclusive content. Sign up now ## Extremely frustrated trying to find the right engine/language/api/whatever Old topic! Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic. 25 replies to this topic ### #1AniMerrill Members Posted 15 July 2013 - 07:55 PM Hello, this is probably going to be more of an open discussion rather than a Q&A session, but I just want to get some opinions and vent about first-world programmer problems. I've been working on a project for two years now with a buddy of mine. I feel like I've tried everything available to make this game happen. I've learned a slew of languages, downloaded a hundred tools (usually each with its own scripting language), tried dozens of libraries, and its just starting to get to me. I'm technically the programmer of our two man team, but when it comes down to it we're both really aesthetics driven... it just happens I'm a little bit better at programming than he is due to some formal exposure during school. I'm just absolutely fed up with it though because I can't seem to find the right tools. Every half-decent game "editor," I suppose you would call it, let's you get right in and start toying around with mechanics, but eventually you hit a brick wall because some obvious feature isn't included (like custom controller input) or the ability to add custom implementation is hidden behind a hefty price tag just to see the source code. On the other hand, writing a game from scratch has none of these limitations (except for hardware, obviously) but you have to leap over hurdles to even get something printed to the screen... or you have to download three layers of overhead graphics engines to get it to work, but then run into the same problem of implementation being behind a wall of someone's sloppy and poorly documented code. OR, if something seems easy and does a lot of stuff, you're definitely limited to like... only having it run on Xbox and PC like XNA and have to wonder how much you're alienating other potential users on Mac and Linux, or even other consoles if you could get some sort of license with them. I guess it's just overwhelming. I just want to maybe get some opinions on what has worked for others or advice on what I should try out to solve my own problems here. I just wonder if there are any good engines or whatever that can provide a decent balance of being able to rapidly prototype and design ACTUAL game mechanics instead of graphics/sound/whatever core, and having the ability to change these things if I want. (Also, if there are no specific tools you can recommend but have a good book you know of that helped you, I have some Barnes and Noble cards I'm looking to spend...) </rant> Thanks for reading, I would really appreciate anything you guys have to offer. AniMerrill, a.k.a. Ethan Merrill ### #2Wraithe Members Posted 15 July 2013 - 08:04 PM I have been using SDL (pre 2.0) with SDL_ttf, SDL_image and irrKland (for audio). I have started touching on OpenGL, but that is mostly for fun at the moment. Lazy Foo is THE site to learn SDL and OpenGL. He doesn't really go into game mechanics much, but the APIs he covers very well. Then I would hit up StaysCrisps tutorials over at DreaminCode, as he has a wonderful intro game engine design tutorial series (he now also recommends a book called SDL Game Development, looks great and teaches TinyXML, I cant WAIT to get this =D ). I have been looking for someone to program with (I am terrible at art) and my custom game engine (using SDL and irrKlang) is nearing completion, let me know if you and your friend would like an extra partner =) ! ### #3marcClintDion Members Posted 15 July 2013 - 09:38 PM Well... commercial games do tend to have very long credit lists, kind of like movies. There are usually way more than only two people involved in making them. Some of the more impressive games I've seen took 4 years to build, and once again, it takes large teams of people this long. Maybe some of the stress you feel is from having an unrealistic expectation of yourself. Edited by Brother Bob, 22 July 2013 - 11:51 AM. rollback Consider it pure joy, my brothers and sisters, whenever you face trials of many kinds, because you know that the testing of your faith produces perseverance. Let perseverance finish its work so that you may be mature and complete, not lacking anything. ### #4TheChubu Members Posted 15 July 2013 - 09:58 PM I sometimes have the urge to grab jMonkey Engine and go with that (im using Java + LWJGL right now). But then I think "f it, I want to code ze shaderz!" and then get back to making OGL calls and looking around for resources on file formats/scene managing/etc. You know, so I can implement those myself. Point is... Making a game is a huge task. If you care only for the game, you're bound to be frustrated along all the process because you just can't jump over all the learnin' and experimentin' you have to do to make it all work. I think that "making THE game" is a bad objective because making the game that you're dreaming about right now probably won't be a good driving force in 3 years when you're still learning new stuff and dreaming about a completely different game. So I just forget about the game and think what I want to do right now. A few months ago I wanted to learn how to render stuff on the screen, now I want to make a terrain generator, and probably after that I'll get back into OGL (need to implement textures) again, or maybe I wont and I'll try something different. I do have a game idea, of course its awesome and the best game I'd play, its just not on the top of the "realistic goals" list precisely. It will get there once I've learned enough, until then, I'm very entertained by just learning new things for now. I think its the most sensible thing to do, otherwise you're going to run uphill always. "I AM ZE EMPRAH OPENGL 3.3 THE CORE, I DEMAND FROM THEE ZE SHADERZ AND MATRIXEZ" My journals: dustArtemis ECS framework and Making a Terrain Generator ### #5tharealjohn Members Posted 16 July 2013 - 10:31 AM I guess it's just overwhelming. Sounds like you want all of the customization and options, without all of the consequence and hoops that entails. I agree with Maybe some of the stress you feel is from having an unrealistic expectation of yourself. I too have been in your position, and its mainly related to me wanting a "Call of Duty" result, without wanting to accept the kind of effort and work that takes. Read this: http://www.gamedev.net/page/resources/_/business/production-and-management/completion-vs-perfection-r3260 Its a great article I read on here a few weeks ago and it puts things into a nice perspective. As far as tools, I started with XNA, but now I am using Unity3d. XNA was fun to start with because its mainly just code. It allowed me to get introduced to some basic game concepts and 2D/3D math. I moved to Unity because of its cross platform support/asset store/3D editor and C# use, and many more. There is also a lot of resources for the api and lots of examples and tutorials. If you have not tried that, I would. But first, you should accept the fact that what you want is either 1. Not obtainable, 2. Obtainable sometime down the road, after you put many hours into more basic things. If you want to make a game, make a game not an engine. Thats my$0.02.

EDIT: I forgot to comment on this:

when it comes down to it we're both really aesthetics driven

You will struggle to get anything complete if you continue this. Unless you are good at art, to the level that you are satisfied, or can get the work from someone else now, you might as well just get over that. I struggle with this too, and its the #1 reason I fail at all my unfinished projects. Push yourself through this, and remember its about the game. Prototype fast, so you have a result, using some of the many tools you have probably already worked with.

Edited by tharealjohn, 16 July 2013 - 10:35 AM.

jmillerdev.com

### #6AniMerrill  Members

Posted 16 July 2013 - 11:17 AM

I too have been in your position, and its mainly related to me wanting a "Call of Duty" result, without wanting to accept the kind of effort and work that takes

I guess the thing is that I'm not trying to make "the" game, or the next Call of Duty clone. I'm really trying to make something as simple as a Legend of Zelda homage, 2D and everything. Its something indie studios everywhere seem to be able to crank out all the time. I'm just overwhelmed because I can't tell you how many times I've taken the base rendering shit (like SDL or Allegro), learned the entire library, bugged and debugged to get it to actually draw something, get like a character to walk around, and then ultimately run into a brick wall of tangled classes and game logic caught between making it easy on myself now or easy for myself later and make it OOP as possible. Which is the point when I'm not really sure what to do anymore, nothing I do seems to reflect an actual game concept and I'm just wading through mountains of my own code.

This is why I'd really wish there was some way I could just get to the prototype stage easily, but still have all the back libraries and everything I need to actually make the game I want. Like I did try Unity, for some reason even though it was terrible for a 2D game, and the thing that turned me off about it is there was NO way to customize controller input. That's a cardinal sin in the current gaming market, you can't do that if you want a product to be taken seriously. Not to mention ease of controls (the ability to use whatever you want, keyboard or joystick or gamepad on the fly) is something that's just important to me personally.

You will struggle to get anything complete if you continue this. Unless you are good at art, to the level that you are satisfied, or can get the work from someone else now, you might as well just get over that. I struggle with this too, and its the #1 reason I fail at all my unfinished projects. Push yourself through this, and remember its about the game. Prototype fast, so you have a result, using some of the many tools you have probably already worked with.

I am good at art, and also the reason I'm the programmer is because my partner is a FANTASTIC artist. Art is not our problem. It's getting code to do something interesting with the assets.

I guess really I feel every time I start with a good ol' fashioned library I'm reinventing the wheel. I'm not new to C++, or C#, or a slew of other languages, but I've just had trouble getting over that initial hump of coding where my artist can finally contribute something instead of just making him wait upwards of 2 years now to have a functioning game.

AniMerrill, a.k.a. Ethan Merrill

### #7kburkhart84  Members

Posted 16 July 2013 - 01:23 PM

Well, the reality of the situation is that there is never going to be a perfect engine/API/anything.  Considering you are a small team, and assuming you want to be able to finish something in a reasonable time, I would choose either Unity or GameMaker.

Unity has the free version, with some limitations.  But, you'd be better off learning how to work with them.  There is nothing limiting that will truly hinder you, and what is missing isn't that important to most projects.  Also, you are wrong about the custom inputs.  You can code your own, as you have access to Javascript/C#/Boo to code things yourself.  The IDE comes with a system already, although indeed it sucks because the controls can only be set outside of the game at the start.  On the other hand, someone already coded a really good system, that even can draw it's own generic GUI(for prototyping) called CInput.  If you use that, you easily get custom controls based off of very similar systems as the Unity functions, but customizable in game, and they automatically load/save with the playerprefs for you too.

GameMaker on the other hand, is kind of like Unity for 2d.  I think this is actually your best choice, since you mentioned wanting to make a 2d game.  It is even easier in general to use than Unity, both because it is meant for 2d, and because the IDE is easier to use.  It has some drag-and-drop coding, but I doubt you'd use it much.  The underlying GML scripting can do almost anything you need... including custom player controls.  GM has a system where you can include extensions, which can contain native code DLL's for windows, or simply groups of GML scripts, or a combination of both.  I have made one of these extensions for custom player input, which similar to CInput for Unity, makes things easier.  I didn't include an automatic GUI for it though, because GameMaker doesn't have an easy run-time GUI, which can be a good thing, because you can easily make your own.

I think your best bet is to grab one of these and just use it.  They both have massive communities, and tons of tutorials etc..., but Unity might get you further in the long run.  It actually can do 2d, though it is meant for 3d, so if in the future you think your next project might be a 3d game, having used Unity for your first project will be a jumpstart there.  Also, the free version is better than GameMaker's free version in my opinion, at least GMStudio's version.  Free Unity mostly limits you on high-end features, like full-screen rendering effects(bloom, glow, etc...) and realtime shadows, but you don't have any real limits as far as coding, objects, etc... and you can still use projection based shadows, which work well in many games and in many cases is all you'd need anyway.  But GMStudio's free version is limiting on the amount of objects you can have.  I don't remember the exact number, but you are limited to like 5 or 10 each of sounds, sprites, scripts, rooms(levels), objects, etc...  There is also the older version(8.1) of GameMaker, but I don't recommend it.  The free version can have as many of the resources as you want, but it has a constant watermark the whole time your game is running.  At least with Unity you just get the splashscreen, which isn't really a bad thing anyway.  But....if you know pretty much for sure that you are going to be doing mostly 2d games, then it may be better for you to learn GameMaker Studio, and though you'd have to purchase it, it is much cheaper than many things out there.  The basic version is $49, but I'd recommend you get at a minimum the professional version at$99.  It has lots of features that make it worth it, like integrated Box2D physics just for an example.  Then, you could also get the extra export modules(and/or the master collection with all the exports) for things like HTML5, Android, iOS, etc...  But those are more expensive and you may not need them.  In reality, I'd say Unity wins in this too because they recently made the iOS and Android exports free, though they aren't the "Pro" versions.

### #8Kryzon  Prime Members

Posted 16 July 2013 - 02:39 PM

I just wonder if there are any good engines or whatever that can provide a decent balance of being able to rapidly prototype and design ACTUAL game mechanics instead of graphics/sound/whatever core, and having the ability to change these things if I want.

use unity

### #9warnexus  Prime Members

Posted 16 July 2013 - 03:20 PM

Java is a good language to learn. You can run the code on any OS with no problem. Creating the java jar file is easy and can be easily distributed.

A book is not necessary. Most of the resources you will need in terms of guiding you the right direction in game programming can be found here or any other game programming website, blog or forum. I seen and read a lot of good online resources and also applied some of these ideas.

If you want something tangible, make sure the book has good reviews.

My Java 2D game is built using the library built into the language.

It is good to learn a lot from any langauge or api. What matters is what purpose does this particular language serve.

Try 2D game programming. It worked for me when I was starting out game programming. Super fun, challenging and learned a lot from applying new concepts.

Make the game to learn how certain features can be implemented and you will have a fun time!

Edited by warnexus, 16 July 2013 - 03:43 PM.

### #10AniMerrill  Members

Posted 16 July 2013 - 04:06 PM

Unity has the free version, with some limitations.

use unity

Like I did try Unity, for some reason even though it was terrible for a 2D game, and the thing that turned me off about it is there was NO way to customize controller input. That's a cardinal sin in the current gaming market, you can't do that if you want a product to be taken seriously. Not to mention ease of controls (the ability to use whatever you want, keyboard or joystick or gamepad on the fly) is something that's just important to me personally.

I've already tried Unity because I heard it was the next big thing. It's both inappropriate for my project, and if you can swallow the license fee UDK is a far better tool, albeit a little harder to customize- but at least its possible.

Java is a good language to learn.

Admittedly I've never tried Java and wanted to learn it, at least for experience, but I've heard a lot of bad news about it. Like that it has (or at least had) terrible performance issues, which being taught C++ and other C-language concepts first, is something that makes me uneasy about Java. I've also heard that the "Write once, play everywhere" concept is true... but often at some cost of certain versions being poorly supported or buggy or just fundamentally different still, so you'd have to put specific testing into each one anyway.

AniMerrill, a.k.a. Ethan Merrill

### #11Oberon_Command  Members

Posted 16 July 2013 - 05:46 PM

Like I did try Unity, for some reason even though it was terrible for a 2D game, and the thing that turned me off about it is there was NO way to customize controller input.

Unity lets you customize which buttons map to which abstract "input axes," among other things. I literally just opened up my copy of the Unity editor and looked. It also lets you read keyboard and mouse input directly, so I'd presume it lets you do that with game controller input as well.

So what do you mean by "customize," exactly? Did you check here: http://docs.unity3d.com/Documentation/Manual/Input.html?

### #12Kryzon  Prime Members

Posted 16 July 2013 - 05:58 PM

Like I did try Unity, for some reason even though it was terrible for a 2D game, and the thing that turned me off about it is there was NO way to customize controller input. That's a cardinal sin in the current gaming market, you can't do that if you want a product to be taken seriously. Not to mention ease of controls (the ability to use whatever you want, keyboard or joystick or gamepad on the fly) is something that's just important to me personally.

I've already tried Unity because I heard it was the next big thing. It's both inappropriate for my project, and if you can swallow the license fee UDK is a far better tool, albeit a little harder to customize- but at least its possible.

While you say that in Unity there's "no way to customize controller input", or that it was "terrible for a 2D game", please go to the Asset Store:

https://www.assetstore.unity3d.com/#/content/908

https://www.assetstore.unity3d.com/#/content/3129

### #13AniMerrill  Members

Posted 16 July 2013 - 06:41 PM

So what do you mean by "customize," exactly? Did you check here: http://docs.unity3d.com/Documentation/Manual/Input.html?

My problem with this method is that I had planned to have a full screen game experience, and so while yes- technically -you could change the controls it would have to be done in a very immersion breaking way. There was no way to access the settings of the Input from inside the script, which to me was a very fatal flaw... at least for my usage!

While you say that in Unity there's "no way to customize controller input", or that it was "terrible for a 2D game", please go to the Asset Store:
https://www.assetstore.unity3d.com/#/content/908
https://www.assetstore.unity3d.com/#/content/3129

Those are $20 and$60 third party add-ons that improve the functionality of free Unity. Controller scripting SHOULD just be there, I don't need to pay someone $20 for something I'd probably get for the full version anyway. And doing 2d is certainly possible, but its a giant reach around for anything basic, as demonstrated by the$60 price tag. Right off the bat you have to start dealing with a 3rd dimension which does almost nothing, you can no longer use the collision detection or if you do, they're all prisms stretching infinitely back into the Z-axis, and just overall a pain in the neck. But that doesn't mean I'm willing to pay someone for a piece of middleware that I have no way of guaranteeing the functionality of.

AniMerrill, a.k.a. Ethan Merrill

### #14BLM768  Members

Posted 16 July 2013 - 07:37 PM

Admittedly I've never tried Java and wanted to learn it, at least for experience, but I've heard a lot of bad news about it. Like that it has (or at least had) terrible performance issues, which being taught C++ and other C-language concepts first, is something that makes me uneasy about Java. I've also heard that the "Write once, play everywhere" concept is true... but often at some cost of certain versions being poorly supported or buggy or just fundamentally different still, so you'd have to put specific testing into each one anyway.

Java may not have quite the raw speed of solid C++ code, but if it's good enough for Minecraft, it should be able to handle just about any 2D game. Implementations of the runtime environment do have bugs, but you are pretty unlikely to run into one of them with this kind of code unless you're trying to run Java on a very obscure platform that hasn't had Java updates in years.

The problem I have with Java is that it tends to be quite verbose, but every language has its tradeoffs. In all, it probably wouldn't be a bad choice.

Posted 16 July 2013 - 07:38 PM

The right language and tool is any language/tools/library is any language/tools/library.  Any option will have drawbacks, and you can either accept them and move on, or find a way to work around them.  No great game was ever successfully completed by endlessly jumping from one technology choice to another; games are made by choosing some particular tech -- flaws and all -- and then working with it until the game is done.

Cross-platform support is great if you're able to do it, and isn't necessarily a huge hurdle if handled correctly, but given your situation I'd recommend forgetting about it for now and concentrating on a single easily targeted platform -- probably either Windows PC, Android, or iOS, with my personal recommendation being Windows PC as the least painless to target.  It's relatively easy to develop for Windows, and there's a huge market of potential players.  Yes, unfortunately Mac and Linux users might be missing out if your game is Windows only, but you'll still be reaching infinitely more players than the zero who can currently play your unreleased game.  If the game is successful and there's a demand for it you can always port to other platforms with a different technology choice (or a more expensive licence for an existing choice) at a later stage.  For a successful and experienced developer it might make more sense to go cross-platform from day one, but that just isn't your situation, and you'll be better off focussing on just getting a game released for any platform.

From what you've described, I would second the multiple above recommendations of Game Maker being a great possible option for you.  It's quick and productive, but still reasonably flexible with the GML scripting language and the ability to provide extension dlls, and at a very reasonable US$499 for the "master collection" it can export to an impressive array of different platforms and will include any future exporters at no additional cost. It's also been proven with a number of commercially released titles including "Legend of Fae" and "Serious Sam: The Random Encounter". Those are$20 and $60 third party add-ons that improve the functionality of free Unity. Controller scripting SHOULD just be there, I don't need to pay someone$20 for something I'd probably get for the full version anyway.

Maybe it should be there, but it isn't.  For a very small investment of $80 you could accept that buy an add-on and complete your game, or you can abandon Unity as a technology choice and have to start from scratch with an additional option again. Do you want a completed game, or not? only having it run on Xbox and PC like XNA MonoGame can potentially help to solve this. I've never tried Java and wanted to learn it, at least for experience, but I've heard a lot of bad news about it. Like that it has (or at least had) terrible performance issues Myth: Java not suitable for games. Yes, Java obviously has some performance overhead when compared to native languages like C or C++, but it's often very over-stated (usually based on historical data from much earlier versions, or simple unsubstantiated hearsay) and has not stopped a lot of other developers from creating some very impressive and successful games (Spiral Knights, RuneScape, Minecraft, many others) with the language. You also need to be reasonably good with C or C++ to get that potential better performance -- as a beginner or intermediate programmer it's likely you would make mistakes or miss potential optimisations such that your C or C++ code would actually perform worse than a similar Java implementation anyway. I just wonder if there are any good engines or whatever that can provide a decent balance of being able to rapidly prototype and design ACTUAL game mechanics instead of graphics/sound/whatever core, and having the ability to change these things if I want. I really think you're already working with these tools and are just being a bit too picky. No tool is perfect, and you have to accept or work around some limitations. For just$80 you've been shown some add-ons which could potentially fix your complaints about Unity.  Worrying that XNA doesn't support additional platforms shouldn't be a major concern if you're thus far unable to release a game for even one platform.  Game Maker would probably be a capable choice if you're willing to pay for a licence.

You don't need to find the perfect technology.  You need to stick with any acceptable technology and get the job done!

Hope that helps!

### #16AniMerrill  Members

Posted 16 July 2013 - 07:50 PM

I'm currently looking into both trying to use old fashioned C with SDL and OpenGL (mostly just because I want to learn C, for fun and posterity) and possibly using Python on top of that since there are some good options. If you have anything to contribute to this, I made another post over here.

AniMerrill, a.k.a. Ethan Merrill

### #17warnexus  Prime Members

Posted 16 July 2013 - 08:26 PM

The problem I have with Java is that it tends to be quite verbose

Can you give an example of Java being quite verbose? I'm curious.

### #18warnexus  Prime Members

Posted 16 July 2013 - 08:30 PM

Admittedly I've never tried Java and wanted to learn it, at least for experience, but I've heard a lot of bad news about it. Like that it has (or at least had) terrible performance issues, which being taught C++ and other C-language concepts first, is something that makes me uneasy about Java. I've also heard that the "Write once, play everywhere" concept is true... but often at some cost of certain versions being poorly supported or buggy or just fundamentally different still, so you'd have to put specific testing into each one anyway.

There is one thing you have to bear in mind if you ever wind up using Java.

1) Do your own drawing for the game. Do not use the paintComponent method because it moves the game objects rather slow.

I don't recall facing any buggy aspects of Java.

Edited by warnexus, 16 July 2013 - 08:31 PM.

### #19kburkhart84  Members

Posted 16 July 2013 - 08:53 PM

Well,I still make my same point, there is no perfect tool.  Even the one you code yourself has a big defect, the fact that you have to take much more time by coding it yourself.  I agree that for Unity it would be better if the input configuration could be done during the game itself, and I also agree that for a "professional" game this ability is very important.  But, if you use UDK, you will have to code it yourself.  If you use GameMaker, same thing.  If you roll your own engine, you'll still have to go it yourself.  So, in the end, it is better to go with what fits your features the closest, and then fill in the gaps.  For example, the \$20 CInput plugin for Unity is a great way to fill in the gap, since I'm sure Unity fits the bill in every other way most likely.  I have extensively used GameMaker, and I created an extension for custom input configuration, which I coded myself.  It was very much a great way to spend my time, because I can re-use that extension in all my games, and I've provided it free for anyone else to use if they are interested.

I agree, that if you want everything exactly your way, then you are better off rolling your own, maybe in C++/C#/Java, but just remember, how much time are you going to spend doing that?  I'm not saying for example that Unity is the end all engine, because like I said, there is no perfect engine.  And yes, Unity is somewhat of a PITA for 2d, unless you do 3d graphics/2d gameplay, or use one of the plugins.  Also, the UDK has the same problems for 2d games.  But if you are making a 1st/3rd person shooter, it is much better than Unity in that regard.  For anything else, I have it understood that you can do it too, though it may require more coding.  The one thing that I don't like about the UDK is the learning curve.  Unrealscript is a language that isn't used anywhere else, and isn't very close to any other language, whereas the 3 languages Unity uses are all similar to something else(or the exact same in the case of C#).  And then the toolset for UDK is much more complicated as well.  True, with more complexity you can get more power, and I agree that with UDK, this is the case...but I post another point.  Just how long do you want to be spending on a game???

### #20Oberon_Command  Members

Posted 17 July 2013 - 12:01 AM

So what do you mean by "customize," exactly? Did you check here: http://docs.unity3d.com/Documentation/Manual/Input.html?

My problem with this method is that I had planned to have a full screen game experience, and so while yes- technically -you could change the controls it would have to be done in a very immersion breaking way. There was no way to access the settings of the Input from inside the script, which to me was a very fatal flaw... at least for my usage!

I believe you can still get the raw input, and even if you can't, you can write your own input manager on top of the default one. Sure, it's a hassle, but then you don't have to pay anything. I looked through the Unity docs and skimmed the description of the input system available on the asset store and I didn't see anything that I couldn't write myself given a day or three.

I must admit that 2D in Unity can be a bit of an annoyance, however.

Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.