/corewarjs

Corewar in Javascript

Primary LanguageJavaScript

This project aims to write a client/server CoreWar runner in 100% Javascript.

See http://www.corewar.info/

How to test on the server side:
 - node tests/parser.js : test parsing on one warrior (edit file to change it)
 - node tests/88all.js : run unitest comparing both versions in warriors/88/ 
 - node tests/battle.js : run a battle between 2 imps (and soon more!)

How to run the backend/frontend:
 - npm install  express request test
 - node backend/app.js => frontend should be up at http://localhost:40008

TODO / How to help:
 - fix last few bugs in the parser
  - fix literal replacement of EQUs
 - use a proper JS loader and reduce the number of global variables when in browser mode.
 - compare starting points in 88all
 - document
 - clean the code a bit
 - create a nice browser GUI for showing battles (we already have pluggable viewers ! :-)
 - create a hill
 - create a ACE highlighter for redcode (https://github.com/ajaxorg/ace/tree/master/lib/ace/mode)
 - profile and optimize!

Credits:
 - Underscore.js
 - Math Parser : http://silentmatt.com/javascript-expression-evaluator/
 - Core/Warrior code forked from https://github.com/termie/corewarjs
 - Frontend code forked from https://github.com/jeromeetienne/arenajs/tree/master/www/dashboard 

License:
 - GPLv2


How does the parser work:

This will be documented soon with some slides hopefully that I'll try to present maybe at NodeCamp.eu 2011

Basically, the parser does this :
 - redcode.preparse(redcode) => javascript
 - eval(javascript) => array of lines like [["MOV",I],["#",0],["$",42]]
 - then the Core/Warrior combo executes them

If you add warriors:
 - find warriors -name "*.red" > warriors/list.txt