Challenge Overview
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
We have recently done work to support duktape as a Javascript engine for pxScene. This work has shown it is a viable option. This challenge will expand the duktape integration to support the ws library: https://github.com/websockets/wsExisting code
The existing code can be found in Github here: https://github.com/topcoderinc/pxCore/tree/_duktape
Make sure you use the _duktape branch.
Requirements
This Github ticket comprises the requirements: https://github.com/topcoderinc/pxCore/issues/99
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
Step-by-step instructions to build the existing duktape integration on Ubuntu 16.04 can be found here:
https://github.com/topcoderinc/pxCore/blob/duktape_proof_of_concept/step-by-step-duktape-linux-build.md���
-DUSE_DUKTAPE is deprecated (not used).... Instead, we added two new cmake switches SUPPORT_NODE and SUPPORT_DUKTAPE. Both are enabled by default. The app now looks for a file called .sparkUseDuktape in the home directory to enable duktape.
You can validate the engine used through the "about.js" example (just type "about.js" in the address bar of pxScene). It will list the engine - either Node or duktape.
Branch
For this challenge, we will target the _duktape branch of pxCore here:
https://github.com/topcoderinc/pxCore/tree/_duktape
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 _duktape branch in Github (commit hash a257e1ae631fd97a3f8ee4297a9af3122355790f or later) (https://github.com/topcoderinc/pxCore/tree/_duktape)
No video is required for this challenge, but you must submit clear validation documentation *and* examples using the websocket library required.