Platform/Games/JSIL Porting Tool/Project Road Map

From MozillaWiki
Jump to: navigation, search

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

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.

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

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