adv3lite conventions

I’m seeing a few things that I didn’t see covered in the documentation but I might have missed it.

First thing:

I notice many of the example games contain #include <tads.h> and it’s said that this is necessary.

But I’m able to build the games and play them without including that at all. So what is it actually necessary for?

Second thing:

I see that the ‘me’ object is defined as a ‘Thing’ rather than an ‘Actor’. I get that the properties put on ‘me’ make it act somewhat like an Actor would (i.e., being fixed in place, proper named, and so on). What I don’t see is why I just wouldn’t just have ‘me’ derive from Actor in the first place?

Third thing:

Why have the #charset “us-ascii” in each file? It’s a lot of duplication and it seems like the makefile allows you to specify “-cs US-ASCII” in it. If I’m reading the technical stuff correctly, putting that line in the makefile negates the need to put it in each source file. Is that accurate?

You can have the me object derive from Actor - provided the actor.t module is present in your game - but actor.t is an optional module, and the ability to define the me object as a Thing allows you to exclude actor.t from your build if you don’t want to use it.

Well the best you can do is to go through the tads.h file (and any other files that it references) and see for yourself. Mainly there are intrinsic function and class definitions, so without this header you will loose all of http://tads.org/t3doc/doc/sysman/builtins.htm. Just few random samples: random generator, regular expressions, vectors and other collections, string manipulations, date functions,…

It’s probably up to you. But for example I’m mixing utf-8 encoded files with some generic libraries in us-ascii in one project.