Not really for me, I tend to get a lot of the science projects… But yes, a fair bit of it is known tech. However, the software engineers should not be re-inventing the wheel for each machine either.
You don’t reinvent the machine, the stuff that is known in software engineering is like words a few idioms and maybe even some well known paragraphs, with some general logical approaches to problem solving as compared to literature writing.
Software engineering is akin to some sort of Logical Art, you have to be creative and you have to be logical, not even worth mentioning is that you need to know how to code, syntax and all that. If you are not doing something that you have done before and in development that is around 90% of the time, you are always at the frontier of your knowledge, always in uncharted territory and always learning.
You do get better, yet not so much at writing the actual code, you get better at structuring your logic and code, with experience you can tackle larger and more difficult problems with less code and less implications.
As for the timescales, you can estimate time needed for the thing that you have already done, pretty accurately. As for the unknown and uncharted, a single task can vary from 1 hour to 1 week, depending on what you run into.
Boy, I don’t know, I still think programmers get a pass due to managers not being able to understand code, like they think they can understand mechanical drawings or electrical schematics and tell us mech/elec engineers how long our stuff should take.
My point is that an honest best estimate by a programmer can be off by a factor of 25.
I’d like to see a company that could actually reliably schedule software.
Even software houses using Agile can only get so close. Part of the problem with software development is that if you haven’t done a particular thing before, you can only really guess at how complicated it’s going to be based on similar stuff you’ve done before, but it’s typically those unknowns that throw up complications that lead to delays. Any kind of 3rd party integration tends to also add a whole heap of unknown complications into the pile, even if you’ve used them before (it’s always fun to have the API endpoints your software is using change halfway through development, for instance).
It’s always going to be a hard thing to estimate, I think.
I think the major difference is that on the art side, things can be developped more or less in isolation of each other. Assets don’t affect each other; once an asset is done, modifying or working on another asset isn’t gonna make you rework all the previous assets.
Programming is very different in that aspect. Every single system you implement affects all other systems ( I’m simplifying of course, but that’s more or less true ). Other systems start to break down, or function in a different way than you expected. Basically, the entire thing becomes a beast that you can’t control anymore. And it’s exponential. Managing a dozen systems is still doable, adding a 13th requires to verify that the 12 previous ones are still working as expected. But when it’s your 500th system you’re adding, and it can break or affect hundreds of existing ones, suddenly the complexity explodes.
Basically, think of it that way: when systems are totally independant of each other, like art assets, complexity ( like the time & effort it takes to do the job ) is additive: if you have 5 assets, A B C D and E, then the total complexity of the system is A + B + C + D + E.
Programming isn’t additive, it’s more like it’s multiplicative. It becomes A * B * C * D * E.
The entire program’s complexity doesn’t become understandable by a human anymore. You can still design new systems, and “estimate” how long it’ll take to implement them, but that’s only in a “black box” environment. Now fit that same system in an existing environment with hundreds of other systems, and how the hell are you supposed to estimate how long it’ll take to make it work with everything else ?
To make a comparison as an artist, if A B C D are spaceships and you’re starting to work on “E”, imagine if things suddenly started to break randomly in either of A, B, C and D. Like, some vertices would get randomly displaced ( every time you add a triangle to E, you’d have to verify if the meshes of A B C and D weren’t affected. And most likely they were ). Or some textures get some corruption, and you have to partially remake them. Every. Single. Time. Imagine that ? Well, that’s the life of a programmer 
And in a nutshell, that’s why estimating how long it takes to implement something is more of the art of divination than engineering. And that goes worse and worse as your program grows. The beast feeds on itself.
If there is a patent on what there creating then a work around is necessary, Thus a new form of wheel.
That’s not why software engineers reinvent the wheel. They do it because it’s dramatically more interesting as a software engineer to write new code than it is to adapt or use existing code. Software engineers want to do software engineering. That means writing code. It’s human nature, and every guy out there wants to spend time actually doing what he’s trained to do. That’s true if the guy is a blacksmith, a lawyer, a doctor or an electrical engineer. They want to practice their trade. And to a guy with a hammer, everything looks like a nail.
I’m not going to start replying to this because it would lead to a very nasty rant. You are NOT supposed to be thinking that way anymore.
This is very awesome Keith, just 1 tip in case you are not aware already. Be cautious making a KS about a multiplayer deathmatch in space only game, people atm REALLY don’t want that, but want a more campaign MP driven story game.
There is a game already out called Starfighter (link at bottom) and they are struggling because of this, HOW do I know? because I have gone around asking people about it and trying to get support and almost everyone is like “I don’t want another MMO deathmatch in space game, I want story, exploration and things to do”.
SO, a word of caution if that is what your going to pitch to people, I would try to explain that the Solar system will have many things to do with your friends with short-medium story and campaign events for all to enjoy. Along with nice additions of PvP corp battles and struggles.
(https://www.kickstarter.com/projects/impellerstudios/starfighter-inc)
Note: The above KS ‘may fail’ because people don’t want another MP shooter! Yes they have COOP in mind but its been pushed to the ass-end of the KS pitch which will hurt them dearly to generate interest.
Footnote: If you need 1mil to achieve the above, then do it. Don’t skimp and say well with $200k we can give the basic deathmatch in space with modes… NOPE KS fail. Trust me when I say people are fed up with PvP only based games. There are 100s out there that fill that role VERY well already.
That takes serious $$$$, way more than what we are planning to ask in our KS.
Does it cost anything to launch kickstarter project and failing to reach the asked funds?
… you know just a thought
And …you know… i think perhaps there is better alternative to this mess then kickstarter.
Have you ever considered: AAA Indie (INTERSTELLAR MARINES) style of funding ?
It seems like a good way for larger projects like Infinity.
Hey go ahead make a pure PvP experience. But be aware it may flop because that market is saturated already and people just don’t like the idea. I will pitch in non the less, but trying to convince others will be a serious undergoing.
Also I’m not talking about matching Star Citizen story. More like talking about some smaller coop type stories/campaigns people can go do together. No need to go full Hollywood here!
Battlescape is not a large project. The scope of the project is what we feel we can handle for our first game.
We can only present what our current team feels it can produce. We will not have the team/resources to generate consumable content at a rate which would be required to facilitate a compelling campaign.
So you are “ok” with not getting funded?
If it were that easy to just find a bunch of cheap code in a dumpster somewhere, slap it together and get something functional im pretty sure there we would be all be swimming in it by now.
What has since allowed development projects to be easily estimated? Im wondering if your talking about high level stuff with plenty of performance headroom, or some new set of standards or a methodology im unaware of. Not that inovae’s date setting hasn’t been overly optimistic so far but this seems to be an exaggeration.
We are swimming in it, but the granularity is pretty coarse. Note that I-Novae Studios is building something that they intend others to reuse. We have Windows, OpenGL, DirectX, CUDA, and countless game engines that are either free or darned close. There are piles of free packages on the web to tackle all manner of software problem. Certainly people are publishing papers on how to accomplish a variety of interesting and difficult things in software. We’re getting to what I’m talking about, but slowly. It’s just not organized down to the component level yet. It’s very coarse granularity.
The natural headwind here is that programmers don’t want to reuse other people’s code.
Nothing has changed. This is bonehead simple stuff. If you don’t know what you’re doing or how you’re going to do it, then you can’t say how long it will take. This stuff is as old as the hills, but people just don’t do it.
-
Functional specification. Define what you’re going to build.
-
Design specification. Define how you’re going to build the functionality.
-
Task breakdown. Define the steps that you’ll take to implement the design.
That gets you to a completed implementation. Code, art, documentation, web site, you name it. If it’s a deliverable, then you need the what and how, and then the detailed steps you’re going to take to make it happen. If you can’t identify the detailed steps then you either don’t know what you’re doing or nobody knows how to do it. That’s going to play havoc with schedules.
None of this requires documents the size of the government budget formatted like a copy of Wired magazine. It means communicating this information to the people that need to receive it, and it means making sure that everyone ends up on the same page.
I have yet to find a piece of copy-paste code larger than a few lines of code that works as intended without me having to re-implement it. Seems that anything taken from somebody else, just does not integrate how it’s supposed to, or is inefficient enough to warrant a re-implementation.
Good thing about this is that I know what all of my code does and how…
We can’t lie and say we’re going to make a game that we’re hopelessly unequipped to build. IMO.
You also can’t dumb down the scope to such extent that a 2 man indie team can build for $50k and ask $500k for it. @TheRiddick is giving his advice based on some research that he did and taking a hard stance without even a hint of consideration is not really the best approach.
Not sure where you are coming from with this, but we intend to ask for what we need to build the game based on our scope and budget, that has always been the plan. As far as adding in a bunch of PvE gameplay, a story, a campaign, that’s simply out of scope.