🍎 Provide the JavaScript community with a fast track to high performance 3D VR multiplayer games installable on phones, tablets, laptops, and desktops as Progressive Web Applications (PWAs). The resultant games are compatible with many popular VR HMD and controller systems such as the Oculus Quest.
🍎 Provide students and teachers with an accompanying introductory level curriculum covering computer programming, computer networks, and application asset design.
🍎 Log into the tech demo with username: computer or science and password: 1234.
The CS1 Game Engine is currently lacking a clear boundary between itself and the embedded tech demo. I will soon start to pull those apart to establish a clear API boundary layer for the engine. For now I suggest starting with the lessons accompanying the CS1 IDE.
🍎 Remix this project.
🍎 Add an ADMIN_KEY in .env, such as:
ADMIN_KEY="myAdminPassword1234"
🍎 Add DATABASE_API_PROPERTIES in .env, separated by spaces such as:
DATABASE_API_PROPERTIES="LED credits"
🍎 Add IOT_API_KEY in .env if you are connecting an IoT device:
IOT_API_KEY="wejvaYi359qM12"
🍎 For the admin account, login with admin and your ADMIN_KEY.
🍎 Add additional accounts through the client console.
CS1.socket.emit('add-user',{key:[ADMIN_KEY],name:[new username],pw:[new user pw]})
🍎 After changing any src/ files, in the server Tools/Console run:
pnpm run build
refresh
🍎 Based upon A-Frame version 0.9.
🍎 Using navigation mesh based pathfinding.
🍎 Integrated with D3.js for data visualization.
- Make examples. (TODO)
🍎 Enables easy use of shaders created with Shader Frog.
- Include the desired shader json file in your build by importing in shader-frog.js
- Declaratively implement the shader-frog component in your HTML.
🍎 JS, CSS, and JSON bundling, minification, and uglifying with Rollup.
🍎 Installable as a Progressive Web App (PWA).
🍎 Heads Up Display (HUD) system including:
- RingDial data visualization widget
- Meter data visualization widget
- GUI Widgets (TODO)
🍎 Collectibiles System
- Offline collection
- Online collection
- Collectibles can be set to respawn
🍎 Items can be declared grabbable, therefore movable by players.
🍎 grabbable items can be launched with the launchable component.
- bloom
- glitch
- godrays
- fxaa
- JSON particles bundling
🍎 BGM System (named exports)
- via SoundCloud
- bgmlite: simple no UI, no server interaction
- bgm: includes UI and interactive multiplayer interaction (TODO)
🍎 Player Component
- instantiated for all players
- avatars and animation clips can be changed dynamically
🍎 Node Graph Flow Based Editor
- Create with Litegraph. (Early Development)
🍎 Cloud Component
- vertex animation
- custom color
🍎 NPC Component
🍎 Dotrow Component
- Makes it easy to add rows of collectibles.
- Intended to be developer's first look in to editing component source code.
🍎 Database
- uses Lowdb
🍎 IoT Component
- Illustrates basic IoT device integration.
🍎 CS1.scene
🍎 CS1.myPlayer
🍎 CS1.otherPlayers
🍎 CS1.utils
- uuid()
- isEqual(a,b)
- toColor(number)
- randomFromArray(array)
🍎 CS1.cam
🍎 CS1.collectibles
🍎 CS1.grabbables
🍎 CS1.hud
🍎 CS1.say
🍎 CS1.sounds
🍎 CS1.shaderfrog 🐸
- provides easy access to shaders to manipulate uniforms.
🍎 CS1.npc
🍎 CS1.game
🍎 CS1.db
- set({key:'value'} , callbackFunction)
- get('key' , callbackFunction)
🍎 Please post any issues to GitHub.