Platform/Games/JSIL Porting Tool/Project Road Map
From MozillaWiki
< Platform | Games | JSIL Porting Tool
Contents
Milestone 1: Pick a product and do intial port to desktop
- Scope/Deliverables
- Regular nightly build of prototype, minimum weekly release
- Final deliverable of 3 levels that work on desktop
- List of issues that are risks for next steps
- Draft proposal for asm.js integration that lists out missing features and strategy
- Resources
- Kevin Gadd
- Luke Wagner (asm.js)
- Tasks
- Identify a product to port.
- Get any legal requirements done to get access to source.
- Attempt to port using existing JSIL.
- Iterate until port reach final deliverable requirement.
- Risks
- Finding a solid a product that is good enough.
- Mitigation: Already have some leads, we will not start work on the project until a product is identified.
- There maybe a large addition required to JSIL that may expand the scope.
- Mitigation: We will determine scope once the product is identified.
- Games may depend on shared-state multithreading
- Mitigation: May be possible to remove this dependency; if not, we won't port them
- Finding a solid a product that is good enough.
Milestone 2: Get it working on mobile
- Scope/Deliverables
- Nightly/weekly builds deployed on web that are playable on Firefox OS / Firefox for Android
- Must run on WebGL
- List of issues that prevent use on lower-spec mobile
- List of performance obstacles for later milestones
- Resources
- Kevin Gadd
- Risks
- A full WebGL backend is basically required
- Mitigation: we will either use what MonoGame has or build this from scratch.
- A full WebGL backend is basically required
Milestone 3: Full integration with WebAPIs
- Scope/Deliverables
- Marketplace integration
- Cloud saves/authentication/sync between devices?
- Alternate input methods (gamepad, etc)
- More deliverables depending on product
- We will determine once product is identified
- Identify obstacles to running on mobile and non-FF browsers to feed into m4 and m5
- Risk
- Filesystem IO is often sync and we will likely have to rewrite this to be async.
- Mitigation: rewrite it
- Filesystem IO is often sync and we will likely have to rewrite this to be async.
Milestone 4: asm.js
- Scope/Deliverables
- ASM.js compiler backend for JSIL
- ASM.js compatible JSIL runtime components
- List of non-critical missing ASM.js features/integrations
- Documented set of constraints that prevent use of ASM.js in JSIL
- Resources
- Kevin Gadd
- Luke Wagner (asm.js)
- Risks
- Heavily depends on as-yet-unspecified future version of asm.js
- Portions of .NET feature set may not be expressible
Milestone 5: Make it work everywhere
- Scope/Deliverables
- 60fps (30fps?) solid on all target devices (mobile and desktop)
- Address obstacles from M3 where possible
- Compatibility and feature detection (graceful degradation instead of crashes)
- Port tested and known playable on target mid and high spec devices
- Finished collection of documentation and blog posts
- Resources
- Kevin Gadd