BeamNG.Earth
A 1:1 scale streamed Earth for BeamNG.drive: real elevation and satellite imagery, floating origin, LOD streaming from a companion server
Characters your players can actually argue with: a persuasion mechanic for JavaScript games, where each character judges what players say by its own values.
GamesJavaScript · TypeScriptGitHub @tbroughtOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Characters players can actually argue with: a persuasion mechanic for JavaScript games where players type or speak to NPCs. Powered by Jev.
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
Characters your players can actually argue with. Give a character a name, a persona, and a goal, pass in whatever the player typed, and Honeytongue tells you whether they were convinced, judged by that character's values. The same line can win over a greedy merchant and offend an honest guard. It's for any game where players type or speak to characters, and it's powered by Jev, TypeSafe's typed decision model. It works in JavaScript games: browser games (there's a Phaser example), Twine stories, and anything that runs on Node, such as a Discord bot.Read the full README ↗Characters your players can actually argue with. Give a character a name, a persona, and a goal, pass in whatever the player typed, and Honeytongue tells you whether they were convinced, judged by that character's values. The same line can win over a greedy merchant and offend an honest guard. It's for any game where players type or speak to characters, and it's powered by Jev, TypeSafe's typed decision model. It works in JavaScript games: browser games (there's a Phaser example), Twine stories, and anything that runs on Node, such as a Discord bot. Spoken input works too, once your game turns speech into text: in tests, lines as speech recognition writes them got the same verdicts as typed ones, though long arguments scored a little lower (details). Engines outside JavaScript (Unity, Godot, Unreal, Ren'Py) aren't supported yet; a plain HTTP endpoint for them is on the roadmap. It has no dependencies, ships TypeScript types (TypeScript 5.9 or later), and works with import or require().
You only need three fields and one method. Everything else is optional.
Alpha, tested against live Jev. Version 0.1.0-alpha.14 has been calibrated and checked with about 10,600 live calls, whole conversations included (see the results). Defaults may still change before 0.1.0.
You need Node 22.13 or later. In an empty folder:
npm install honeytongue
Save this as try.mjs:
import { Persuadable, createJevClient, createMockClient } from "honeytongue";
const guard = new Persuadable(
{
name: "Harry",
persona: "A tired night guard who values honesty and can't stand flattery.",
goal: "Open the gate after curfew",
},
// With a TypeSafe key, Jev judges. Without one, a simple offline stand-in does.
{ client: process.env.TYPESAFE_API_KEY ? createJevClient() : createMockClient() },
);
const result = await guard.attempt("Please, I'm honestly carrying medicine for a sick child inside the walls.");
console.log(result.verdict, result.score);
Then run it:
node try.mjs
It prints a verdict and a score out of 4, like unconvinced 2.84. To use Jev, get a key from TypeSafe and set it before running: export TYPESAFE_API_KEY=... on macOS and Linux, or $env:TYPESAFE_API_KEY="..." in Windows PowerShell. Never put the key in browser code.
Every attempt gets one of four verdicts: convinced, unconvinced, offended (a threat or insult), or repeated. Your game decides what happens:
if (result.verdict === "convinced") openTheGate();
else if (result.outOfPatience) callTheWatch();
else say(result.reaction ?? "Harry's hand drops to his club.");
npx honeytongue playground, or in your browser.npx honeytongue in a terminal.Issues and feedback are welcome: report a bug or share a playtest. Honeytongue is a solo project, so pull requests aren't being accepted for now. Security problems go to private reporting instead (see SECURITY.md).
MIT. Built on Jev by TypeSafe AI, and not affiliated with TypeSafe.