Jump to content
  • Advertisement
Sign in to follow this  
Nicholas Kong

How do you know if you are not reinventing the wheel in your language

This topic is 1589 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

It may sound like a straightforward answer like "Research until you are absolutely sure it has not been done".

But it does not seem to be an easy answer to me. Games are complicated piece of software. From experience, it would seem I need to build my own systems just so I can have total control of how the game looks(ie: GUI) how the game feel like (ie: animation system). I made 5 games. Finished a small scale rpg last month and every project I did always had its trials and tribulations.

Any thoughts if I am reinventing the wheel by building the above mentioned systems or is there something just like it?

Share this post


Link to post
Share on other sites
Advertisement

Whatever you do, you are probably reinventing the wheel. I don't think there's anything wrong with it though. If you have a problem and you come up with a system to solve it, good for you, and you learned something, wheel or not.

Share this post


Link to post
Share on other sites

It depends...

 

I re-invent the wheel all of the time (sometimes through ignorance). But, I do like having complete say on what my code does (and complete understanding on how it does it). Makes it a lot easier to bug find I think.

 

You have to account for your time too. If something will take you a year to code and you can have it right away by using another API, you need to weigh up that too.

Share this post


Link to post
Share on other sites

There are many styles of wheels though, and different types of wheels are more efficient than other types for specific tasks. Who invented the wheel really? Then ask who invented the car wheel, and the bicycle wheel and monster truck wheels. 

 

I want my system done my way for my purposes, especially if a library doesn't work the way my mind works, or is hard to use. 

 

I agree 100%.

 

I often find when I set my mind to it to sort out a problem, most of the time my wheels 'spin faster' in the end (compared to alternative solutions).

 

What is written by people can usually be improved upon by people.

Share this post


Link to post
Share on other sites

In the end it is a matter of taste. I see nothing wrong with reinventing the wheel especially when you like the act of coding itself, and it gives you more control.

 

As an example when I was looking to implement A* and other path-finding solutions, I could have taken any of the libraries that already exist, instead I made my own. It's not the fastest or most elegant implementation ever, but it works. And more importantly I do understand how the A* algorithm work, I can reuse it in all my games and specifically customize it to handle game specific cases. Things that would have been much harder to do with a 3rd party library. I would never do my own GUI system, though tongue.png.

 

That's also why I am kinda annoyed by the "unity love parade" I see each time a beginner is asking where to start. Suggesting heavy high level engines to someone who barely know anything about programming or game logic systems is doing him a big disservice imho.

Share this post


Link to post
Share on other sites

If you reinvented the wheel by accident then there is nothing to worry abbout.  If you reinvented the wheel because you evaluated the other possible solutions and they didn't quite fit then this is fine.
When reinventing the wheel does become a problem is when you insist on writing everything yourself just because you don't trusst anybody elses code.  I have worked on one XBOX 360 title that failed because the new lead programmer insisted on scrapping the third party engine that had been used for the last 3 successful games  and writing the new one in house he even insisted on writing things like XML parsers and zip libraries in house because he didn't trust third party libraries.  Naturally the game missed its deadline the publisher pulled out and a once successful studio laid off nearly all its staff and now consists of just two guys doing edutainment mobile apps.

Share this post


Link to post
Share on other sites

Reinventing the wheels tends to save frustrations and money.

 

Think of it like this: you make an egg omelette from scratch. And any time you need to tweak the ingredients, you know exactly how to make it. Using pre-existing tools is like trying to tweak an egg omelette someone else made.

Share this post


Link to post
Share on other sites

Reinventing the wheels tends to save frustrations and money.

 

Think of it like this: you make an egg omelette from scratch. And any time you need to tweak the ingredients, you know exactly how to make it. Using pre-existing tools is like trying to tweak an egg omelette someone else made.

 

I know how to make an omelette in fact I know how to make dozens of different variety of omlettes ( I worked as a chef).  However nothing beats the satisfaction of paying somebody else to do it for me simply because my time is too valuable.

 

Its the same thing with games you may think it will save you frustration and money but most games have deadlines (even indies can only last for so long before they need to ship).  Also there it is a known condition that most developers will see a piece of software and say "I can write that better and it will only take me X amount of time" and they nearly always either take much longer than they initially figured or they produce a much worse version but won't admit to themselves that it is worse.

One of the most detrimental problems in any software house is Not Invented Here Syndrome (NIHS).

Share this post


Link to post
Share on other sites

Also, some wheels are quicker to just make yourself, instead of trying to find a ready-made that fits your requirements.

 

3rd party code does not mean "no work", and not even necessarily "less work".

 

And its easier to evaluate the wheel-options if you have some experience in actually making wheels

Edited by Olof Hedman

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!