neuro-game-sdk
v1.0.4
Published
A TypeScript/JavaScript SDK for integrating games with Neuro-sama AI streamer.
Downloads
316
Maintainers
Readme
Neuro Game SDK for TypeScript and JavaScript
A TypeScript and JavaScript SDK for integrating games with Neuro-sama AI streamer, allowing developers to write games that Neuro-sama can interact.
This SDK is based on the original Neuro Game SDK and provides an implementation compatible with both Node.js and browser environments. It is designed to work seamlessly in both JavaScript and TypeScript projects.
Installation
Install the SDK via npm:
npm install neuro-game-sdk
Usage
In Node.js
import { NeuroClient } from 'neuro-game-sdk'
const NEURO_SERVER_URL = 'ws://localhost:8000'
const GAME_NAME = 'Guess the Number'
const neuroClient = new NeuroClient(NEURO_SERVER_URL, GAME_NAME, () => {
// Game initialization code. Check the example code
})
In the Browser
Using unpkg:
<script src="https://unpkg.com/neuro-game-sdk/dist/browser/neuro-game-sdk.min.js"></script>
Using jsDelivr:
<script src="https://cdn.jsdelivr.net/npm/neuro-game-sdk/dist/browser/neuro-game-sdk.min.js"></script>
This will load the SDK into the global namespace as NeuroGameSdk
. You can then use it in your scripts:
<script>
const { NeuroClient } = NeuroGameSdk
const NEURO_SERVER_URL = 'ws://localhost:8000'
const GAME_NAME = 'Guess the Number'
const neuroClient = new NeuroClient(NEURO_SERVER_URL, GAME_NAME, () => {
// Game initialization code. Check the example code
})
</script>
Quick Start Example
Here's an example of a simple game where Neuro-sama tries to guess a number between 1 and 10. When she guesses correctly, a new number is generated.
import { NeuroClient } from 'neuro-game-sdk'
const NEURO_SERVER_URL = 'ws://localhost:8000'
const GAME_NAME = 'Guess the Number'
const neuroClient = new NeuroClient(NEURO_SERVER_URL, GAME_NAME, () => {
neuroClient.registerActions([
{
name: 'guess_number',
description: 'Guess the number between 1 and 10.',
schema: {
type: 'object',
properties: {
number: { type: 'integer', minimum: 1, maximum: 10 },
},
required: ['number'],
},
},
])
let targetNumber = Math.floor(Math.random() * 10) + 1
neuroClient.onAction(actionData => {
if (actionData.name === 'guess_number') {
const guessedNumber = actionData.params.number
if (
typeof guessedNumber !== 'number' ||
guessedNumber < 1 ||
guessedNumber > 10
) {
neuroClient.sendActionResult(
actionData.id,
false,
'Invalid number. Please guess a number between 1 and 10.'
)
return
}
if (guessedNumber === targetNumber) {
neuroClient.sendActionResult(
actionData.id,
true,
`Correct! The number was ${targetNumber}. Generating a new number.`
)
targetNumber = Math.floor(Math.random() * 10) + 1
promptNeuroAction()
} else {
neuroClient.sendActionResult(
actionData.id,
true,
`Incorrect. The number is ${
guessedNumber < targetNumber ? 'higher' : 'lower'
}. Try again.`
)
promptNeuroAction()
}
} else {
neuroClient.sendActionResult(actionData.id, false, 'Unknown action.')
}
})
neuroClient.sendContext(
'Game started. I have picked a number between 1 and 10.',
false
)
function promptNeuroAction() {
const availableActions = ['guess_number']
const query = 'Please guess a number between 1 and 10.'
const state = 'Waiting for your guess.'
neuroClient.forceActions(query, availableActions, state)
}
promptNeuroAction()
})
Happy coding! <3 - ArieX