PunyInform v6.3 released

PunyInform v6.0 is out! Some highlights:

  • Requires the Inform v6.43 compiler. (See Inform 6 )

  • Uses Grammar Version 3, which can save hundreds of bytes in a typical full-sized game compared to Grammar Version 2, which PunyInform always used until now.

  • Supports setting meta flag on individual actions.

  • You can have the library automatically pick the right key for LOCK/UNLOCK.

  • You can easily use Ozmoo’s eight extra colours.

  • In debug mode, you can teleport to a room using GOTO with a wildcard, e.g. “GOTO HALL*” puts you in the first room whose name starts with HALL.

  • Many bug fixes & optimizations.

https://github.com/johanberntsson/PunyInform/releases

16 Likes

PunyInform v6.0.1 is out. This fixes a few bugs.

4 Likes

any chance inform 7 users will be able to compile to PunyInform in the future? I don’t think my brain is malleable enough anymore to handle 6.

Unfortunately, the reason why Inform 7 games are so large and unwieldy (by Z-machine standards, not by modern video game standards!) is the code produced by the compiler, not the I6 library used. It’s just not possible to optimize Inform 7 conveniences like string manipulation and dynamic lists in the way PunyInform would need.

At this point, Inform 7 can’t even compile to Z5 any more; Z3 is out of the question!

1 Like

All true. Also, Inform 7 needs a lot of stack space to function, more than what can practically be provided on an 8-bit computer.

Note that PunyInform can, and always could, compile to z3, z5 or z8. When PunyInform was launched, several important 8-bit platforms lacked a proper z5 interpreter, so z3 support was essential to reach our goals of enabling Inform games for an 8-bit audience. The situation is a lot better now, which means more authors choose to go for z5 only. For most games, it’s quite easy to make a game possible to build for either z3 or z5, and this is a popular option as well. The library has a lot of optimizations that use z5+ opcodes when available.

2 Likes

There may be some optimizations to be made in the library concerning get_child:

ScopeWithin():

	! is there a child?
	_child = child(p_obj);
	if(_child == nothing) return;
    @get_child p_obj -> _child ?~rtrue;

There are probably others, notably in _SearchScope().

Thanks, that one hadn’t occured to me.

While we accept suggestions in any channel, the most convenient is to get them in our issue tracker: [ GitHub · Where software is built ]

(I know you know about the issue tracker, as you’ve submitted multiple reports that way :folded_hands: , but everyone may not be aware of it)

There is no short_name property for the object thedark. Is it possible to change the display of the object name “Darkness” without it?

Object thedark "Darkness"
	with
		initial 0,
		description "It is pitch dark here!",
 		short_name 0;

As you can see in the code you enclosed, thedark does indeed have a short_name property, for exactly this reason. E.g. you could add to Initialise

thedark.short_name = “Scary darkness”;

Testbench.inf does this.

Damn, I’m so used to seeing it at the top of the list of properties! I’m going down a rabbit hole (I’m not sure what that means, but whatever).

1 Like

PunyInform v6.0.2 is out. This is mainly because the Inform compiler has had a new release, v6.44, and everyone should start using it, as it fixes a serious bug concerning arrays. Also, the new PunyInform version has a new example in the howto folder (demonstrating a custom statusline and teleporting), and a a few nice optimizations in scope calculations.

7 Likes

PunyInform v6.1 is out! News:

  • Debug verb ‘rooms’ now takes an optional substring to search for in room names, e.g. “rooms way” will show rooms like “Hallway Junction”
  • Changed debug verb ‘goto’ to perform matching exactly like ‘rooms’, ignoring any asterisks at start or end of string, e.g. “goto way” moves the player to the first room that has “way” anywhere in its name.
  • Added entry point for DEBUG mode only: DebugIsARoom(obj, verdict). Library will call it when the player uses debug verbs ‘goto’ or ‘rooms’, to decide if an object is a room. The verdict parameter is 0 if the library thinks it’s not a room, 1 if it thinks it’s a room. Return: 0 to accept the library’s decision, 1 to say it’s a room, 2 to say it’s not a room.
  • bug fixes and optimizations
4 Likes

Thanks, Friederick.

But I’m still waiting for David’s packaging, still at 5.14.1…

Best regards from Italy,
dott. Piergiorgio.

2 Likes

That’s a lot of letters. :slight_smile:

/Fredrik

3 Likes

Released v6.1.1 to get rid of the warning.

2 Likes

PunyInform v6.2 is out.

Instead of a debug-only entry point routine called DebugIsARoom, there is now an entry point routine called IsARoom, doing the same thing. This routine is used for debug verbs ‘goto’ and ‘rooms’, as well as the meta verb ‘places’ (part of extended meta verbs).

PunyInform v6.3 is out.

  • Extended meta-verb ‘places’ now shows one object per line.
  • Extended meta-verb ‘objects’ will now also show objects that don’t have a parent, if they look like regular objects (and have moved/visited attribute).
  • Entry-point routine IsARoom is now also used by the ‘objects’ meta-verb, to decide which objects are rooms.
  • “get all” doesn’t try to pick up objects in closed transparent containers.
  • “get x from y”, where y is a closed transparent container, is no longer blocked by the parser, so authors have a chance to react to the action in a before routine. If they don’t, the action will be blocked by the action routine. “get all from y” is still blocked by the parser, so the player doesn’t get one message per object that y is closed.

8 Likes

Thanks, Ramsberg ! (typed well ? :wink: )

Still waiting for the r10 of Griffith’s package…

Best regards from Italy,
dott. Piergiorgio.

2 Likes