Inform - Support - Suggestions

About Suggestions  

Under consideration  
Accepted for next release  
Complete list  

Suggestions being incorporated

These suggestions have been accepted and will be incorporated in the next Inform release.

Anybody is welcome to submit a suggestion; please keep it succinct and in the style of the proposals already published here.

151.  Support easy internationalisation of Banner( ), VersionSub( ), RunTimeError( ) and PrintCommand( ).
146.  Allow ASK ABOUT X, to infer most recently referred to NPC. Also consider topic management as extension or core library.
145.  Add a blorbifier to the compiler.
139.  Provide -P compiler switch to list actual paths used for input, output and all included files (eg, am I using the verblibm.h that I thought I was?).
138.  #If[n]def directives should support && and ||.
136.  Compiler to ignore completely (ie not complain about errors in) code which has been #Idfed'd out.
134.  Increase the Z-machine dictionary resolution beyond nine characters.
131.  Provide a very basic volume/weight filter system for containers and supporters, or at least an Entry Point to facilitate this.
128.  When a new identifier is expected, but the compiler finds an already defined one, it should give the location of the previous definition. Also, the message itself should be reworded for clarity.
126.  If you try to give something to a creature that's moved away, you get 'You can only do that to something animate' rather than 'You can't see that here'. GIVE CHEESE TO MOUSE after the mouse has gone back in its hole suggests it's still around (or you've made a programming error), or GIVE BISCUIT TO GIRAFFE (at the start of 'Curses') that there are somehow dead giraffes about. There should perhaps be a test for the creature to be present before checking whether it's animate or not.
124.  Allow AND to mean the same as THEN when unambiguous.
115.  An #Undef directive to cause a previously defined constant (only) to become undefined.
114.  The #End directive in a #Included file should simply exit from that specific inclusion rather than terminate the entire input stream.
111.  #Include the file named by constant MASTER_INCLUDE four times: before Parser and after Parser, VerbLib, and Grammar.
109.  Enhance #Include by: taking a "?" prefix to mean ignore a missing file; accepting a string constant as a filename.
104.  Enhance +charset_map by: searching +include_path; supporting hex numbers; treating a mapping of zero as 'pass this char through without change'.
102.  Remove the compile- and Strict runtime error for writing to the 0th entry in a string or table array -- it goes beyond protective to become intrusive and inconvenient.
101.  Optionally, support serial (aka Oxford) commas in the listmaker: some favor the result, some think it fustily eccentric, and some can't abide it.
99.  Extend the Replace directive such that if the compiler encounters Replace routine newname; then the compiler transparently renames routine as newname when it is encountered (rather than skipping over it as happens now). Only the routine definition is so renamed, calls to it are not. Often a replaced routine ends up behaving almost exactly like the original, but with a minor change, usually because the coder does not actually want to alter the normal semantics of the routine in any way, but merely wants to do something when that routine is being called - "hitching a ride", as it were. This change would facilitate this.
86.  Make x=obj.prop synonymous with x=obj.&prop-->0 if the property happens to be an array.
85.  How about treating 'listen' 'smell' and 'taste' the same as 'touch'? At a minimum, tasting should at least require an object to be touchable. Smelling yourself or tasting or smelling a creature should also generate special responses.
74.  Support for even larger Z-machine versions: double v6 (1088K) and double v8 (1024K).
72.  The compiler error for undefined action routines, eg 'Error: There is no action routine called "TaekSub"' should quote the location where ->Taek or <Taek> or ##Taek first appears.
70.  Infix support for Glulx targets.
67.  An intelligent UNLOCK verb, so that if the player is carrying the required key to unlock an object, the UNLOCK command should use it to unlock the object automatically.
65.  It would be nice to use #Ifdef constructs within a class definition to eliminate entire methods.
59.  How about a separate file containing all of the Inform compiler's messages, so that the compiler itself (and any output generated by the veneer) can be translated into other languages? This might not be as useful for the compiler warnings/errors, but the veneer errors at least should be translatable.
56.  Better code generation for the constructs objectloop (x ofclass y), objectloop (x provides p) and objectloop (x .& p). These can be determined at compile time, so it is possible to (say) autogenerate an array and simply iterate over it for the objectloop. [Both this and the previous suggestion trade off writable memory for speed, and getting the balance right is the tricky part. Since writable memory is precious, we'd almost need a pragma or compiler switch to override the compiler's decision.]
45.  An optional better form of objectloop: objectloop( x : (complicated expression involving x) ) { body; } , loops over objects, setting x to each, then executes the body statement if the complicated expression is true. This stops you needing to make x the first variable mentioned in the expression.
30.  A variable representing the PC's posture (standing, lying, sitting etc.)
23.  Provide an "assert" verb.
20.  The use of "$..." to introduce compiler options is intensely annoying on *NIX systems that use "$" as an environment variable indicator, e.g. $PATH -- it requires the constant use of quotes to avoid unpleasant and confusing results.
4.  Provide simple control over "The object is currently switched on/off" style messages.
1.  Introduce a default Incompatibility mode, slightly similar to Strict mode, in which the compiler rejects (as errors, not warnings) the use of constructs from earlier versions of Inform. For example: "\" in multi-line strings; "xxx" instead of 'xxx' in name properties and Verb definitions; #n$X instead of 'X//', etc.

Last updated 17 April 2013. This site is no longer supported; information may be out of date.
Maintained as a historical archive by the Interactive Fiction Technology Foundation. Copyright 1993-2018 IFTF, CC-BY-SA unless otherwise noted.
This page was originally managed by Roger Firth.