Design Doc, The Game Engine - The-Source-Eternal/Unwritten3D GitHub Wiki
- Name
- Dependancies
- Style Guide
- Documentation
- Sources
- Resources (three.js means three.js with its editor)
Other resources
- http://zachberry.com/blog/tracking-3d-objects-in-2d-with-three-js/
- https://github.com/dominictarr/crdt/ (multiplayer)
- [Resources] (https://github.com/The-Source-Eternal/Source/wiki/Resources) in general
Features for game engine users
Short term wants
- Create objects
- Change dimensions of objects
- Some things colliding
- Other things not colliding
- Tags?
- Passing through an object to trigger actions GUI
- HUD
- (Future: Follows object)
- Text on object surfaces
- Instantiating objects with code
Everything and the kitchen sink
- Object Editor (in component settings or with the mouse)
- Create: three.js
- Rotate: three.js
- Scale: three.js
- Move: three.js
- Mesh: three.js?
- Texture: three.js? Is this the same a Material?
- Physics: ammo.js (integrated with three.js editor: https://www.youtube.com/watch?v=Y4ygcI6HSW4), [oimo.js](http://lo-th.github.io/Oimo.js/index.html - physics for the engine, editable through components), cannon.js
- Layers (for collisions or physics or something): ?
- Tags: ?
- Components: maybe three.js if they're interested in implementing it. Right now custom script component creation is being worked on.
- Brainstorms ~ Invisible/visible to camera ~ Invisible/visible to light ~ Invisible/Visible to some lights/cameras
- Import pre-made objects: (three.js? http://blog.romanliutikov.com/post/58690562825/external-models-in-three-js)
- Prefabs: ?
- Manipulating the editor view: three.js
- Hotkeys: ?
- Parent Objects: three.js
- Hierarchy of scene objects: three.js
- Hierarchy of files (File Manager): ?
- Cameras (for the game-maker to manipulate): ?
- Lighting: three.js
- Ambient light (coming from no particular source)
- Spotlights
- Radiant (like a lightbulb)
- One direction/Directional
- Shadows: (does three.js have this?)
- Objects that only let some light through? Is that too heavy a load?
- Sound: ?
- Physics Editor: self-built? It's UI stuff again.
- For whole game
- For scene
- For layers
- For object (will be in components)
- Gravity
- Collision
- Mass
- Weight
- Air resistance?
- Friction?
- How size works
- The unit/scale thing like Unity?
- Components (component ui, not just scripts. Right now custom script component creation is being worked on for three.js/editor):
- Collision physics ~ Collision layers ~ Weight, etc. ~ Not buggy collision ~ Handling collision between children objects. How does solid works have simple machines that work?
- Other physics? Is that separate?
- Scripts and script editor: http://codemirror.net
- Materials
- Properties
- Component editor (Right now custom script component creation is being worked on for three.js/editor.)
- Layer properties:
- Collisions
- Visibility to lights and cameras
- Specific physics settings
- GUI (that the game creator creates):
- Basically html?
- Pre-made stuff?
- Pre-made OOCSS stuff?
- Some way to do 2D easily?
- Levels/Scenes
- Ways to set saving user data for their players?
- Multiplayer stuff?: (Eric B.)
- Importing and exporting objects, components, and prefabs
- Scene Creation
- Game Creation
- Debugging
- Console
- Visible rays
- Game Publication Help (putting their stuff online)
- Optimization
- Analytics
- Incompatible browser or hardware error messages (including sending them to http://browsehappy.com?)
Other Thoughts
The component values editor (in the inspector) should affect the code and visa versa. Changing the code should not break the values set in the inspector and changing the values in the inspector should change the values set in the code. Either that or the inspector can only do stuff that won't be broken when someone changes the code. Basically, the inspector should not be a barrier to creating games. I'm not sure how this can work with individual prefabs, if each of them that was different would have it's own scripts generated, or some script that generated all prefabs with their own settings... or something. Perhaps there can be a special section in the code that's just inspector values? Ugh, maybe that would just be too heavy. We may at least want to try it out.
object.Move and object.Warp