diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..95e8f0c --- /dev/null +++ b/.gitignore @@ -0,0 +1,133 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* +.pnpm-debug.log* + +# Diagnostic reports (https://nodejs.org/api/report.html) +report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage +*.lcov + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# Snowpack dependency directory (https://snowpack.dev/) +web_modules/ + +# TypeScript cache +*.tsbuildinfo + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional stylelint cache +.stylelintcache + +# Microbundle cache +.rpt2_cache/ +.rts2_cache_cjs/ +.rts2_cache_es/ +.rts2_cache_umd/ + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variable files +.env +.env.development.local +.env.test.local +.env.production.local +.env.local + +# parcel-bundler cache (https://parceljs.org/) +.cache +.parcel-cache + +# Next.js build output +.next +out + +# Nuxt.js build / generate output +.nuxt +dist + +# Gatsby files +.cache/ +# Comment in the public line in if your project uses Gatsby and not Next.js +# https://nextjs.org/blog/next-9-1#public-directory-support +# public + +# vuepress build output +.vuepress/dist + +# vuepress v2.x temp and cache directory +.temp +.cache + +# Docusaurus cache and generated files +.docusaurus + +# Serverless directories +.serverless/ + +# FuseBox cache +.fusebox/ + +# DynamoDB Local files +.dynamodb/ + +# TernJS port file +.tern-port + +# Stores VSCode versions used for testing VSCode extensions +.vscode-test + +# yarn v2 +.yarn/cache +.yarn/unplugged +.yarn/build-state.yml +.yarn/install-state.gz +.pnp.* + +# IntelliJ +.idea/ diff --git a/README.md b/README.md new file mode 100644 index 0000000..0116567 --- /dev/null +++ b/README.md @@ -0,0 +1,4 @@ +# Unity Template + +Official Regression Games starter template for programming Unity Bots using our JavaScript SDK. +See [our documentation site](https://docs.regression.gg/studios/unity/unity-sdk/overview) for a complete guide to setup, configuration, and JavaScript Bot APIs. diff --git a/index.js b/index.js new file mode 100644 index 0000000..3be97c0 --- /dev/null +++ b/index.js @@ -0,0 +1,41 @@ +/** + * Configure your bot instance. + * See our [API Documentation]{@link https://docs.regression.gg/studios/unity/unity-sdk/creating-bots/configuration} for available configuration options and values. + */ +export function configureBot(rg) { + + rg.isSpawnable = true; + rg.lifecycle = "MANAGED"; + rg.characterConfig = { + // fill in custom keys + values to help seat and spawn your bot + }; +} + +/** + * Implement your code here to define a [PlayTest Bot]{@link https://docs.regression.gg/studios/unity/unity-sdk/creating-bots/playtest-bots}. + * This method is invoked once each time your Unity integration collects updated state information for your GameObjects. + * Add your code here to make dynamic decisions based on the current game state. + * + * Note: processTick and startScenario are mutually exclusive + * + * @param rg Exposes the [Regression Games API]{@link https://docs.regression.gg/studios/unity/unity-sdk/creating-bots/configuration} which contains methods for evaluating the game state and queueing behaviors that you've defined as `RGActions`. + */ +export async function processTick(rg) { + + console.log("Tick #:", rg.getState().tick); + console.log("Scene Name:", rg.getState().sceneName); + console.log("Entities in state:", Object.keys(rg.getState().gameState).length); +} + +/** + * Implement your code here to define a [Validation Bot]{@link https://docs.regression.gg/studios/unity/unity-sdk/creating-bots/validation-bots}. + * This method is invoked once and runs to completion. The scenario will fail if any assertion fails. + * Add your code here to perform step-by-step actions and validate their effects on other GameObjects the game state. + * + * Note: processTick and startScenario are mutually exclusive + * + * @param rg Exposes the [Regression Games API]{@link https://docs.regression.gg/studios/unity/unity-sdk/creating-bots/configuration} which contains methods for evaluating the game state and queueing behaviors that you've defined as `RGActions`. + */ +// export async function startScenario(rg) { + +// } \ No newline at end of file diff --git a/package.json b/package.json new file mode 100644 index 0000000..8e52556 --- /dev/null +++ b/package.json @@ -0,0 +1,17 @@ +{ + "name": "rg-unity-starter-template", + "version": "1.0.0", + "description": "Official Regression Games starter template for programming Unity Bots using our JavaScript SDK", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [], + "author": "Regression Games, Inc", + "license": "ISC", + "dependencies": { + "@types/node": "18.0.6", + "node-fetch": "3.3.0", + "rg-match-info": "1.1.0" + } + } \ No newline at end of file