NHacker Next
  • new
  • past
  • show
  • ask
  • show
  • jobs
  • submit
Odyc.js – A tiny JavaScript library for narrative games (odyc.dev)
socalgal2 24 hours 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 23 hours 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.

hombre_fatal 23 hours ago [-]
You've got an idea. Now for the hard part: make it fun. :D Especially in a text-only medium.
90s_dev 22 hours ago [-]
My only plan for that was to add shadertoys effects to the text. Not great hence I hadn't started.
hombre_fatal 21 hours 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 19 hours ago [-]
That is cool! I like the look of this one too: https://andreifomin.itch.io/effulgence
hombre_fatal 17 hours 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 7 hours ago [-]
That’s sick af
90s_dev 20 hours 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.
spencerflem 15 hours 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 14 hours 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 12 hours ago [-]
Awww, rip. Hadn't hit that one while I was playing with it.
90s_dev 15 hours 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 13 hours 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 12 hours 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 23 hours 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 17 hours ago [-]
A closer comparison than Pico-8 might Bitsy or PuzzleScript, but with all the power (and complexity) of arbitrary JavaScript code underneath.
dicytea 20 hours 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 24 hours ago [-]
Indeed, I was assuming it was a text adventure engine.
achtaitaipai 24 hours 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 23 hours 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 18 hours 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!
WorldMaker 16 hours ago [-]
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 17 hours 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 1 days ago [-]
chrisweekly 1 days ago [-]
TheGoodBarn 10 hours ago [-]
reminds me of braid, very satisfying
mNovak 22 hours ago [-]
John Wick is an accurate summary of the recent movie

https://achtaitaipai.github.io/odyc-exemples/games/john-wick...

c0nfused 24 hours 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.

NotAnOtter 23 hours 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 24 hours ago [-]
game.prompt("Dude, you ran out of eggs!|Would you like to buy|an 80 pack of eggs?", "Yes", "No");
achtaitaipai 24 hours 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 21 hours ago [-]
That one egg was forty eggs?
matkurianski 15 hours 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 9 hours 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!

sciolizer 21 hours ago [-]
Reminds me of [puzzlescript][1].

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

achtaitaipai 9 hours ago [-]
PuzzleScript is super cool! I also really like crisp-game-lib, in the same family of tiny engines
hahahacorn 24 hours 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 15 hours 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 24 hours ago [-]
Love the idea! Wish I could’ve helped out sounds like the perfect use case :) Hope it works out!
nartho 24 hours 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 23 hours 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 :)

navs 16 hours 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.
janoelze 15 hours ago [-]
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...
1 days ago [-]
eldog_ 24 hours 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 24 hours ago [-]
Thanks! I put a lot of effort into the typing and getting the editor autocomplete to feel right. Happy to hear it shows :)
15 hours ago [-]
ryoshu 23 hours ago [-]
I love this. Fits with a side project perfectly!
wdiamond 16 hours ago [-]
awesome product. scratch like business.
Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact
Rendered at 15:32:51 GMT+0000 (Coordinated Universal Time) with Vercel.