Project Description

DreamSpaceJS is primarily a JavaScript based solution for client AND server development, built upon V8.NET (the .NET wrapper for Google's V8 JavaScript engine).

More so then that, it's a client-server solution that I'm developing to focus on replacing my Silverlight development with a JavaScript/HTML one - since Microsoft abandonded Silverlight and alienated most of the related developers. Using CEF and V8.NET, I hope to provide a means by which to develop web AND cross-platform desktop apps using TypeScript symantics.

This project is currently a work in progress (code may or may nor compile), so click "Follow" (top right) and stay in touch!

Update: A special thanks to Scirra (makers of Construct 2) for sponsoring this project. I will be focusing on that platform going forward. If you are interested in creating games in HTML5 (no coding required), I recommend checking it out!

Update: I've implemented CEF into DreamSpace Studio to allow creating desktop apps using TypeScript. I'm still creating some plugins for Bootstrap to extend the basic HTML-based UI. I'm also using the ICE system (see related projects) to implement a plugin based system to the Studio (desktop client) and server (V8.NET) sides.

Why not just use NodeJS/NodeIIS?

NodeJS is a wonderful platform, but there's no easy solution for exposing .NET/Mono libraries to the server JavaScript code. The DreamSpace framework system is comprised DreamSpaceJS, a client and server side JavaScript library, and DreamSpace.NET, which is the server side .NET/Mono extensible JavaScript server (i.e. you can easily extend the server features using a single interface: IDSExtension). All of these work together to make building websites easy for developers. The idea is to allow the client side to handle as much work as possible, such as validation, in which the same JavaScript code can be run server side as well. Allowing easy integration of libraries at the server side means developers can write faster optimized code when needed, which gets triggered/called from the JavaScript in the server. As if this wasn't enough, the DreamSpaceJS system (written using the new TypeScript convention) also supports modules, which behave similar to NodeJS modules. DreamSpaceJS modules are written in 100% JavaScript code, and are designed to accomplish a specific task, relying solely on the existence of extensions.

Since the DreamSpaceJS framework is built on TypeScript, we also offer compile time type checking for JavaScript code, allowing easier building of large scale JavaScript based applications.

The DreamSpace.NET Server uses the V8.NET engine wrapper (made with cross-platform focus).

Who should use the framework?

The framework is designed to be used for INTERNET based development - NOT just websites or services. The initial goal of the system is to support web-based development; however, we plan to include extensions to support massively multi-user applications as well, such as multiplayer games.

Since the server is extensible, the limitations are solely developer imposed.

Doesn't .NET mean only Windows supported?

No, we are planning to support the Mono cross-platform framework as well. To this end, we are trying to keep the code as non-Windows specific as possible. The .NET server portion is designed to be "pluggable". In fact, using the IScriptEngine interface, ANY scripting engine can be implemented if desired (but outside the scope of the project). In addition, because all modules are JavaScript based, they are automatically cross-platform as well! The only tricky consideration is 3rd-party extensions, which can be Windows specific. To mitigate this issue, it is recommended to stick to DreamSpace supported extensions only, or take care to only use 3rd party extensions that provide source without Windows dependencies.

License Clarification

The license is LGPL. In a nutshell, this means that you can link to the libraries from proprietary code, and/or create proprietary extensions for the server. If you modify the source files for anything in this project, the modified source and executables from it must also be made freely available (and you must clearly state you modified the code). If you create extensions and/or modules (aka plugins to the framework), they must be completely free for non-commercial use, without limitations, and with full source. It is permitted to require commercial licensing for commercial usage of proprietary extensions and/or modules that you make yourself. You are free to link to the source or compiled libraries in commercial works; however, DreamSpace Studio (the development IDE) is only available for non-commercial works - for commercial usage, a license is required.

Regarding server extensions and modules, I will categorize contributions in this manner:
1. Extensions which are free AND officially included with the project.
2. Extensions which are free, but NOT officially included with the project.


Road Map

1. A full massively multi-USER (not just for games) web development framework, created in 100% JavaScript, for both client AND server, to promote code reuse/sharing.
2. A server backed by the fast Google V8 engine, which runs the server portion of DreamSpaceJS (other engines supported via the IScriptEngine interface if desired).
3. Integration with TypeScript from Microsoft, to allow type checking and better JavaScript Intellisense and refactoring, thus allowing for large scale JavaScript projects.
4. Full support for development with Visual Studio and MonoDevelop (MonoDevelop support is only planned at this stage).
5. Future plan to develop a client side project IDE using the ACE editor, and the TypeScript compiler for scalable JavaScript projects, with Intellisense and type checking (promotes fast HTML5/JavaScript web development, running completely in the browser for fast prototyping and checking).
6. Easy download and install of JavaScript modules from a remote module repository.
7. An IExtension interface to allow easy integration of your OWN custom C# based code into the JavaScript environment.
8. Extremely simplified (for ease of use) load balancing framework for massive users, which supports scaling both vertically and horizontally.
9. Integration with fast MSSQL/MySQL database servers for state persisting (a plugin system will help integrate others if desired).
10. Plugin support to integrate multiple game engine frameworks (including support for WebGL, physics tools also supporting server side physics processing).

... and so much more in time. Please help me spread the word on this (it's free, so I need all the help I can get), thanks! :)

Last edited Jul 24, 2013 at 2:02 PM by jamesnw, version 39