Followers 0

# Extremely frustrated trying to find the right engine/language/api/whatever

## 25 posts in this topic

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.

0

##### Share on other sites

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  =)   !

0

##### Share on other sites

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
rollback
1

##### Share on other sites

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:

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 0 #### Share this post ##### Link to post ##### Share on other sites 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. 0 #### Share this post ##### Link to post ##### Share on other sites 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. 0 #### Share this post ##### Link to post ##### Share on other sites 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 0 #### Share this post ##### Link to post ##### Share on other sites 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 0 #### Share this post ##### Link to post ##### Share on other sites Unity has the free version, with some limitations. use unity Read this: 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. 0 #### Share this post ##### Link to post ##### Share on other sites 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? 0 #### Share this post ##### Link to post ##### Share on other sites Read this: 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 0 #### Share this post ##### Link to post ##### Share on other sites 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. 0 #### Share this post ##### Link to post ##### Share on other sites 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. 0 #### Share this post ##### Link to post ##### Share on other sites 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. 0 #### Share this post ##### Link to post ##### Share on other sites 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. 0 #### Share this post ##### Link to post ##### Share on other sites 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 0 #### Share this post ##### Link to post ##### Share on other sites 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???

1

##### Share on other sites

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.

1

##### Share on other sites

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

The main example I've found is with I/O; to send an object on a socket, I had to get the socket's output stream object, then create a ByteArrayOutputStream, wrap that in a DataOutputStream, serialize the object to the DataOutputStream, convert the ByteArrayOutputStream to a byte array, and dump the byte array into the socket's output stream. Apparently, this is "proper, idiomatic" Java code. It has a lot of nice conceptual separation, but the separation is too fine-grained and leads to allocation of piles and piles of wrapper objects in some cases.

Admittedly, I'm no Java expert, though; someone with more experience might have found a more concise way of doing it.

0

##### Share on other sites

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 sounds as if you are too much focused on trying out more and more tools when your problem is something else. I suggest you read some books about software design and about how to structure a game, write down some basic design on paper before you start coding and use the tools you feel most comfortable/skilled with to try your skills on something small.

1

##### Share on other sites

Just so we're listing cross-platform, mobile-capable engines:

- AppGameKit: http://www.appgamekit.com/ ($) - Esenthel: http://www.esenthel.com ($)

- Leadwerks 3: http://www.leadwerks.com/ ($) - GLBasic: http://www.glbasic.com/ ($)

- Irrlicht: http://irrlicht.sourceforge.net/ (free)

- GamePlay3D: http://gameplay3d.org/ (free)

- Maratis3D: http://www.maratis3d.org/ (free)

Edited by Kryzon
0

##### Share on other sites

For your purposes I wouldn't just get a free engine, I would find an open-source one.

/grandpa voice

In my day, OGRE was all the rage.

It uses OGL for graphics so it might support mobile today, dunno.

0

##### Share on other sites
Urho3D

This thing is shaping up quite nicely for an open source lib. I know a couple people on this site besides myself have used it (I've only tinkered, really, but maybe someday I'll get motivated again to actually develop games) and looking at it, it seems to be adding nice features seemingly daily.
0

## Create an account

Register a new account