Middlewares or not middlewares ?

Started by
10 comments, last by Cubed3 18 years ago
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
Advertisement
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.
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 ?
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.
its a balance of productivity and learning and control. if you want to learn (probably where you are at im assuming) then learning huge sdk's isnt very percient. just do some simple stuff from scratch, get a feel for handling everything on a small scale. SDL is the only thing id recommend for this stage, OS API's arent worth learning imho.

if a sdk fits your needs then its not a bad thing tho. just make sure you are using the tools for the job, not the other way around.

most large companies dont use sdk's because its a risk like you said. its an acceptable risk for a start up tho. its just a question of perspective, you dont have the resources to avoid the risk and they do. id argue that its an acceptable risk for them even, but nerd machismo is a hard arguement.
>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
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).
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

This topic is closed to new replies.

Advertisement