Review
by Yasin · in Site Feedback · 05/16/2007 (2:23 am) · 2 replies
I started using Torque engine a few weeks ago. As a torque newbie I would like to share my toughts with you. Hearing thought from experienced programmer might be helpful for your future developments.
First of all Torque is very powerful engine and I like it very much, but it has some disadvantages.
1. Although Torque script is very flexible, sometimes it confuses things. Scripting is thightly coupled with engine which is a very big disadvantage from my point of view. For a very simple application you are forced to use scripting. As a programmer I can easily say that, debugging scripts is very painful operation. Also maintaining and pointing errors inside the scripts are very difficult.
2. Torque has very week documentation which shadows the power of the engine. Basically as a developer I want to see bunch of global variables and singleton instances (both coding and scripting sides) of the project I have been using. That is really impossible in this engine.
3. Also when you investigate codes, it is really impossible to follow executing statements. That is because a lot of main ingame states are changing outside the executed code. Changes takes effect inside the scripts, sometimes that can be a gap.
4. You have no idea which functions, global variables, object instances that you are allowed to use inside the scripts.
5. Documentation, documentation, documentation. As my first impression, documentation work, left to end user. Game engine is on a stable version 1.5 but there is nearly no documentation please take a look at http://www.garagegames.com/docs/tge/ this link and please take a loot at http://msdn.microsoft.com/library link. Which one is generated for programmers?
There are a lot of classes inside the Torque. A few sentence which explains what a class does would have been very effective even inside the code.
Let me give you a simple example. I did use Gamebryo engine, which has week documentation too, on an AAA title. Also I have used a company's own engine in Europe. There are well known AAA title released on that engine. For both I rarely take a look at documentation, everything was inside the code. Assume that I want to implement POV and A* technique in Torque, which I have implemented several times before for 3D titles. If you ask me do I have any idea where to start, I honestly answer no. The documentation should give information to a programmer that where to start programming. Which assests game engine using, basically what is the global or ingame instance of the scene root object. Where is the main entry of the application etc. etc. Keep in mind that there are 20 different filters on game project and also there are at least 7 projects inside the solution. Who can be volunteer to dig up nearly 500.000 lines of code to only find the objective of a single global varible? Also how much time that operation takes?
Those are some basic disadvantages of the engine. Please keep in mind that we are human beings. Also we are purchasing engines to speed up our works ;). We may require some help on working someone elses codes and we don't want to buy or don't have time to read the books ;). We may require to see what a function does and what its arguments does instead of reading the knowledge which we know already from the books. Also we may not want to copy paste someone elses scripts or codes.
First of all Torque is very powerful engine and I like it very much, but it has some disadvantages.
1. Although Torque script is very flexible, sometimes it confuses things. Scripting is thightly coupled with engine which is a very big disadvantage from my point of view. For a very simple application you are forced to use scripting. As a programmer I can easily say that, debugging scripts is very painful operation. Also maintaining and pointing errors inside the scripts are very difficult.
2. Torque has very week documentation which shadows the power of the engine. Basically as a developer I want to see bunch of global variables and singleton instances (both coding and scripting sides) of the project I have been using. That is really impossible in this engine.
3. Also when you investigate codes, it is really impossible to follow executing statements. That is because a lot of main ingame states are changing outside the executed code. Changes takes effect inside the scripts, sometimes that can be a gap.
4. You have no idea which functions, global variables, object instances that you are allowed to use inside the scripts.
5. Documentation, documentation, documentation. As my first impression, documentation work, left to end user. Game engine is on a stable version 1.5 but there is nearly no documentation please take a look at http://www.garagegames.com/docs/tge/ this link and please take a loot at http://msdn.microsoft.com/library link. Which one is generated for programmers?
There are a lot of classes inside the Torque. A few sentence which explains what a class does would have been very effective even inside the code.
Let me give you a simple example. I did use Gamebryo engine, which has week documentation too, on an AAA title. Also I have used a company's own engine in Europe. There are well known AAA title released on that engine. For both I rarely take a look at documentation, everything was inside the code. Assume that I want to implement POV and A* technique in Torque, which I have implemented several times before for 3D titles. If you ask me do I have any idea where to start, I honestly answer no. The documentation should give information to a programmer that where to start programming. Which assests game engine using, basically what is the global or ingame instance of the scene root object. Where is the main entry of the application etc. etc. Keep in mind that there are 20 different filters on game project and also there are at least 7 projects inside the solution. Who can be volunteer to dig up nearly 500.000 lines of code to only find the objective of a single global varible? Also how much time that operation takes?
Those are some basic disadvantages of the engine. Please keep in mind that we are human beings. Also we are purchasing engines to speed up our works ;). We may require some help on working someone elses codes and we don't want to buy or don't have time to read the books ;). We may require to see what a function does and what its arguments does instead of reading the knowledge which we know already from the books. Also we may not want to copy paste someone elses scripts or codes.
About the author
#2
My aim is to focus on some weaknesses of the engine which I can state further additions to the ones I wrote above. As I mentioned above I found the engine very useful and powerful. Also mentioned that this weaknesses shadows the power of the engine. That is why I found it can be useful to give that type of feedback. If you read it positively you may find something useful which can help your development process. Otherwise you are free to get defensive, angry or mad at me.
1 - 3) I know using tools. Everybody knows. Torsion might be very effective. I have priorities rather than purchasing and learning a new environment. The game I am working does not require any scripting but I am forced to use script so indirectly I am forced to buy additional tool in order to catch bugs. I don't find it right for now so I am not planning to buy it for time we are in, but in the future maybe. Also I am thinking that you miss the point that I tried to show.
2) I know information can be found over the different sources. The main problem is this. It is broken into pieces. Also from the link above can you tell me the difference between ColorI, ColorF and Color (without looking their datatypes) classes? that is why I have given msdn sample. Reaching some information can be very painful, you shall not ignore this truth. You must have design diagram or stg that you have used to develop those all C++ classes. You may consider putting it on documents section as in jpeg format. That can be useful to follow class hierarchy.
Also inside the engine code there are so many filters and projects. You may know what file used for what purpose, but it is not as easy as for someone else.
4) This was a sample which indicates that a newbie who does not know .dump() or dumpConsoleFunctions() can face problems about where to start. Also please keep in mind that everytime developers do not want to use others works/scripts from the forums. They may require more official sources.
5) That is not an excuse. You are providing an international product. Your "community teach" approach might not be very correct.
6) If you beleive everything is fine, fit and documentation complete than I have no further words.
You are right I developed those systems with experience, but no more than I have now. Also the one for Europe company I did have zero documentation. Contrary I did easily genarate a random terrain by digging into vertex and index buffers only by tracing through the engine codes. I am not feeling myself so comfartable while tracing through the Torque.
That is all from me for now. It is up to you from now on...
05/16/2007 (10:17 am)
Hi Stephen,My aim is to focus on some weaknesses of the engine which I can state further additions to the ones I wrote above. As I mentioned above I found the engine very useful and powerful. Also mentioned that this weaknesses shadows the power of the engine. That is why I found it can be useful to give that type of feedback. If you read it positively you may find something useful which can help your development process. Otherwise you are free to get defensive, angry or mad at me.
1 - 3) I know using tools. Everybody knows. Torsion might be very effective. I have priorities rather than purchasing and learning a new environment. The game I am working does not require any scripting but I am forced to use script so indirectly I am forced to buy additional tool in order to catch bugs. I don't find it right for now so I am not planning to buy it for time we are in, but in the future maybe. Also I am thinking that you miss the point that I tried to show.
2) I know information can be found over the different sources. The main problem is this. It is broken into pieces. Also from the link above can you tell me the difference between ColorI, ColorF and Color (without looking their datatypes) classes? that is why I have given msdn sample. Reaching some information can be very painful, you shall not ignore this truth. You must have design diagram or stg that you have used to develop those all C++ classes. You may consider putting it on documents section as in jpeg format. That can be useful to follow class hierarchy.
Also inside the engine code there are so many filters and projects. You may know what file used for what purpose, but it is not as easy as for someone else.
4) This was a sample which indicates that a newbie who does not know .dump() or dumpConsoleFunctions() can face problems about where to start. Also please keep in mind that everytime developers do not want to use others works/scripts from the forums. They may require more official sources.
5) That is not an excuse. You are providing an international product. Your "community teach" approach might not be very correct.
6) If you beleive everything is fine, fit and documentation complete than I have no further words.
You are right I developed those systems with experience, but no more than I have now. Also the one for Europe company I did have zero documentation. Contrary I did easily genarate a random terrain by digging into vertex and index buffers only by tracing through the engine codes. I am not feeling myself so comfartable while tracing through the Torque.
That is all from me for now. It is up to you from now on...
Torque 3D Owner Stephen Zepp
2) dOxygen. All of everything you just asked for is available both online (dOxygen Online Class/Hierarchy Reference, and can of course be self generated for your own projects.
3) That's the nature of a moddable engine that uses a scripting language. As I said in 1) above, both Torsion and your c++ IDE assist greatly, as well as experience in the engine.
4) Just about all of this information is available online...forums, TDN, and the dOxygen source. You also have the ability to call the .dump() method on any object in your game, listing all the methods available to you, as well as the ability to list all the console functions (directly to a file) via the dumpConsoleFunctions() call in TorqueScript.
5) Microsoft has more than 150 people who's only job is writing documentation. GG doesn't even have 150 people on staff. Of course their documentation will be more detailed and more focused.
6) Just about every major class lists exactly what it's purpose is within the source code header files, which can be viewed either directly, or as I mentioned, with dOxygen (which turns source code into html, with formatted comments). All the information you ask for is actually there, plus use examples as well as comments and suggestions.
I can just about guarantee that you didn't implement any of the major systems you mentioned above without a lot more experience than a few weeks you've had with Torque, nor did you do it on your own (instead of working on a team) where you could get direct advice.