Is it worth making games in OpenGL from scratch?

Hey guys,

I am interested in game designing and from some source I found out that OpenGL is used in making games.So I am learning it now. Till now I was able to develop some simple games like Tic Tac Toe, Snake and Tetris using OpenGL/C++. Now when I look at other game designers, I found out that they are using game engines for making their games rather than making a game from scratch using OpenGL.
Now the doubt comes, should I keep on learning OpenGL or rather try my hand in game engines for making games.
My heart says, “Hey! you are able to understand how things are working by making games from scratch and that is good for you.” But people say, “Don’t invent the wheel again.”

I think it is better when you just do it like you want. First of all I thought about using an Engine just like you but ist is better when you start from scratch because you will understand more and maybe you will be able to programm anything you want.

As Limas said.
Rather than ‘engines’ or ‘frameworks’ I personally prefer toolkits with helper functions that can be used independently.
This allows you to program your style, and whenever you have a part that is boring/difficult/cumbersome, use the helper. Image, sound, and model loading, complex collision detection, this kind of stuff.

Now the doubt comes, should I keep on learning OpenGL or rather try my hand in game engines for making games.

Well, the question you need to ask yourself is this: do you want to make games, or do you want to make game engines?

If you’re just playing around for fine, do whatever you want. But if you’re serious about actually making and potentially selling a game, then you need to evaluate whether an engine would be suitable for your tasks.

This article is a good informer of what you want should do. If graphics are not particularly important to your game, if graphics aren’t how you’re selling your game, then it would be a good idea to use a game engine that is appropriate for your needs. However, if advanced or specialized graphics is key to making what you intend to make, then you will need to make and maintain a renderer from scratch.

I am an undergraduate computer science student. I want to be a game designer and my institute does not offer courses in game design field. That is why I started learning OpenGL. So the final aim is to get in game designing industry. And as I am good at programming, I guess I will end up being a programmer. In this case what should I do??

Again, the question is this: do you want to be a game designer or a game programmer? If you want to design games, then you should use whatever tools you have available to make designing the actual game part of your game easier. If you want to program games, then you should practice that.

Contrary to popular belief, programmers don’t decide what games are like. Not in the actual industry. That task is relegated to actual game designers. The closest these people come to programming is doing some light-to-moderate scripting.

We’re in the hey day of game programmers. I would go any big site like Blizzard or Insomniac and look at their job positions, which include the descriptions and requirements.

I am really confused.

Confused about what ?
If you like game programming, do it.
If you prefer game design, do it.

Knowing that the smaller the game studio, the blurrier the line between those is.
But still :
http://2dboy.com/about.php
1 designer, 1 programmer
Compare to :
http://jobs.zenimax.com/index.php?a=search (then hit “Find Jobs”)

Here at my institute I don’t find anyone interested in serious game designing. So the fact is “I am alone here”.
I have just put my leg into it and started learning OpenGL. In making some very simple games, I could not distinguish between the work of game designer and game programmer. I did both the work. Now when I am still learning, I have two paths:

  1. Game designer
  2. Game programmer

Obviously if I want to give some output(This is what I want, I guess), I will have to design a complete game myself and will have to program it also.

So how do I decide my path?

Is is like, if I just want to design a game, I should go to some kind of game engine and if I want to be a programmer, I should concentrate on programming which probably won’t include using a game engine.

I am sorry if my questions are stupid, but please help me out considering me your younger brother.
Thank you

There was an article somewhere about “make games, not game engines”.
The point was that a lot of people want to make a game as a hobby and end up programming a game engine and then the project gets abandoned.
It is a lot of work. Using already written game engine is a good shortcut.

My passion for game designing is not a hobby and I am ready to work more provided it is useful for me.

I recommend you try making your own game engine from scratch, and design a game for that engine. See what you like and dislike about doing both and come to a decision about what you like more. All-in-all I think it would be beneficial to do both regardless of what you want to do in the long run for the sake of understanding how everything works together.

The difference between the designer and the programmer makes me think of a humorous quote from “Mu’s Unbelievably Long and Disjointed Ramblings About RPG Design”, where Design is the game designers and Tech are the programmers:

Design: “I want to implement this feature, it’s really cool.”
Tech: “This will never happen if you want this game to ship in this decade.”
Design: “But I NEEEED this! Do it!”
Tech: “Screw you buddy.”

Your questions are not stupid. My answer to you would be: only you can decide what’s right for you. I think you don’t need to, and shouldn’t, decide yet which path you should go down, and instead start going down both paths, to get a taste for which you prefer. You should also take into account how you eventually want to work. I don’t know where you live or where you eventually want to live, or what type of company you will want to work for, but it might be that those issues will dictate to some extent which path you should go down. For example, if there are no big game development companies where you are, then you will probably have to know how to do it all. Even if you do specialize in one area, I find that it is always good to have some knowledge about the other aspects of the business; to know how all the pieces fit together and what the issues are that other people in your company have to deal with.

I think the best way to know what a game engine ought to have, is to have used a game engine to design a game to see what capabilities in a game engine are important to a game designer.

If you know how to write a game engine, then you should rather easily be able to learn to use any game engine, because general concepts are the same. But if you only study how to use one particular game engine, then you may have a harder time learning how to use another game engine, because all you really know are how-to details and not why anything is as it is. What if you choose to only learn XYZ game engine now, but then when you graduate you find a company you want to work for that uses ABC game engine? Will they hire you?

Now is the time for you to acquire fundamental knowledge and general skills, not to specialize narrowly.

That was so nice of you people for answering my questions and clearing my doubts. I am feeling better now. I will continue exploring OpenGL and will make games from scratch and if I find that there are some things which I don’t want to do from scratch, I will try to find shortcuts for those things.

Thank you guys.
Cheers

I agree with those spoken, just one note to V-man’s quote “make games, not game engines”. Actually it is true that writing an own game engine can result in an abandoned project, however it is always a good learning practice, besides that I pretty feel that nowadays with the complex artwork in current games the issue is much more the production of the art assets rather than the programming and game design.

On a related note, if I were to make an engine from scratch about how long would it take to make a 3d physics engine, ragdoll physics, or multiplayer take?

Are these the type of things that we should find shortcuts for? Is it realistic for one person to do this alone?

For 3D physics, unless you are very good and/or you need only simple stuff such as sphere/plane collisions, you should use a lib.
http://bulletphysics.org/mediawiki-1.5.8/index.php/Features
Collision and physics in games before well-established libs were often crappy, fragile, crash prone, and plain annoying despite a lot of work from the teams. Especially when needed by gameplay, not just eye-candy.
http://www.gamasutra.com/view/feature/3339/postmortem_dreamworks_.php?page=3
Read step 5…

For ragdoll it is more debatable.

For multiplayer, even if some libs can help, to my knowledge you still have to code a lot of stuff, so this is probably the best candidate to do it from scratch. Not that it is a walk in the park.

So you if you have the opportunity, use shortcuts for these, unless you have a very clever idea or original feature you can implement.

ZBuffer, I agree with you, make game toolkits, then use them just like their union were an engine. This keeps the individual toolkits orthogonal.

To find out how engines work, download some open-source engines, analyze them with Understand C++, split them up into toolkits (this can be a bit involved) and voila you have some toolkits you can use in your game and you even lose the (L)GPL.