{"id":17047459,"url":"https://github.com/djmgit/mazewalker","last_synced_at":"2026-04-29T11:04:25.606Z","repository":{"id":187829895,"uuid":"677659829","full_name":"djmgit/mazewalker","owner":"djmgit","description":"Creating a 3D world using ray casting on a randomly generated maze.","archived":false,"fork":false,"pushed_at":"2023-09-07T09:24:05.000Z","size":32420,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-23T03:44:13.284Z","etag":null,"topics":["3d","dda","game","love2d","lua","maze","maze-generator","pseudo-3d","raycasting","wolfenstein"],"latest_commit_sha":null,"homepage":"","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/djmgit.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":"2023-08-12T07:47:43.000Z","updated_at":"2025-01-23T18:33:14.000Z","dependencies_parsed_at":null,"dependency_job_id":"48735ff8-58f1-4724-8a25-414e49b457f8","html_url":"https://github.com/djmgit/mazewalker","commit_stats":null,"previous_names":["djmgit/mazewalker"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/djmgit/mazewalker","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/djmgit%2Fmazewalker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/djmgit%2Fmazewalker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/djmgit%2Fmazewalker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/djmgit%2Fmazewalker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/djmgit","download_url":"https://codeload.github.com/djmgit/mazewalker/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/djmgit%2Fmazewalker/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32422576,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-29T06:29:02.080Z","status":"ssl_error","status_checked_at":"2026-04-29T06:29:00.631Z","response_time":110,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["3d","dda","game","love2d","lua","maze","maze-generator","pseudo-3d","raycasting","wolfenstein"],"created_at":"2024-10-14T09:49:32.515Z","updated_at":"2026-04-29T11:04:25.588Z","avatar_url":"https://github.com/djmgit.png","language":"Lua","funding_links":[],"categories":[],"sub_categories":[],"readme":"## MazeWalker: An attempt at Raycasting\n\nMazewalker is a simple, not at all polished game or rather an experiment which uses raycating \nto create a pseudo 3d world/maze.\n\nThe maze is first generated in 2D form using Prim's randomised algorithm. Which means everytime\nwe run the game we start with a new maze. Also everytime we reach a door the player is put\ninto a newly generated maze. So in a way you can play this game or run this experiment infinitely.\n\nOnce the maze is generated, we apply raycasting to convert the 2D maze into a pseudo 3D world.\n\nA glimpse of the generated world:\n\n\n\nhttps://github.com/djmgit/mazewalker/assets/16368427/edb81e02-6f90-4697-a4ee-769fd270610b\n\n\n\n## What is raycasting\n\nRaycasting is one of the first 3D techniques that pushed the boundaries of 3D games. One of the very\nfirst games that employed this technique is Wolfenstein 3D by the famous id Software. It does not create a pure 3D world but rather a pseuo 3D world. It draws 2D textures on the screen in a very clever manner to create the illusion of a 3D world.\n\nI will not dig deep into the technique here because there are numerous articles/blogs and youtube\nvideos on the internet which explains this technique in great detail. I have tried to give an\noverview of the technique \u003ca href=\"https://github.com/djmgit/mazewalker/blob/master/mod.lua\"\u003ehere\u003c/a\u003e\n\n## How to run\n\nMake sure you have installed lua (5.4.3 preferred) and \u003ca href=\"https://love2d.org/#download\"\u003elove2d\u003c/a\u003e on your system.\n\nAfter that, open this repository in your terminal and run\n```\n/path/to/love ./\n```\nIf you have placed love2d in your system path then you dont need\nto mention the full path.\n\n## Controls\n\n```\nw                       -       move forward\ns                       -       move backward\na                       -       move left\nd                       -       move right\nleft mouse button       -       Fire\nmove mouse              -       Change player/camera direction\n```\n## What all I have used\n\nI have used lua to create this game and the awesome lua based love2d library to render graphics on\nscreen. \u003ca href=\"https://love2d.org/\"\u003elove2d\u003c/a\u003e is a truly amazing framework which is very easy\nto use and learn.\n\nAs I have already mentioned, to generate the mazes I have used Prim's randomized algorithm. And to\nmake sure wall's get different textures, I have used flood fill algorithm to assign different textures\nto different clusters of walls.\n\n## NOTE\n\nThe idea was not really to create a game but to explore raycasting hands on. Also the code is by no\nmeans perfect, on the contrary I would say its kind of messy and has some bugs. So if anyone is\ninterested to take a dig at the code and want to play around with lua and love, PRs are always\nwelcome.\n\n## References:\n\n### raycasting tutorials/articles\n\n- https://lodev.org/cgtutor/raycasting.html\n- https://github.com/vinibiavatti1/RayCastingTutorial\n- https://www.youtube.com/watch?v=ECqUrT7IdqQ\u0026t=1233s\u0026pp=ygUUcmF5Y2FzdGluZyB0dXRvcmlhbCA%3D\n\n### sprites and textures used:\n\n- https://spritedatabase.net/game/760\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdjmgit%2Fmazewalker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdjmgit%2Fmazewalker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdjmgit%2Fmazewalker/lists"}