{"id":13563386,"url":"https://github.com/shiryel/rayex","last_synced_at":"2025-10-24T06:49:26.997Z","repository":{"id":45363498,"uuid":"384632813","full_name":"shiryel/rayex","owner":"shiryel","description":"Raylib binds to elixir for programming games","archived":false,"fork":false,"pushed_at":"2025-01-17T19:38:47.000Z","size":5208,"stargazers_count":65,"open_issues_count":1,"forks_count":12,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-10-02T01:17:58.734Z","etag":null,"topics":["audio","bindings","elixir","graphics","raylib"],"latest_commit_sha":null,"homepage":"https://hexdocs.pm/rayex/readme.html","language":"Elixir","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/shiryel.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":"2021-07-10T06:57:45.000Z","updated_at":"2025-09-06T15:13:17.000Z","dependencies_parsed_at":"2024-08-01T13:19:20.958Z","dependency_job_id":"cee3792a-706e-413c-8687-7f1c103ac1d8","html_url":"https://github.com/shiryel/rayex","commit_stats":{"total_commits":21,"total_committers":2,"mean_commits":10.5,"dds":0.04761904761904767,"last_synced_commit":"8aa6baf25df8167d0f3921ef7fe6bacb11652dbb"},"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/shiryel/rayex","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shiryel%2Frayex","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shiryel%2Frayex/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shiryel%2Frayex/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shiryel%2Frayex/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/shiryel","download_url":"https://codeload.github.com/shiryel/rayex/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shiryel%2Frayex/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":280755317,"owners_count":26385096,"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":"2025-10-24T02:00:06.418Z","response_time":73,"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":["audio","bindings","elixir","graphics","raylib"],"created_at":"2024-08-01T13:01:18.672Z","updated_at":"2025-10-24T06:49:26.967Z","avatar_url":"https://github.com/shiryel.png","language":"Elixir","readme":"# Rayex\n\n[![Hex.pm](https://img.shields.io/hexpm/v/rayex.svg)](https://hex.pm/packages/rayex)\n[![API Docs](https://img.shields.io/badge/api-docs-blue.svg?style=flat)](https://hexdocs.pm/rayex/)\n[![Run Tests](https://github.com/shiryel/rayex/actions/workflows/test.yml/badge.svg)](https://github.com/shiryel/rayex/actions/workflows/test.yml)\n\n[![BlueSky](https://img.shields.io/badge/bsky-follow-blue.svg?logo=data:image/svg%2bxml;base64,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)](https://shiryel.bsky.social)\n\nRayex provides Elixir NIF bindings to [Raylib](https://www.raylib.com/)\n\n\u003e NOTE: some of the functions on raylib are not implemented yet, check the [contributing section](#contributing) to help\n\n![](examples/resources/3d_picking.gif)\n\n## Installation\n\nThe package can be installed by adding `rayex` to your list of dependencies in `mix.exs`:\n\n```elixir\ndef deps do\n  [\n    {:rayex, \"~\u003e 0.0.3\"}\n  ]\nend\n```\n\nThe docs can be found at [https://hexdocs.pm/rayex](https://hexdocs.pm/rayex).\n\n## Running from source\n\nYou need the following packages installed on your system:\n* elixir\n* erlang (headers)\n* pkg-config\n* raylib v5.5\n* glibc\n* clang-tools (formatter)\n\n\u003e If you are using Nix or NixOS you can run __nix develop__ to get an ready to go env to work with!\n\nNow you can run:\n```bash\nmix deps.get\niex -S mix\n```\n\nAnd test with:\n```exs\n# Import all modules\niex\u003e use Rayex\n\n# open new window\niex\u003e init_window(200, 200, \"window name\")\n\n# draw a line\niex\u003e begin_drawing()\niex\u003e draw_line(10, 10, 50, 51, %{r: 255, g: 161, b: 0, a: 255})\niex\u003e end_drawing()\n```\n\nYou can also run our examples!!\n\n```bash\ncd examples/3d_picking/\nmix deps.get\niex -S mix\n```\n```exs\niex\u003e The3dPicking.run()\n```\n\n## Contributing\n\nThere are a few things that you need to know about the code:\n* This project aims to run each one of [these functions](https://www.raylib.com/cheatsheet/cheatsheet.html) with elixir\n* To do so, we are using [Unifex](https://hexdocs.pm/unifex/readme.html) to create NIFs\n* On `c_src/rayex/rayex.spec.exs` you can find the definitions that will be generated by Unifex\n* On `c_src/rayex/rayex.c` you can find how they are implemented\n* On `c_src/rayex/rayex.h` and `lib/unifex/code_generator/base_types/...` you can find custom types\n* On `lib/rayex/unifex/raylib.ex` is where the generated functions will be stored and used for each module under `lib/rayex`, the public API\n\nAny contributions are appreciated\n\n## License\n\n   Copyright 2021 Shiryel\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n","funding_links":[],"categories":["Games"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshiryel%2Frayex","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fshiryel%2Frayex","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshiryel%2Frayex/lists"}