Sure, they give you the ability to do that, but this is a double edged sword. While for most games this will be a non-issue, there is a overhead cost (both in programmer time and in some cases performance) associated the amount of genericity that the middleware packages you're referring to have. |
First lets cover these overheads you are talking about.
Programmer Time - Sure there is extra time that might be needed to either make your desired mechanics work nicely with the engine and write the custom functionality. But that extra time you need to put in is FAR FAR less then what would be needed to build an engine from the ground up to support the mechanics you want.
Performance Overhead - This might be a valid point if you have a team of programmers to command and have the years worth of engine building experience to back them up. But usually most people don't have that, so it is very unlikely that any custom built engine is going to perform better or even close to that of a mainstream middle ware engine.
Something very unorthodox probably cannot be written in a middleware engine without you having to actively fight against the design of the engine. Jonathan Blow, for example, had to write his own custom game engine because using something already available would severely hurt productivity. |
Not sure what you mean exactly by "very unorthodox" but I will say again that you can build pretty much any type of game you want on the mainstream engines that are availible today without much fighting against the engine. Again they aren't like the engines of old anymore where they only cater to one genre (Lets say FPS) and if you try and use it for any other genre (Say RTS) you will have to fight against it.
These engines today are quite generic in nature. For example just check out the example projects and all the projects that are in production that use UE4. There is simple platformers, first person shooters, real time strategy, board games, endless runners, role playing games, etc. Both in 2D and 3D.
As for Jonathan Blow I assume you are talking about Braid which was released in 2008 and he started it in 2005. So about 10 years have past since then and Game Engines have come quite a far way over that time.
Braid as far as I can recall was just a simple puzzle platformer with one major mechanic that set it apart which was the ability to rewind time. As far as I know every mainstream engine now days can easily handle this mechanic either through built in features or by using some custom code. Personally for me I think that it would probably take me at least twice if not three times as much time to write a game like this by building my own custom engine than it would if I had just used a engine like Unity or UE4.
I do admit that this is a relatively uncommon case, but in game development it really isn't unheard of that people just decide to just stop working with <insert mainstream game engine here> and just roll their own because they feel like they have to take up arms against the package every time they want to get work done because their game idea and mechanics are not conventional. Even with indies. |
Sure it isn't unheard of, but in my opinion most of them people aren't thinking straight. Now again this doesn't apply to people who have the manpower and knowledge to build a engine that can compete with the mainstream engines of today (Though it would still take more time to do so).
Anyways sure plenty of people decide they want to roll their own custom engine so they can have more control over how things are handled and so that it fits their game more cleanly. But realize that there is three things that I very commonly see when people do this.
1) They never finish their game - I admit it always sounds like a good idea to build a shiny new engine that is specially built for you game idea. But most people don't realize the added time this adds to the projects development. They will spend months if not years only coding the engine and never touch a single line of code for their game. Eventually they just end up giving up because it is taking so long and they have absolutely nothing to show for it.
2) They don't give up but end up taking twice (If not more) as long to actually complete the game - Building a game is no easy task and it will take a significant amount of time to do so. When you add onto that the time it will take to build a game engine which is I dare say a lot more complicated then building a game you end up with a very very long development timeline. Basically to sum it up when you create a custom engine you are at least doubling the time it will take to build your game. Not to mention you are left with an engine that more then likely doesn't support half the things a mainstream on does, is probably slower and doesn't support as many platforms.
3) They actually do complete the engine and game but they end up with a engine that only works for that game - This happens more commonly then you might think. When you build a custom engine because you want to build some game you thought up more then likely that engine will be mainly focused on how that game works and that is it. This is not good because the only reason to build a engine is so that you can use it for multiple projects otherwise it just isn't worth the time sink.
It takes a great deal of experience to build an engine that is able to be used by multiple different games of different genres, so more often then not people will end up with a engine that only works for that one game and they basically just wasted their time with the engine.
I am not saying that Unreal Engine and Unity shouldn't/can't be used, but saying that they can do whatever you want with them efficiently couldn't be farther from the truth. Trying to force an engine to do something that it isn't meant to do is something you should never do. Just find another way. |
I feel NoXzema covered this quite well already so won't comment on this.