{"id":13805233,"url":"https://github.com/Larpon/shy","last_synced_at":"2025-05-13T19:30:30.100Z","repository":{"id":184043491,"uuid":"521920054","full_name":"larpon/shy","owner":"larpon","description":"Helps you being creative in V","archived":false,"fork":false,"pushed_at":"2025-05-09T10:51:09.000Z","size":3667,"stargazers_count":61,"open_issues_count":1,"forks_count":3,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-05-09T10:52:14.897Z","etag":null,"topics":["2d","creative-coding","engine","foundation","framework","game-development","game-engine","game-framework","gamedev","module","v","v-lang","v-language","vlang"],"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/larpon.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":"2022-08-06T10:51:40.000Z","updated_at":"2025-05-09T10:51:08.000Z","dependencies_parsed_at":"2023-10-28T14:36:46.019Z","dependency_job_id":"ec56075c-9f81-43cf-b7bf-be910d2064dd","html_url":"https://github.com/larpon/shy","commit_stats":null,"previous_names":["larpon/shy"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/larpon%2Fshy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/larpon%2Fshy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/larpon%2Fshy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/larpon%2Fshy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/larpon","download_url":"https://codeload.github.com/larpon/shy/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254012915,"owners_count":21999331,"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","creative-coding","engine","foundation","framework","game-development","game-engine","game-framework","gamedev","module","v","v-lang","v-language","vlang"],"created_at":"2024-08-04T01:00:58.938Z","updated_at":"2025-05-13T19:30:29.098Z","avatar_url":"https://github.com/larpon.png","language":"C","funding_links":[],"categories":["Libraries"],"sub_categories":["Game development"],"readme":"\u003cimg src=\"shy.svg\" width=\"128\"/\u003e\n\n# Shy\n\nAims to be an intuitive, opinionated and solid foundation for game development and\ncreative coding written in [V](https://vlang.io) with which you can easily build and distribute small\nto medium sized 2D games or applications.\n\nThe `shy` project works both as a V module and a standalone CLI tool.\n\n# Games made with Shy\n\n[Puzzle Vibes](https://blackgrain.itch.io/puzzle-vibes) ([Source](https://github.com/larpon/puzzle_vibes))\n\n# Targets\n\nPlease note that export and developing/building/running from some\nof these platforms are still work-in-progress, but we aim to support\na wide range of targets like the following:\n\nWindows, macOS, Linux, Raspberry PI, Android, Web (WASM/emscripten) and likely more.\n\n# Highlights\n\n* Get your creative ideas up and running relatively quick.\n* Rich examples directory.\n* Live coding and runtime experimenting via V's `-live` flag.\n* Animation and timer system - built right in.\n* Easy timers with `shy.once(...)` or `shy.every(...)`.\n* 2D shape drawing with several levels, layers of control and performance.\n* 2D shape collision detection.\n* 3D capable (via `sokol_gfx.h`)\n* Multiple, runtime switchable, render modes (immediate, UI, step).\n* [Visually tested](https://github.com/larpon/shy/blob/master/.github/workflows/ci_visual_tests.yml) for graphic regressions.\n* Fairly sub-system agnostic. Bring your own ECS, physics engine etc.\n* [WIP] Assets system for easy loading (and freeing) of all kinds of assets: binary blobs, images,\nmusic, sounds etc.\n* [WIP] Export to different platforms via the `shy export` command.\n* [WIP] Intuitive Qt/Widgets/QML (scene graph) inspired `ui` module\n  supporting *custom* UI items.\n* [WIP] ... much more :)\n\n# Currently known downsides\n\nThe following points may turn you away from using `shy` at this point\nin time so use `shy` at your own risk and expense.\n\n* ~100% Deterministic behaviour is [WIP].\n* Multi-window rendering support has relatively low priority and may never be supported.\n* The `shy.ui` module's design goals can not currently be met 100% due to\n  very-hard-to-reproduce bugs in the V compiler - mileage may vary until these bugs are squashed.\n* Exporting of finished games, for real world distribution, can currently be complex.\n  It has high priority to get the exporters working as painless as possible but it takes time.\n* No visual editor(s), at the moment. Hopefully it'll come quick when the `ui` module matures.\n* Export currently requires to be done from the target platform(s).\n* Documentation is far from complete. Use the `examples` for guidance.\n* C code vs. V code ratio leans towards C - this will improve over time as more and more\n  functionality becomes available in V\n\n# Install\n\n## Dependencies\n\n`shy` currently depend on [`sdl`](https://github.com/vlang/sdl.git) and [`vab`](https://github.com/vlang/vab.git) official V modules.\n\n**sdl**\n\nDue to V's package management being in it's infancy it is recommended to install\nthe `sdl` module via `git`:\n\n```bash\ngit clone https://github.com/vlang/sdl.git ~/.vmodules/sdl\nv ~/.vmodules/sdl/setup.vsh # this will try and detect the system installed version of SDL2\n```\non Windows via `cmd.exe`:\n\n```cmd\ngit clone https://github.com/vlang/sdl.git %HOMEPATH%/.vmodules/sdl\ngit -C %HOMEPATH%/.vmodules/sdl checkout 2.26.0\n```\n\nThe `sdl` dependency is needed for the default backend. It will likely\nbe moved to be part of another backend or opt-in once `shy` matures\nbut for now you'll need the SDL2 library at build and runtime.\n\n**vab**\n\n```bash\nv install vab\n```\n\n`vab` is used by `shy export` and *does not* require you to have Java nor\nthe Android SDK/NDK installed. `shy export` need only `vab` to be installed as a module.\n\nHowever if you intend to export your shy creations to the Android platform the aforementioned\ndependencies are thus needed at *runtime* for `vab` to work.\n\n## Unix (Linux, macOS)\n```bash\ngit clone git@github.com:Larpon/shy.git ~/.vmodules/shy\nv ~/.vmodules/shy # Builds the `shy` CLI tool\n```\n\n## Windows\n```bash\ngit clone git@github.com:Larpon/shy.git %USERPROFILE%/.vmodules/shy\nv %USERPROFILE%\\.vmodules\\shy # Builds the `shy` CLI tool\n```\n\n## Symlink (optional)\nYou can symlink `shy` to your `$PATH` so it works as a global shell command.\n\n```bash\nsudo ln -s ~/.vmodules/shy/shy /usr/local/bin/shy\n```\n\n## Shell tab completion (optional)\nYou can install tab completions for your shell by [following the instructions\nhere](https://github.com/larpon/shy/blob/fb26741/cmd/complete.v#L11-L38).\n\n# Gamepad / Controller support\n\nTo enable game controller support shy needs to be built with\nSDL2 version \u003e= 2.26.0 in addition to the compile flag `-d shy_gamepad`.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FLarpon%2Fshy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FLarpon%2Fshy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FLarpon%2Fshy/lists"}