Help us evolve the landscape of collaboratively-editied games and software. Share ideas, solutions, and help push the boundaries of CS and collaboration.
We're trying to apply the ideas behind Wikipedia's success to gaming, and build games that become self-sustaining and grow exponentially.
CS topics include continuations, continuation serialization, granular sandboxing, dynamic code loading, code hot-swapping, STM, and data persistence/integrity in the presence of these features.
We also want to discuss how to expose collaboration features to users in an inviting way, and psychologically orient games so users enjoy extending them.
If you are subscribed, you can e-mail moc.spuorgelgoog|semag-evitaroballoc#moc.spuorgelgoog|semag-evitaroballoc to communicate with the group.
If you have/want a google account, join using this link.
Otherwise, use this link to simply subscribe.
The archives are located at http://groups.google.com/group/collaborative-games
The two platforms that meet the requirements (dynamic, serializeable continuations, and sandboxing) are currently Rhino and Lua.
The Lua based approach is currently being developed at the weaver-lua repository on github Milestones 1, 2, and 6 have been accomplished.
Two plans, one on each technology stack, are being defined.
Feature list (for Milestone reference)
- Script execution
- STM/Copy-on-write to allowing easy branching of the world.
- Weaver synax support - Allows logic-light modules to be implemented without understanding of coding.
- Visual coding support - drag-and-drop graphical coding
- World branching support (requires copy-on-write implementation)
Script storage: Filesystem
Syntax: No extensions.
Execution: No sandboxing, all scripts loaded in memory.
Data storage: Only continuations provide any kind of state.
Editing: No support.
API: Display interaction only.
Execution: Load only scripts that are needed
Execution: Allow granular sandboxing
Storage: Unify script and data storage in a tree-like data structure. Sandboxing permissions (for both data and scripts) and merging hints could exist as a metadata fork.
Syntax: Add support for simplified syntax
Add support for web-based editing.
Links and resources
I've broken this page out into several sub-pages:
- Platforms for executing user code (we need sandboxing and continuation serialization)
- Web frameworks (Something to build the UI)
- Storage solutions (We have to put game state somewhere, as well as source code)
- Continuations (Continuations are key to intuitive async programming)
- Source code editors (HTML5) (Online editing of source code will be needed)
- Wiki syntaxes (output syntax) (Game output needs a better (and safer) syntax than HTML)
- Parser (generators) (Building a visual editor (drag-and-drop) to our final scripting language will be a challenge)
- Relevant research in the field of collaborative programming, visual code editing, etc.
Wiki reference information
- Your Wikidot site has two menus, one at the side called 'nav:side', and one at the top called 'nav:top'. These are Wikidot pages, and you can edit them like any page.
- To edit a page, go to the page and click the Edit button. You can change everything in the main area of your page. The Wikidot language is easy to learn but powerful.
- You can attach images and other files to any page, then display them and link to them in the page.
- Every Wikidot page has a history of edits, and you can undo anything. So feel secure, and experiment.