{"id":13633035,"url":"https://github.com/McDevon/taxman-engine","last_synced_at":"2025-04-18T10:33:57.742Z","repository":{"id":46896632,"uuid":"293328457","full_name":"McDevon/taxman-engine","owner":"McDevon","description":"Game Engine for Embedded Systems","archived":false,"fork":false,"pushed_at":"2024-10-15T09:40:11.000Z","size":18043,"stargazers_count":105,"open_issues_count":0,"forks_count":3,"subscribers_count":10,"default_branch":"master","last_synced_at":"2024-11-09T02:33:15.020Z","etag":null,"topics":["2d-game-engine","c","embedded","game-development","game-engine","gamedev","playdate"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/McDevon.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2020-09-06T17:32:24.000Z","updated_at":"2024-11-02T21:45:50.000Z","dependencies_parsed_at":"2023-09-29T20:37:01.066Z","dependency_job_id":"934221ae-f756-4919-8862-d2d1b1e241c3","html_url":"https://github.com/McDevon/taxman-engine","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/McDevon%2Ftaxman-engine","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/McDevon%2Ftaxman-engine/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/McDevon%2Ftaxman-engine/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/McDevon%2Ftaxman-engine/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/McDevon","download_url":"https://codeload.github.com/McDevon/taxman-engine/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249479051,"owners_count":21279186,"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","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":["2d-game-engine","c","embedded","game-development","game-engine","gamedev","playdate"],"created_at":"2024-08-01T23:00:25.426Z","updated_at":"2025-04-18T10:33:56.680Z","avatar_url":"https://github.com/McDevon.png","language":"C","funding_links":[],"categories":["Game Development"],"sub_categories":["Programming Frameworks \u0026 Languages"],"readme":"# Taxman Engine\n\nTaxman is a 2D Game Engine designed originally for the [Playdate](https://play.date) console. However, it is not platform-dependent.\n\nThe engine is written in C for high portability and speed in small-scale devices. No optimisation has been done, as the target device is not yet available for purchase.\n\nTaxman Engine implements a simple Entity-Component structure and scene management. The choice is based on a hunch that quick iterative prototyping and creating game jam games would be faster with EC than with ECS.\n\nSome features of the engine are based on the idea of having 1-bit screen, but adding support for more colors is entirely possible.\n\nTo run the engine, a platform adapter is needed. Currently there are two publicly available platform adapters:\n\n- [Wasm adapter](https://github.com/mcdevon/taxman-wasm) for running the engine in a browser\n- [Playdate adapter](https://github.com/mcdevon/taxman-playdate) for running the engine in a Playdate console\n\n## Demo\n\nOnline demo is [available here](https://mcdevon.github.io/taxman-wasm/). It is built using the [Wasm port of the engine](https://github.com/mcdevon/taxman-wasm). The Wasm port repository contains an example of how to build a scene and add objects there, as well as how to add assets and load them.\n\nThe logo animation is made using transform animations and easings, including bezier curve for the jump of the `taxman` text. After the animation, scene is changed using a fade-to-black transition.\n\n![Logo animation](taxman-demo-1.gif)\n\nThe character displays an example of frame animations. Simple water effect is made using dithering.\n\n![Character and tilemap demo](taxman-demo-2.gif)\n\nIn order to test the engine on an actual device, a [Teensy 4.0](https://www.pjrc.com/store/teensy40.html) board was used, running at 150MHz. The display is a [Sharp memory display](https://www.sharpsma.com/products?sharpCategory=Memory%20LCD\u0026p_p_parallel=0\u0026sharpProductRecordId=1504552) with 400x240 resolution.\n\n![Device demo](taxman-device.gif)\n\n## Features\n\nCurrent Features include\n\n- Custom object type with runtime type information to allow easier memory management (destructor-like behavior)\n- Scenes and transitions between scenes\n- Scene Graph, Game Objects, reusable Components\n- Dynamic ArrayLists, HashMaps, and String Builders, which support the memory management scheme\n- Dithering to draw grayscale images\n- Advanced dithering features for animation and effects\n- Bitmap fonts (currently monospace only)\n- Sprite atlases and atlas creation tool\n- Render textures and off-screen rendering\n- Frame animations\n- Transform animations\n- Easings for transform animations, including cubic bezier curves\n- Precomputed bezier curves to make them run faster in embedded environments\n- Tilemaps with automatic edge tile selection\n- Platformer physics with one-directional platforms and walls\n- Moving platforms and pushable objects\n- Collision detection using sweep-and-prune algorithm\n- Camera\n- 9-sprite\n- Pseudorandom number generator\n- Profiler\n\nThe engine can use fixed-point numbers for in-game calculations. This is due to the original game idea needing platform-indepent deterministic game replays using only player inputs. By deafult regular floats are used.\n\n## Rough Backlog\n\n- How-to-use guide\n- Examples of scenes, objects, components, and game state\n- Audio support\n- Render optimisations\n- Sprite alpha using dithering\n- Clean exit (clear all allocated memory and quit)\n- Use user-defined resolution instead of a hard-coded one\n\n## Contributing\n\nAll contributions, especially issues, comments, and pull request are warmly welcome. This repository is maintained as a side project, and as such, it is unfortunately not possible to guarantee frequent updates.\n\nIf you manage to get the engine running on any platform, please send me a [tweet](https://twitter.com/jussienroos).\n\n## License\n\nThis codebase is released under the MIT License.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FMcDevon%2Ftaxman-engine","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FMcDevon%2Ftaxman-engine","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FMcDevon%2Ftaxman-engine/lists"}