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

Started by
10 comments, last by Vortez 9 years, 11 months ago
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?
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.

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.

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.

They call me the Tutorial Doctor.

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.

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.

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.

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.

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).

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

This topic is closed to new replies.

Advertisement