{"id":22900608,"url":"https://github.com/catriverr/gmeng-sdk","last_synced_at":"2025-05-08T01:24:54.268Z","repository":{"id":195393002,"uuid":"692825803","full_name":"catriverr/gmeng-sdk","owner":"catriverr","description":"DevKit \u0026 Source for Gmeng - the game engine.","archived":false,"fork":false,"pushed_at":"2025-04-25T15:33:15.000Z","size":24642,"stargazers_count":15,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-25T16:23:09.957Z","etag":null,"topics":["2d-game-engine","game-engine","game-engine-2d","gmeng","graphics","ncurses","sdl-game","terminal","terminal-based","text-based","tui","unix-shell"],"latest_commit_sha":null,"homepage":"https://gmeng.org","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"zlib","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/catriverr.png","metadata":{"files":{"readme":"readme.md","changelog":"CHANGELOG.md","contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-09-17T17:41:10.000Z","updated_at":"2025-04-25T15:33:18.000Z","dependencies_parsed_at":"2023-10-29T09:24:05.951Z","dependency_job_id":"806bc306-93fe-4759-b420-1d796c6477bb","html_url":"https://github.com/catriverr/gmeng-sdk","commit_stats":null,"previous_names":["catriverr/gmeng-sdk"],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/catriverr%2Fgmeng-sdk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/catriverr%2Fgmeng-sdk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/catriverr%2Fgmeng-sdk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/catriverr%2Fgmeng-sdk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/catriverr","download_url":"https://codeload.github.com/catriverr/gmeng-sdk/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252979972,"owners_count":21835141,"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","game-engine","game-engine-2d","gmeng","graphics","ncurses","sdl-game","terminal","terminal-based","text-based","tui","unix-shell"],"created_at":"2024-12-14T01:29:03.666Z","updated_at":"2025-05-08T01:24:54.260Z","avatar_url":"https://github.com/catriverr.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n    \u003cimg src =\"https://allahcorp.com/static/assets/gmeng-more-hd.png##\" style=\"width: 100%;\"\u003e\u003cbr/\u003e\n    \u003cp3\u003eA Powerful, Terminal-Based 2D Game Engine written in C++.\u003c/p3\u003e\n\u003c/p\u003e\n\u003chr/\u003e\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"https://github.com/catriverr/gmeng-sdk/actions/workflows/c-cpp.yml/badge.svg\"\u003e\n\u003cimg src=\"https://github.com/catriverr/liblmf/actions/workflows/c-cpp.yml/badge.svg\"\u003e\n\u003cimg src=\"https://img.shields.io/github/v/release/catriverr/gmeng-sdk?label=version\u0026color=F68019\"\u003e\n\u003c/p\u003e\n\n## Changelog\n[`See what's new`](CHANGELOG.md) **(28-Apr-2025) info**: Linux compilation, `make setup` command | [`gmeng.org/changelog`](https://gmeng.org/changelog)\n\n## Documentation\nGmeng's documentation can be found in [`gmeng.org`](https://gmeng.org). Please refer to the website for enquiries about functionality and usage.\n\n## Building\n\nThis project uses the [**GNU Make**](https://www.gnu.org/software/make/) build system for an easy building process. Gmeng currently runs on all `UNIX` (macOS \u0026 linux) systems.\nWhile a Windows port for Gmeng is being worked on it is not yet complete. If you're on a Windows machine,\ninstall [`WSL (Windows Subsystem for Linux)`](https://learn.microsoft.com/en-us/windows/wsl/install) to run Gmeng without having to change computers or boot into a different Operating System.\n\n### Getting Started\n\nTo get started, clone the repository and set it up with\n```sh\ngit clone https://github.com/catriverr/gmeng-sdk\ncd gmeng-sdk\nsudo make setup\n```\n\u003e [!IMPORTANT]\n\u003e You will need to run `sudo make setup`\n\u003e to include the sources for libraries \u0026 dependencies which gmeng uses.\u003cbr\u003e\n\u003e\n\u003e **submodules**\u003cbr\u003e\n\u003e Currently, gmeng uses the following submodules:\n\u003e - [`catriverr/liblmf`](https://github.com/catriverr/liblmf) for interleafing and configuration file parsing,\n\u003e - [`catriverr/noble`](https://github.com/catriverr/noble) for scripting, script parsing and plugin support\n\u003e\n\u003e **libraries \u0026 utilities**\u003cbr\u003e\n\u003e - `homebrew` for installing \u0026 implementing libraries required by gmeng,\n\u003e - `pkg-config \u0026 pkgconf` for implementing cflags for C++ compiler libraries,\n\u003e - `libcurl4-openssl-dev` for easy telecommunications \u0026 networking functions,\n\u003e - `libncurses-dev` for easy terminal-based UI creation on CLI commands,\n\u003e - `libasound2-dev` **(linux only)** for the ALSA (Advanced Linux Sound Architecture) audio engine,\n\u003e - `ApplicationServices` **(macOS only)** for the ApplicationServices general Mac Service utilities\n\n### Build Options\n```make\nbuilds:\n    make all (builds engine and cli)\n    make test (builds interface tests / test.cpp)\n    make test2 (builds unit tests / tests/test.cpp)\n    make compile (builds your target file / specified in buildoptions.mk or `make configure`)\n    make compile-windows (builds your target file / cross compiled to windows)\n    make compile-file filename=\u003cfile.cpp\u003e (builds the file defined in filename)\n    make compile-file-windows filename=\u003cfile.cpp\u003e (builds the file defined in filename, for windows target)\n    make compile-script filename=\u003cfile.cc\u003e (builds the file defined in filename, as a NOBLE shared library script)\n\n    make setup (sets up the environment and installs the libraries required for gmeng to function)\n    make build (builds the target in Production mode, all scripts in the scripts/src directory and your target will be compiled)\noptions:\n    make [debug] [no-ncurses] [use-external] [warnings] [all/test/test2/compile/compile-windows/compile-file/compile-file-windows/compile-script/build]\n    make configure\n```\n- The `debug` option adds the `-g -O0 -fsanitize=address` flags to the compiler.\n- The `no-ncurses` option disables the auto-imports to `utils/interface.cpp` and `types/interface.h` from the `gmeng.h` header.\n- The `use-external` option enables the auto-imports to `SDL2/SDL.h` headers for SDL-based windows.\n- The `warnings` option enables `-Wall` so all warnings are displayed by the compiler.\n- The `configure` option runs the configuration utility to set up the buildconfig for a program.\n\n## Debugging\nGmeng is designed and configured to be debugged with the `llvm/lldb` debugger. To debug different functionalities of the library, run llvm with the unit tests binary.\n\n### Internal Engine Debugging\nGmeng as its own testing utility for internal tests. Compile with:\n```sh\nmake test2; lldb ./tests/out/test.o\n```\nto run different tests, add the `-l=0,1,2,3..8` flag to the `run` command in lldb.\nrefer to the [Unit Tests](tests/test.cpp) file to see different tests and what they do.\n\n### External Application Debugging\nYou may also compile with debugging parameters in `clang` too with the `make debug (compile,build,etc..make parameters)` parameter.\n```sh\nmake debug build; lldb ./game.out\n```\nThis will allow you to compile with debugger parameters.\n\n## Flags \u0026 Command-line Arguments\nFor **Gmeng**'s command-line arguments, refer to the `help` page in the command-line interface via:\n```sh\nmake; ./gmeng -help\n```\n\nGmeng takes the following preprocessor definitions:\n```cpp\n#define GMENG_NO_CURSES // false by default, for no ncurses imports, same as the make no-ncurses parameter\n#define __GMENG_LOG_TO_COUT__ // false by default, streams gm_log() calls to the std::cout stream.\n#define __GMENG_ALLOW_LOG__ // true by default, allows logging\n#define __GMENG_DRAW_AFTER_LOG__ // false, by default draws the dev-c console\n```\n\n## Contributing\nPlease refer to [`gmeng-sdk/CONTRIBUTING`](.github/CONTRIBUTING.md) for guidelines on how to contribute to gmeng.\n\n## Contact\nyou may contact me on  discord via `@catriverr`, or e-mail me at `nehir@mybutton.org`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcatriverr%2Fgmeng-sdk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcatriverr%2Fgmeng-sdk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcatriverr%2Fgmeng-sdk/lists"}