Hercules PxScene / PxCore Wrapper - Duktape implementation cleanup and new features

Key Information

Register
Submit
The challenge is finished.

Challenge Overview

Description


For the Hercules client, we are going to be doing some work that involves a couple of their drawing technologies, name "pxCore" and "pxScene".  The links below offer a lot more details on these particular technologies.  pxCore is a C++ graphics library that is used on a wide variety of embedded devices that the client distributes.  pxscene is a wrapper application around pxCore that exposes the drawing APIs to Javascript through Node and V8.

The client is concerned that Node and V8 are too "heavy" for their low-powered embedded devices.  They would like to investigate other wrappers to pxCore that still expose Javascript but are lighter-weight than what Node currently is.

Requirements


The client would like us to start investigating the possibility of replacing the Node / V8 wrapper with a lighter-weight Javascript library.  This challenge will target duktape:

http://duktape.org/

Obviously duktape is much smaller, but it also has a lot less language features than Node.  The current build for pxscene does strip out a lot of Node libraries and functionality, but duktape is thinner still.

Existing code

We already have a start on the code modifications for duktape here:

https://github.com/topcoderinc/pxCore/tree/duktape_proof_of_concept

 

This challenge will expand that implementation to support features that were left out of the initial challenge and clean up the implementation a bit.

Requirements

These Github tickets comprise the requirements:

https://github.com/topcoderinc/pxCore/issues/54���

https://github.com/topcoderinc/pxCore/issues/55
https://github.com/topcoderinc/pxCore/issues/56
https://github.com/topcoderinc/pxCore/issues/57


Modifications



It is expected that the code will have to change for duktape integration.  The goal is to limit the code changes to only the JS files and wrapper - pxCore should not need to change at all.  If you feel you need to modify pxCore, please get permission in the forum first.  The majority of changes should be confined to src/rtNode.cpp

Documentation of gaps

It is expected that certain features won't work or will be hard to implement with duktape vs. Node.  Please confirm anything that you run into trouble with in the forum, we may limit or change scope, but you can't just leave requirements off without confirmation.

Pxscene


Pxscene is a platform independent drawing platform / app that will be used on a wide variety of embedded devices for the Hercules client.  You can find more information here, and you can download the app to be used for testing: http://www.pxscene.org/

The code for pxCore / pxscene is available in Github here:

Build instructions can be found here:  https://github.com/pxscene/pxCore/blob/master/examples/pxScene2d/README.md

Branch


For this challenge, we will target the  duktape_proof_of_concept branch of pxCore here:

https://github.com/topcoderinc/pxCore/tree/duktape_proof_of_concept��� 

Code structure:


Note that your  changes should follow all code structure, naming, commenting, and code practices already seen in pxCore.  Your code should be indistinguishable from the existing pxCore code and should be flexible and well encapsulated.  *This is important to the client, so please ensure that your formatting is consistent.*

Submission


For this challenge, please submit:

1.  Patch files against the fork in Github (commit hash c34fc8d21946d88fb3968cf7fb596cb5d8c63b7c or later) that can run the existing / modified browser.js new examples
2.  A video showing the examples being tested in pxscene with the duktape integration
3.  A README documenting any setup that needs to be done, and any limitations that your ran into while investigating.  Make sure to indicate commit hashes in your documentation that can be used to apply the patch files
 

 



Final Submission Guidelines

Please see above

ELIGIBLE EVENTS:

2018 Topcoder(R) Open

REVIEW STYLE:

Final Review:

Community Review Board

Approval:

User Sign-Off

SHARE:

ID: 30060163