31
\$\begingroup\$

Usually whenever I want to start a game, I will think to have a good basic architecture for rendering and better game loop from scratch. I usually don't want to use existing engines. The reason behind it is that I want to implement it on my own to learn stuff.

But lot of blogs and devs say it's not a good option to go for re-inventing the wheel.

Am I missing something?

\$\endgroup\$
1
  • \$\begingroup\$ How often do you actually "start a game"? If you are rapidly iterating ideas, do whatever works. If you are making a magnum opus where a misstep is costly or time is limited, why waste time reinventing the wheel? If you are interested in learning how things work, why not write your own tech? What are your goals here? \$\endgroup\$
    – ChrisE
    Feb 18, 2011 at 22:52

9 Answers 9

15
\$\begingroup\$

No it's not a bad thing at all. Learning and the ability to learn is absolutely fundamental to being a good programmer.

BUT
The important thing when building something from scratch is to finish it to completion. It doesn't matter how hacky and unoptimized it is, if you complete it there's a sense of satisfaction like no other. It will all give you valuable experience and you can always make the code more elegant or perform better later on when you've got something functional. At the end of the day, the only things separating awesome programmers and mediocre ones are experience and practice.

Of course when you've got something done and want to create further games, there's no reason to reuse your old codebase.

If you're looking to start a career in game development, or any kind of development really, experience will take you very, very far. But if you're looking to churn out games quickly and easily (relatively easily, compared to writing your own stuff) use an existing engine.

To be honest with you, a combination of experience using your own code AND using a variety of different libraries and engines will make you a far better coder.

\$\endgroup\$
4
  • \$\begingroup\$ Thanks Ray that's helpful! but can you please list out game mechanics as well... \$\endgroup\$
    – Ayyappa
    Feb 18, 2011 at 20:05
  • \$\begingroup\$ No problem. I'm not completely certain what you mean in the context of your original question. What in particular are you after? \$\endgroup\$
    – Ray Dey
    Feb 18, 2011 at 20:27
  • \$\begingroup\$ It's ok i will make it a separate question.The other question in this post was removed(edited) as it doesn't relate the context a bit. \$\endgroup\$
    – Ayyappa
    Feb 18, 2011 at 20:30
  • \$\begingroup\$ +1 for the finish it line - actually completing a project is good experience. \$\endgroup\$
    – Cyclops
    Feb 20, 2011 at 18:33
36
\$\begingroup\$
i want to implement it on my own to learn stuff.

That's probably the most important thing. If your goal is to learn, writing your own rendering and game loop engines from scratch is fine, and a perfectly good learning experience. If your goal is to make a finished game quickly and easily, then use an existing framework.

\$\endgroup\$
4
  • 3
    \$\begingroup\$ +1. Just because an API or third party library can abstract away all the implementation details doesn't mean you don't need to know them. Using 'off-the-shelf wheels' will help you write finished code faster; but making your own wheel will help you identify which premade ones are the best, and most importantly how to optimize and debug them when the spokes start popping out... \$\endgroup\$
    – sebf
    Feb 18, 2011 at 20:16
  • 4
    \$\begingroup\$ +1 Don't reinvent the wheel, unless you're learning to make wheels. \$\endgroup\$
    – zzzzBov
    Feb 18, 2011 at 23:00
  • 4
    \$\begingroup\$ remember that this will improve your skills in game engine design, but not in game design. \$\endgroup\$
    – Dave O.
    Feb 19, 2011 at 1:03
  • \$\begingroup\$ This is also a worthy answer...thanks...but it's bad that i can't mark two answers :( \$\endgroup\$
    – Ayyappa
    Feb 21, 2011 at 7:23
10
\$\begingroup\$

Reinventing the wheel teaches you how wheels work.

\$\endgroup\$
5
\$\begingroup\$

Depends on what you're after. If you want to learn, reinvent as many wheels you feel like. I know people who have written their own JVMs or PNG loaders for the heck of it.

Most blogs probably give advice on how to get to the stuff that get you paid quickly, but I don't know if it's a good long-term strategy. If you don't know what you're playing with, how do you know if it's a good choice? What will you do when you hit issues, go whining on forums, or can you figure it out yourself?

\$\endgroup\$
0
4
\$\begingroup\$

There is a lot of discouragement about this phrase in the general programing community but I think we all know that many of us love nothing more than reinventing the wheel and finding a way to make it spin a little better, faster and cooler.

New technologies are coming out all the time which need people to reinvent the wheel. OpenCL and other GPU computing languages are a good example.

You could use a framework that did include this year's new capabilities but making it on your own, if you really do the research and make improvements on what's already out there,.. you can really trek some new ground in performance and utility.

Once you have invented a few wheels to get you rolling, you know your stuff pretty well as a strong bonus!

Plus it's damn good fun.

\$\endgroup\$
1
\$\begingroup\$

And there are those who claim they are more productive precisely because they re-invent the wheel.

Case in point: Eskil Steenberg, creator of World of Love (excellent video where he talks about his game, his engine and awesome tools, and his philosophy: http://vimeo.com/18423305 )

\$\endgroup\$
1
\$\begingroup\$

If it is your first time, even it is just for learning, it is still better to use some kind of engine because you will learn what the engine can provide for you.

"The wheel" using in the metaphor is the concept, not the implementation. Even you will not re-invent the wheel, you still need to choose whether you will buy one or you will make one by your own. Hence, creating your own engine is not even re-inventing the wheel, it's just you want to create your own wheel for some purpose, which might be for learning, for low cost, for small size or any specific usage or requirements.

\$\endgroup\$
0
\$\begingroup\$

The thing is, what takes a lot of time when doing a game is the actual content and asset creation and testing - not generally writing code. That's likely why it's easy to skip that part and use an existing engine to be able to spend more time on content, game design and higher level bugs.

I think, doing stuff from scratch to learn, will generate a good feel for the work behind existing engines and improve the ability to select one later on if needed.

For fun and for learning, do whatever you fancy. If I had to write content pipeline classes from scratch, handling all the annoying details and edge cases of the file system and asset loaders I would go insane - as long as I have learned enough to have a really good grasp for how to do it, I tend to avoid doing it if someone's already done it well (though true, a lot of frameworks and engines won't fit into my own idea of "good" which would be cause to rewrite something). If I don't know how to do it, I really like doing it to completion at least once, just to grasp the finer details of whatever it is - like Ray Dey already stated.

\$\endgroup\$
0
\$\begingroup\$

It's only a mistake if you don't have the time to learn. If you've got the time, go for it. If you don't, then don't do it.

\$\endgroup\$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .