Download Game! Currently 91 players and visitors. Last logged in:GrizztSharTigerlilyPazi

Blitzer's Blog >> 72410

Back to blogs index
Posted: 15 Sep 2026 12:28 [ permalink ]
Thank you. 

An idea I need to write down before I forget: 

Especially considering it's a great idea to strive to keep the pipeline and
syntax and conventions Gemma / minimal-LLM friendly, while allowing modularly
and extensibly building more complex environments, I got a thought: 

How could and should we conceptualize and design a minimal, understandable,
way for programs to "talk" to the "environment"? 

To avoid confusion and giving the small LLM's too much to think about, I think
we should absolutely avoid asynchronous operations. 

The asynchronous bigger designs could be achieved by running one or more
minimalist synchronous (only yielding for input and such easily understandable
concepts, both for human-friendliness and Gemma etc).

But, we do need a way for the program to "talk", in a very loosely and
forgivingly, way, with the environment. 

So, we should be able to "talk"/"call" to the environment, but ALSO receive
messages from the environment. 

We could and perhaps should, treat the "environment talking" just as when the
user gives input, with the exception that they come "unexpectedly", i.e.
without asking, but consider this: 

1. We compile an adventure game

2. The user runs it

3. While the game has described the current game situation, and is asking for
user input, the following might happen: 

4. A totally separate program, that can be any system, is able to communicate
with the engine (let's brainstorm that separately how), and sends a message "A
stray boat lands on the beach" 

4.1. Now, we need some semi-structured way, for this engine to both receive
that descriptive message in the "external/via-environment" message envelope,
and it COULD (not necessarily) also in the envelope designate a new named
object in the environment: 

4.1.1. It could have a name "boat", and a universal IPC-reachable address, our
VM/engine/environment can use, when this program wants to "talk to to he
boat", i.e. if user types: "look at boat", here I need your help -- how should
that be handled? I see possibilities: 

4.1.2. The incoming message envelope itself could announce it has certain
commands it responds to, in essence adding to the REPL a new, ephemeral parser
command, OR a target -- in some old MUD-games, an object could "hijack" any
user/parser input line, and try to determine if it meant that very object. I
think this could be very good, even though it's crude, but this would keep the
REPL parser super minimalist. 

4.1.3. The REPL parser AND the minimalist program being run, the adventure
game, would have certain syscalls and support-routines, that can match a
certain object in the "current environment", or the program (it's another
matter where and how the "current environment" can be reset -- we probably
could follow old school MUD engines idea, that it's up to the program to say
"this is a new environment, a kind of RESET call, that is very easy for the
Gemma/LLM to compile/inject into any "change of or new environment", what do
you think?

4.1.4. The Gemma/LLM produced code, could be given an opcode, that will
fetch/access any object, that the VM/engine will provide, that may match any
named object in the environment, OR a local program variable. Local program
variable names should always take precedence. But this way, we could totally
out-of-the-box, quite neatly, provide very extensible, asynchronous,
increasingly complex environments, that are very minimalistically and
uniformly, accessible and communicateable? 

What do you think? 

==

Testing now: 

==[ Terminal ]==
$ npm start

> ast-vm@1.0.0 start
> node cli.js


--- FSO Compiler Pipeline ---
[1] Reading source intent from game_idea.txt...
[2] Compiling via local cluster...
[3] Artifact saved to game_idea.md. Booting VM...

========================================


>B

==[ /Terminal ]==