{"id":25463118,"url":"https://github.com/bhavyemathur/goopylib","last_synced_at":"2025-06-11T19:32:59.320Z","repository":{"id":56009597,"uuid":"276729043","full_name":"BhavyeMathur/goopylib","owner":"BhavyeMathur","description":"Powerful cross-platform low-level rendering and game engine for Python \u0026 C/C++","archived":false,"fork":false,"pushed_at":"2025-06-08T23:29:20.000Z","size":477524,"stargazers_count":21,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-06-09T00:24:29.784Z","etag":null,"topics":["computer-graphics-algorithms","cplusplus","easing-functions","game-development","graphics","graphics-library","open-gl","python","vulkan-game-engine"],"latest_commit_sha":null,"homepage":"https://pypi.org/project/goopylib","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/BhavyeMathur.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null}},"created_at":"2020-07-02T19:25:50.000Z","updated_at":"2025-06-08T23:37:39.000Z","dependencies_parsed_at":"2022-08-15T11:20:29.827Z","dependency_job_id":null,"html_url":"https://github.com/BhavyeMathur/goopylib","commit_stats":null,"previous_names":[],"tags_count":52,"template":false,"template_full_name":null,"purl":"pkg:github/BhavyeMathur/goopylib","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BhavyeMathur%2Fgoopylib","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BhavyeMathur%2Fgoopylib/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BhavyeMathur%2Fgoopylib/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BhavyeMathur%2Fgoopylib/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/BhavyeMathur","download_url":"https://codeload.github.com/BhavyeMathur/goopylib/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BhavyeMathur%2Fgoopylib/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259325244,"owners_count":22841050,"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":["computer-graphics-algorithms","cplusplus","easing-functions","game-development","graphics","graphics-library","open-gl","python","vulkan-game-engine"],"created_at":"2025-02-18T06:19:35.683Z","updated_at":"2025-06-11T19:32:59.279Z","avatar_url":"https://github.com/BhavyeMathur.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/BhavyeMathur/goopylib/blob/master/branding/logo/goopylib_primary_logo.svg?raw=true\" width=\"500\" height=\"250\"\u003e\n\u003c/div\u003e\n\n[![Downloads](https://static.pepy.tech/badge/goopylib)](https://pepy.tech/project/goopylib)\n[![PyPI](https://img.shields.io/pypi/v/goopylib?color=0091b5\u0026label=release)](https://pypi.org/project/goopylib/)\n![PyPI - Python Version](https://img.shields.io/pypi/pyversions/goopylib?color=00a3b5)\n[![PyPI - Wheel](https://img.shields.io/pypi/wheel/goopylib)](https://pypi.org/project/goopylib/#files)\n[![GitHub](https://img.shields.io/github/license/BhavyeMathur/goopylib?color=0079b5)](./LICENSE.md)\n\n-----------------\n\n## What is it?\ngoopylib is powerful game, graphics, and GUI library for Python and C++ to build cross-platform applications.\nIt allows you to unlock the potential of OpenGL and low-level graphics with a high-level, simple-yet-powerful API.\n\n### Key Features:\n - Cross-Platform \u0026 Powerful\n - Fast! Built-in batch-rendering \u0026 optimizations\n - Accessible through Python \u0026 C++\n - Simple code to create, transform, \u0026 animate images, quads, triangles, circles, and more\n - Automatic 2D Orthographic Camera \u0026 Camera Controller\n - Window \u0026 Mouse events: key \u0026 button presses, several callbacks, etc.\n\n#### In Development:\n - Text Rendering\n - GUI Elements\n - Animation Engine\n - Texture Factory\n - Low-Level API Access\n\n#### Future Plans:\n - 2D Rigid-Body Physics Engine\n - Sound \u0026 Lighting Engine\n - Profiling Tools\n - Build \u0026 Distribution Tools\n\n## Examples\n\n#### Solar System Simulator:\n[![https://github.com/BhavyeMathur/goopylib-solar-system-simulation](https://github.com/BhavyeMathur/goopylib-solar-system-simulation/blob/main/assets/solar-system.gif?raw=true)](https://github.com/BhavyeMathur/goopylib-solar-system-simulation)\n\n#### Brick Breaker:\n[![https://github.com/BhavyeMathur/goopylib-brick-breaker](https://github.com/BhavyeMathur/goopylib-brick-breaker/blob/main/assets/img.png?raw=true)](https://github.com/BhavyeMathur/goopylib-brick-breaker)\n\n#### Conway's Game of Life:\n[![https://github.com/BhavyeMathur/goopylib-conways-game-of-life](https://github.com/BhavyeMathur/goopylib-conways-game-of-life/blob/main/assets/gif.gif?raw=true)](https://github.com/BhavyeMathur/goopylib-conways-game-of-life)\n\n## Installation\n\n**Requires Python ≥ 3.8.** To install goopylib on Windows or MacOS, use the\n[Python Package Index (PyPI)](https://pypi.org/project/goopylib):\n\n```sh\npip install goopylib\n```\nWheels for Linux are not currently supported but coming as soon as I can build them!\n\n## Tutorial\n\nLet's start by creating a rectangle on an empty window:\n\n```python\nimport goopylib as gp\n\nwindow = gp.Window(700, 500)  # width=700, height=500\n\n# centered at (0, 0), width=100, height=50\nrect = gp.Rectangle((0, 0), 100, 50)\nwindow.draw(rect)\n\nwhile window.is_open():\n    gp.update()\n```\n\nInside the loop, you can check for events (or define [callbacks](https://goopylib.readthedocs.io/en/latest/api_reference/core/window.html#callback-functions) instead):\n\n```python\nwhile window.is_open():\n    if window.check_key(gp.KEY_H):\n        rect.hide()\n    elif window.check_key(gp.KEY_S):\n        rect.show()\n    \n    mousex, mousey = window.get_mouse_position()\n    \n    if rect.contains(mousex, mousey):\n        print(\"Hovering over the rectangle!\")\n        \n    gp.update()\n```\n\nDraw other shapes or more complex objects:\n\n```python\nimg = gp.Image(\"filepath.png\", (0, 0))\nwindow.draw(img)\n```\n\nInstall a simple camera controller that automatically moves, rotates, and zooms in \u0026 out!\n\n```python\ncontroller = gp.CameraController(window)\n\nwhile window.is_open():\n    # ...\n    controller.update()\n```\n\n## Documentation\n\nThe documentation for goopylib can be found [here](https://goopylib.readthedocs.io/en/latest/index.html).\nPlease submit an issue or email bhavyemathur@gmail.com for any questions!\n\n## Contributing \u0026 Usage\n\nContributions to goopylib are absolutely welcome! Please reach out to me if you have an idea or feature request or\nsubmit a pull request yourself. I'd love to hear if you've used goopylib for a project—maybe we could even add some \nscreenshots to a gallery. \n\ngoopylib is licensed under the [Mozilla Public License Version 2.0](./LICENSE.md) which essentially enables you use \nand modify goopylib (commercially or otherwise) as long as you attribute the project! See\n[choosealicense.com](https://choosealicense.com/licenses/mpl-2.0/) for more details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbhavyemathur%2Fgoopylib","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbhavyemathur%2Fgoopylib","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbhavyemathur%2Fgoopylib/lists"}