intfiction.org

The Interactive Fiction Community Forum
It is currently Thu May 25, 2017 11:05 am

All times are UTC - 6 hours [ DST ]




Post new topic Reply to topic  [ 9 posts ] 
Author Message
PostPosted: Mon Feb 20, 2017 5:49 pm 
Offline

Joined: Sat Nov 26, 2016 4:48 pm
Posts: 68
I'm struggling to understand why some of adv3lite was done the way it was. For example, as with adv3, I could just define the "me" object as

Code:
me : Actor
;


But the documentation for the player character for adv3lite is routinely this:

Code:
me : Thing
  isFixed = true
  proper = true
  ownsContents = true
  person = 2
  contType = Carrier
;


What the documentation doesn't seem to bother addressing is the most obvious question: Why would I do that? Why would I avoid deriving "me" from Actor? Or, better, why would I make "me" a Thing and then re-add the parts of the Actor class that make it so that the "me" object acts like an Actor? There's one part mentioned about how you can do this to be "minimalist." But what's being described is actually the opposite of that. Calling a person-type object a thing-type object does not make it minimalist. Having to specify less (not more) is what makes something minimalist.

Also, little changes here and there seem to have been done for no good reason. For example, why change 'roomName' to 'roomTitle'? Beyond adding yet one more inconsistency between adv3 and adv3lite, it arguably makes more sense to have a room "name" than a room "title". Yet in other places, logic indicates a "name": such as "DarkName", "roomnameStyleTag". There are a lot of other inconsistencies. Admittedly small in and of themselves, I suppose.

Looking at it purely from design orthogonality principles, it would have been quite easy to make a lot more compatibility between the two libraries to make transitioning easier and I have no clue why that wasn't done. But, then again, I suppose if that was done, you could argue it would have been easier to just modularize adv3 rather than create a new library.


Top
 Profile Send private message  
 
PostPosted: Wed Feb 22, 2017 9:19 am 
Offline

Joined: Mon Dec 07, 2009 9:14 am
Posts: 142
Location: Chicago, IL
I sort of get what you're talking about there. I brought this up before, albeit slightly differently. See:


Those conversations, as you can see, often went nowhere productive. Keep in mind that is more likely due to my own lack of ability to articulate my points well enough.

In classes I've taught, where I've used TADS 3, there was no concern about the "complexity" of the Adv3 library, defeating much of the purpose of Adv3Lite for many people. In fact, Adv3Lite was more often than not seen as a complication not worth exploring.

However, this being said, there are, in my view, some demonstrably nice things that Adv3Lite introduces. But, as you've noted, the inconsistencies here and there make them a bit problematic to port directly to Adv3 in a lot of cases.

What I've found people often needed was simply a bit more of a refined map to Adv3, rather than a new library entirely. The good news, of course, is that nothing is stopping anyone from continuing to use Adv3 just as it is and, thus, never considering Adv3Lite at all. It is also possible, via some juggling of code bits, to retrofit some of the better aspects of Adv3Lite into Adv3.


Top
 Profile Send private message  
 
PostPosted: Fri Mar 03, 2017 2:31 pm 
Offline

Joined: Sat Nov 26, 2016 4:48 pm
Posts: 68
Jeff Nyman wrote:
It is also possible, via some juggling of code bits, to retrofit some of the better aspects of Adv3Lite into Adv3.


So how exactly do you go about that? There's no guide to all of the little micro-changes made to make it easy to backport logic. So do you just plug something back in, see what breaks, and go from there?

If this is the direction it was going, I see why TADS sort of dropped off the radar compared to Inform. Consider me a sad TADS 2 veteran.


Top
 Profile Send private message  
 
PostPosted: Sat Mar 04, 2017 7:22 am 
Offline

Joined: Mon Dec 07, 2009 9:14 am
Posts: 142
Location: Chicago, IL
Eldritch Eschaton wrote:
So how exactly do you go about that? There's no guide to all of the little micro-changes made to make it easy to backport logic. So do you just plug something back in, see what breaks, and go from there?


Well, for example, if you look at postures.t, you'll see it uses one of the new elements that you found (roomTitle), in lines like this:

Code:
"<<roomTitle>><<nestedLocDesc>>";


That would be roomName in adv3. One of the key changes is the use of a single 'vocab' property intead of 'vocabWords'. And you can see some of those differences reflected in the templates. And that can help you figure out what to look for in some cases.

Eldritch Eschaton wrote:
If this is the direction it was going, I see why TADS sort of dropped off the radar compared to Inform. Consider me a sad TADS 2 veteran.


Noted. :) Keep in mind, adv3 is still very powerful on its own. You really don't need anything that adv3lite does. And if you do find something interesting, like the rules module or something, those are usually easier to backport to adv3 because they are are using intrinsic aspects or are using bits of the overall libraries (system or otherwise) that weren't changed.

Side Topic / For What It's Worth:

As far as the "direction it was going", adv3lite in TADS and usage of TADS vs Inform are entirely orthogonal, I believe.

Consider that Inform has a wider ecosystem overall. Its web-based solutions are much easier to use and deploy with, widening the audiences you can reach. (I just did a series of blog posts using Inform 7 and the web-based interpreters. That's something I could not have done as easily in TADS.) And Inform has an IDE approach that is functional across operating systems and one that, at least arguably, has the least cognitive friction. Inform, in my opinion, simply out-competed its parser-based alternatives.

CYOA-style, or choice-based, alternatives are (to me) orthogonal to the TADS / Hugo / Inform ecosystem. But they are clearly gaining in popularity and seeing a lot of innovation and, I would argue, often have an easier learning curve.

So combined with that, it's likely that not too many parser-based alternatives are going to ultimately command much attention. You're probably going to have one that "rules the roost" and sees the most engagement. That happens to be Inform and, again, I feel that's because it ultimately out-competed its friendly competitors. It innovated more broadly and, importantly, made that innovation consumable by varying skill levels. (I suppose in that one sense, that's where adv3lite faltered in terms of helping TADS gain traction, which is what my quoted/referenced posts earlier were about.)

I personally greatly enjoy programming in TADS. But if I were writing a game that I wanted to distribute as widely as possible and as easily as possible to as many people as possible, while having the widest possible community support, TADS would not be my first choice.


Top
 Profile Send private message  
 
PostPosted: Wed Mar 08, 2017 8:44 am 
Offline

Joined: Sat Nov 26, 2016 4:48 pm
Posts: 68
If you honestly think all that, you should probably take a look at my "Extension Pain" post in the Inform area.


Top
 Profile Send private message  
 
PostPosted: Wed Mar 08, 2017 4:51 pm 
Offline

Joined: Sat Jul 16, 2011 3:48 pm
Posts: 233
Jeff Nyman wrote:
One of the key changes is the use of a single 'vocab' property intead of 'vocabWords'.

I don't want to go into philosophical debate, I just want to note that although the purpose of adv3lite is to provide simplified library for TADS it was not produced by taking adv3 and stripping down complicated parts but rather building the new library from ground up. At least this is my impression. At least the difference in vocabWords is because the adv3lite is built on top of entirely different parser called Mercury which Mike Roberts prepared.

Jeff Nyman wrote:
Its web-based solutions are much easier to use and deploy with, widening the audiences you can reach. (I just did a series of blog posts using Inform 7 and the web-based interpreters. That's something I could not have done as easily in TADS.)

One drawback of hosting TADS interpreter on server and communicate game output over internet is the need to be online all the time you play a game. On the other hand I really enjoy the ability to use all the bells and whistles of modern browsers (HTML/CSS/JS) in webplay and having everything under my control. Where is your blog, what you can't do as easily?

Jeff Nyman wrote:
...made that innovation consumable by varying skill levels.

This probably more than other reasons. Whatever for real or for looking more approachable to beginners.


Top
 Profile Send private message  
 
PostPosted: Fri Mar 31, 2017 2:20 pm 
Offline

Joined: Sun Mar 01, 2009 8:02 pm
Posts: 1589
Jeff Nyman wrote:
It is also possible, via some juggling of code bits, to retrofit some of the better aspects of Adv3Lite into Adv3.

Some, but by no means all. My recollection (it's been a year since I did any IF at all) is that adv3lite includes Inform-style scenes and regions, which can't easily be back-ported into adv3.

The reason why the me object requires a bit more definition is because the adv3lite class library is intentionally shallow. This avoids the awkward situation where a class you're using is inheriting from two or more base classes, which can result in unexpected behavior.

Other changes, such as stringing all of the vocabulary together in one chunk, are, in my view, debatable.


Top
 Profile Send private message  
 
PostPosted: Sun Apr 09, 2017 7:25 am 
Offline

Joined: Mon Dec 07, 2009 9:14 am
Posts: 142
Location: Chicago, IL
tomasb wrote:
Where is your blog, what you can't do as easily?

Sheesh, my apologies for the extremely delayed response to this!

The blog series was here: http://testerstories.com/category/explo ... teractive/

Basically, however, what I did was provide the web-based interface for each iteration of the exercise. For example:

http://testerstories.com/files/i7/r1/
http://testerstories.com/files/i7/r2/
http://testerstories.com/files/i7/r3/
http://testerstories.com/files/i7/r4/

Not only did having the published source text right on hand make it a fun and interesting exercise, but the extremely light-weight approach to providing a browser-based solution was critical in being able to produce numerous versions quickly, with an absolute minimum of back-end supporting infrastructure. I literally just had to copy a directory to my server and everything worked. I don't think that's even remotely possible with TADS, but I'm more than happy to be corrected on that.


Top
 Profile Send private message  
 
PostPosted: Fri Apr 14, 2017 2:12 am 
Offline

Joined: Sat Jul 16, 2011 3:48 pm
Posts: 233
Thanks, so the need is to be able to embed web play game into page on your website where it will sit inside your design beside your menu and such. TADS's answer to webplay is different than Inform's, it doesn't have pure JavaScript interpreter which could be copied into static web pages but instead have a possibility to run a server to serve a game. That is for sure out of reach of non-technical people, but TADS community provides public game servers, so the real problem is that TADS's webui frontend is currently not able to run in an iframe due to some JS bug. Ok, I will definitelly look into this at some point.


Top
 Profile Send private message  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 9 posts ] 

All times are UTC - 6 hours [ DST ]


Who is online

Users browsing this forum: No registered users and 2 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group