I took a crack at it too. I like a lot of it but I'm not sold on renaming Engine to Asset. Engine deals with caches and packages as well as assets. I could also see us moving something down from framework to engine like the task system. EngineJobs should just go away eventually I think. Maybe just roll it in with Engine.
Here is my attempt:
Helium
- Engine
- Build
- Built
- Code
- Core (contents match your suggestion)
- Dependencies (contents match your suggestion)
- Game (Everything in Engine in the above example goes here)
- Tests
- Tools (contents match your suggestion)
- Data (the editor itself will probably want to use content)
- Documentation
- Plugins (analogous to integrations but maybe more familiar terminology to those not familiar with the project)
- Bullet
- SCL (Standard component library?)
- OIS
- Projects
- Examples
- Utilities
I think it would be neat if the binaries could be given a project directory like how Eclipse handles workspaces. The project/workspace would need some root file that describes paths for plugins and data. Each project/workspace could be something like
MyProject
- Build
- Built
- Code
- Data
- DataCache
- Documentation
- HeliumProject.json (I kind of wanted to avoid a project file and just use directories and convention but I could see use cases where someone want to bring in data or plugins from different places on their HDD.
One thing I'm a bit concerned about is how pleasant it is to work on engine, project specific, and plugin code all at once. I think we need a way to let it all live in the same SLN file. We already auto-generate our projects so hopefully we can have a workflow that makes it easy to generate a SLN file based on what exactly the end user would want to touch. Also it may be that we want to make that a per-project choice. I think premake being lua could be used directly to achieve a lot if not all of this automation. It's kind of painful to have to do something like that but I think it will add a lot of the initial experience and polish of using the project.