{"id":23132557,"url":"https://github.com/jacquesrott/merriment","last_synced_at":"2025-08-17T08:32:33.364Z","repository":{"id":148218782,"uuid":"40268239","full_name":"jacquesrott/merriment","owner":"jacquesrott","description":"Entity/Components based 2D engine written in C with embedded Lua scripts.","archived":false,"fork":false,"pushed_at":"2015-10-15T21:09:52.000Z","size":340,"stargazers_count":4,"open_issues_count":0,"forks_count":3,"subscribers_count":0,"default_branch":"master","last_synced_at":"2024-04-15T03:05:17.688Z","etag":null,"topics":["2d-engine","engine","entity","game"],"latest_commit_sha":null,"homepage":null,"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/jacquesrott.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}},"created_at":"2015-08-05T20:50:00.000Z","updated_at":"2016-12-09T09:54:35.000Z","dependencies_parsed_at":"2023-04-10T06:01:58.957Z","dependency_job_id":null,"html_url":"https://github.com/jacquesrott/merriment","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/jacquesrott%2Fmerriment","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jacquesrott%2Fmerriment/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jacquesrott%2Fmerriment/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jacquesrott%2Fmerriment/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jacquesrott","download_url":"https://codeload.github.com/jacquesrott/merriment/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":230106147,"owners_count":18174009,"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-engine","engine","entity","game"],"created_at":"2024-12-17T11:19:08.055Z","updated_at":"2024-12-17T11:19:08.854Z","avatar_url":"https://github.com/jacquesrott.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Merriment\n\nEntity/Components based 2D engine written in C with embedded Lua scripts.\n\n## Description\n\nEngine written on my spare time. I wanted to do a game, ended up doing an engine ... again. Hey, engines are fun.\n\n## Usage\n\nIt is currently possible to load scenes with scripts and program shaders.\nYou can run and load a scene :\n\n```\nscons -Q \u0026\u0026 ./bin/merriment\n```\n\n## Requirements\n\n- Scons\n- SDL2\n- OpenGL (OS X only)\n- chipmunk\n- LuaJIT\n- python2.7 (only required for the so-called \"editor\")\n\n## Editor\n\n```json\n{\n    \"entities\": [\n        {\n            \"components\": [\n                [\n                    \"script\",\n                    {\n                        \"instance\": {},\n                        \"path\": \"assets/scripts/player.lua\"\n                    }\n                ],\n                [\n                    \"transform\",\n                    {\n                        \"angle\": 0.0,\n                        \"position\": [\n                            0.0,\n                            0.0\n                        ],\n                        \"scale\": [\n                            1.0,\n                            1.0\n                        ]\n                    }\n                ],\n                [\n                    \"sprite\",\n                    {\n                        \"sprite\": \"assets/sprites/red_square.png\",\n                        \"program\": [\"assets/shaders/vertex.vs\", \"assets/shaders/fragment.fs\"]\n                    }\n                ]\n            ],\n            \"name\": \"test\"\n        }\n    ],\n    \"path\": \"scene.mp\",\n    \"source\": \"scene.json\"\n}\n```\n\nInstall the python requirements from `/editor/requirements.txt` with\n\n```\npip install -r editor/requirements.txt\n```\n\nIt is possible to convert a json scene to msgpack format with the following command :\n\n```\npython editor/compiler.py\n```\n\nTo unpack a scene :\n\n```\npython editor/decompiler.py\n```\n\nBy default, `compiler` and `decompiler` will run through all the files of `assets/editor/` or `assets/scenes/`.\nIn order to (de)compile only one file, the usage would be :\n\n```\npython editor/decompiler.py MSGPACK_FILE_PATH\n```\n\nor\n\n```\npython editor/compiler.py JSON_FILE_PATH\n```\n\n#### Hot reload\n\nIf you have already a running application, it is possible to hotreload a scene by pressing `BACKSPACE`.\n\n## Why Merriment ?\n\n```\nmer•ri•ment (mĕrˈĭ-mənt)\n\n    n.  High-spirited fun and enjoyment; hilarity.\n```\n\nIt's jun for fun and for learning.\n\n## Resources\n\n- [Game Engine Architecture (1st Edition)](http://www.amazon.com/Game-Engine-Architecture-Jason-Gregory/dp/1568814135/). (2009). Florida: Jason Gregory\n- [Game Programming Patterns](http://gameprogrammingpatterns.com/). (2014). Seattle: Robert Nystrom\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjacquesrott%2Fmerriment","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjacquesrott%2Fmerriment","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjacquesrott%2Fmerriment/lists"}