15 comments

  • socalgal2 22 days ago
    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?

    • 90s_dev 22 days ago
      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.

      • spencerflem 22 days ago
        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.

        • shakna 21 days ago
          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 21 days ago
            Awww, rip. Hadn't hit that one while I was playing with it.
        • 90s_dev 22 days ago
          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 21 days ago
            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 21 days ago
              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

      • hombre_fatal 22 days ago
        You've got an idea. Now for the hard part: make it fun. :D Especially in a text-only medium.
        • 90s_dev 22 days ago
          My only plan for that was to add shadertoys effects to the text. Not great hence I hadn't started.
          • hombre_fatal 22 days ago
            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

            • nihiven 22 days ago
              That is cool! I like the look of this one too: https://andreifomin.itch.io/effulgence
              • hombre_fatal 22 days ago
                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 21 days ago
                That’s sick af
            • 90s_dev 22 days ago
              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.
    • hombre_fatal 22 days ago
      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 22 days ago
        A closer comparison than Pico-8 might Bitsy or PuzzleScript, but with all the power (and complexity) of arbitrary JavaScript code underneath.
    • dicytea 22 days ago
      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

    • SamBam 22 days ago
      Indeed, I was assuming it was a text adventure engine.
    • achtaitaipai 22 days ago
      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 22 days ago
        "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 22 days ago
          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!
      • socalgal2 22 days ago
        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.

  • kevinsync 22 days ago
  • c0nfused 22 days ago
    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.

    • zoom6628 20 days ago
      I have never been able to throw any code together in 2h to entertain the kids so the fact you can do that is already awesome!
  • NotAnOtter 22 days ago
    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.

  • fudged71 22 days ago
    game.prompt("Dude, you ran out of eggs!|Would you like to buy|an 80 pack of eggs?", "Yes", "No");
    • achtaitaipai 22 days ago
      await game.openDialog("Dude, you ran out of eggs!|Would you like to buy|an 80 pack of eggs?") game.prompt( "Yes", "No")
    • gatopingado 22 days ago
      That one egg was forty eggs?
  • hahahacorn 22 days ago
    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.

    • janoelze 22 days ago
      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.
    • achtaitaipai 22 days ago
      Love the idea! Wish I could’ve helped out sounds like the perfect use case :) Hope it works out!
    • nartho 22 days ago
      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 22 days ago
        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 :)

  • sciolizer 22 days ago
    Reminds me of [puzzlescript][1].

    [1]: https://www.puzzlescript.net/editor.html

    • achtaitaipai 21 days ago
      PuzzleScript is super cool! I also really like crisp-game-lib, in the same family of tiny engines
  • matkurianski 22 days ago
    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 21 days ago
      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!

  • eldog_ 22 days ago
    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 22 days ago
      Thanks! I put a lot of effort into the typing and getting the editor autocomplete to feel right. Happy to hear it shows :)
  • navs 22 days ago
    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.
  • ryoshu 22 days ago
    I love this. Fits with a side project perfectly!
  • halfmatthalfcat 21 days ago
    This is super cool!
  • wdiamond 22 days ago
    awesome product. scratch like business.