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

Started by
24 comments, last by Nicholas Kong 10 years, 9 months ago


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?

Advertisement

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


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

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.

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! smile.png

Hope that helps! smile.png

- Jason Astle-Adams

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


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.


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.

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???




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.

This topic is closed to new replies.

Advertisement