{"id":13441483,"url":"https://github.com/ssloy/tinyraycaster","last_synced_at":"2025-05-16T02:03:28.848Z","repository":{"id":40643763,"uuid":"166479624","full_name":"ssloy/tinyraycaster","owner":"ssloy","description":"486 lines of C++: old-school FPS in a weekend","archived":false,"fork":false,"pushed_at":"2019-02-20T13:55:42.000Z","size":27992,"stargazers_count":1937,"open_issues_count":3,"forks_count":141,"subscribers_count":40,"default_branch":"master","last_synced_at":"2025-04-08T12:08:14.554Z","etag":null,"topics":["3d","3d-graphics","c-plus-plus","computer-graphics","cpp","engine","fps","fun","graphics","images","learning","opengl","picture","pixels","rasterizer","raycasting","rendering","rendering-engine","software-rendering","tutorial"],"latest_commit_sha":null,"homepage":"https://github.com/ssloy/tinyraycaster/wiki","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"wtfpl","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ssloy.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-01-18T22:19:28.000Z","updated_at":"2025-04-07T20:29:46.000Z","dependencies_parsed_at":"2022-08-02T20:31:05.979Z","dependency_job_id":null,"html_url":"https://github.com/ssloy/tinyraycaster","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ssloy%2Ftinyraycaster","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ssloy%2Ftinyraycaster/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ssloy%2Ftinyraycaster/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ssloy%2Ftinyraycaster/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ssloy","download_url":"https://codeload.github.com/ssloy/tinyraycaster/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254453646,"owners_count":22073616,"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":["3d","3d-graphics","c-plus-plus","computer-graphics","cpp","engine","fps","fun","graphics","images","learning","opengl","picture","pixels","rasterizer","raycasting","rendering","rendering-engine","software-rendering","tutorial"],"created_at":"2024-07-31T03:01:34.548Z","updated_at":"2025-05-16T02:03:28.801Z","avatar_url":"https://github.com/ssloy.png","language":"C++","funding_links":[],"categories":["C++","CG Tutorials","\u003e 1k ★"],"sub_categories":["Data Management"],"readme":"# Project based learning: build your own 3D shooter in a weekend\n\n**Check [the wiki](https://github.com/ssloy/tinyraycaster/wiki) for the detailed description of what is under the hood. Screw the source code, read the wiki.**\n\nIf you are interested by this project, you might want to [check my other tiny* repositories](https://github.com/ssloy), they were fun for me to make, I hope it will be fun for you to read.\n\n***\n\nThis video shows what lies in this repository:\n[![TinyRayCaster](https://raw.githubusercontent.com/ssloy/tinyraycaster/master/doc/017.png)](https://youtu.be/zPIVTqVilCM)\n\nAt the time I write this text, the repository contains mere 486 lines of code:\n\n```sh\nhaqreu@daffodil:~/tinyraycaster$ cat *.cpp *.h | wc -l\n486\n```\n\n# Few things tinyraycaster is NOT:\n* it is NOT a game, it is a mere stub;\n* it is NOT even a 3d engine;\n* it is NOT a place for design patterns lectures;\n* it is NOT a competitor for id Software products. People, please, I am not John Carmack and neither my students are. Focus on the word \"initiation\".\n\n# Few things tinyraycaster IS:\n* it IS fun;\n* it IS a blank you can start from;\n* it IS created in one day, check the commit history. I broke my leg, so I wrote some code instead of walking!\n* it IS a project you can participate to, pull requests are welcome, and anyone can edit the wiki;\n* it IS full of bugs. Bugreports are welcome!\n\nAs an example, [here are the sources](https://github.com/stephane-hulot/thanksgiving-party) for the game made by my students Salih Nascimento and Stephane Hulot, also check the following youtube video for a preview:\n\n[![Thanksgiving party](https://img.youtube.com/vi/Ekomnk1eNFU/0.jpg)](https://www.youtube.com/watch?v=Ekomnk1eNFU)\n\n## Compilation\n```sh\nsudo apt install -y libsdl2-dev git\ngit clone https://github.com/ssloy/tinyraycaster.git\ncd tinyraycaster\nmkdir build\ncd build\ncmake ..\nmake\n```\n\nYou can open the project in Gitpod, a free online dev environment for GitHub:\n\n[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/ssloy/tinyraycaster)\n\n\nOn open, the editor will compile \u0026 run the program as well as open the resulting image in the editor's preview.\nJust change the code in the editor and rerun the script (use the terminal's history) to see updated images.\nNote how awesome Gitpod is, it allows to run SDL2 games directly in the browser!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fssloy%2Ftinyraycaster","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fssloy%2Ftinyraycaster","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fssloy%2Ftinyraycaster/lists"}