{"id":17968130,"url":"https://github.com/speykious/snaek","last_synced_at":"2025-03-25T08:31:48.987Z","repository":{"id":231626357,"uuid":"782246145","full_name":"Speykious/snaek","owner":"Speykious","description":"a snake game in Rust almost from scratch","archived":false,"fork":false,"pushed_at":"2024-07-24T21:04:49.000Z","size":381,"stargazers_count":17,"open_issues_count":0,"forks_count":2,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-19T19:02:00.295Z","etag":null,"topics":["from-scratch","gui","snake","snake-game"],"latest_commit_sha":null,"homepage":"","language":"Rust","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/Speykious.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":"2024-04-04T23:16:08.000Z","updated_at":"2024-09-17T13:35:43.000Z","dependencies_parsed_at":"2024-05-21T20:36:13.830Z","dependency_job_id":null,"html_url":"https://github.com/Speykious/snaek","commit_stats":null,"previous_names":["speykious/snaek"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Speykious%2Fsnaek","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Speykious%2Fsnaek/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Speykious%2Fsnaek/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Speykious%2Fsnaek/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Speykious","download_url":"https://codeload.github.com/Speykious/snaek/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245426414,"owners_count":20613351,"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":["from-scratch","gui","snake","snake-game"],"created_at":"2024-10-29T14:20:16.450Z","updated_at":"2025-03-25T08:31:48.973Z","avatar_url":"https://github.com/Speykious.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003ch1 align=\"center\"\u003eSnaek\u003c/h1\u003e\n  \u003cp align=\"center\"\u003e\n    \u003cimg height=\"400\" src=\"https://fs.speykious.dev/snaek/snaek-preview.png\" alt=\"Snake game preview\"\u003e\n  \u003c/p\u003e\n  \u003cdiv align=\"center\"\u003eMy overengineered snake game!\u003c/div\u003e\n\u003c/p\u003e\n\n\u0026nbsp;\n\n\u003e Art mostly by @jumbledFox.\n\u003e Check his [minesweeper](https://github.com/jumbledFox/minesweeper) made in the same style!\n\n## Why did I make this?\n\nIt was actually just an excuse for me to make my own UI framework from scratch.\n\nI had recently been reading the first free articles of [Ryan Fleury's UI series](https://www.rfleury.com/p/ui-series-table-of-contents) and found it quite fascinating. Before reading this I thought immediate-mode libraries were incapable of handling complex layouts among other things, but it's simply not the case. You can actually perfectly integrate declarative layouts, animations, and persistent widget state with an immediate-mode API and it's most definitely not as battery-draining as people make it to be. (Well, ignoring this project, since I didn't make any rendering optimizations at all...)\n\nSo now I really want to use these techniques in any potential future GUI project I might have. That being said, doing stuff with pixels directly has somewhat simplified the abstractions I needed to create (compared to a graphics API like OpenGL or Vulkan), not to mention that I didn't implement anything like a scroll view or a drop down, so it'll probably take way more time to make something that flexible.\n\n## Highlights\n\nWhile coding the renderer for this game, I created the prettiest bug I've ever seen:\n\n\u003cp align=\"center\"\u003e\n  \u003cimg height=\"400\" src=\"https://fs.speykious.dev/snaek/prettiest-bug-i-ever-made.png\" alt=\"Prettiest bug I ever made\"\u003e\n\u003c/p\u003e\n\nYou can run the code that produced this bug by checking out [this commit](https://github.com/Speykious/snaek/commit/9e1bbe9d9b0187037d5ec48ca6dd1bc28b1f4f97) if you're curious.\n\n## License\n\nThis project is licensed under [MIT](/LICENSE).","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspeykious%2Fsnaek","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fspeykious%2Fsnaek","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspeykious%2Fsnaek/lists"}