Entity-component javascript game engine