by Cryptonomic » Tue Feb 01, 2005 5:47 am
mercurycs wrote:I have a very ambitious project planned and was wondering exactly, because I havn't nailed down what language to use yet, what are the benefits of using Hugo compared to Inform or Tads?
This is always a tricky one to answer. Benefits are often in the eye of the beholder, to some extent. For example, Inform has a great set of extensions that even if you do not use them, you can use them to learn from to do different things. TADS has a similar set of extensions. However, TADS and Inform are both very powerful to about the same degree in terms of writing up a basic game. Hugo, I believe, shares that with them. All systems have a great amount of readily available source code to look at.
It often depends on what you want to do. Hugo has a nice character scripting system that, I think, is easy to learn. Inform has the NPC_Engine, NPC_Act, and NPC_Wait extensions - much harder to code, but I think a bit more powerful than either TADS or Hugo - at least "out of the box", so to speak. TADS and Inform both have "reactive agent planners" (for NPC pathing and movement) and if that is important to you, that might suggest those languages. That said, something like a RAP could be done in Hugo with very little problem. Both TADS and Inform have alternative libraries (like alt, Platypus, Triform, WorldClass) and that can be helpful if you are not thrilled with the "standard" library and do not want to write your own. Hugo does not have alternative libraries but such could be written and that might not even matter to you.
Hugo probably has the best cross-platform compatibility for multimedia, at least from what I hear and see. TADS is okay, for the most part, and Inform (with Glulx) can be a bit dicey, depending upon what parts of the graphic/audio set you try to use. All of this, of course, depends on the interpreters that the game has to run on. Adding media elements to TADS or Hugo is much easier (in my opinion) than doing so in Inform. Yet, in terms of just sheer platform compatibility overall, Inform has them all beat, simply because the Z-machine is ported to just about everything. (This is mainly because of its limitations in terms of size and memory, which does -- eventually -- translate into possible limitations on a game.)
By the way, when I mention TADS above I am mainly speaking to TADS 2. TADS 3 is an incredibly powerful system (particularly in terms of its ability to handle NPCs) but from a coding perspective it is a bit "messy" for some people. That said, I have found that if you go through the existing documentation it is actually not all that difficult at all, but the conceptual differences between something like TADS 3 and Inform/Hugo are somewhat severe until you get used to it.
Another element of this is supporting elements: community support, documentation, extensions. I already mentioned extensions, but documentation is a biggie for most people. Here Inform has them all beat: not only is the manual fantastic, but there is a good beginner's guide plus some good sites devoted to showing you "how it all works". TADS 2 comes in second with this, I think. TADS 3 sort of ties with TADS 2. While there is no "Author's Manual" just yet, there are two good "beginner's guides" available that cover a slew of material, although not perhaps in the best or most cogent manner. The "Author's Manual" for TADS 2, on the other hand, is good, but a bit lacking in some respects. Hugo, I would have to say, comes in third in this respect. Hugo was easy for me to learn but that is also because I had already learned Inform and Hugo is very similar to it. Had I not learned Inform and I just had the existing Hugo documentation to go off of, I think it still would have been pretty easy to learn, but perhaps not as easy.
You may have already seen this, but a good way to get a feel for the different languages and their constructs is to go to Roger Firth's
Cloak of Darkness page and try out the example in the languages. See what you prefer. Beyond that, however, I found for me that a good way to do things was to try out some elements of what you want to do in any language of your choice. Yes, it takes longer to find the "right" language, but it allows you to make a more informed choice.
Hugo seems, at least to me, to be the easiest to code in.
Hugo is very much like Inform in a whole lot of ways although, yes, some of Hugo's constructs are perhaps "easier" to code up than a similar construct in Inform. Whether that "ease" means less powerful is not always very clear, but, to most levels of approximation, I do not think so. Both languages are very powerful. I personally find Inform, TADS 2 and Hugo to be very easy to code in -- but, like any language, that ease comes with learning. Everything can look a little difficult when you have no clue as to the language itself.
- Jeff
[quote="mercurycs"]I have a very ambitious project planned and was wondering exactly, because I havn't nailed down what language to use yet, what are the benefits of using Hugo compared to Inform or Tads?[/quote]
This is always a tricky one to answer. Benefits are often in the eye of the beholder, to some extent. For example, Inform has a great set of extensions that even if you do not use them, you can use them to learn from to do different things. TADS has a similar set of extensions. However, TADS and Inform are both very powerful to about the same degree in terms of writing up a basic game. Hugo, I believe, shares that with them. All systems have a great amount of readily available source code to look at.
It often depends on what you want to do. Hugo has a nice character scripting system that, I think, is easy to learn. Inform has the NPC_Engine, NPC_Act, and NPC_Wait extensions - much harder to code, but I think a bit more powerful than either TADS or Hugo - at least "out of the box", so to speak. TADS and Inform both have "reactive agent planners" (for NPC pathing and movement) and if that is important to you, that might suggest those languages. That said, something like a RAP could be done in Hugo with very little problem. Both TADS and Inform have alternative libraries (like alt, Platypus, Triform, WorldClass) and that can be helpful if you are not thrilled with the "standard" library and do not want to write your own. Hugo does not have alternative libraries but such could be written and that might not even matter to you.
Hugo probably has the best cross-platform compatibility for multimedia, at least from what I hear and see. TADS is okay, for the most part, and Inform (with Glulx) can be a bit dicey, depending upon what parts of the graphic/audio set you try to use. All of this, of course, depends on the interpreters that the game has to run on. Adding media elements to TADS or Hugo is much easier (in my opinion) than doing so in Inform. Yet, in terms of just sheer platform compatibility overall, Inform has them all beat, simply because the Z-machine is ported to just about everything. (This is mainly because of its limitations in terms of size and memory, which does -- eventually -- translate into possible limitations on a game.)
By the way, when I mention TADS above I am mainly speaking to TADS 2. TADS 3 is an incredibly powerful system (particularly in terms of its ability to handle NPCs) but from a coding perspective it is a bit "messy" for some people. That said, I have found that if you go through the existing documentation it is actually not all that difficult at all, but the conceptual differences between something like TADS 3 and Inform/Hugo are somewhat severe until you get used to it.
Another element of this is supporting elements: community support, documentation, extensions. I already mentioned extensions, but documentation is a biggie for most people. Here Inform has them all beat: not only is the manual fantastic, but there is a good beginner's guide plus some good sites devoted to showing you "how it all works". TADS 2 comes in second with this, I think. TADS 3 sort of ties with TADS 2. While there is no "Author's Manual" just yet, there are two good "beginner's guides" available that cover a slew of material, although not perhaps in the best or most cogent manner. The "Author's Manual" for TADS 2, on the other hand, is good, but a bit lacking in some respects. Hugo, I would have to say, comes in third in this respect. Hugo was easy for me to learn but that is also because I had already learned Inform and Hugo is very similar to it. Had I not learned Inform and I just had the existing Hugo documentation to go off of, I think it still would have been pretty easy to learn, but perhaps not as easy.
You may have already seen this, but a good way to get a feel for the different languages and their constructs is to go to Roger Firth's [url=http://www.firthworks.com/roger/cloak/index.html]Cloak of Darkness[/url] page and try out the example in the languages. See what you prefer. Beyond that, however, I found for me that a good way to do things was to try out some elements of what you want to do in any language of your choice. Yes, it takes longer to find the "right" language, but it allows you to make a more informed choice.
[quote]Hugo seems, at least to me, to be the easiest to code in.[/quote]
Hugo is very much like Inform in a whole lot of ways although, yes, some of Hugo's constructs are perhaps "easier" to code up than a similar construct in Inform. Whether that "ease" means less powerful is not always very clear, but, to most levels of approximation, I do not think so. Both languages are very powerful. I personally find Inform, TADS 2 and Hugo to be very easy to code in -- but, like any language, that ease comes with learning. Everything can look a little difficult when you have no clue as to the language itself.
- Jeff