[HN Gopher] Odyc.js - A tiny JavaScript library for narrative games
       ___________________________________________________________________
        
       Odyc.js - A tiny JavaScript library for narrative games
        
       Author : achtaitaipai
       Score  : 239 points
       Date   : 2025-06-06 13:46 UTC (1 days ago)
        
 (HTM) web link (odyc.dev)
 (TXT) w3m dump (odyc.dev)
        
       | kevinsync wrote:
       | The Magic Mushroom is incredible lol
       | 
       | https://achtaitaipai.github.io/odyc-exemples/games/mushroom....
        
         | chrisweekly wrote:
         | This one's my fave so far https://achtaitaipai.github.io/odyc-
         | exemples/games/vroum.htm...
        
           | TheGoodBarn wrote:
           | reminds me of braid, very satisfying
        
         | mNovak wrote:
         | John Wick is an accurate summary of the recent movie
         | 
         | https://achtaitaipai.github.io/odyc-exemples/games/john-wick...
        
       | hahahacorn wrote:
       | This is amazing and exactly what I needed as of ~12 hours ago.
       | 
       | The coincidence is kinda insane though - quick personal story I
       | think is worth a readers time. I was just working on assets to
       | develop a very quick (3-levels, built for one person) narrative
       | romance game until I fell asleep last night. I've never developed
       | any game of any kind.
       | 
       | I then wake up to a JS library for narrative games at the #1 spot
       | on HN.
       | 
       | FTR the game is a simp game I'm using it to ask someone I've been
       | seeing to make things official.
        
         | nartho wrote:
         | If it's worth anything, this sounds very sweet and thoughtful,
         | I don't think enjoying someone's company makes you a "simp"
         | neither does showing attention.
        
           | hahahacorn wrote:
           | Text doesn't translate it well but that's just my sarcastic
           | sense of humor :)
           | 
           | I love trying and going a bit overboard because life is short
           | and sweet and it's your responsibility as a human to make it
           | fun.
           | 
           | I do appreciate this comment though. I personally know a lot
           | of my peers would be made better by internalizing your belief
           | - I'm just not one of them :)
        
         | achtaitaipai wrote:
         | Love the idea! Wish I could've helped out sounds like the
         | perfect use case :) Hope it works out!
        
         | janoelze wrote:
         | its a thoughtful idea - and been there too, just recently did a
         | faithful html recreation of the 2005 MSN chat interface to
         | surprise someone with teenage nostalgia. it was sweet.
        
       | eldog_ wrote:
       | Great use of typing in the editor, e.g., I like how it knows the
       | references to template sprites so it can highlight the errors
       | when calling functions with incorrect arguments.
        
         | achtaitaipai wrote:
         | Thanks! I put a lot of effort into the typing and getting the
         | editor autocomplete to feel right. Happy to hear it shows :)
        
       | c0nfused wrote:
       | I really enjoy the way this is put together. I have written a
       | number of javascript game engines, to play with over the years,
       | and this hit a really nice spot between, I need to throw this
       | whole thing to gether in the next 2 hours to entertain the kids,
       | and the subsequent I really want to do a deep dive into the nitty
       | gritty of this thing.
       | 
       | Looking forward to slapping a few quick games into this and
       | distract the kids in a low bandwidth type style.
        
       | socalgal2 wrote:
       | Why is the title '...for narrative games'? The library's front
       | page itself doesn't say anything about 'narrative' games.
       | 
       | For that matter, what is a "narrative game". None of the sample
       | games would fit the definition in my head of "narrative game". If
       | I google for "narrative game", the sample games certainly don't
       | seem to fit.
       | 
       | And, assuming there is a common definition of "narrative game",
       | what does this library do special to facility making "narrative
       | games" that other game engines do not?
        
         | SamBam wrote:
         | Indeed, I was assuming it was a text adventure engine.
        
         | achtaitaipai wrote:
         | You're right, there are only two more "narrative" examples
         | accessible via the French version of the site. I used the term
         | because the turn-based structure and focus on messages,
         | prompts, and dialogues felt suited to narrative or text-driven
         | games, but maybe that's not the best label. Happy to rethink
         | it!
        
           | WorldMaker wrote:
           | "ZZT-like" would be the adjective/genre descriptor I'd use
           | for this. It's a slowly forgotten genre these years (unlike
           | "Rogue-like" and "Rogue-lite" you see being thrown around
           | everywhere), but a classic genre of the early PC nonetheless.
           | 
           | https://museumofzzt.com/
        
             | achtaitaipai wrote:
             | I didn't know about ZZT, but that makes a lot of sense now
             | that I've looked into it. The format, simplicity, and
             | screen-by-screen feel do seem closely related. Thanks for
             | the reference. That museum is a great find!
        
               | WorldMaker wrote:
               | I recall Anna Anthropy's book on ZZT doing a great job of
               | capturing the feel of the early PC ZZT scene and some of
               | its AOL/CompuServe/Prodigy communities in the early 90s.
               | Might serve as other bits of inspiration, if you like
               | short history books: https://www.amazon.com/Boss-Fight-
               | Books-Anna-Anthropy/dp/194...
        
           | socalgal2 wrote:
           | Was just curious if I was missing something that facilitated
           | "narrative games" more than other engines.
           | 
           | It's a cool project. I like that your examples use ASCII
           | maps. So simple to prototype. No need to break out a map
           | editor.
        
         | 90s_dev wrote:
         | I was kind of hoping it would be for text based adventures,
         | 
         | since last night I had the idea for one,
         | 
         | where you're an adult and you have to do adult things
         | 
         | like file taxes and go to work and dust your house
         | 
         | and the less you do these things the harder life gets,
         | 
         | but the more you do them, the easier it gets,
         | 
         | and the goal of the game is to die with no debt.
        
           | hombre_fatal wrote:
           | You've got an idea. Now for the hard part: make it fun. :D
           | Especially in a text-only medium.
        
             | 90s_dev wrote:
             | My only plan for that was to add shadertoys effects to the
             | text. Not great hence I hadn't started.
        
               | hombre_fatal wrote:
               | Speaking of, check out this shader ascii text game I saw
               | on Steam: https://www.youtube.com/watch?v=dfe3VK7H6uI
               | 
               | I kind of love the look.
               | 
               | Maybe with a new set of ansi escapes we can get Zork to
               | look like that. :D
        
               | 90s_dev wrote:
               | That is really cool and inspires me and makes me want to
               | play it and make stuff like it, thanks for showing it to
               | me. I really do live under a rock it seems.
        
               | nihiven wrote:
               | That is cool! I like the look of this one too:
               | https://andreifomin.itch.io/effulgence
        
               | hombre_fatal wrote:
               | Ooh, that's actually the game I had in mind!
               | 
               | It's so much more impressive. Those 3D effects are just
               | insane. Just look at that 3D globe.
        
               | NetOpWibby wrote:
               | That's sick af
        
           | spencerflem wrote:
           | Ink language & their IDE make it very easy to get started
           | with choice games ! And it exports to HTML/Js where you can
           | add further visual effects via custom JavaScript.
           | 
           | Highly reccomend, its so good that it takes all the fun out
           | of designing my own janky custom system.
        
             | 90s_dev wrote:
             | Thanks for the recommendation, I never would have guessed
             | someone made something like this! But of course they did.
             | 
             | I was definitely wondering how I would do this outside of
             | Excel, but I have so many projects going on right now that
             | figuring this one out didn't sound fun :D
        
               | dunham wrote:
               | There is also twinery or inklewriter for simple text
               | stories with an online authoring option. And Inform7 for
               | full on text adventures, where you write the stories in a
               | declarative manner as plain english.
               | 
               | https://twinery.org
               | 
               | https://inklewriter.com
               | 
               | https://ganelson.github.io/inform-website/
        
               | spencerflem wrote:
               | I like squiffy as well, though its not as popular or
               | elegant. Possibly just nostalgia.
               | 
               | & Evennia is very cool if you want to make a multiplayer
               | one!
               | 
               | One of these days I'll try out Inform7 it seems so cool
               | but haven't had an idea for a game that could use it yet
        
             | shakna wrote:
             | Unfortunately Inky has a showstopping bug I and a few
             | others have hit. [0]
             | 
             | And it breaks the IDE until you somehow uninstall it and
             | every dependency. And kill all its temporary files.
             | 
             | [0] https://github.com/inkle/inky/issues/522
        
               | spencerflem wrote:
               | Awww, rip. Hadn't hit that one while I was playing with
               | it.
        
         | hombre_fatal wrote:
         | I think the idea is that it gives you a declarative way to
         | build simple adventure games with text and dialogue.
         | 
         | Its selling point isn't for building mechanics-first games like
         | a more general engine (e.g. Pico-8).
         | 
         | But what you can do is easily make maps, a character that walks
         | between maps, NPCs, and triggers for dialogue/text.
         | 
         | Consider other engines aimed at non-programmers like RPGMaker:
         | the main games people make with it are "narrative games" where
         | you walk around and read text/dialogue, usually with zero
         | additional mechanics outside of the built-in map + trigger
         | system. It's probably 90% of games built with it!
         | 
         | So I'd reckon they're saying "you can build those games with
         | this tool too".
        
           | RodgerTheGreat wrote:
           | A closer comparison than Pico-8 might Bitsy or PuzzleScript,
           | but with all the power (and complexity) of arbitrary
           | JavaScript code underneath.
        
         | dicytea wrote:
         | From the intro[^1]:
         | 
         | > Odyc.js is a tiny JavaScript library designed to create
         | narrative games by combining pixels, sounds, text, and a bit of
         | logic.
         | 
         | [^1]: https://odyc.dev/doc/getting-started/intro
        
       | fudged71 wrote:
       | game.prompt("Dude, you ran out of eggs!|Would you like to buy|an
       | 80 pack of eggs?", "Yes", "No");
        
         | achtaitaipai wrote:
         | await game.openDialog("Dude, you ran out of eggs!|Would you
         | like to buy|an 80 pack of eggs?") game.prompt( "Yes", "No")
        
         | gatopingado wrote:
         | That one egg was forty eggs?
        
       | NotAnOtter wrote:
       | Neat little thing. Feels like a great learning tool for kids,
       | like a new age pygame.
       | 
       | Scratch and the others in that style always felt like it went one
       | step too far. It's designed for 5 yearolds, and 5 yearolds don't
       | need to be learning about code.
       | 
       | This is a good sweetspot for a ~10 year old. Reasonably simple
       | string manipulation , a couple of syntax tricks to learn, and not
       | much else. Just to get a basic side scroller with some NPC's.
       | Then they can incorporate control flow when they are ready.
       | 
       | Consider releasing a class for kids on this tool & investing in
       | the playground. You could get some real sales.
       | 
       | A different angle, you could do some basic procgen game assets
       | with this tool.
        
       | ryoshu wrote:
       | I love this. Fits with a side project perfectly!
        
       | sciolizer wrote:
       | Reminds me of [puzzlescript][1].
       | 
       | [1]: https://www.puzzlescript.net/editor.html
        
         | achtaitaipai wrote:
         | PuzzleScript is super cool! I also really like crisp-game-lib,
         | in the same family of tiny engines
        
       | wdiamond wrote:
       | awesome product. scratch like business.
        
       | navs wrote:
       | Not related to the library at all, but I'm curious how that
       | canvas video recorder works in the playground. Love to implement
       | something similar.
        
         | janoelze wrote:
         | I recently looked into that for a project and was surprised
         | that it's a built-in feature! :)
         | https://medium.com/@amatewasu/how-to-record-a-canvas-element...
        
         | achtaitaipai wrote:
         | https://github.com/achtaitaipai/odyc-doc/blob/main/src/lib/g...
        
       | matkurianski wrote:
       | That's a truly inspiring project, thanks for sharing!
       | 
       | I noticed it's open source but is missing a license. Could you
       | add one so developers can understand to what extent they can
       | modify and publish their forks?
       | 
       | For example, it occurred to me that I could translate it into my
       | native language and publish a fork of it (with credits, of
       | course), since less than 5% of my country speaks English. Would
       | that be okay with you?
        
         | achtaitaipai wrote:
         | Ohh thank you, I'd be thrilled! I'll add an MIT-style license a
         | bit later today. What's your native language? Right now it's
         | fairly easy to add translations to the site for left-to-right
         | languages.
         | 
         | In any case, feel free to fork, send a pull request, or reach
         | out if you'd like to help make it more accessible!
        
       | halfmatthalfcat wrote:
       | This is super cool!
        
       ___________________________________________________________________
       (page generated 2025-06-07 23:01 UTC)