Hercules Javascript XRE Receiver - pxscene target and minor cleanup

Register
Submit a solution
The challenge is finished.

Challenge Overview

We have an existing application that is the client in a client-server application.  The client handles input and drawing based on commands sent from a server using the XRE protocol.

The client is currently implemented in Javascript, runs in a web browser, and uses http://www.pixijs.com/ for WebGL and Canvas rendering.   The code has gone through many, many iterations over a number of years and we recently brought it up to date with changes to the code structure and packaging.

This challenge will have one main goal, which is to merge in additional drawing support for pxscene, which the receiver will use if it detects being loaded in pxscene vs a browser.  We will also fix a few minor bugs and bring in some more recent changes made so this will be easier to merge back into the main branch.

Code

Access to the code will be covered by information in the forum.  Note that this challenge will cover the "Refactor" branch in Gitlab.  Don't use "master".
 

Bugs

* This new bug was noticed in the Refactor branch and should be fixed in your submisison.  Note that it only affects the WEBGL rendering type:  https://gitlab.com/Hercules-XREReceiver/pixi-xre-receiver/issues/254
 

Latest code:
 

The latest code in the "master" branch is a few commits past where the refactor branch is.  We need to merge the changes into the "refactor" branch from "master" since commit hash 4ffc66d0d515976fce46b7e8ebecc37bcf83594f.
 

Pxscene:
 

In addition to targeting Pixi.js in a browser, we are also targeting pxscene as a valid drawing target for our XRE receiver.  We have done a bunch of work to support this, but on a forked repository.  This challenge will merge those changes back into the main receiver, with the main goal being to support both browser *and* pxscene rendering from the same codebase.  This will help with maintenance in the future.

The existing codebase for the pxscene XRE receiver will be accessible through the forum and you'll be able to see the changes made to the original Pixi.js receiver.

We want to support both browser and pxscene rendering from the same deployment in Heroku.  That means if we load the URL in a browser, it will render as it does now, using Pixi.js.  If the server detects a pxscene request, then it will respond with the necessary pxscene bootstrap JS and will handle the drawing and communication in pxscene.  This will be a unified codebase, all running from a single Heroku instance.

You can find more information on pxscene here:  http://www.pxscene.org/

A test URL will be provided in the forum where you can use an XRE receiver in pxscene as well.

Note: We don't want to see any new bugs introduced, so please make sure the new code works the same way as the old code.

Deployment

Currently, the code is just deployed to Heroku by pushing the latest updates from Git.  Heroku handles all the webpack and other packaging steps.  This needs to remain in place.  All configuration is done through environmental variables set on Heroku.  Samples will be provided in the forum.

Submission

Your submission must include a patch file against the Git repository and the Refactor branch commit hash 4551b3d90afc15b16831af3c7f7094c201e7df60.  Details on getting access to the Git repo can be found in the forum.

Your deployment guide must cover how to properly apply the patch.


Final Submission Guidelines

Please see above

ELIGIBLE EVENTS:

2017 TopCoder(R) Open

Review style

Final Review

Community Review Board

Approval

User Sign-Off

ID: 30056774