The Art of Language Agnostic Design

I like Processing.

So, how many of you have Processing installed on your computer? If I ask you to compile a source code, can you?

When you’re designing puzzles, do you think in a specific language? Do games designed for Informs can never be implemented in Twine?

It’s probably a bit conceited of me to say it, but I think my games are “only Twine” or “only hypertext” games. They wouldn’t really work as parser games or as full-fledged graphic adventure games.

For example, Dr. Sourpuss uses color cues in a way that lets players know where they in the story in terms of progress rather than the actual location (as in parser games and graphic adventures.)

Cygnet Committee uses sound cues in a way that they are one of three parts of the interface (alongside clickable text and a graphical map).

I’ve seen several games that are designed well, but implemented in inappropriate platform, providing false expectations.

Trying to make those games in any other system wouldn’t necessarily lead to a loss in quality, (assuming someone else tried to port them, lol) but they would be very different games.

This doesn’t really have anything to do with programming, since I can’t even write Javascript by memory really. I’m not familiar with Processing…I will have to check it out.

3 Likes

There are plenty of games that work great in parser and don’t work in choice-based, and vice versa.

I use p5.js instead. (That’s how Khan Academy taught my daughter to code.)

That’s a great answer. It will require abuse of Inform, but it’s possible to transplant CYOA games (including those without specific world model) onto Inform. The multimedia aspects is a bad match, though, requiring a compatible interpreter.

P5.js is nice.

The multimedia aspects is a bad match, though, requiring a compatible interpreter.

Re: Cygnet Committee, I think some people thought the game was too inaccessible, so the limits of the parser might make actually the game more approachable by removing ambient noise, timed puzzles, etc. even if the end result was less GUI-ey.

The main sacrifice would not be the media itself but the instant feedback and reflex challenges that make up the puzzles…you would probably need to play each audio track one by one, probably start to finish since there is no “hover” equivalent in a parser prompt as there is in HTML.

When I was making Cygnet Committee I realized partway through that you could probably make it into a tabletop game sort of like “Operation” if you were a shop class-type person.

1 Like

well, I have a good general programming experience, and indeed the first question I ask myself on tackling a problem is “what language is better”, as noted elsewhere in the IF context.

In the context of your question, designing is separate from coding because the former laid the core of the coding, that is, selecting the language to be used for coding.

On the relationship between designing and coding, you surely remember the “elsewhere” I noted early, and I hope I don’t need to repeat myself on it.

IF coding is very different from general coding, because, well, it’s mainly a narration, and start from a plot and narration instead of an algorithm and data structure/set.

Once the plot and narration are drafted, I think on the best IF language for it. for example, if the plot/narrative has a day/night cycle whose influence the room description, Inform 7’s scene support and excellent handling of adaptive prose is perfect for this.

Go figure, I 'fess up that In my main field, that is, Naval history I even used COBOL in analysing Naval estimates/budgets… with excellent results.

Best regards from Italy,
dott. Piergiorgio.

2 Likes

By default I do think of design in terms of what I can use or envisage myself using, which at this point not only limits it to Ren’Py, but also to fairly basic use of Ren’Py (since perhaps 90% of the language isn’t within my knowledge yet).

You could argue I’m not yet skilled enough to do “which language is better” because my first question has to be “how can I get this done in the first place?” Alternatives imply a certain amount of foundational skill in at least one language (most often, 2+ languages).

Games in certain languages usually can be implemented in others to enough extent to create a worthwhile experience - by people with better familiarity with the idiom they’re translating into than me. (Familiarity with the game to be translated is also a prerequisite, but insufficient in itself. Familiarity with the language from which it came is a bonus but not compulsory). Even translating games that lend themselves to Ren’Py into Ren’Py would be a big ask for me, but one day I could imagine attempting a translation of a parser game into Ren’Py (or maybe even vice versa).

This is the first I’ve heard of Processing. I don’t even know if compiling Ren’Py in the way you mean is possible. (It’s possible to compile it into various types of binary, but for what you want, I suspect simply copying and pasting the code from each file into a text file might be more effective).

Apologies if this sounds negative; I don’t mean it to be, it’s simply that others in the community will be more help to you than me.

2 Likes

20 posts were split to a new topic: Simulating a Parser in Twine? (split thread)

The subject matter has begun to drift at the message indicated as off-topic by me. It diverged in a way that is closer to a specific ScottKit implementation in Twine (Twine question) as opposed to generic ScottKit can be implemented in Twine (Language Agnostic Design). That’s not micromanagement by OP. That’s streamlining posts. I have to go through so many specific Twine posts just to go from “Twine in Parsercomp 2022!” to Gwen’s post, which is excellent, and very much on topic.

This idea of agnostic design, if I’m understanding you correctly, is something I really like. Recently I’ve been watching a lot of different GDC talks which I’ve found have given me a lot of inspiration for IF games I want to have nothing to do with IF. So this is a design split not even just with IF such as Parser VS. CYOA but design ideas that transcend the medium in a lot of way (such as visual story telling VS. prose). I think I’m in a somewhat unique position, at least from what I see here on the forums, in that I haven’t played any transitional ID games and they aren’t why I choose to make IF, there are a few games that I think could be considered IF that gave inspired me, which I’ll touch on as I think they’re a sort if exception that proves this rule, but really I think when it comes to design there are a lot of core ideas that transcend genre and systems and even mediums.

To talk first about your first example of implementing things people associate with Twine in inform or vice versa; a big example for myself would be a game that’s inspired me a lot, an AIF game called Degrees of Lewdity. This is a twine game which doesn’t have many objects really but has a rather large, open, interconnected map, something I feel is more associated with parser games. And this game, while made in Twine, largely inspired me to want to make a game in inform (obviously if I wanted to make a similar game I could have used Twine but I chose inform mainly because I liked the syntax and the style of parser based gameplay). Now perhaps this is a contraversial opinion, but at least for myself the big difference I see between Twine and Inform or parser and CYOA generally is that CYOA just has all of the available inputs displayed on screen. And so as you’ve shown in your twine example opening a door I think the only real design difference here is how the information is displayed to the player (where in inform a play would most likely just be told there is a door here where as in twine then all of the possible verbs, opening, smashing down, locking etc, would be listed.) But as you point out I think in most ways this is design agnostic, except for in one key way.

So to return to GDC talks I watched one recently on complicity in games, I can’t recall all of the specifics but I believe I remember it talking a bit about parser games, a bit about vr and about more traditional 3d games (I think it may have also discussed CYOA). And where I think this idea of agnostics design could break down a little bit is around this idea of complicity. I want to say first that I don’t think other systems don’t provide complicity, I think all games do to some extent by being an interactive experience (even some films or other non-interactive mediums manage to make the viewer feel complicit), however I think something that is not agnostic about the design of a parser is that the actions the player takes have to first be the players idea. Perhaps the player is encouraged to open the door, since that’s typically what one does to a door and we’ve just mentioned one, but there’s nothing prompting the player to do so.

So the reason I brought up that I’m not really influenced by traditional IF is that when I decided I wanted to make a parser game, I was never interested in puzzles, which isn’t wholly unique I’m sure but again just from impressions it seems very core to the genre. I can’t remember the user but I remember someone in the forums discussing how different systems get popular, with on of the main pints being they have flagship games. And I think this is another thing that limits agnostic design between systems a lot. It’s not that you can’t make a non-puzzle based game in inform, I’m sure plenty of people have, and it’s not that you can’t make a puzzler in Twine but there is a sort of way people conceptualize what these systems are, what a twine game or a inform game is, that I think reduces this agnostic design. And I don’t want to discount the technical specifications people have pointed out which can contribute to this but the reason innovative games are innovative within these systems is because of these preconceptions, and they obviously succeed in working around the technical specifications to make something that defies expectations.

What has been a huge influence on me wanting to make a parser game has been Dwarf Fortress. Now whether DF is IF since its mainly text based (or entirely if you count ASCII) is a debate I’ll leave to others but I feel DF brings up another area where design is slightly less agnostic. The creator of DF has discussed in interviews how the game actually started out as a 3D sandbox that would model everything. However doing this in a 3D space was a huge order as everything not only needed coded but then 3D modeled. However once the DF projected started the creator saw how much easier it was to implement new things when one didn’t have to 3D model but could just use prose. And so I think some designs can run into technical/doability problems in certain systems. The difference in work from 3D to prose I think is quite stark but even from Twine to inform I think there could be doability limits on this agnostic design. Is it a realistic work load to have dozens of objects in dozens of rooms as click able links in a twine game? Would it be a good experience for the player? I don’t use twine so I have no idea. But I do feel at least when it comes to some choices, perhaps making every door openable, the system one designs within can at least aid work loads if not change something from near impossible to trivial (in this cases I think the generalness of informs aproach to actions such as open door trivializes the workload which (and again in inexperienced with twine) I feel could be difficult to write for a twine/CYOA game).

Despite these limits though agnostic design is something I really value, and I think there’s a lot one can and should learn not just from other systems of IF, not just other systems of games, but design philosophys in all arts. Another GDC video that stood out to me recent was in architecture and room design for grand theft auto. But what the speaker had to say about designing a 3D space for 2D display still got me thinking about how some of those lessons apply to IF. (If 3D games are making 3D spaces for 2D displays I think If writers are making 3D spaces for 2D displays to then be turned into prose). And so I think people should focus on thinking outside of the box of their working in more, even when that works against the system or genre or medium your in, because you can find inspiration from a lot of spaces and it’s breaking out of what’s comfortable that leads to the great innovative games that push how we think of these systems.

2 Likes

You are correct! First realize the idea, then choose the medium.

You correctly recognize the big difference. There’s another characteristics Inform vs CYOA. You can have hundreds of verbs on the command line, which you can’t, practically speaking, with CYOA. This shapes the story for each platforms.

That’s correct. In fact, the implementation can be a spoiler. Let’s say that you have a game where the solution is to hide the keycard by swallowing it, and push your stomach to the sensor. It will fail as Parser puzzle, but can be downright hilarious as CYOA!

Very astute observations. I think the person is Dan. He says that a lot.

Hence the existence of multiple libraries for Inform and Twine. And in case of Inform, multiple targets with Z machine and Glux

My latest inspiration comes from RPN calculator discussions, which has nothing to do with IF. Or anything much, really.

You have a long post here, but filled with many excellent ideas, and no fluff. What a scholar! It is my pleasure reading it. Thank you.

1 Like

Yes, but your “streamlining” requests require micromanaging of a long topic and moving messages which is work that we - Mods and Staff - have to accomplish. Please exercise patience in this public forum instead of always getting visibly upset when a thread doesn’t go exactly the way you expect it to. Thanks!

6 Likes

To be clear, the Twine example referenced here has been split off. But here’s the original Pseudocode that should be generic enough for all versions of Twine, and is also applicable to pure Javascript and other similar languages, if desired.

It’s easy for design to call for things that preclude some implementation options. And the ones that are left might preclude other design choices you’ve made. So I think it’s generally relevant for the conceptual and user experience design to be in an active feedback loop with high-level ideas about implementation.

But, of course, it comes down to details. If I wanted to do some super-simple take on a CYOA game that had no need to even maintain state, well, I already know HTML and could just write it in that far faster than it would take me to learn an existing framework (any of which, of course, would support much more than the super-simple take on CYOA I’m positing). I wouldn’t suffer for having ignored thinking about implementation details.

If I wanted to write a parser-based game with a parser and world model that went way beyond what Inform 7 or TADS or Dialog facilitates then, well, if I won the lottery and quit my job and worked on it full time then with reasonable luck I might have something to show in two years. In a world where I’m not likely to win the lottery, that comes to… something I would never finish. And after a decade or so I’d probably wish I’d given some thought to implementation.

1 Like

Thank you for your opinion. I disagree.

Sorry, I must have misunderstood the initial post, which didn’t mention ScottKit but which did pose questions I attempted to address.

Friendly neighborhood Mod post: :wave:

It’s natural that sometimes the subject of a topic will drift as a conversation progresses, and that is okay. We’re happy to split messages to new topics if warranted on request. You can PM @moderators with any questions. Remember nobody “owns” a topic and nobody should feel required to micromanage the responses, even if they are the OP.

Remember that flags do count against a user’s trust level. Not a whole lot individually, but they will build up and can prevent access to TL-3. Please consider that when flagging well-intentioned messages. In general use flags when posting behavior is disruptive and not just because you don’t like an answer that was given.

If you just need to notify us “Hey, this message might be better somewhere else…” please PM @moderators and let us know instead of flagging. Use ‘off topic’ flags when someone barges into a thread to sell shoes or cryptocurrency.

Thank you!

(Edit: deleted to reflect new thread split)

The rest of us don’t care about level of difficulty, but just want to work at the problem at hand! No distraction, please.

Edited to add:
Really, the best way to solve problem is to just dive in and understand the problem. Then select the appropriate tools. Then decide whether or not the (time/money) investment is worth it. To worry whether the problem is difficult or not is wasted effort.

To solve problem before understanding it will either necessitate resets every so often (happens to me all the time in R&D), or if you won’t reset, you’ll get stuck deep in hopeless situation that ends up having the project canceled.