EricEisaman / cs1-py

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

CS1 Game Engine

Python Enhanced Edition

version 0.4.0


Mission

🍎 Provide the Python 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 Python programming, computer networks, and application asset design.


Tech Demo

🍎 Log into the tech demo with username: computer or science and password: 1234.

🍎 Keyboard Interface:

  • Movement: WASD or Arrow Keys
  • Chat Mode:
    • Toggle On/Off: =
    • Submit: Enter
    • New Line: Down Arrow
  • VRUI Toggle On/Off: Backquote Key

First Steps

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 Python IDE.

CS1 IDE


Quick Start

🍎 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

Overview

🍎 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.

🍎 A-Frame Effects

  • bloom
  • glitch
  • godrays
  • fxaa

🍎 A-Frame Particle Player

  • 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

🍎 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

🍎 IoT Component

  • Illustrates basic IoT device integration.

CS1 Global Object Namespace

🍎 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)

Issues

🍎 Please post any issues to GitHub.

About

License:MIT License


Languages

Language:JavaScript 96.6%Language:CSS 2.1%Language:HTML 1.3%