{"id":18345435,"url":"https://github.com/dnlzrgz/pytracer","last_synced_at":"2025-04-09T22:28:37.448Z","repository":{"id":224261150,"uuid":"762845521","full_name":"dnlzrgz/pytracer","owner":"dnlzrgz","description":"A dead simple raycasting demo implemented in Python using PyGame-CE.","archived":false,"fork":false,"pushed_at":"2024-03-02T15:53:55.000Z","size":29,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-15T14:24:24.361Z","etag":null,"topics":["demonstration","pygame","pygame-ce","python","python3","raytracer","raytracing"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dnlzrgz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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-02-24T21:08:34.000Z","updated_at":"2024-03-02T16:03:29.000Z","dependencies_parsed_at":"2024-12-23T18:32:50.051Z","dependency_job_id":null,"html_url":"https://github.com/dnlzrgz/pytracer","commit_stats":null,"previous_names":["dnlzrgz/pytracer"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dnlzrgz%2Fpytracer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dnlzrgz%2Fpytracer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dnlzrgz%2Fpytracer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dnlzrgz%2Fpytracer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dnlzrgz","download_url":"https://codeload.github.com/dnlzrgz/pytracer/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248122499,"owners_count":21051292,"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":["demonstration","pygame","pygame-ce","python","python3","raytracer","raytracing"],"created_at":"2024-11-05T21:08:13.766Z","updated_at":"2025-04-09T22:28:37.430Z","avatar_url":"https://github.com/dnlzrgz.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PyTracer - A Dead simple Raycasting Demo\nThis repository contains a simple demonstration of raycasting implemented in Python using the [PyGame CE](https://pyga.me/docs/index.html) library. Raycasting is a technique used in computer graphics to render a 3D scene in real-time by simulating the projection of rays from a virtual camera (player's viewpoint) onto a 2D plane (the screen).\n\n![assets/screenshot.png](assets/screenshot.png)\n\n## Setup\nBefore running the demo, ensure you have the correct dependencies installed in a virtual environment:\n\n```bash\npip install -r requirements.txt\n```\n\n# Running\nTo run the demo you just need to execute:\n\n```bash\npython main.py\n```\n\nOnce the demo is running, you can control the player's movement and viewpoint using the WASD for tank-like control and the left and right arrows to rotate.\n\n## Demo Structure\n\n- `main.py`: Main script to run the demo. Contains the `Game` class.\n- `settings.py`: Configuration file containing required constants.\n- `map.py`: Defines the map layout and the `Map` class.\n- `player.py`: Defines the player class and its movement.\n- `raycasting.py`: Module containing the raycasting implementation.\n\n## Acknowledgments\n\nThis demo is inspired not just by the classic FPS game of the 90s but also by the following videos:\n- [Building a Raycasting Engine in Python](https://www.youtube.com/watch?v=O_J8jRq6lBw)\n- [Creating a DOOM (Wolfenstein) - style 3D Game in Python](https://www.youtube.com/watch?v=ECqUrT7IdqQ)\n- [Make Your Own Raycaster Part 1](https://www.youtube.com/watch?v=gYRrGTC7GtA)\n- [Make Your Own Raycaster Part 2](https://www.youtube.com/watch?v=PC1RaETIx3Y)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdnlzrgz%2Fpytracer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdnlzrgz%2Fpytracer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdnlzrgz%2Fpytracer/lists"}