{"id":15722541,"url":"https://github.com/themabus/get-the-balance-right","last_synced_at":"2026-01-05T04:04:42.707Z","repository":{"id":199477529,"uuid":"702517400","full_name":"themabus/Get-the-Balance-Right","owner":"themabus","description":"Simple game engine CPU strain benchmark with a tiny raytracer","archived":false,"fork":false,"pushed_at":"2024-11-26T06:02:19.000Z","size":5803,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-20T18:24:44.923Z","etag":null,"topics":["benchmark","csharp","defold","gamemaker","gdscript","gml","gms","gms1","gms2","godot","godot3","godot4","love2d","performance","raytracer","rgss","rgss3","rmmv","rmxp"],"latest_commit_sha":null,"homepage":"","language":"Game Maker Language","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/themabus.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-10-09T13:20:32.000Z","updated_at":"2024-12-31T17:03:54.000Z","dependencies_parsed_at":"2024-11-17T15:19:45.302Z","dependency_job_id":"fb22f4c1-0d8a-48ea-b061-d42aaf8fb74a","html_url":"https://github.com/themabus/Get-the-Balance-Right","commit_stats":{"total_commits":69,"total_committers":1,"mean_commits":69.0,"dds":0.0,"last_synced_commit":"1ea9d46a2e86f544ad309e80689177a241789f08"},"previous_names":["themabus/get-the-balance-right"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/themabus/Get-the-Balance-Right","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/themabus%2FGet-the-Balance-Right","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/themabus%2FGet-the-Balance-Right/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/themabus%2FGet-the-Balance-Right/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/themabus%2FGet-the-Balance-Right/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/themabus","download_url":"https://codeload.github.com/themabus/Get-the-Balance-Right/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/themabus%2FGet-the-Balance-Right/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28213444,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2026-01-05T02:00:06.358Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["benchmark","csharp","defold","gamemaker","gdscript","gml","gms","gms1","gms2","godot","godot3","godot4","love2d","performance","raytracer","rgss","rgss3","rmmv","rmxp"],"created_at":"2024-10-03T22:08:21.368Z","updated_at":"2026-01-05T04:04:42.675Z","avatar_url":"https://github.com/themabus.png","language":"Game Maker Language","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Get-the-Balance-Right\nThis is 256 line C++ [tinyraytracer](https://github.com/ssloy/tinyraytracer) by Mr. Dmitry V. Sokolov ([ssloy](https://github.com/ssloy)) ported to several higher level game engines.\u003cbr\u003e\nSome older ones (but still quite popular) and some more recent ones.\u003cbr\u003e\n![original](original.png)\u003cbr\u003e\nAll projects are made to display execution time in milliseconds, so that performance could be measured.\u003cbr\u003e\nOperations include: trigonometry, vector math and data structure handling.\u003cbr\u003e\nIt is unoptimized - no lookup tables, no fixed-point, inlining, etc.,\u003cbr\u003e\nwhich presents more life-like model and evens out the playing field.\u003cbr\u003e\nShaders are not used.\u003cbr\u003e\nDrawing routines are not timed.\u003cbr\u003e\n\u003cbr\u003e\n|engine|time(ms)|size(kb)|open source|beats 486|\n|:---|---:|---:|:---:|:---:|\n|C++ (original - file output)|350|61|🌝|✔|\n|\u003cb\u003eGML|\n|Game Maker 6.1 (patched)|251400|1933|🌑|❌|\n|Game Maker 7.0|256000|2316|🌑|❌|\n|Game Maker 8.0|109000|2341|🌑|❌|\n|Game Maker 8.1|113100|4143|🌑|❌|\n|Enigma 0.0.5.0|65500|2859|🌝|❌|\n|`OpenGMK`|64000|+6709|🌝|❌|\n|GameMaker Studio 1.4 (VM)|40900|6409|🌑|❌|\n|GameMaker Studio 1.4 (YYC)|7900|6139|🌑|✔|\n|GameMaker Studio 1.4 (HTML5)|2600|1127|🌑|✔|\n|GameMaker Studio 2.2.5 (VM)|38800|4939|🌑|❌|\n|GameMaker Studio 2.2.5 (HTML5)|11500|1418|🌑|✔|\n|GameMaker Studio 2023.8.1 (VM)|51000|12283|🌑|❌|\n|GameMaker Studio 2023.8.1 (HTML5)|18100|2331|🌑|❌|\n|GameMaker Studio 2024.8.1 (VM)|45400|12990|🌑|❌|\n|GameMaker Studio 2024.8.1 (HTML5)|18100|2598|🌑|❌|\n|\u003cb\u003eDIV|\n|BennuGD r348|15100|4366|🌝|❌|\n|PixTudio 2016.12.16|15800|22346|🌝|❌|\n|\u003cb\u003eBasic / Basiclike|\n|AppGameKit 2023.01.26 (Tier 1)|47900|7632|🌑|❌|\n|Blitz3D\t1.110|1200|1510|🌝|✔|\n|BlitzMax 1.50|600|1571|🌝|✔|\n|BlitzMax NG 0.136|980|3794|🌝|✔|\n|Monkey-X 87a (GCC)|1800|1636|🌝|✔|\n|Monkey-X 87a (HTML5)|750|104|🌝|✔|\n|Cerberus-X 2023-05-26 (GCC)|1800|2840|🌝|✔|\n|Cerberus-X 2023-05-26 (HTML5)|780|488|🌝|✔|\n|Monkey 2 2018.09|740|14622|🌝|✔|\n|Wonkey 2022.04|800|16886|🌝|✔|\n|FreeBasic 1.10.1 (GCC 9.3.0)|390|140|🌝|✔|\n|\u003cb\u003ePascal / Delphi|\n|ZenGL 0.3.12 (FPC 3.2.2)|690|315|🌝|✔|\n|Castle Game Engine 7.0 (FPC 3.2.2)|200|16816|🌝|✔|\n|\u003cb\u003eRuby|\n|RPG Maker XP (Ruby 1.8.1)|108000|841|🌑|❌|\n|RPG Maker VX (Ruby 1.8.1)|84000|162|🌑|❌|\n|RPG Maker VX Ace (Ruby 1.9.2)|18200|1256|🌑|❌|\n|`RGDirect 1.5.4`|61500|+1268|🌑|❌|\n|`MKXP-Z`|40000|+26849|🌝|❌|\n|\u003cb\u003eJavaScript|\n|RPG Maker MV 1.6.3 (clean)|2200|165968|🌑|✔|\n|\u003cb\u003eLua|\n|Defold 1.6.0 (LuaJIT 2.1.0-b3)|5500|7484|🌔|✔|\n|LÖVE 11.4 (LuaJIT 2.1.0-b3)|3700|+love2d|🌝|✔|\n|\u003cb\u003ePython / Pythonlike|\n|Godot 3.5.3 (GDScript)|5700|38105|🌝|✔|\n|Godot 4.1.2 (GDScript)|4700|68727|🌝|✔|\n|Pygame 2.5.2 (Python 3.7.2)|4300|+python|🌝|✔|\n|\u003cb\u003eC#|\n|Godot 3.5.3 (C#)|660|74623|🌝|✔|\n|Godot 4.1.2 (C#)|230|144297|🌝|✔|\n* OpenGMK, RGDirect and MKXP are runtime replacements for already assembled binaries.\u003cbr\u003e\n* Execution times below 1 sec. reported with higher precision.\u003cbr\u003e\n\u003cbr\u003e\nThese projects could also be useful as a 'Hello World!' programs, when moving from engine to engine\u003cbr\u003e\nand you want to familiarize yourself by jumping right in, instead of going through tutorials.\u003cbr\u003e\n\u003cbr\u003e\nEnjoy!\u003cbr\u003e\n\u003cbr\u003e\u003cbr\u003e\nI added for reference timings from MS DOS16/32 version using various compilers and extenders, \u003cbr\u003e\nrunning on Am5x86 133, which is basically a beefed up 486. They used to rate them as Pentium 75 or 90,\u003cbr\u003e\nbut that was largely marketing - they were noticeably weaker than those. I'll probably come back to this\u003cbr\u003e\nand update it with optimized version - lookup tables/fixed point math, which would be typical\u003cbr\u003e\nfor this hardware. Probably won't do assembler optimizations though.\u003cbr\u003e\n\u003cbr\u003e\n\n|engine|time(ms)|size(kb)|open source|\n|:---|---:|---:|:---:|\n|\u003cb\u003eDOS16 on Am5x86 w/Fastgraph|\n|Borland C 4.5|28820|57|🌑|\n|Microsoft C 8|26070|37|🌑|\n|Digital Mars C 8.5|30030|58|🌓|\n|Open Watcom C 2|25190|40|🌝|\n|\u003cb\u003eDOS32 on Am5x86 w/MetaWindow|\n|Borland C 4.5 (Power Pack)|19470|345|🌑|\n|Microsoft C 8 (Phar Lap TNT)|16060|524|🌑|\n|Digital Mars C 8.5 (HX)|crash|496|🌓|\n|Open Watcom C 2 (DOS/4GW)|17215|588|🌝|\n* Digital Mars C = Symantec C = Zortech C\n\u003cbr\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthemabus%2Fget-the-balance-right","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthemabus%2Fget-the-balance-right","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthemabus%2Fget-the-balance-right/lists"}