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

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

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

Advertisement

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

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.

Consider it pure joy, my brothers and sisters, whenever you face trials of many kinds, 3 because you know that the testing of your faith produces perseverance. 4 Let perseverance finish its work so that you may be mature and complete, not lacking anything.

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


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.

jmillerdev.com

Follow me @jmillerdev


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

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.




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

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. happy.png

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!


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.

AniMerrill, a.k.a. Ethan Merrill

This topic is closed to new replies.

Advertisement