Saturday, May 30, 2020

Q-Po (Javascript game project) in retrospect

I made a JavaScript game called Q-Po in 2016. It involved thousands of lines of original code. It was a strategy game.

I wrote up most of what I did in a journal here (Google Drive) which I am now making public. 

The project repository is here (Github).

Videos of the game are here (Youtube playlist). 


I have since let the server expire since I didn't want to keep paying for the domain. I could re-deploy it if I wanted to. In the process of making the game, I learned a lot about development, about JavaScript, and about project management. I recruited a few people to help with the project in various ways. A close friend helped me brainstorm and did a little cross-platform development. I paid someone to make music for it. I learned about neural networks to implement an adaptive AI. Someone I met at a JavaScript meetup inserted a few crucial lines of code into the back end to make the project deployable, then got hired somewhere after mentioning the project in an interview. (I very naively thought he was in the project for the long haul.) 

What's a Sourcemap?

Unpublished post from 2016/2017:

http://blog.keithcirkel.co.uk/why-we-should-stop-using-grunt/

http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/ :

Basically it's a way to map a combined/minified file back to an unbuilt state. 

Chrome Canary?

But why care about source maps?

Right now source mapping is only working between uncompressed/combined JavaScript to compressed/uncombined JavaScript, but the future is looking bright with talks of compiled-to-JavaScript languages such as CoffeeScript and even the possibility of adding support for CSS preprocessors like SASS or LESS.
In the future we could easily use almost any language as though it were supported natively in the browser with source maps:
  • CoffeeScript
  • ECMAScript 6 and beyond
  • SASS/LESS and others
  • Pretty much any language that compiles to JavaScript

BTW, what's Traceur? Takes future-JS and turns it into now-JS. (If you like to be ahead of the curve when writing code, but riding the wave with your deployment build.)