{"id":17011333,"url":"https://github.com/noooway/bwimage_to_maze","last_synced_at":"2026-05-05T04:01:49.936Z","repository":{"id":192252432,"uuid":"131491156","full_name":"noooway/bwimage_to_maze","owner":"noooway","description":"Love2d game prototype that allows to use black-and-white image as a maze","archived":false,"fork":false,"pushed_at":"2018-04-29T12:05:30.000Z","size":54,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-22T13:23:40.874Z","etag":null,"topics":["game-development","love2d","maze","prototype"],"latest_commit_sha":null,"homepage":null,"language":"Lua","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/noooway.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}},"created_at":"2018-04-29T12:05:01.000Z","updated_at":"2021-10-15T09:45:58.000Z","dependencies_parsed_at":"2023-09-03T18:59:46.070Z","dependency_job_id":null,"html_url":"https://github.com/noooway/bwimage_to_maze","commit_stats":null,"previous_names":["noooway/bwimage_to_maze"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/noooway/bwimage_to_maze","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/noooway%2Fbwimage_to_maze","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/noooway%2Fbwimage_to_maze/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/noooway%2Fbwimage_to_maze/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/noooway%2Fbwimage_to_maze/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/noooway","download_url":"https://codeload.github.com/noooway/bwimage_to_maze/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/noooway%2Fbwimage_to_maze/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32634732,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-04T10:08:07.713Z","status":"online","status_checked_at":"2026-05-05T02:00:06.033Z","response_time":54,"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":["game-development","love2d","maze","prototype"],"created_at":"2024-10-14T06:06:47.718Z","updated_at":"2026-05-05T04:01:49.882Z","avatar_url":"https://github.com/noooway.png","language":"Lua","funding_links":[],"categories":[],"sub_categories":[],"readme":"### Overview\n\nThis prototype was inspired by [Matthew's Mazes](https://www.matthewsmazes.com/) art.\n\n\u003cp align=\"center\"\u003e\n\u003ca href=\"https://www.redbubble.com/people/matthewsmazes/works/26386240-the-lane-cafe-maze-galway-ireland?c=698690-galway-mazes\"\u003e\u003cimg src=\"https://ih0.redbubble.net/image.369354728.6240/flat,1000x1000,075,f.jpg\" width=\"300\"/\u003e\u003c/a\u003e\n\u003c/p\u003e\n\nMuch to my surprise, there haven't been any interactive versions of these mazes - nor mobile, nor web - so I've decided to prototype one.\n\n[screenshots]\n\nThe problem arises immediately: how to use the existing drawings of mazes to specify walls on a level?\nOriginally I thought that it would be necessary to find and extract different line segments from the image and then implement collision detection. \nIt might have been doable for a vector image, but for a raster formats some kind of line extraction algorithm would be necessary (such as [Line Segment Detector](http://www.ipol.im/pub/art/2012/gjmr-lsd/), e.g. http://docs.opencv.org/3.0-beta/modules/line_descriptor/doc/LSDDetector.html or https://github.com/primetang/pylsd).\n\nThat would have been too much work for a prototype, so a different approach has been taken.\nThe [Matthew's Mazes](https://www.matthewsmazes.com/) images are black-and-white,\nso the idea was to extract all the black pixels from the image\nand treat them as obstacles for the player. \n\nRegarding the collision detection, an approach similar to CCD has been adopted.\nEach update cycle, new possible player's position is calculated. \nIf the possible player position doesn't overlap with black pixels,\nthe player is moved in that position at the end of the cycle.\nIf there are overlaps - the player doesn't move in that position. \nSuch simple approach works surprisingly well. At least, it is sufficient for a prototype. \n\n### Installation\n\nObtain [LÖVE](https://love2d.org/) interpreter, clone the repository, run the program:\n```bash\nsudo apt-get install love2d\ngit clone https://github.com/noooway/bwimage_to_maze\nlove bwimage_to_maze\n```\n\nI haven't asked for permission to distribute any actual\n[Matthew's Mazes](https://www.matthewsmazes.com/)\nwith this prototype, but it is possible to use them.\nYou have to download the maze you like, save it into the program folder,\nand add it's filename into\n```lua\nlevels.sequence = { \"test_maze.png\", \"test_maze_circular.png\" }\n```\nline in `main.lua`.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnoooway%2Fbwimage_to_maze","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnoooway%2Fbwimage_to_maze","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnoooway%2Fbwimage_to_maze/lists"}