Seeking a better understanding of Torque 2D MIT, compared to other engines/frameworks.
by RJAG Entertainment · in Torque 2D Beginner · 03/05/2013 (8:17 pm) · 11 replies
While some of the more obvious benefits of T2D are quite significant, such as it being open source and thus EXTREMELY customizable, some of the other benefits of T2D are less obvious to me.
I do not want to simply ask, "What benefits does T2D have over SDL?" because there are some obvious answers to this. However things like not having to compile because of scripts, or turn based multiplayer- this just doesn't appeal to me. LAN multiplayer does though, and I am not entirely sure of the power/lack thereof T2D networking.
It may not seem like much, but it has taken me awhile to figure all of this out and get it working. I wanted to share it so show why I feel as though I may already have enough done to be wary of starting over in T2D.
It sets up a World from a 2d array, filling it perfectly with tiles based on the tile height/width.
Using the mouse you move the Screen (Camera) around the much larger world.
The NUMPAD moves the character exactly 1 tile in all 8 directions.
The mouse knows exactly which tile it is on, tiles can readily know which tile is touching it in 8 directions by a simple input of direction (N/S/E/W/NE/NW/SE/SW), and all the tiles have their own coordinates Tile[0,1] Tile[200,200].
The blue square is the actual gameplay window, as I've made it smaller than the actual window so you can see how it renders ONLY the tiles that need to be rendered and nothing more.
edit: I was thinking of a 2D isometric survival game, probably dealing with zombies.
Although no game is actually as small as it seems, this feels like a project I could actually handle. Complex enough to be a high quality game, but not enough to make my brain explode. With the exception of the Line of Sight mechanic, of course, lol. A good first product none-the-less! Especially given my main project being infinitely larger a task.
Most importantly, I have heard from my more experienced programmer brother, that the reason 99% of indie developers have horrible GUI's and bad tutorials (bad usability in general) is because few libraries make GUI's easy. They're difficult to create and manage. I am not sure if this is true, but at least explains why it is almost a requirement to have bad controls and a horrid interface to be deemed an "indie dev" :P
Is GUI creation one of T2D's greater achievements? The toybox alone makes me assume that I would not have a problem making at least a mediocre GUI that is steps above most indie developers. I am quite optimistic at the thought of professional (artistic) looking GUI's being easy to create in T2D.
I am asking, "If I wanted to pause my primary project and work on something 'smaller' like a game very similar to a zombie survival game, would it be worth the time invested to use T2D instead of continuing on with SDL? How quickly do you think T2D would accelerate development over making it from scratch? Is there any documentation of developers who stated how much time they saved by using T2D in the past?"
For engines like Unity3D, it is much more obvious the time you save on using the engine. With the difficulties that 3D worlds can give you, I can see how starting with Unity3D could get a prototype in a matter of a week, and it is nice to see people boasting of creating less than simple games in only months or less. I cannot begin to imagine the nightmare of creating a 3D engine from scratch, or even from a high level library.
A more serious project, I would want to take all the time in the world to do it *just right*.
For a project like a zombie survival game? I would much more prefer releasing the game ASAP, and want to use the tools that would help me release it the fastest.
About Me, My Worries, and My Game So Far
I have been working with SDL (C++) and a few lines of code using <windows.h> to build a tile based engine. I have quite a lot of work done, although it is mostly for the tile engine, as SDL just handles the input and rendering. Obviously T2D would handle input and rendering just as easily. It wouldn't be too difficult to bring over the tile logic from my engine to T2D because it has only a few lines of code that SDL handles. However, it would be like learning a new language (Torquescript) and digging into the API to find similar functions, which takes time. Obviously it would be a requirement anyway if I were to make a game using T2D, but I don't see much reason as to why to switch over and spend extra time changing.I do not want to simply ask, "What benefits does T2D have over SDL?" because there are some obvious answers to this. However things like not having to compile because of scripts, or turn based multiplayer- this just doesn't appeal to me. LAN multiplayer does though, and I am not entirely sure of the power/lack thereof T2D networking.
What I have so far- a Tile Engine
[link cutout]It may not seem like much, but it has taken me awhile to figure all of this out and get it working. I wanted to share it so show why I feel as though I may already have enough done to be wary of starting over in T2D.
It sets up a World from a 2d array, filling it perfectly with tiles based on the tile height/width.
Using the mouse you move the Screen (Camera) around the much larger world.
The NUMPAD moves the character exactly 1 tile in all 8 directions.
The mouse knows exactly which tile it is on, tiles can readily know which tile is touching it in 8 directions by a simple input of direction (N/S/E/W/NE/NW/SE/SW), and all the tiles have their own coordinates Tile[0,1] Tile[200,200].
The blue square is the actual gameplay window, as I've made it smaller than the actual window so you can see how it renders ONLY the tiles that need to be rendered and nothing more.
A Smaller Project
I do not want to be anymore long winded than I am, so I do not want to go into depths as to all the things I want from an engine. IMO, I don't see me switching to anything but a custom engine for my main project.edit: I was thinking of a 2D isometric survival game, probably dealing with zombies.
Although no game is actually as small as it seems, this feels like a project I could actually handle. Complex enough to be a high quality game, but not enough to make my brain explode. With the exception of the Line of Sight mechanic, of course, lol. A good first product none-the-less! Especially given my main project being infinitely larger a task.
A Few Inquiries about T2D's Multiplayer & GUI
Features I would like to add to it, which are a bit more burdensome? Multiplayer and a good GUI. The game is not extremely fast paced like a shooter game, so I was wondering if T2D's networking could handle a game like this, with 4 players maximum, all staying nearby one another.Most importantly, I have heard from my more experienced programmer brother, that the reason 99% of indie developers have horrible GUI's and bad tutorials (bad usability in general) is because few libraries make GUI's easy. They're difficult to create and manage. I am not sure if this is true, but at least explains why it is almost a requirement to have bad controls and a horrid interface to be deemed an "indie dev" :P
Is GUI creation one of T2D's greater achievements? The toybox alone makes me assume that I would not have a problem making at least a mediocre GUI that is steps above most indie developers. I am quite optimistic at the thought of professional (artistic) looking GUI's being easy to create in T2D.
My Ultimate Questions
I am not so much asking these questions, "Could I make a 2D game using T2D?" as I already know I could. The thing is: I could also make it using SDL and my tile based engine. Or with XNA, or HTML5, or whatever.I am asking, "If I wanted to pause my primary project and work on something 'smaller' like a game very similar to a zombie survival game, would it be worth the time invested to use T2D instead of continuing on with SDL? How quickly do you think T2D would accelerate development over making it from scratch? Is there any documentation of developers who stated how much time they saved by using T2D in the past?"
For engines like Unity3D, it is much more obvious the time you save on using the engine. With the difficulties that 3D worlds can give you, I can see how starting with Unity3D could get a prototype in a matter of a week, and it is nice to see people boasting of creating less than simple games in only months or less. I cannot begin to imagine the nightmare of creating a 3D engine from scratch, or even from a high level library.
A more serious project, I would want to take all the time in the world to do it *just right*.
For a project like a zombie survival game? I would much more prefer releasing the game ASAP, and want to use the tools that would help me release it the fastest.
#2
While no one is trying to sell me the engine, I do desire to understand why anyone at all would want to use Torque2D. I have always loved T2D and if MIT released a year ago, it would have been perfect for me instead of learning more about the low level aspect of rendering engines. I'd imagine others would want to answer this simply to defend T2D as not being completely unnecessary.
Why reinvent the wheel if they both roll the same way?
There is plenty of documentation in the Unity forums about developers who state they have saved what could have been months or even a year by using Unity3D over building a 3D engine from scratch. The speed of people prototyping a game at a rate much faster than building their own prototype, allowing them to sell the idea much faster. Whether or not it is an exaggeration isn't what I am getting at.
Game developers who have experience building games, know when a toolset or engine saves them time. They have a general grasp of how long it takes to accomplish certain tasks, and if a tool speeds up these tasks significantly, they can attest to it saving them loads of time. The more experience they have, the more accurate they can assume it would save them [x] months or [x] hours.
I will not simply stop development of my current engine to learn T2D, only to discover I had no reason to switch over. However, I would be very grateful for someone to explain to me how T2D can speed up development if it actually will save me time.
I am not asking a childish question like so many others ask, such as "Can I make a GAME with T2D?" who get a response such as, "Only you can answer this."
I have legitimate questions as to why T2D exists in the first place, if not to be merely a temporary waste of space until it is developed further to become a more powerful engine which THEN will give it meaning and a much more clear ability to rapidly speed up a great deal of tasks in game development.
03/05/2013 (8:49 pm)
If I could answer these questions, I would. As it currently stands, I have absolutely no desire to spend weeks learning Torquescript and stretching my brainpower to understand a new API when I already have one that works for me.While no one is trying to sell me the engine, I do desire to understand why anyone at all would want to use Torque2D. I have always loved T2D and if MIT released a year ago, it would have been perfect for me instead of learning more about the low level aspect of rendering engines. I'd imagine others would want to answer this simply to defend T2D as not being completely unnecessary.
Why reinvent the wheel if they both roll the same way?
There is plenty of documentation in the Unity forums about developers who state they have saved what could have been months or even a year by using Unity3D over building a 3D engine from scratch. The speed of people prototyping a game at a rate much faster than building their own prototype, allowing them to sell the idea much faster. Whether or not it is an exaggeration isn't what I am getting at.
Game developers who have experience building games, know when a toolset or engine saves them time. They have a general grasp of how long it takes to accomplish certain tasks, and if a tool speeds up these tasks significantly, they can attest to it saving them loads of time. The more experience they have, the more accurate they can assume it would save them [x] months or [x] hours.
I will not simply stop development of my current engine to learn T2D, only to discover I had no reason to switch over. However, I would be very grateful for someone to explain to me how T2D can speed up development if it actually will save me time.
I am not asking a childish question like so many others ask, such as "Can I make a GAME with T2D?" who get a response such as, "Only you can answer this."
I have legitimate questions as to why T2D exists in the first place, if not to be merely a temporary waste of space until it is developed further to become a more powerful engine which THEN will give it meaning and a much more clear ability to rapidly speed up a great deal of tasks in game development.
#3
Which leads to:
I'm not saying your questions are "childish." (though I did use the word "silly" I suppose) I'm saying that there are a plethora of variables that make this sort of guestimation almost useless. I get the feeling that you might be suffering from "analysis paralysis" - second-guessing your choices to the point of being unable to make progress. As I said at the beginning of this post, it sounds like you should proceed with your current course and not detour into T2D - especially if it would mean porting a current project over. If your engine does what it needs to for your project, why change horses in mid-stream?
So, I'll point out again that only you can answer these questions - and you have, though you might not have seen the answers as such.
You felt the need to state that you are "not asking childish questions" and now I feel the need to state that I am not blowing you off or trying to be facetious. I am trying to say that there are far too many variables to answer this question in a real, meaningful way. I would have to say that the only real way to answer them accurately is to do it yourself and find out.
03/05/2013 (9:47 pm)
Let me try to clarify my thoughts on this:Quote: As it currently stands, I have absolutely no desire to spend weeks learning Torquescript and stretching my brainpower to understand a new API when I already have one that works for me.There, that was easy. I told you that you already had an answer to this.
Quote:Why reinvent the wheel if they both roll the same way?Ah, but that's just it - they almost certainly do not roll the same way. They may have similar functionality, but if you roll your own it performs as you expect under known circumstances.
Quote:However, I would be very grateful for someone to explain to me how T2D can speed up development if it actually will save me time.It does not sound like T2D would save you any time at all. You already have an engine that does what you want it to do, so it would effectively cost you time. If you had started with T2D instead of constructing your own engine then that time would have been saved. I don't know how long it took you to make what you have, so I don't know how much time this would have saved you. Then, after this savings you have to turn around and add time to learn Torquescript and how to use the engine to make a game. This is actually (in my opinion) where you would save some time as opposed to rolling your own engine - you don't have to learn how to construct an engine, code it, and then make a game with it - the engine is built and there are at least a few fair examples of how to use it effectively. Again, how much time these things take vary from person to person.
Which leads to:
Quote:There is plenty of documentation in the Unity forums about developers who state they have saved what could have been months or even a year by using Unity3D over building a 3D engine from scratch.Well, I'd have to guess that they are simply stating that their team could have built an engine with similar functionality within the stated time constraints. How long did it take you to build your engine? I'd say it would be fair to state that using T2D from the beginning of your project would have saved you 40%~50% of that time - you would have had to learn to use Torquescript and the engine, after all.
Quote:The more experience they have, the more accurate they can assume it would save them [x] months or [x] hours.This information is only vaguely relevant - you are not these people and these people are not each other; they all have different learning rates and different methodologies so these numbers would probably vary wildly. There is no correlation between how long it would take me to make an engine equivalent to T2D and how long it would take you to build an engine equivalent to T2D. If you require an answer in this format then I can state that using T2D would save me personally (assuming a "team" of just me) around two years of development time, at least.
I'm not saying your questions are "childish." (though I did use the word "silly" I suppose) I'm saying that there are a plethora of variables that make this sort of guestimation almost useless. I get the feeling that you might be suffering from "analysis paralysis" - second-guessing your choices to the point of being unable to make progress. As I said at the beginning of this post, it sounds like you should proceed with your current course and not detour into T2D - especially if it would mean porting a current project over. If your engine does what it needs to for your project, why change horses in mid-stream?
Quote:I have legitimate questions as to why T2D exists in the first place, if not to be merely a temporary waste of space until it is developed further to become a more powerful engine which THEN will give it meaning and a much more clear ability to rapidly speed up a great deal of tasks in game development.If you don't see a reason for it "to exist in the first place" then you almost assuredly don't want to waste your time with it. To do so would be absurd. As you said, your own engine does what is required; there is no reason to look elsewhere.
So, I'll point out again that only you can answer these questions - and you have, though you might not have seen the answers as such.
You felt the need to state that you are "not asking childish questions" and now I feel the need to state that I am not blowing you off or trying to be facetious. I am trying to say that there are far too many variables to answer this question in a real, meaningful way. I would have to say that the only real way to answer them accurately is to do it yourself and find out.
#4
I am a lot more familiar with T3D than T2D so take that into consideration. If the networking is similar (I think they libs are the same?) then it can handle tons of connections. I know WinterLeaf has tweaked the T3D network libs a bit and gotten hundreds of simultaneous connections.
It sounds like to me that you are a very experienced programmer. I don't think it would take you very much time at all to come up to speed in T2D. I also don't think learning a new scripting language would be hard for you either. You also have the option of doing most of your coding in C++ if you prefer. TS is not a requirement for new functionality.
Also, go search the GG forums for T2D MIT videos. You will find it will do most anything beyond your current needs. And if there is anything missing you already have it part way there in your engine. You can always add it once you get the architecture of T2D figured out on a conceptual level. I watch those videos and want T2D as a GUI for T3D. They are impressive. Especially the physics demos.
One thing you will find once you get working with Torque engines. At a certain point you start thinking about your game implementation rather than if you set that one bit right in the video settings. Most of the low level stuff is done and working. You just use the calls to make sound, send a network message, add a player, blow stuff up, etc. It is just DONE. I know is T3D could spend months just trying to learn shaders in DirectX, but there is subsystem, examples, and it is just DONE. I still have to learn HLSL, but I don't have to do much more than that. So my efforts are reduced significantly. That is the difference.
Edit:
Oh, and remember I mentioned those times when you feel like you might be going backwards in the other thread? If you switch horses to T2D it might feel like that for a while, but pushing through I think you will end up with a better game that is more maintainable. Remember the Torque engine designers have 15 years at least of game engine history. They are sharing their collective experience in the code base.
03/05/2013 (11:41 pm)
If you want to target Apple iPhones and eventually Android then yes I think T2D will save you time. SDL is great and is certainly a good platform layer for cross platform code, but it is VERY bare bones compared to T2D/T3D. Also, SDL is not even in the same league as T2D as far as complexity and scope. T2D is a game engine that really needs to do things the way T2D wants it done.I am a lot more familiar with T3D than T2D so take that into consideration. If the networking is similar (I think they libs are the same?) then it can handle tons of connections. I know WinterLeaf has tweaked the T3D network libs a bit and gotten hundreds of simultaneous connections.
It sounds like to me that you are a very experienced programmer. I don't think it would take you very much time at all to come up to speed in T2D. I also don't think learning a new scripting language would be hard for you either. You also have the option of doing most of your coding in C++ if you prefer. TS is not a requirement for new functionality.
Also, go search the GG forums for T2D MIT videos. You will find it will do most anything beyond your current needs. And if there is anything missing you already have it part way there in your engine. You can always add it once you get the architecture of T2D figured out on a conceptual level. I watch those videos and want T2D as a GUI for T3D. They are impressive. Especially the physics demos.
One thing you will find once you get working with Torque engines. At a certain point you start thinking about your game implementation rather than if you set that one bit right in the video settings. Most of the low level stuff is done and working. You just use the calls to make sound, send a network message, add a player, blow stuff up, etc. It is just DONE. I know is T3D could spend months just trying to learn shaders in DirectX, but there is subsystem, examples, and it is just DONE. I still have to learn HLSL, but I don't have to do much more than that. So my efforts are reduced significantly. That is the difference.
Edit:
Oh, and remember I mentioned those times when you feel like you might be going backwards in the other thread? If you switch horses to T2D it might feel like that for a while, but pushing through I think you will end up with a better game that is more maintainable. Remember the Torque engine designers have 15 years at least of game engine history. They are sharing their collective experience in the code base.
#5
T2D isn't here to try and get you to switch your current project, mid stream, over to a new engine.
if in the future you start a new project, and your current game engine isn't up to handling it look at T2D again and see if that learning curve will be less then writing another custom game engine. If it is, then you know what you should do.
There will always be a learning curve in jumping into any decent game engine, but once you have that knowledge you have it.
03/07/2013 (6:35 am)
This has to be the strangest post I've seen here in awhile.T2D isn't here to try and get you to switch your current project, mid stream, over to a new engine.
if in the future you start a new project, and your current game engine isn't up to handling it look at T2D again and see if that learning curve will be less then writing another custom game engine. If it is, then you know what you should do.
There will always be a learning curve in jumping into any decent game engine, but once you have that knowledge you have it.
#6
I looked at your tile engine. If that is what you have so far then I would look strongly at T2D. For one input handling configuration is done entirely in script. So you not be doing "if KEY_XXX == pressed" type stuff at all. You also gain tiling that is optimized very well and literally handle thousands of objects with animation. I think the time spent learning the T2D engine will save you a lot of time down the road.
03/07/2013 (5:46 pm)
@RJAG,I looked at your tile engine. If that is what you have so far then I would look strongly at T2D. For one input handling configuration is done entirely in script. So you not be doing "if KEY_XXX == pressed" type stuff at all. You also gain tiling that is optimized very well and literally handle thousands of objects with animation. I think the time spent learning the T2D engine will save you a lot of time down the road.
#7
I am not sure why some find my question to be "odd" or why someone finds it strange that I would want to be convinced to switch over to an engine that might save me a significant amount of time in development. Like everyone else, I just want to make a game as soon as I can :)
I may have a small engine already, but as you saw it isn't much of anything, and certainly isn't something I couldn't put in T2D once I find a few functions in the API.
I am very grateful that you guys took time out of your day and responded to my questions about T2D. It always helps to get a feel for it when those who already work with it discuss what it's like for them.
My last question, is there a tile based toy that I am missing? I saw a youtube video showing off t2d MIT with what looked like a tile based grid, but there is no such toy in the project. Was wondering if it was laying around elsewhere.
03/09/2013 (9:03 am)
Thank you, this is much closer to the answers I was searching for.I am not sure why some find my question to be "odd" or why someone finds it strange that I would want to be convinced to switch over to an engine that might save me a significant amount of time in development. Like everyone else, I just want to make a game as soon as I can :)
I may have a small engine already, but as you saw it isn't much of anything, and certainly isn't something I couldn't put in T2D once I find a few functions in the API.
I am very grateful that you guys took time out of your day and responded to my questions about T2D. It always helps to get a feel for it when those who already work with it discuss what it's like for them.
My last question, is there a tile based toy that I am missing? I saw a youtube video showing off t2d MIT with what looked like a tile based grid, but there is no such toy in the project. Was wondering if it was laying around elsewhere.
#8
www.garagegames.com/community/blogs/view/22199
03/09/2013 (9:48 am)
this might lead you in the right direction www.garagegames.com/community/blogs/view/22199
#9
03/09/2013 (10:50 am)
@RJAG - Check out the CompositeSpriteToy. CompositeSprites are not just for tilemaps, but they do handle them well.
#10
I am always a fan of TILED tmx maps, but unfortunately I do not see the benefit of using it for randomly generated maps. I prefer random levels over anything else. Absolutely love it though! Very glad to see it's already being supported with T2D, even if I never end up using it.
After messing for 4 hours wondering why my animation's CurrentFrame variable is randomly going into the negative (probably based on oscillation), making my sprite disappear, I am beginning to see the significant benefits of using T2D.
I don't have any problems with my code, but I am constantly having problems with the code from SDLtutorials. It is simply poorly designed, and I've scrapped almost all of it already for so many reasons- now to find I should scrap the crappy CAnimation class (the only part I still use...) and just create my own animation class.
But why create my own when I could use T2D? Why struggle through headaches with SDL? Why find a library to handle GUI when I could just use T2D and get one easily? Not to mention my compile times are getting annoying. I can only imagine compile times getting so much worse since right now my engine is barebones and annoys me. As I just said, the benefits of using T2D are really beginning to show. My biggest problem is the lack of TexturePacker trimming support, but there is a simple workaround for that. It's a PITA for my content pipeline, but it works.
I just want to save time and headaches, and I believe switching over to T2D now would do so. This makes me very satisfied, because I really wanted to get involved with an open source project like this, so I could help to improve it and if my game is successful: give T2D the attention I think it deserves. More attention for open source projects is always great for society.
So here goes everything!
Let's just hope the frustrations learning Torquescript don't make me go zombie IRL.
03/10/2013 (11:25 pm)
Thank you! I must have missed the "CompositeSpriteToy". That helps! :)I am always a fan of TILED tmx maps, but unfortunately I do not see the benefit of using it for randomly generated maps. I prefer random levels over anything else. Absolutely love it though! Very glad to see it's already being supported with T2D, even if I never end up using it.
After messing for 4 hours wondering why my animation's CurrentFrame variable is randomly going into the negative (probably based on oscillation), making my sprite disappear, I am beginning to see the significant benefits of using T2D.
I don't have any problems with my code, but I am constantly having problems with the code from SDLtutorials. It is simply poorly designed, and I've scrapped almost all of it already for so many reasons- now to find I should scrap the crappy CAnimation class (the only part I still use...) and just create my own animation class.
But why create my own when I could use T2D? Why struggle through headaches with SDL? Why find a library to handle GUI when I could just use T2D and get one easily? Not to mention my compile times are getting annoying. I can only imagine compile times getting so much worse since right now my engine is barebones and annoys me. As I just said, the benefits of using T2D are really beginning to show. My biggest problem is the lack of TexturePacker trimming support, but there is a simple workaround for that. It's a PITA for my content pipeline, but it works.
I just want to save time and headaches, and I believe switching over to T2D now would do so. This makes me very satisfied, because I really wanted to get involved with an open source project like this, so I could help to improve it and if my game is successful: give T2D the attention I think it deserves. More attention for open source projects is always great for society.
So here goes everything!
Let's just hope the frustrations learning Torquescript don't make me go zombie IRL.
#11
03/11/2013 (5:20 am)
Glad it is helping you get to where you want to go. Can't wait to see your game! :)
Torque Owner Richard Ranft
Roostertail Games
Interestingly, I don't think anyone is really trying to sell you this engine, especially since you could just use your own with virtually zero learning curve. If you want to fiddle with it, have at it. If you don't, that's fine too.
This is just silly - unquantifiable without building the project from scratch and then doing it again in T2D, or the other way 'round.
Because I'm very familiar with T2D I think it makes far more sense for me to use it to make a game than to roll my own engine. If you're not very familiar with T2D then you have to learn the engine while trying to make a game. The only way to get familiar with T2D is to use it. Ergo, if you put in the time to learn it then it will have greater value to you.