Hi all,

   I've made a proof-of-concept Web port for NetHack. You can try it here:
http://coolwanglu.github.io/BrowserHack/

   I'm kind of surprised that I could not find any working existing NetHack
port with Emscripten, except for this one:
http://moxielogic.org/blog/nethack-in-your-browser.html  which is a port of
the terminal version and does not well quite well.

   It's a tasteful and playable, which means that you can explore, fight
with enemies etc. But it's still in its very early stage, many features are
missing (most notably, menus), so please do not reply on it.


   Two things I found interesting while building the project:

   1. A few intermediate binaries are built during the build process, which
are used to generate C macros and level files. At first I tried to build
the project twice, native and JS, and the necessary files are generated
with the native binaries. Unfortunately the game did not work that way,
complaining about corrupt data files. It turned out that the size of C
structures mismatch between the two builds, so they cannot share data
files. Then I built the utility files also in JS, and tried to execute them
with Node.js. It kind of worked, except for that NODEFS has to be mounted
manually in order to make it actually read and write files on the disk -- I
did that by injecting pre-js files.

    2. This is another old project that supports systems way back to Amiga.
And we may expect lots of synchronous stuffs. EMTERPRETER_ADVISE showed
that 66% of all the functions are ASYNC. Fortunately interpreting all the
functions is still fast enough.


   If you are interested, please help me implement missing features and
design the interface. I feel that it could be the easiest, among all other
port, to share/apply different tilesets/levels.



   regards,
   - Lu Wang

-- 
You received this message because you are subscribed to the Google Groups 
"emscripten-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to