Well, except for all the people who do ship products, and even license the code onto the not-from-scratch folks I mean, they've gotta get their code from somewhere.
That contractor is what you sound like when you insist on writing things from scratch, while pretending to have the goal of actually shipping code.
Are you the "From Scratch" type?
. 22 Racing Series .
....
Those analogies that are brought up in discussions like this just suck. I may be just a hobbyist, but don't tell me building up a shed from totally zero (no tools) equals to making a program/game/whatever from scratch? Yup, a shed would would take something like you said. Impossible. Now don't tell me shipping a program that is on the level of a fucking shed is impossible.
Really, the discussion was quite civil until now...
Maybe it's just me, or my English is not good enough, but digging through documentation is much-much more work than doing some things from scratch. Maybe in the long term it would be more beneficial, but I don't have to ship, that's true. According to my limited experience with working with professionals/contractors, NIH is the smallest problem I saw. Bigger was that they shit in our faces and tell things like "that's not possible because the library which we are using doesn't [explicitly] support that and it would be too messy to add that feature [which is some basic conditional formatting of a GUI element]" and still don't ship after months. I'm really starting to feel that I could have finished that shit by now.
Also, I strongly encourage you (and Hodgman for that matter) to re-read the top of the post where I explicitly stated that I'm not talking about people who (A) are just having fun or (B) have a genuinely novel problem to solve.
Wielder of the Sacred Wands
[Work - ArenaNet] [Epoch Language] [Scribblings]
I quite agree with ApochPiQ. If you goal is fun/hobby/learning then there is no reason to not do everything from scratch if that is what you want to do. I know when I first started out I had to reinvent ever wheel known to make my simple RPGs. But if you goal is to get something playable for other people and maybe to sell then doing everything yourself is probably the last thing you want to do. If your game is so unique that you can't make something work then so be it. But it does seem like a lot of people that can't find an engine that "fits" are making yet another generic pixel art indie platformer or an overhead RPG/roguelike.
TLDR - Do whatever you want, it's your game.
I strongly encourage you (and Hodgman for that matter) to re-read the top of the post where I explicitly stated that I'm not talking about people who (A) are just having fun or (B) have a genuinely novel problem to solve.
The fundamental question is simple: do you care about making things for other people, or do you only care about yourself?
If you are only in it for yourself....
[Otherwise:] what if we want to make things for other people to use?
There are two options:
1) Code exists that is sufficient for doing what you need
2) Your needs are so unique and demanding that nobody else has done it before
OK, I'm making stuff for myself and others, but it already exists. There's a thousand and one graphics APIs out there, but most are free and flawed, or extremely expensive (and flawed).
I've prior experience working on other company's products within this category, and bet myself (against the risk of just wasting time) that I have the capability to make my own one (which would also be flawed, but differently), so I can extend #1) with:
1.b) Code exists that is sufficient but not ideal for doing what you need, but you have the capability to go full NIH anyway, and maybe save money in the long run.
Sometimes you can't afford to buy the existing code.
Maybe it's a waste of time, or maybe you become on of the companies that others turn to when they're in situation #1...
My yet-another-graphics-API is in 3 games / ~10 SKUs now after 2 years of dev, which is why I'm being cocky I can now spend that income on licensing someone else's physics middleware instead of writing my own
Graphics APIs are a completely solved problem, but there's still plenty of room for different competing solutions.
If no one ever wrote new code for others, then we'd all be using alta-vista and writing webforms in PHP3. Sometimes you just gotta compete.
. 22 Racing Series .
Your separation between the 2 types of people isn’t lost on me, but your framing of the question in your first sentence is poor.Also, I strongly encourage you (and Hodgman for that matter) to re-read the top of the post where I explicitly stated that I'm not talking about people who (A) are just having fun or (B) have a genuinely novel problem to solve.
It comes off as, “You either write code for others or you are selfish.” I assume you didn’t mean it that way.The fundamental question is simple: do you care about making things for other people, or do you only care about yourself?
In any case, being selfish is sometimes selfless. Focusing on one’s own personal growth is a necessary step for eventually being able to write valuable code for others.
L. Spiro
I restore Nintendo 64 video-game OST’s into HD! https://www.youtube.com/channel/UCCtX_wedtZ5BoyQBXEhnVZw/playlists?view=1&sort=lad&flow=grid
I write primarily from scratch because I'm basically lazy.
I start out writing from scratch to learn a new language or API I'm interested in (e.g., C++ and DirectX,) because that's how I learn most easily and end up with good understanding. Actually, I don't know how else to do that when starting out.
After I'm familiar with the language/API, experience has taught me in general it's faster to write stuff myself than take the time to: a) download/install a library; b) uninstall it and download/install it again because I got the wrong version the first time; c) read the documentation (if it exists); d) implement something from the library which then doesn't work as expected; e) re-read the docs and debug the code; f) repeat steps d) and e) at least a couple times for each new "thing" I want to do. Etc.
That's not to say I don't cut-and-paste my own legacy code into a new project. In that sense, I use my own "from scratch" engine as the basis for each new project, making revisions or refactoring as desired.
Also, there are some libraries that are just too convenient to ignore. Even then, it seems I have to drag such libraries into my new project, re-read the docs for that library, remember about DLL-Hell issues, etc.
Please don't PM me with questions. Post them in the forums for everyone's benefit, and I can embarrass myself publicly.
You don't forget how to play when you grow old; you grow old when you forget how to play.
For me probably because I'm scared (I think that I just cannot admit it to myself, that I really don't know what game I want to make...
Im trying to excuse myself: "I can write my self an engine only for educational purposes", as someone said above I also can say "This is something i made" or "Im in control of everything", but in the business world this does mean nothing.
So practically I don't know why I'm writing my own engine, and I hope that I'm on the right track.
However, understanding how to do something and choosing to use an existing solution is, to my mind, a stronger position to be in than having no choice but to use an existing solution since one does not know how to do it. Particularly when things go wrong.
The shed example above is of course taken to extreme. I see it more like choosing from a pre set choice of shed shapes, or sawing up planks yourself to make the shed whatever shape you wish personally.
The shed example above is of course taken to extreme. I see it more like choosing from a pre set choice of shed shapes, or sawing up planks yourself to make the shed whatever shape you wish personally.
Do you go to the local building materials supplier and pick up standard framing lumber and sheeting materials, or do you go into the forest with your axe and chainsaws? Or do you order a prefab unit and have it dropped off later that afternoon all ready to park your lawnmower in?
If your signature on a web forum takes up more space than your average post, then you are doing things wrong.