Wes Mantooth - HTML5 Canvas Game Engine - Version 2.x - by Jeremy Heminger

This is just another project to see if I could do it. I actually started this several years ago, but like many projects, it just kinda died. I was working with canvas recently and was looking through some of my old projects and found this. Version 2.0 represents a complete reworking of the code, pretty much from the ground up. It does incorporate the old code in some areas, but 1. It no longer uses paper.js (It's actually all my own code) 2. I have learned quite a lot since I wrote 1.0. As usual, this was never intended for production use of any kind. It was just a hobby. But anyone who finds this and would like to use it or participate, feel free to fork it.

To read articles further explaining some of the content found on this website please click here

My name is Jeremy Heminger and I am a full LAMP stack developer located in Redlands California

,...............,,,,,,,...........,.......,,,,,.........................................................................................................................................................
`          `````..,...`````       `````` ```...``.``                                                                                                                                                    
`   ```    `...,,,:...````       `..```   ```..``.``                                                                                                                                                    
.``````    ``,,,:,:,.``.`        `````      ``.``..`                                                                                                                                                    
.```..`    ``.,::::,.``.``       ````        `..``.`     ``  ```                                                                                                                                        
.``.,..`   ```.:::::,`.,.`       ` `         `...```     ,`` `  .``.`                                                                                                                                   
,..,,,,,`` ..``:::,:,`.,.`                    ``````    ``.``   ````:`                                                                                                                                  
,,,,::::```.``.:::::,.,.`.`                    `````    `````````,...:` `  `                                                                                                                            
....,:::.....`.::,::,.,` `.`    `            `  ```     ``.,,`..`.`',::,.`````                                                                                                                          
....,,,,.,,,,`.::,,:,,,``.,.    `            ``  `    ```.,:',:,`.:';:;::,`....                                                                                                                         
``.`..,,..,,:,.::..::::,.,,.``  `                   ```.,,;;;;::`:;+';';:,..:,:                                                                                                                         
``.```.....:::.:,.`,:::,::,..`` `                   ``.,,:::;:,.:;''+'+':.,.;.,.                                                                                                                        
``.```....`::,,,.``,:::.::,.,.``    ```             .,,:..,;';,`,;''+++;.,`,::,:                                                                                                                        
``.``.....`:,.,,.`.,::,.,,,.,.``    ```             .,;:`.:;;';,;;''++':.`.:::.,                                                                                                                        
`````....,`,.`,..`.,,:.`...,,..`    ```             ,:'`,,:';;:;:`'+'+';..;';:`:                                                                                                                        
`` ``...,:.,.`....,,.:.````,...`     ``            `:''.'::::;:;.`++'+;';'+'';:;``                                                                                                                      
``  `...:;,,.```,,,,,,,`.``..`,`     ``            .;'';':.::;;;.,+++#++''+'+'::.`                                                                                                                      
``` `...:;;,.```,:,`.....``..`.     ````           ,;+;;+'::+''::''';+++'+''+;,;````                                                                                                                    
``````.`:;;,,.``,;.``.``.``..``  `` ``            `,'+;''';'++';'+'''+++++''+;;;```.                                                                                                                    
```` `.`,::,,,``,;,` `````.,.``  ```.`            ,,;':''''++''''++#++++++''''':.` ``                                                                                                                   
```` `.`.::.,,``,;,` ``` `.:...  `...``           .,;':''''++''+'+##++++++++'';;:.``,                                                                                                                   
```` ````,:.,,,..:,````` `,:.,.  `.,,.`         `.,:'+;'+:'+++++'++#++++++'+'';';;,.:                                                                                                                   
```.`  ``.:,.,:..:,,.``` `,:,:.```..,,.`        .;;+'+';+;'''++++'++++++++'+'';;:.;,:`                                                                                                                  
```.`  ``.,.,,:.,:,,,.`` `,:,:,.``.,,,,.`      `,:;++++'+#';+++++'++++#+++++++';;`::.`                                                                                                                  
```..` ``.,.,,.`,:::;.````::::,.``.,,:,.` `    ,:::'++++++'''+++#+++++#+++++++';:,,;,`                                                                                                                  
````````.,:.,.``.,:,;,`.`.,,:,..` `,,,..` `   `.,,,;++++++'+'+++++++++++''++++';:,,:..`                                                                                                                 
``````.`.,:,`` `..:.:,.,`,,,,...`  `....` ` `.,.:;;:+#++++++'+''''''+++++''+++';,..:..`                                                                                                                 
```` `.``,,.  ` .`,......,.,..,,.`````.```` .,;;';`.+##+++'';''''''''''++++''''':.`:;;``                                                                                                                
```` `.```..    .`.````.,,.,`.,:,..`````````.,:'',`;+##'';;;;;;;;';;;;''''''+''';,,:;:;.                                                                                                                
` `  ```````   `,..`````,,..``,,,..````...`,.::',.,;++';:::,..:;;;;;;;;;;;;'''''';:;;';:                                                                                                                
`    ```` `` ` `:.``````,:,```.,:,.......``:`:;::;,++';,..,`  .;;;;;;;;;;;;;;'+'+';;;'+'`                                                                                                               
`    `.`` `.```.:` `````,:.``.,.:,......```::';:'::'+:`   .   ,;;;;;;;;;;;::::'++'';;''':                                                                                                               
`   ``.`  `:....:`  ```.::`  ,:,,,,```.,.``;+:';;,;+;.    .   ,:::;:;:;;;::::::''+';;':':`                                                                                                              
` ``````  `;,,..,`  ```,:,` `,:,,::.``.....;';'';:+;,`    .` `,:::::::;:;::::::;''+';;'':`                                                                                                              
````````   :,...,`  .``.,,` `,:,:::,```.,,.:';+''''.`     .,`.::;;::;:;:::::::::;++';:'':.                                                                                                              
`````     `,.`.,,`  .``.,,` `,:,,:::.``....;''+'++,``     `:..::;:::;:;::::::,::;'+;;+'';:                                                                                                              
````      `.``.,,` `.`..,.``.::,.:;:,......;''+'+'``      `:,,::;;:::::::::::,:::;+'':+';,                                                                                                              
` .`  `   .....,,```.`..,```...`.,,:,...,,,:'';'',```   ``.:::::::::::::::::::::::'+';+';;`                                                                                                             
` `` `.   `.`..:,```.`.`,`.` ``````.,.....:;'''+:,``  ```.:::::;::::::::::::::::::;+'''';;,                                                                                                             
` ````,`  ```.`,.` `,`...``   ```` `.```.::'''';.``` `..,::::::;:::::::::::::::::,:+++''';.                                                                                                             
`  ```,. ``` ``:.`  ,`.:.``   ``    `  `:::'''+,.`` ``..,::::::;:::::::::::::::::,:;+'++';;                                                                                                             
`   `.,.```` ``:.`  ,.::.`    ``       .':,'++;.,`  `.,,:::::::;;::::::::::::::::,::+'++'':`                                                                                                            
`   ``..```` `...` `::;:.     ``       .+::'++,`.` ``,:::::::::;:::::::::::::::,:,,:+'++'':.                                                                                                            
`    `.``` ` `.`````;:,,`     ````     ,';:;''.`````,,::::::::;;;:;:::;;:::::::,,,,:''++'+::                                                                                                            
`    ```   ` `. ````;.`.``      ``    `:':,;;:..````,,::::::::::;:;:;;;;::::::::,,,:;++++','`                                                                                                           
. ` ```    .  .`````:``,``` `    ` `  ::+::;:,..````:::::;:;;::;;;;::;;;;:::::::,,,:;'++++.:,                                                                                                           
,``````    .` .  ``.,`.,``` `  `````  ;;++;';...```,::::::;;:::;;;;:;;;;;:::::::,,,:;'+++'';:`                                                                                                          
:,..```    .```  ``.,.:,.`  `  `````  ;;'++;,..````,,:::::;;;:;;;;;;;;;;;::::::,,,,,;;'+++'':.                                                                                                          
::::`..`  ```.`` ``,::;,,`  ``  `.``  ;,:'+;,.````.,,::::;;;;;;;;;;;;;;;;:::::::,,,,;;'++++';.                                                                                                          
:;;:...`  ```,`` ``;:;:..` `.` ``.`` `',::';:.```.,,::::::::;;;;;;;;;;;::::::::,,,,,:;'++++';.                                                                                                          
:;';..``  ``.,````,;;:,``` `.````.`  `;';;;;:.```.,:,,,:::;:;;;;;;;;;;:::::::,,,,,,,:''+++'''.                                                                                      ``                  
;'';..`.````,,```.;'':.`   ...`...`   .::;;;,.```,,,,,,:::::;;;;;;;;;;:::::::,,,,,,,:''++'''',                                                                                      ``                  
;';:..`....`,:..`.;';,,.```,,,,,,.``  `,:';;,.```,,,,,,::::::;;;;;;;:;;:::::,,,,,,,::;'++'';';                                                                                      ..`                 
;';:.,.```. `;..`.'':,,,```::::,.`````.:::;:,.``.,,,,,,,:::::;:;;;;;;:;:::::::::,,,::;''+++';'                                                                                     `,,`                `
;;:;..````. `;.,.,';:..,.``::::.``````,,,:;:,``...,,,,.,:::::::;;;;;:::::::::::,,,,,:;''++++;'                                                                                  ````,,`            `````
;;:;,`````` `;,,,;':,...```,:::.```` `:,.:,:............::::;::;;:;;:::::::::::,,,,,:;''++++';                                                                                  ```.,,.````      ``.,,..
;';;.```` `  :,.:';,....```,:,,`  ````;,:;::,...``````.,,:::;:::;:;;;::::::::::,,,,,:;'++++'';                                                                                  `..,,:,`..`    `..,:,,,,
;';:.` .` `  :,.,;:,....```.,..`  ````'`,,;,,,..`````..,::::;:::;:::::;;:::;::::,,,,,:;'+'++';`                                                                                  .,:::,,:,``  `.,::;,.,:
;';:.``.` `  ,,.,;,,.,.`......``  ```.+.,,::,,.`````,,::;;:;;;::;;::::;';;;;;;::,,,,,:;'+'++'';                                                                                 `,:;:::;',` ` `,,:::.,:;
;;:;,```  `  ,,.,'.,.,..,,..```     `.';::::,...```,:;''';;;;;::;;;:::;;''';;;::,,,,,:;''''+''.                                                                               ```,;;:;;'':.```.,.:;:,,:;
;:,::.``  `` .:,:;...,,.,,,.``   `  ``:',;:::,````.:;'++'';;;;:;;:;:::;;;';;;;:::,,,,:;''''+''.               `   `                                                           ...:;;;;;'':.`,,,:,:;:,.,;
:,.::,`   `` `;:;;..``..,.,.`   ``   `.',';::,.``,:;'''''';;;;;:;::::::::::::::::,,,,,:''''''';               .` `.``                                                         `:::;;;;''';,,::;';;;;;.,;
:,.:,.` ` ````;'':..```...::.``` `   ``',.;::,``.:;';;:;;;;;;;;:::::,,,::;;:::,::,,,,,:'+'''+';       ..`` ```..``..`                                                          ,:;;;'';';::;::'''''''::;
,,.,,`````. `.;'',.,.``...,,,`````    `,.`'::,``,;;;;;;;;;;:;;;::::,,,:;;;;:::,,,:,,,,:'+''''',       ,,,.`.,..,..,,.`                                                        ``;;;;';;';:,:;;;::;;';::;
.`...`````` `.;';,.....```...` ```    `.`,';:,`.:;::;;;;;;;;::::::,,,:;;;;;;::,,,,,,,,:;'''+''.      `:::,.::,,,,,,::`` `                                                     ``:;;;';;;;:;;;;:..,,;::,:
.``.....```  .:';,,..,.````````````    ..';;:,`.:::::;;'''';;:::::,,,:;;'''';:,,,,,,,,,;++++'':     `.:::..:::::::::,,.`.                                                ``   ``:;;;;:::::;::,:.`..,:,.,
`  ...`,`.` ``:';,,,.,.` `````   ``  ``.,;;;,,`,:::;;'+++'';;:::::,,:;;'''''';:,,,,,,,,;'++++':    `..,;:..,::;::::::..`.`                                             ` ````  `:;;;::,::;;::,:,`..,::,:
```.,` .``` ``,':.,...,.`.``       ````.:;'',,`,:::''++++++';:::;:,,:;''';'+';::,,,,,,,;+++++':    .,.,:,.`.;;;:::::,.```     ``                               ``     `.`..``  .;;;;,:::;;';;;;;,,,:;;:'
.```.`  ``` ``,':...`.,,,.`     ` ``,..,,:'':,`:::;;''+#+++'';::;::,;'';;:'++,;;,,,,,,,;+++++':    .:.,,`.`,;;::::,:,````     `.                              `````  `.,.,,,`  .:;;::;;;';';;'';:,:;'''+
...```  .`````,':..,.`,:,``     ```.,,.,,;+':,`::;;'::+##+++';:;;::,;+'';:'+:,;;,,,,,,,;++++++;``  .:.:.```.,:,:::,:,``````   `.```                         ``...,`  `,,,,,,````,::;'''''';::';:,`.;'''+
...  ` `.`.``.:',``,.`,;,` ``   ```,,,,.:''',,.::;';.;++#'++';:;;;::''++;:++,.;;:,,,,,,;++++++:,.  `..:,`````:.:::,::.`````  ``.`..                       ```..,,:` `.,,,,::.```.,::''';';;:,::,.``.,'''
.`.    ```:`.::;`  ```,;,``.`    ``...,,:;'',,.:;'+:.,++#'#+';:;;;::''++''+';:;;,,,,,,,:+++++';:.  `.,::,.```:.:;,,::,.`.,.`..`.`..                      `.,,:::::``.`,:,,;;,.``,:::;;;;;:,;::::,.```;';
````     `;..:,'`     `::.`..     ````.:;';',,,::'',,,++++++';:;;;:,;'''';;;;::,,,,,,,,:+++++:':..``.,::,.``.:,,;`.:::,.,,.,,.`.```                     `.,::;:;;:.,.`.:,:;';:,,::::;;;::,.:;;;;;,.``;;:
` `       ;`..`'`     `:::..`     `` ``,,;;'.,,:;;';;;'''++'';:;;;::;''+';;:,,,,,,,,,,,,++++;,';::.`..::.....,,.:``::::,,:.,,.`,.`                     `.:::;;;;;;,:` .;:;;';;;:;;;;;:;:,.`,::::::,``;;:
`         ,..``;`   ` `,,:```     `    ,.::;.,::::::;;;''++';:::;;:::;''';::,,,,:,,,,,,,++++::#:;:.``.,:.`....,,:``,,::.:,,,,`..,`                    `.,:;;;;;;;:,,` .::;;''';;;;'';:::..`,,:,....``:;;
`         ,..``;`   `  ..:`       `    `,,;;.,:::,,::;;'++'';::;;;:::;;';;;::,,:,,,,,,,,'+'+'+':;,.`.,,:,```.`::,`.,,::,:,::.`...`                     ,,:;;;';;;:,.` .:;'''''';;;'';;;:...,::,````.,:;'
`         `,.``;`      ..,`       `     ,,;;.,:::,:::;;'''';;::;;::::;;';;;;;::,,,:,,,,,'+'++:;,:..`.:::,  `..::.`,,,:,::,:,````.`                     ..,;;';;;;::,``,:'';;''';;;;''';:..:;';:.`...;;:;
`          :. `;      `...`              .;:..,::,::;;'''';;:::;;:::,:;;;;;:;::,,:::,,,,'+'+:,;.````,::,,  `,.:..,:,,,,::,.`  `...`                   `...,;;;;;;,::..:;';;;''';;;;'';;:,,;'+';:::,.;;,,
.          ,`  ;` `   ````               `';..,:,::;;;;;'';;::::;;:,,::;;;;::::,::::,,,,;+++:,:``` `:;:,,``..`..::,.::;;:,.`  ``...`               ```.,...:;;;;:,:;:,;'';;';;':::;;;:;;::'+++'';;';';,,
,`         .` `;```   ````               `;:..,:,,::;;;';;;::::;;;:,,,::;;;:::::::::,,,,;++;,..``  `::...  `` ``,,.,:;;;::..`  ``.``               `..,,..,:;';::,:;';;';;'';:;:::;::;;:,:'++++';'+'';,,
:`         `.`.;` `   `.``               `::..,,,::::;;';;:::::;;;::,,,::;;;;;::::::,,,,;+';,,`  ` ,::``.   `  `...:;;::::,,.````.`` `..           `::,:.,:;;;;:,,;;;'::;;;;;;;:;;;::;;.`,''+'+'''''':.,
,`          ,`,;` `   ``                 `;:..,,,:::;;;;;;:::,:;;;:::,::::;;;;::::,,,,,,;+';.:` ```:;:``.   ` ``.`.;;,,:,..,:.`.`.`` `,,`          .::::,:;:;;;;::::;;:;;;;;;';::;::;';` ,;'''''+;;';,.:
.`          ;.,:` `  ``                  `;:....:::;:;;;;;:::,::;;,::::::::;;;::::,,,,,,;+',.,` ``.;;:.`.    `````.,;,.:.``.,.`,.``` `.:`          `::;:,;:,::;;:::;;::;;:::;';::,,:;':` ,:;''''+;:''::'
``         `:.,:`   `.`                  .;:....,::;;;:::;;::,::::,,,,:::::::;::,,,,,,,,;+;..:` ``,:;:...  ``.```.,.;,.,.``.,..,.`````.,`          `:;;;,;:.:,:;:,::::;;;:::;;:;;:,:'':,.,:;''''';:'';;'
`          `,.;:`   `.`                  ,;:....,:::;:::;;;,,,,:::...,,;::::::::,,,,,,,,;+;,.;.```,;:,,:```.,,..`,,.;....``.,,...``.```.`           ,;;;:;;.:,::::::,:;;;::::::'':::';;;;:;''+';';;'';';
``         `.`;,`   `                    :;;....,:::::::;;;,:,:::,.,',,:::::::::,,,,,,,,'+;,.;...`,:.,;:```.:,,,`:,:;..,..`.:,`````.` `.            ,;;;;;;::::::::::;::;;:::;:;;;;;';;'':;'''';'';;''';
.`          .`;.   `                    `:;;...,,:::::::;;:,+':,:,:##:,;;::::::,,,,,,,,,'+:,,:,,,`.,`.,`  .::,,. :,,..`..``.,:`````.  ``            .;;;;;;:;::;::;;;;::;':,,::,:';''';;;:;;''':''';;';;
`           `,;.  `                      ,';...,::::::::;';:+#',:,+##:,;;:::::,,,,,,,,,,'+,:,:.,. `.```` `,:,,.. .```.``,```,:,` ```              ` .;;;;;;.,::::;::;;:;;;:.,`.,,';''';;;;;;''';'';;;';;
`           `:'. ``                      ,''..,,:::::::;;';:+#+::,'#+:,;;;:::,,,,,,,,,,,'+,,,,.:.  ``  ``.::,... ```````..``.::`````             `,`.;;;;;;`,,,:::,,;;;;;':.``.,,:.;;';;;';:;'''';;;;;;'
`            .;,```                      :'',.,:::::::;;;;';;'';::;;:::;;;:::,,,,,,,,,,:;+:,.,.,` ``````.,,,,... ```````..``.:;` ` `             `:..;';;;:`:,,::,,:;';;;';,` .,,.`,;;;;'+;::;'';;:;';;'
`            `;;`                        :;',.,:::::::;;;;'';;;;;;;::;;;;;::,,,,,,,,,,,:'';,,,,` `.```..,,,,,.`` `..````....,:;`                 `,,.;;';;:,;::::::;;;;:;';,. `.```.:';;'+;::;''::;;';;'
.`            ,;`                        ,;;,.,:::::::;;;;;;;;;;;;;;;;;;:;::,,,,,,,,,,,:'';,,,,  ````..,,,,,,,`` .,,`.````.,::;.                 `,,,;;;:;;:;;;;;;;;,,:;;;',.  `` `.;''''';:;;';:,;;';;'
.`            `;`                        ,;::.,::,::::;;';;;;;;;;;;;;;:::;;:,,,,,,,,,,,,'';,,:.  ,....,,:,,,,.   .:,,,` ```,,,,.                  ,,:;;;:;;:;;;;;;;:..,;;;;,.` `  `.:;''''';'+'',,;;::;;
.`             ;`            `           .:;:.,::,,::::;';;;;;;;;;;;;;;::;;:,,,,,,,,,,,,;';,.`` `,,,,,,,,,,,,` ` ,:,,``  ``.```                   `.,,::,;:,::;;;;:,```:;;;..` ````.:';';;;;++'',,::,,:;
.`             ;`                        .,';,,::::,::;;;;;;;;;;;;;;;;::::;:,,,,,,,,,,,,:',`   `.,,,,,,:,,,.`````:::.     ``                      ``,.,::;:,,,:;;;;:.``,:;;``` ` ..,;'';;;,,;''':,:;,,::
.`             ;.                        .;';,,:::::::;;;;;;;;;''';;;;;:::;:,,,,,,,...,,..     `,,,,,,,:,,,....`.:::`    `.`                      .`:,::;;;:,,;;;;:;:,`..:;.`    .,:;;''';,.,;;;;::;::::
`              ;,                        .:+;,,::::::::;;;;;;;;;';;;;:::::::,,,,,,``````   ````.,,,,,,,,,,,,,.,.,:.:.   ``:.    `               `..`;;:;;;;:,:;;;:.:,,```:::```  ..;;;;;;;,,,;;;;;;';'::
`             `:.                        .:+;,::::::::;;;;;;;;;;;;:;;:::::::,,,,,```..`` ``.``.,,,,,:,,,,.:,:`:.:.`,`   ``,`  ``.``             `,.,;;:;;;;;;:;;;,`.`.```:::.````..::;;;;:,:;;;;:;;';;,;
`             `:.`                       .:';,,:::::::;;;;;::;;;;;;:::::::::,,,,.`.,,.````.:`,,,,,,:,,,,,.,,,.:,,``.``   `.    .,.,             `..::::;;;;;;;;';:``````.:;..````:.::;;;;:,:'';;:';;:::'
`              ::`                       .:';,,:::::::;;;;::;;;;;:::::::::::,,,,`,:;,.````,;.::,,,,:,,,,.`..`.,..``..     .  ``,:,,`            `..::::;;;;;;:;;;:.``   .:;`.`` `:::;;;:::,,''';:';:.,,;
`              ,:                        .;';,,:::::::;;:;::;;;;::;::::,:::::,,``:;;,`````,':;:,,,,,:,,..``. `,`.``.`    `,``..,,,,.             ,.,:::;;;;;:::;;:````  `:;```` `:';';;:::,:''';;';,`.,:
`              ,,                        .;':,,:::::::;;:::;;;;;;;;;::,,,:::,,,`.:;;,```  `;;;:,,,,,,,...``.  ,`` ``     .:....:,,:,             :,,,,:;;;;;:::;;;.`.`  `::``..`.:;;';;::;;;;;;;;''.`.::
`              :.                        .:':,,:::::::;;;;:;;;'::::;;:,,,,:,:,``,;;;:..`   `:;;:,,,,,,.````,  .`  ``     ::.,.,;,::,             ::,..::;;';;;:;;;:,.````:,.`,;,,:;;;;;;:;;';;';'''``.::
`              :.                        `,,,,::::::::;;;::;;;;,.,..;::,,,,,,, `:::;::.`    `.;::,,,,.   `.:  `,  `     `:;.`.,,....             ::.``,;;;;;;;:;;;;:.`..,;,.`.;,::;';;;;;;;;;;'''''``.,:
`              ;,                        `.,,,,::::,::;;;:;;'''..:,,+;:,,,,,:` .:;;;:,``` `  `.;::,,,`   ``.` `,  `     .::,``.`````             :.`  ,;;;';;;;;;;;;..,,:;;,`,;,,;;';;;;;;;;';';;;'...,:
`             `;,                         ,,,,::::::::;:;:;;'##++####'::::,,. `.;;;;:.``````  `,;:,,,    ` `. `:  ``   `,,,,````                 ,`   :;;;;::;;;;;'';:;::;;.,:;..;;;:;:;;;;;;;;:;';,:,,;
`             .;.                         ,,,:::::::::;;;;''##+#######';::,,  `,;;:;:,..````````,,,..  ` `  ,``;````  `.,,..``.`     ``          ``   :;;;:,:;;;;;'';;;;:;:`,;:..,:;:;:;';;::;;:;;;:;;:;
`             :;`                        `..,:::::,:::;;;;'+###+++++##+';::. `.:;;:;:,,.````````.,... `.`` `,..; .`   `..,,.`.,.``.` `                :;;;:.,;:;;;''';;;:;:....,``.:,;::;;::;';:;;::';:;
`             ::                         ``,,:::::::::;;;'++##++++++++++';:``,;;;;;::,,..````````....`,:..``...;`,`  ```,,,``.,,,.:` `               `:;:;:,,;:;;;''';;;;;:,,``,` `,,;::;;::';;;;;:,'';;
`            `;:                        ````,::::::::::;;'+#++++++++';;';;.`.;;'';;;::,...````........:,,...`.`:..   ``.::..`,,,,,.`                 .:;;;:..;:;;;;::;;;;;::,` `` `.:;::;::;;;:;;::;;';;
`            .;,                         ```,::::::::::;;''';;'''''';;;;::``,;''';;;:,,.....`.::,,..``:.,.,..,..,`   `.,::..`,,...                   .,;:;,``,:;:,:,:;;;;;;;:`  ` `,;;;;::,;;;::;;:;;';;
`            :;`                         ` `,::::::;:::;'';;;;'''''';;;:,.`.:;'''';;;:,,.....:;;:,.` `,.,.,...,`.     .`,:.``,,.``  `                `.:::.  ,:;:.,.:;;;;;;;,`  ``,,:;;';,,:;;:,:;,;';;;
`            ;;`                        `` .:::::::;:::;';;;;;;;;'';:::,.`.,:;'''';;;:,,..,,:;;::,.  `,`..,.,.:.,`    .`,.,`.,`.````                  `:::.  ,;;:.::';:::;;:.`   ,,:,:'';..::;;,::,;;;;;
`           .;:                          ` `,:::::::::;;';;;;;;;;;;:::,,``.,:;;''';;':,,.,,::;;::,.  `,``.,,,,:.:`   `.`,..`.```````                  `,::`  ::;;,;;;;:.,:;,,..  ,,:..'';,.,:::.,:::;;;;
`           :;.                          ` ``:::::::::;;;;;;;;;;;;::,,,,``.,:;;'''';';,,.,,:::::,,. ``.``.::,:::;`  ``.`,....   ```                    ,,;` `;;;:.;;;;:`.::`..`` ``:``;;;,.::.,..;;,:::,
`           ;;`                          ``` :::::::::;;;;;;;:;;;;;:,,,```.::;;'''';'',,.,,,::::,..`:,.``.;;,,:''.```.,.,..``    `                     ,,;` .;;;,.'::;: `;,`.`   `````;::,.;;,.`.;;.,..`
`          `;,                           ``  ,:::;::::;;;;;;;;;;;;;::,,` ``::;;'''';'+:,,,,,:::,,..,':,``.:;,,:'';,,`..,,````    `                     .,:` .;;;.`'.,:. `;``..   `  ``;:::.:;:``,;',.```
`          .:`                           ``  .::::::::;;;;;;;;;;;;;:::`  ``::;;;''';''',,,,,::,,,,.,';;.`.,::::'':,,`,,,`  ``    `                     .,:` .;;:` ;`..` `;` `.`     `.;:::.:;,``,;;.`  `
`         `::                            ``  `::::::;:;;;;;;;;;;;;;;::   ``:;;;;'''';'+:,,,:,:,,,,.:;''.``.,:;:;',::,::.`   `    `                     .,:` `:::` ;` `  `;`       `  ,;::,`.;. `,;;`   .
`         :;,                            `.` `:::;;;;:;;;;;;;;;;;;;;;.  ```:;;;;;'';''''',,:,,,,...,:;;,``,,::.;',,::;,`.`       `                     .,:` `,,:` ;`    `:`       `  .;::, `;`  .;:    .
`         ;;.                           ``.`  ::::::;:;;;;;;;;;''''';` ` ``:;;';;''';''++:,:,,,,...,:;;:..::;,.;',,:;;...`   `` `                      .,:`  ..,  :`    `:`        ` `;::. `;`  .;,    `
`         ;;`                        ` ````   :::::;;;;;;;;;;;''''''.  ` `,;;;';;;'';''+#+:,,,,....::;;;:;;:;,.;':::::.,``  `````      `               .::`  .`,  :      :`        ` `;::. `;`  `;:    `
`         ;;                         ``````   ,::;;;;;;;;;;;;;''';':`   ``:;;;;;;;;;;''++#':,,.....::::;:';;;:,;;;;,,:.,````.````     `.`              .,:`  .`,  ,`     :`         ``;::. `;`  `;:     
`        `;,                         ``   `   .:;;;;;;:;;;;;;;';';;.    `.;;;;;';;;;''''+#+:,,.....::::;;;;::;,;::;,,;,.````,`````    ,,.              ..:`  .`,  ,`     :`         ``;;;. `;`  `;,     
`        .;.                         ``    `   :;;;;;;;;;;;;;;;;;;;`   ``:;;;;;+;;;;;'''+#+:,,.....:;:;;;;;;:;,:::,.,;:` ...,``` `    ::,` ```         `.:   .`,  ,      :`         ``;::` .;.  `:,     
`        :;`   `        ``           `.``` `   :;;;;;::;::;;;;;;;:`   ``.:;;;;;';;;;;''''+#:,,.....:;;;;;';;;;:;;;..:;:``,::,```   ` `::,` `,.         .,:   .`,  .`     :`         `,;:;. .:`  `:,     
`        ::   `.``      ``          ``...`     ::;;;;;;;:;;;;;;;;`   ``.,:;;;;;'':;;;''''+#;,,...,,:;;:;;;;;;::';;``;;:.,:;;,```   ```:;:.`.,,.       `,::   .`,  .`     :`          :::;. .;`  `::   ``
`        ::   `..`     ```      ` `````,:``    ,:;;;;;;;;;;;;;;;` `  ``,::;;;;;;':;;;;''''++;:,,,,,:,:,;;;:;;:,';;..;;:,:;::.`  `````.;;:,.,,,.`   ```.:::   .`,  .`     :.          .::;.`.:`  `::   `.
`        :,   `,,`     ..,     `.`````.,,```   `;;;;;;;;;;;;;;:` `  ``.:::;;;;;;+;:;;;'''''#+'::,,::,,,:;;:;;::'',.,;:::::::.    .,,.:;;::,,..`   `.,.,:::   .`,  ,`     :,`         `:;;,..;`  `:,  `.,
`        ;,   `,:.`   `.,,``   `...``..,,`.``   ;;;;;;;;:;;;;:.  ` ```.,,:;;;;;;+;:;;;;''''+#+'';::,,.,::;:;;::;',,:::::::::.    ,;:.;;;;::,``    `,,,,:,:   .`,` .`     ::.          :;'::.;`  `::  `.:
`        ;,   .::,``  `,:.```` .,,,.`.,,,..```  ;;;;;;;;;;;;;.  `  ``.,:::;;;;;;';::;;;;';'+##+';:::,,.::::::::;',,;:::;:,,:,   `:;;:;;;:::.     `.,,,::,:`  .`,` .`     ::.``        :;';:,:.  `::` `,:
`       `;,`` .::,`````,:``,```,::,..,,,:,,,.,. :;;;;;;;;;;;.   ,````.:::::;;;;;''::;;;;'''+#';::,,:,,.,:::::::;',::,;;;:::.`  `,;;;:;;::;:`   ``..,::::::`  .`,` .`     :;,``        :::;;,;.  `::` `,:
`       .;,`` `:,.```  .,`.,.``,::,...,::,,:,:,`,;;;;';;;;;``   :```.,:::::;;;;;'+::;;;;'''+#;:,,,,,,,,,:::::::;',:::;;;::,`   `:;;;:::::;:.``.....::::::;.  ..:` ``     :;,.         :,,;;:;.` `::```,:
``      ,;,.```,,..``` `:..`..`,::....,::..:,::`.;';;;;;;:``   `:```.,:::::;;;;;;+:::;;;''+++::..,,,,,,,:::::::;':;::;::,,,`  `.;;;;;:::;;:,.`::,..,:::::;,``,,;.`.`    `:;:.  `      :,.;;::,```:;.``::
.....`` ,;,...`,.....```,,``..`,:,``,,,::..:,::`.;'';;';:` `   .,``.,,:::::;;;;;;''::;;;''++;:,..:,,,,,:::::;::'';',,;:.``,` `.:;';;;::;';::,,::,.,,:::::;:,,::;,.,`     :::` ``     `::,;;;;,``.:;...::
:;;::..`:;:,:,.,,.,,,.` ...,,.`.,.`.,,,:..,,,,,`.;''';',` `    :,``.,,:::::;;;;;;'+:::;;''++::,..::,,,,,,;::;::''':,,::````.`.:;;'';;::;;:,:::,.,,:::::;;;:::::::::`   ``,;:```    ```::,;;::,``.;;,`.:,
:::::::,;;;::,.:,..,,.  .`.,..`.......,,.,:::,,`.;';''.`  .    ;,`.,,,::::::;;;;;;+;::;;;'++::...,:,,,,,,::::::'';,.:::.` `..:;;;''';;;;;:.,:,.`,:::;::;;;:::;:::::`   ``::,````   .``;:,;;:::``.';,``,.
:;:::;;;;';;:,,:,``..`  ,` ``` `.`.``....,.,:,.`.;;':`   `.    ;,`.,,,,::::::;;;;;'',::;;'''::,..,:,,,,,,,::;:;;',.,;;:,`  ,,;;;;''';;;:;,.,:,..,:::;::;:;;:::::;::.  ```::,....```.``;:,;;;::``.;;.``:.
;;;;;;;;;';;:::;,`````  ,      `. `````.`...,,``.;',`  ```.    ':`.,,,,::::::;;;;;;+:,::;;''::,..,:,,,::,,,::;;''..:;;;:,``::;;';''';;;;;:,,::,,,:;:;::;:;;::::;;;:.  `..::::::,,``,..;:,;:;,:``.:;,``:`
;;;;;;;;'';;:::;,```    :      `.     `,``..:```.,`  ``````    ;;.,,,,,:::::::;;;;;';,::;;';::,..,:,,,::::,::;:''..;;;;;:.`::;;''''';';;;::::::,::;::;;;:;;;:::;';:`  `.,;;;;;;;:,,,,,;:::,;:,  `,;.  :`
;;;'';;;'';;;;;;,`.`    ,      `,     `,```.:`````  `````.`    ;'.,,,,,,,,:::::;;;;;+:::;;'::,...::,,,::::,::;:;'.,:;;;;::.::;;''''';';;;;:::::::,:,:;;;:;;::;;;';:`  `.,;;;,,;';:,,:,;;::.;;,   .;` `.`
;;;;;;;;;';;;;;::.,.    .      `,     `,```,`````  ``````:`    ;',,,,,,,,,,,:::;;;;;';,:::;;,,...:,,,;::::,;;;:;',::;;;;;:`,:''''';;;;;;';::::::,,,,::;;:;;:;'''';:.```.`:;;``.:;;:,,,;;;:`;',   .;`  .`
;;;;;';;'+;;;;;:;:;,`` `.      `,  ```.:,,,.```   ``````.;`    :',,,,,,,,,,,:::;;;;;;'::::;:,,..,:,,::::::,;;;:;';;:;;;;;:`,;''''';;''';'';:::::,,..::;::;;:;+++';::..,. .;:`  `;;;::,;;;:`,':`  .;`  ` 
;;';;;;;'+;;;;::;;;:,.``,```````,``...:;;;:````` ```````.;`    :';,,,,,,,,,,,,::;;;;;;;::::,,,.,:,,:;:::;::;;::;';';;;:;;:.:;'''''';'''''';:::::,,.,;:::::::;++++';;:,.` .,.   `:;;;::;;;:`.;;.  .;.  ``
;;;''''''';;;;::;;;;;:,,:,......:,.,,,:;;;````````````...'.    ,'',,,,,,,,,,,,:::;;;::;;:,,,:,,:,,,:;::;;;;;;;;;';''';;:::,:;''';'';'''+'';:;:;:::::;:::::::;'++++';:.`` `.`   `::;;;;;;::`.:':` .;`  ``
;;':.,:;+';;;::;;;;;;;:::::::,,,::::::;';```````````...,.'.    ,'':,,,,,,,,,::,::;;;:::::,,,,,,,.,::::::;;;;;;:;';''';;;::,;;''';;;''''+';;:;;;:::;:;;::::::;''++++':``` `.`   `::;;;;;;:;`.,';.`,;`  `.
;;``  ``.:;;;;'';;;;;;;;;;;:::::::::';,`` `````````....,.'.    .'';,,,,,,,,:::,:::;;;;:,::,,,.,..,:;:;;:;;;:;';;';''';'';;:;;';'''';';''';;;;;;:::;;;;::::;;:;''+++':.`` `.`   `:;;;;;;';;,,.'',.,;,``..
:`````````````.,;';;;;;;::::::;;;;;:.``  ```````......,,,'.    `;'':,,,,,,,,,,,,:::;;:,,::,,...,,,:;:';:;;;:;'';''''';'''';;;;;';+''';;'';;;;:::::;;;:;:::;;:;'''##+;..` `.``` `:;;;;:;';;:,,;',.,;;,..`
````````.``` ````.::''''';;;;;;;:..```` ```````.....,,,,,;. `  `;'';,,,,,,,,,..,,:::;:,.,,,,..,::::;;';:;;;;;'';'''+'''''';'';';;+''';'';;;;;;::::;;;:;:;;;;::''++++:``` `,.,.`,;;';::;';;::,;';,:;':,,`
``..........`````````.,...````````````````````.,....,,,,:;. `` `:;'':,,,,,..,,.,,,::::,.,,,,.,;::::::;;:;'';;;';''''+''''''''''''''''''';;:;;;;:::;;:;;:;;;:,:''++'',````,:,:,.:;;;;;:;;;;;::;'+::;':::.
.....,..,,,,,``````````..````````````````````.::,..,,,:,;;` `` `.;''':,,,,..,,,.,,,:::,,,,,,,;;;;';;:;;;;;';''';'''''++''''''''''+''''+'';;;;:;::::::;;:;;:,,:;'++';.``..::::,,;;;;';:;';;;;:;;'';:';::,
..............`````````.;:,,..``````````````.:;:,.,::::,;'```   `';'';::,,,,,..,:,,:,,,..;:;'';;;'';;;';;;;;;'';''''''+''''''''''''''+++'';;:::::::::;;;:;:,::;''++;```,,;::::::;;;'':;';;;;:;;'';:;':::
,....```````````````````,::::,..````````````:;':,,:::::,';```   `';;'';::,,,.,,;:,,,,,:``:++';;''+'''';;'';;:;';''+';''''''''''''''''''++';;:::::::::;;;:;;::::;'+':``,::;;::::::;;'':;';;;::;;;';:;':::
.....```..,:,.``.````````.:;';:..``````..``.;;;:,::;::,:''```   `;;;;;;;::,,.,;;:,,,,.;``.'+''''+++'';'''';;:;';';'';''''''''''''''''''+';;;::::::,::;;;:;;::,:;'';:.,,,:;;;;:::::;:;:;;;;;::;;;'';;';;:
...`.`..,;'''':.``````````.,;;::..``.`....`,;';::::;::,:';.```  `:'';;;:::,,.:';;:,,,., `;.+;'''++++';''''';;;''''';;''''''''''';''''''';;;;::,,::::::;;:;;:::;;'';;,,.,,:;;;,:::::,::;;;;;:,:;;;;;;';;:
..`````..:;;;;;,.``````````.,;;::,..`.,,...;;''::::;::,:+;.```` `.;;;::,,,,,:'';;:::,.. `'.:+'''++++';';;'+'';''';;;;''''';'''';;'''''''';;;;:,,:::;;:;;;;;:::;''+;;,,.,,:;;;:::::,::,;';;;:,::::;';'';:
.```````````````````.`.````.,,;;',...:,,,.,;'''::;;;::::+;,```````';;::,,:,,;;;;;:::,`` `';`,+''+++++;':;''''''';;';;';;;';;''';;'''+++'';;;;:,:,::;;;;;;;':,:;''+'+:,,,,:;:::::::,::,:';;;:,;:,:;'';';:
.```````````....````...`````.,,:;.``,;:,,`:;'''::;;;::::';:```````:;;:::::,;;;;;;::::`` `';,`.;''+++''';;'''''';;;';;'';;;;;''';;''++++'';;;;:,:::;:;;;;;;';::;+++'+;,,,,:;::::::,::,,:';;:,,;:,,;'''';:
.```.....,::,,,,,..``......``..:.``.;;;;..;''''::;;;::::';:.``````,;;:::::;';;;;;:::,``  +''```,'+#++;';;;;''+;;';;;;'';;;;;''';;'''+''';;;;:::::::::::;;;;;::;'+'++;,,,,:;::::::,::,,:';;:,,;:,,:'''';,
.`.,:;'''''';,.....``......``.,,```;'';;..'''''::;;:;:,;+;:.```````;;::::;+';;;;;:::,`  `'+',`````.,:;+'':;''';'';;:;'';;;;;''''''''''';;;;;;::,,,::::::;;';;;;'''++;,,,,;;::::::::,,,:';;:,,;:,,:;'''':
..:''''''''''';,....`..........```:'+'':.,;'''':;;;;:,,:+;;,`.`````;::::;++';;;;;:::,`   ,+';`..``````.,;';''+;;';;:;'';;;';''+''''';';;;;''::,,,,::,:::;;':;;''+'++':,,,;;;:::;;;:,,,:';;:,,;:,,:;''';:
,:'''''''+++''+';:,.`.........````''+'':.:''''';;;;;:::;+'+':,`````';;;;+++';;;;;::,,`   .++',....```````,;''';'';;:;'';;;';''+''''';'';;;';;::,,,:,,:,:;;;:;'+++++++;:::;;;:::::::,,,:;;;:,,;:,,:;;;;::
;''''+++####++++++;:,.......`````:+++'',.;''''';;;;::::;+#+''.`` ``';;;'+++;:;;;;::,,    .'+';....,.```````:++;'';;:;'';;;''''+'''';''';;;;;;::,,,:,,,,,;;::;''';;;;;:,,,,,,,,,,,,...,,,,,,,,,,,.,,,,,,,
;''+++#######+++++'':......``````;++'''.,'''''';;;;;:::;+@+''.`````'':'++++;::;;::,.`    `'++',.,.,:.```````.,;''';;;'';;;'';'''''';'';::;:::::,,,,,,,.,,,,,,,,,,,.,,,..................................
;'+++++++++##+'+++++',....``````,+++'''.:''''';;;;;::;;;#@++;.`````';,.,:'';:;;;:,,`     `:++':.,..:;,...`..```,;;;::;;;;:;;::::::::,,,,,,,,,,..........................................................
'+++''''''+++++++++++;...```````;++++''.;'''''';';;:;;:'#@++,,```.`:,.`````.`....``      `:+++'.,,..::,,.....```.,..,,,,,,,,,,..........................................................................
'+++++++'''++++++++++',......``.'++'+'',;''''''';;;;;;;'##+'.,``.....`````````````````````:'++':.:,,,;;:,,,,,...`.,.,,,,,,,.,,...,,.....................................................................

Examples

View demonstration in development mode (uncompressed with logs rendered in console)

Documentation

Benchmark Tests

Games

I have a few simple games in production...but mostly this is about optimizing the code to make it
easily useable and optimized for the highest framerate possible.
Two games I "actually" made in the past, that I am currently rebuilding using Wes Mantooth are: