Game Development Community

dev|Pro Game Development Curriculum

Engine Simplification - TGEB

by Darrel Cusey · 03/08/2006 (11:18 am) · 22 comments

Over the next several weeks (and probably months), I plan to create the TGE-B (for "Torque Game Engine Basic") which will be a simplified version of the Torque Game Engine, based on the 1.4 HEAD (from 03/08/06).

Here's my current "hit list" (this is likely to change and expand as I learn more about the TGE):

1. Elimination of the "Common" directory. I know, that's blasphemy, but I've found serious problems with maintaining such a structure (especially as developers start going in MMO directions), which I'll try to explain in the tutorial.

Merging Common Tutorial is now here

2. Merging your module of choice. This tutorial shows you how to merge your module of choice into /client, /server and /creator directories. I used /starter.fps, but this should work with very little modification with /tutorial.base, /starter.racing, or practically any other "mod".

Merging Your Game Module Tutorial is now here

3. Elimination of the "Module" functionality of TGE. It's a "nice" feature, but for many developers (especially Indies), they simply can't afford (in terms of time and resources) to support "Mods" in their products. For MMO developers, "mods" are simply not an option -- unless you want everyone in your mmo doing "Flame Waves in Town."

4. Elimination of the "Package" functionality of TGE. Again, it's a "nice" feature, but seems like overkill to overload the onStart, onExit, et. al. functions. The same process of execution can be accomplished with much simpler code.

5. Elimination of the "Argument Parsing" functionality of TGE. Again, a "nice" feature, but seldom used in production code (see also #2 above). Also, this feature adds tremendous bulk to the script codebase when you look at all the support code that's needed to make it work.

6. Elimination of the "Command Line Help" functionality of the TGE. This goes along with #4 -- together these 2 should give you a package that's a lot more secure, and less prone to "tinkering" by clients, which again is critical for developers who are trying to build an MMO.

Steps 3 through 6 are covered in Removing Module, Package, and Command-line Functionality


Edit: Took out the part about the option of selling this, since it's not possible for people to sell derivative engines according to the EULA.

Edit: Added the URLs to the approved tutorials.

Edit: The original EULA paragraph keeps popping back, so I removed it again.
Page «Previous 1 2
#1
03/08/2006 (11:26 am)
Those all seem like astetic changes. You're really not changing the engine at all.
#2
03/08/2006 (11:45 am)
So you're just going to remove a load of functionality that you don't have to use and has no effect on the performance of the game? I suggest your time is better spent actually making a game.

Ian
#3
03/08/2006 (11:55 am)
Isn't this prohibited by the license? I thought you can't make derived works from the torque engine?
#4
03/08/2006 (12:48 pm)
I'd have to agree with Ian, it seems like you will be wasting a lot of your time cutting out functionality that doesn't really hurt anything (though is quite useful) instead of spending it on a game.
#5
03/08/2006 (12:48 pm)
Darrel, just sent you an email.
#6
03/08/2006 (1:14 pm)
When I read "Torque Engine Basic" I think of a BASIC style scripting language for Torque. That would be pretty useful, I think. Someone should try that ;D
#7
03/08/2006 (1:52 pm)
TorqueBASIC is already in and fully functionaly in TGE 1.4 =)
#8
03/08/2006 (1:54 pm)
BASIC syntax has been included in 1.4, I believe.
#9
03/08/2006 (2:04 pm)
End of the day is Darrel wants to do this, it will probably expand his scripting and understanding of how the engines runs.
#10
03/08/2006 (2:30 pm)
Thanks for the comments everyone, that's all really good feedback...

@Chris: I guess "aesthic" is one way to describe it -- but it's going to a major re-write of the script base, and a few changes to the C++ code as well that will result in a clean seperation of the server, client, and creator code bases. I guess you could call that "aesthetic."

@Ian: Thanks, Ian, but I don't really have a profit motive to speak of -- I wanted to do this as a resource for the community. Yes, I'm removing functionality, but I'm doing it because (maybe) there are other people who want to remove it as well, and I hope that I can write tutorials that will show how to do it simply and cleanly. For example, I can imagine that people who are interested in building an MMO would be _very_ interested in removing the "module" functionality from the engine -- since you don't want clients to run arbitrary code :-)

@Anton: That would be true if I were selling it -- but I'm not going to be selling the end result. I'll be turning over the finished product to Garage Games (if they are interested -- probably a long shot on that one) and if THEY want to sell it, they can. The step-by-step tutorials will be posted as resources here available to current TGE owners.

@Matthew: see @Ian

@Benjamin: Got your e-mail and sent a reply -- basically, I'm just saying in my e-mail the same thing as @Anton (although if I'm totally wrong on that as well, I'll just skitter away and hide in a corner where I won't bother anyone anymore).

@Joe, @Matt, @David: Not doing that.

@Toby: Thanks for understanding :-)

Edit: a spelling error
#11
03/08/2006 (2:50 pm)
Darrel, I think this is great. I am not doing a traditional FPS and I do not want the "bloat" of all these functions which are quasi "common" code. The indirection of callback from this common codebase are not necessary or desired in games with out the mod concept. In fact they make it very hard to really understand the script/engine interface at times.

I will end up doing the same for my game once I have a better understanding of torque as a whole. So if you have fun doing it I would love to not end up having to.
#12
03/08/2006 (3:02 pm)
Just to clarify a few things from the GG perspective. I think it is a great thing that Darrel is working on finding ways to make Torque an easier learning curve for beginner programmers. The whole idea about "selling" the "simple-torque-engine" isn't possible with the Torque EULA, so let's just move past that. I commend Darrel for undertaking this project and the resource area, TDN and the Torque private forums are perfect places for Darrel to share his project with owners of TGE.

PS. I had a completely different post, but when I went to post it, it got lost in the great internet void. So this was a quick summary of what I had originally written.
#13
03/10/2006 (12:25 am)
I know this probably doesnt help you Darrel, but it'd be a good idea to carefully read over the EULA for any product to understand what is acceptable usage "out of the box" and then, if there is some prohibited activity that you would like to pursue, work privately with the the relevant parties to hopefully reach a common goal.

That way people wont be taken by too big of a supprise by something like this idea :)
#14
03/10/2006 (8:25 am)
@Craig: Thanks for your support! Yes, it should be fun. I've already been able to get most of the /common directory moved to /client /server or /creator.

@Benjamin: Thanks for the support Benjamin. Ben helped me describe what I was doing better so that it didn't sound like I was violating the EULA (which I'm not -- but I guess to a lot of people it sounded like it when I initially posted my this plan).

@Jason: Benjamin is a GG employee, and he already has assisted me with this. In the future, though, yes I'm going to talk to a GG employee _first_ before posting a plan file so that the way I may be describing things doesn't cause as much hoopla as this post did. And, yes, I do understand the EULA, and no, I'm not violating it, but, yes, a lot of people read it that way when I first posted my plan file -- if you look at the EDIT: at the bottom of the plan file post, you can see what I removed, which isn't critical at all to what I'm doing anyways. But thanks for the advice :-)
#15
03/11/2006 (9:17 am)
Sorry, Tutorial #1 is getting some re-work before posting.
#16
03/12/2006 (8:06 pm)
I can't reach the URL.
It says "The resource associated with this URL has been deleted and is no longer available.
#17
03/13/2006 (8:43 pm)
I've got both Tutorial #1 and Tutorial #2 finished. Together, these 2 will get you to a point where /common, and /starter.fps have been merged into /client, /server, and /creator directories and the "package" and "module" functionality are disabled.

At this point, the /client, /server and /creator directories are all completely independent of each other -- I've been able to ditribute just the /client folder to another machine and it runs (without any server code) just fine...

...well, almost that is. I'm currently trying to work through a strange bug that only happens when I try to run a /client install on a seperate computer from the dedicated /server install. I believe this is related to the addMaterialMap hack GG currently has in place -- I think it's tripping me up...

So... I'm going to hold off posting these until I get this sorted out -- just in case I have to change something in the tutorials. But, for those of you interested in this, I believe I'm 99% done with my first three goals :-)
#18
03/15/2006 (8:23 am)
Tutorial #1 and #2 have been submitted for approval :-)

...and it was the addMaterialMap hack that was tripping me up -- but I fixed it and changed one of the steps in tutorial #2 to accomodate the change.
#19
03/15/2006 (11:00 am)
sweet, congrats on the fast turn around man.
#20
03/19/2006 (10:25 am)
@Benjamin: Can you give us a status update on the approval of these 2 tutorials -- they are still showing as "unapproved" in My Account page. Thanks!!!
Page «Previous 1 2