
# AArcade: PlayCanvas
## Overview
### Description
Curate & organize your internet bookmarks & local file shortcuts into a 3D world on any device w/ a web browser.
Launch your stuff. Share your world.
### Features
- 3D interactive dynamic shortcuts powered by MSF.
- Media library of user's media shortcuts.
- 3D world filled with shortcuts.
- Persistent local-first saves.
- Full JSON import/export of save data.
- Multiplayer.
- Asymmetrical cross-play with AArcade: Source.
### Purpose
Portable home space that can work on any device w/ a web browser. (Windows/Linux/Android/iOS/etc.)
Same purpose as AArcade: Source, but on a different platform.
Easy Mode where the average user just chooses a world & spawns objects into it.
Hard Mode where the user creates their own PlayCanvas world scene.
### Scope
- No virtual city.
- No monetization.
- Launchable bookmarks/links with limited in-world screen capabilities.
### Components
#### Game System Managers
```
Anarchy Manager
Auth Manager
Network Manager
Embedded IFrame Managers (iframes. non-vr only.)
Embedded Canvas Manager (canvas texture such as video/image/music viewer)
Backpack Manager (maybe. stuff the user brings with them - from local storage probably.)
Canvas Manager (manage dynamic textures <-> item w/ channel association)
Input Manager
Scene Manager
Camera Manager
Player Manager
Library Manager (manages MSF lookups & management: maps, apps, models, items, types)
Instance Manager (spawning & current instance state.)
Asset Manager (manages asset lookup to match cross-platform assets & cloud assets.)
Mount Manager (maybe. manage mounting external asset packs?)
Quest Manager
UI Manager
```
```
What game systems would avatar demo currently utilize?
- Embedded IFrame Manager (Not really. Requires MSF systems.)
- Input Manager
- Scene Manager
- Camera Manager
- Player Manager
- Instance Manager (for spawning in.)
- UI Manager
What game systems could it be expanded to utilize?
- Auth Manager
- Network Manager
```
#### Dynamic Media Objects
- Active/inactive media system.
- Unlimited amount of active media objects.
- Limit 1 "focused" media object at a time.
#### 3D World
- PlayCanvas scenes.
- Augmented with user-spawned props & media objects.
#### Library Browser
- Search library for existing items.
- Create new items.
- Import/export full library as JSON.
# PlayCanvas
A base gameplay scene that can be imported as a prefab. Can be used by others in their own projects w/ only superficial configuration required.
## TODO
- Write object controller script, which binds an MSF item to a 3D object.
- Write interactive objects script that activates the media etc.
- Port several (all) default AArcade models to PlayCanvas.
- Figure out a universal compromise for the issue of planar vs non-planar screens in cabinets.
### Milestone 1
Show a bunch of objects in a room.
Woo hoo!
### Mileston3 2
Make them interactive.
### Milestone 3
Make it a game.
## Prefabs
### AssetManager
Contains prefab set of default cabinets, props, avatars, & worlds.
Also has methods for loading assets like images as PlayCanvas textures.
### LibraryManager
Has all library methods like searching for items, etc.
### PlayerManager
Handles adding a player to the world, and also remote players.
Does not handle network directly.
### NetworkManager
Handles the multiplayer aspect & fires events that the PlayerManager handles.
### InputManager
Handles input such as movement, looking around, and clicking on stuff.
### AnarchyManager
Handles UX & the loading/unloading of scenes.
## Components
- Asset library (cabinets & models.)
- Character controller (multiplayer compatible.)
- Input controller (interactions.)
- Media object controller (bind media, activate, deactivate, etc.)
# Media Library
2D HTML/CSS/JavaSript. Multi-purpose. Can be used in other MSF frontends & AArcade clients.