Middlewares or not middlewares ?
Hey, First of all, I must apologize for posting a question that must have been posted many times before. However, I would like to bring my personal point of view to the topic. So the topic is : Do I have to use middlewares in order to develop my indie game ?What I call middleware is a tool that already has the implementation of a feature I will be using in my game. What I call my indie game is a 3D game involving AI and physics. I am realising that there is a middleware (or existing product) for... well, everything I guess : There are 3D engines, physics engines, AI engines and server products for on-line gaming, etc. And my problem is that I do not have a good experience using middlewares: I will list the reasons below. First, let's describe the two types of middlewares that can be found : - middleware that does not include source code (or only a part of it): I do not like these especially because you cannot know the implementation of your black-box and you cannot change it either. If the middleware provider goes bankrupt, you find yourslef with byte code that cannot evolve. - middleware including source code: It is cool to have access to the source code in case you want to customize something, but I know that most of us prefer to write their own code rather than learn someone else's. This leads me to my real problem behind the use of a middleware: Does it sound normal to most of you to learn by heart someone else's SDK in order to code your own game ? I can understand that someone doing this as an hobbyist might want to have a quick result, and does not mind about (not) knowing the middleware's implementation, but what about professionals ? I would like to start up my own developement studio. Does it mean that I have to learn Ogre 3D, or Kynapse AI SDKs ? Does it mean that I will have to recruit developpers who know them as well ? Unfortunately, I have not started doing this. I started coding some demos rendering 3D stuffs, implementing a BSP trees, AI steering behaviors, collision checking/response algorithms... and I just started playing with UDP for some on-line features... I tend to beleive that it is not that difficult to assemble all this and get something presentable out of it. Why do most of the books about programming games show you how to implement your own 3D, sound, network engine if the *smart* way is to use an existing implementation ? I remember reading on this very web site someone saying that it was not even worth thinking of starting the development of an indie game without using a middleware for the 3D engine... Should I first release a demo of my game that clumsily (in order to be quick) uses some middlewares, and re-implement it with my own code in case I find a producer ? So please let me know what is the *smart* thing to do before I start aiming for the wall ;) Thank you in advance. Cheers Stratboy61
If your problem is with middleware proucer going bankrut, that stick to open source Middleware like Ogre3d, ODE, OpenAI, OpenAL and such.
Middleware isn't exactly too hard to learn either.
Its spiffy stuff and it saves development time by allowing you to focus on the game versus specific technicalities.
That is unless you want to spend months developing your 3d engine so that you can finally start making the game vs spending a few weeks learning an API and starting right away towards the implementation of your game.
Middleware isn't exactly too hard to learn either.
Its spiffy stuff and it saves development time by allowing you to focus on the game versus specific technicalities.
That is unless you want to spend months developing your 3d engine so that you can finally start making the game vs spending a few weeks learning an API and starting right away towards the implementation of your game.
Thank you Cubed3 for your answer.
Well, it does make sense... but do most of the companies and professionals in the game industry use third party products ? What would make even more sense to me is to have someone in-house who knows perfectly his/her module, and who is able to modify/debug it.
Does it mean that these products should be used only for POCs ?
Sure, but you only learn their interfaces and how to use them. You do not learn about their implementation. And most of the bugs and problems you can face come from the fact that the implementation did not take certain scenarios into account. So either you must limit your implementation to the exact field of the middleware, or you take the risk to have *big* issues...
I should have also insisted that I had this question in regards to creating one's game studio, vs releasing something in no-time...
Thanks
Stratboy61
Well, it does make sense... but do most of the companies and professionals in the game industry use third party products ? What would make even more sense to me is to have someone in-house who knows perfectly his/her module, and who is able to modify/debug it.
Does it mean that these products should be used only for POCs ?
Quote:
Original post by Cubed3
Middleware isn't exactly too hard to learn either.
Sure, but you only learn their interfaces and how to use them. You do not learn about their implementation. And most of the bugs and problems you can face come from the fact that the implementation did not take certain scenarios into account. So either you must limit your implementation to the exact field of the middleware, or you take the risk to have *big* issues...
I should have also insisted that I had this question in regards to creating one's game studio, vs releasing something in no-time...
Thanks
Stratboy61
Quote:
Original post by StratBoy61
but do most of the companies and professionals in the game industry use third party products ?
most? probably. oblivion uses havok, speedtree, facegen, gamebryo, bink, and who knows what else. middleware tends to increase productivity and reduce development time.
This space for rent.
I've heard of companies firing old programmers who refused to learn to use middleware :-P
Middleware increases productivity, therefore it is definetly used a lot in the game industry. Especially since the quality of middleware packages has increased dramatically over the past few years.
You will be hard pressed to find a commercial game taht doesn't use some kind of middleware.
P.S. You didn't write C++ yourself did you? But you are most likely using it for programming! You don't need to completely understand something in order to use it, abstraction is good! Thats towards your second quesiton regarding open source middleware.
Middleware increases productivity, therefore it is definetly used a lot in the game industry. Especially since the quality of middleware packages has increased dramatically over the past few years.
You will be hard pressed to find a commercial game taht doesn't use some kind of middleware.
P.S. You didn't write C++ yourself did you? But you are most likely using it for programming! You don't need to completely understand something in order to use it, abstraction is good! Thats towards your second quesiton regarding open source middleware.
>Does it sound normal to most of you to learn by heart
>someone else's SDK in order to code your own game ?
Yes, it does - especially if the sdk has a good interface
Take a look at bink for example - anyone (with some experience
in programming) can have a movieplayer integrated into their
game within 30 minutes...
Now try to beat that by programming your own movieplayer.
Same goes for other sdk's, they can really help a lot.
Chances are that the middleware developer (especially the
commercial ones) know what they are doing and produce highly
optimized code :)
In sacred we used tincat (network), miles, bink, granny (3d
animation) and sacred 2 we are relying on even more sdk's
>someone else's SDK in order to code your own game ?
Yes, it does - especially if the sdk has a good interface
Take a look at bink for example - anyone (with some experience
in programming) can have a movieplayer integrated into their
game within 30 minutes...
Now try to beat that by programming your own movieplayer.
Same goes for other sdk's, they can really help a lot.
Chances are that the middleware developer (especially the
commercial ones) know what they are doing and produce highly
optimized code :)
In sacred we used tincat (network), miles, bink, granny (3d
animation) and sacred 2 we are relying on even more sdk's
visit my website at www.kalmiya.com
Quote:
Original post by Kitt3n
Does it sound normal to most of you to learn by heart someone else's SDK in order to code your own game ?
Yes, it does - especially if the sdk has a good interface
I have myself spent some time learning by heart how to use a special API. When this API disapeared, I thought that I should have learned the content rather than the container ;)
Stratboy61
It depends a bit on what you want to do. Since you want to start a development studio, it's usually better to use good quality middleware. For a reasonable price (sometimes free), you can get a quality piece of software that has already been built and (more importantly) tested and debugged for you. This usally saves you much more time and money than you lose from researching the available middleware and learning the API.
I'd recommend writing your own code only if you enjoy doing that sort of thing (many hobbyists here like writing engines more than games), if what you are doing is simple, if you want to learn how to do it yourself, or if no available middleware does exactly what you want.
In the case of a 3D engine, you'd probably be spending a month or two tops learning how to use the API for an engine, versus spending a year or two writing and debugging your own (unless you're a top engine coder already).
I'd recommend writing your own code only if you enjoy doing that sort of thing (many hobbyists here like writing engines more than games), if what you are doing is simple, if you want to learn how to do it yourself, or if no available middleware does exactly what you want.
In the case of a 3D engine, you'd probably be spending a month or two tops learning how to use the API for an engine, versus spending a year or two writing and debugging your own (unless you're a top engine coder already).
From the original post it sounded like you think that middleware is good for hobbist but not for profesionals. I think its the other way around. If you are coding games for fun and for knowledge (like me) you probably dont have a tight schedule to stick to so you could spend a little extra time reinventing the wheel. But when your goal is to make a living with game development productivity will play a much bigger role.
Simplicity is the ultimate sophistication. – Leonardo da Vinci
Quote:
Original post by ForeverNoobie
From the original post it sounded like you think that middleware is good for hobbist but not for profesionals. I think its the other way around.
When I look at big game companies, it does not seem that they will use Torque or Ogre3D for their 3D engine for instance. And I beleive that they do so because they do not want to look like the others, or be limited by the someone else's product. After all, whatever you put in a 3D world, if the engine is the same, it is probable that the result will show similarities. Like as if you'd reconize your $200 keyboard on radio --actually you don't because few recording studios use it ;)
If you are a big development studio, I assumne that you do not want to wait for Torque or Ogre3D to implement the latest technology in their engine, so that you can take advantage of it. Or you want your own engine to be better, right away, and probably sell it yourself. I beleive that big companies have R&D teams that directly add new features to their own products.
I think that some people who answer confuse the notion of tool with the notion of middleware (or engine). I think that it is not the same.
A tool helps you produce something whereas an engine is already a piece of your production.
I have nothing against using a tool to create models/vegetation, a tool to create animations or sound, or a c++ compiler to compile my code... I am sure that many companies use them. My main question is about the whole engine.
Thank you for your answers so far.
Cheers
StratBoy61
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement
Recommended Tutorials
Advertisement