Take the 2-minute tour ×
Game Development Stack Exchange is a question and answer site for professional and independent game developers. It's 100% free, no registration required.

I know that this is a difficult question and I hope I can convey my meaning. Over time I've used many different engines from XNA over Unity to Panda3d and even tried native directX once. My final impression is that an engine basically serves to do this:

  • implement a scene graph
  • offer classes like actor to add them to the scene graph
  • implement an asset pipeline that exports to actors or something similar
  • allow for custom logic scripts that hook onto the engine and are called at the right times. In Unity you can override update() in panda3d you can add methods to the taskmanager that are then called repeatedly. In Jmonkey they are called controls. It's basically the same. Additionally you can listen to physics events and the like.
  • then there's work done under the hood: physics, rendering and networking.

I appreciate all of these points very much and acknowledge the comfort a good engine can offer. The problem is: I'd like to create a game in a comparably young language (Google's Go) and there's no engine out there yet. Bindings for OpenGL exist and I figure I could easily hack a little engine of my own together.

The points one, two and four are not too difficult. I'd do the rendering with custom shaders anyways so that's work that has to be done in any case. For now I don't need complex physics and the standard raycast and collision check wouldn't be too hard for me. The only problem is an asset pipeline because I've got no experience in processing 3d data at all. I've only lived on the programmatical side up to now and the 3d models I've used were admittedly ugly. In the end it will probably add up to a weekend of coding and ongoing maintaining work.

The bottom-line is: I don't have to use go but then again there's no deadline for the project and I figured it might be fun to use this language. Is anyone out there still using "pure" OpenGL and can tell me about the work that lies ahead? Have you ever done this before?

Do you think that low-level OpenGL is a too complex choice for a one-man team or does the work to hack together something of my own pay off in the end ?

EDIT: You might want to read the comments below Nicol Bolas post since they explain the question a little better.

share|improve this question
4  
I don't think this is really an answerable question. What is "productive enough"? That's really on a case-by-case basis. You seem to have at least some understanding of what it would take to do under the hood, is the use of this new language really worth it to you to lose the benefits of having an engine to start with? –  Tetrad Jan 15 '12 at 17:04
    
You're right there's no definite answer to my question. I'd like to have some advice from more experienced programmers: How does it feel to use low-level opengl. I'd like to know how uncomfortable a custom engine really is and if the fun of using go is worth it. –  lhk Jan 15 '12 at 17:07
1  
That's still too subjective a question for this site; it's something better suited to asking in the chat. –  Josh Petrie Jan 15 '12 at 17:24
1  
@JoshPetrie: True, but it's also a question that's way too big to ask in chat. –  Nicol Bolas Jan 15 '12 at 17:53
2  
Not at all, OpenGL "Engine", you could get that done in a week, I think what you will miss from Unity, Panda, and XNA is the framework (Simplified interfaces to DirectX and XAudio2), boilerplate code (Window creation, limitations on library compatibility), and code infrastructure. –  Matt Jensen Jan 15 '12 at 22:39

3 Answers 3

up vote 6 down vote accepted

Whether or not writing directly to OpenGL is "too complex" for a one-man team depends almost exclusively on who that one developer is.

Whether or not the work to hack something together will "pay off in the end" depends almost exclusively on what that one developer considers to be an acceptable payoff.

I've built my own game engine using raw OpenGL (including cross-platform support, sound, physics, memory management, etc). It took a lot of time. I never completed a major game with it. It certainly never "paid for itself" in monetary terms, but I learned a lot of things in the process. Did the choice pay off in the end?

Well, that depends on your point of view. And it's really not a question which anyone else can answer for you.

share|improve this answer
    
"exclusively on who that one developer is." Obviously needs dependence on "what the game is" as well. –  bobobobo Jan 16 '12 at 4:12
    
In my head, "who that one developer is" included that person's goals and aspirations. Including the game that they wanted to make, and why they wanted to make it. Apologies if I didn't make that clear. –  Trevor Powell Jan 16 '12 at 6:37

The problem is: I'd like to create a game in a comparably young language (Google's Go) and there's no engine out there yet.

Then you need to make a decision: do you want to make a game, or do you want to program something in Go?

If you want to make a game, you should let questions like "what language do I use" influence you as little as possible. Yes, you will be avoiding languages that you don't know, but you should be focusing on languages that you know. You should do whatever it takes to follow the shortest path that allows you to get to the actual game making part of making a game.

If you just want to code something up in Go, then that's what you want to do.

Do you think that low-level OpenGL is a too complex choice for a one-man team or does the work to hack together something of my own pay off in the end ?

It depends on what you're making.

For example, take a game like SpaceChem. You would get more or less nothing out of using a pre-packaged engine to make SpaceChem. It's basically a GUI-based game. Coding directly to OpenGL is simple and effective.

Asset conditioning for such a game is also simple, because there aren't any 3D models. It's just 2D flatcards running around. Physics is non-existent.

The same goes for many kinds of GUI-style games. Bejeweled, etc. Indeed, using an engine like Unity would make these kinds of games harder to make, not easier.

Now, if you're making something more graphically complex like an FPS as a one-man team, then yes, I would suggest using some form of library or engine to make things easier.

That being said, I think you do not understand that there are levels between "Unity" and "Use OpenGL". Unity is a full-fledged game engine, which means it has features like physics, scripting, entity support, etc. OpenGL is just a rendering system.

There are many levels between those two points. For example, you could build an engine with Ogre3D, Bullet Physics, and Lua, with some entity glue to put them all together. You still get an asset conditioning pipeline (courtesy of Ogre3D), and Bullet has most of your physics needs covered. Yes, you have to write the entity system and the various Lua hooks. But you have everything you need.

share|improve this answer
    
Why the -1? Any explanation? –  Nicol Bolas Jan 15 '12 at 20:02
    
I didn't say Unity and OpenGl were equal. If I didn't know what the difference between a full-fledged engine and an interface to the graphics hardware is it would indeed be a long way to build my own engine. To answer your initial question: I want to do both (make a game and program something in go) and would have loved to merge the two. For a game the language is only one actually comparatively unimportant decision. Java (Jmonkey) , C# (Unity) , C++ (Ogre3d) and Python (Panda3d) will all help you build a great game. Panda3d and XNA have excellent support for 2d graphics, too. –  lhk Jan 15 '12 at 20:17
    
sorry I didn't vote you down –  lhk Jan 15 '12 at 20:18
1  
@lhk: My point is exactly that. Yes, you can code it all yourself. But for many kinds of games, this means it will make you take longer to develop your game. If you are trying to create a game, then you should use whatever tools make that take less time. If you're just farting around with some code that maybe someday you'll think about putting into a game, then that's different. That's not game development, that's "programming, with the option to make a game at some point". –  Nicol Bolas Jan 15 '12 at 20:25
2  
The "headache/pleasure" ratio varies from person to person, depending on your interests. It's extremely subjective. Try it and see how much you enjoy it. –  Josh Petrie Jan 15 '12 at 21:57

It depends on what you want to do. Building an engine takes time. If you're more interested in building an engine, exploring technology etc. than building a game, then go for it! But if your real goal is to build a game, and an engine is just a stepping stone to doing that, then maybe building your own engine isn't the best plan.

Plenty of people absolutely do use raw OpenGL and D3D. For example, some years ago I spent a lot of time building a set of OpenGL tech demos. These are in no way games, though, just an extremely simple programs and scenes built for the express purpose of showing off some technique. I don't consider it "uncomfortable" to use the raw API, but then I'm not trying to build a game.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.