{"id":13568080,"url":"https://github.com/raysan5/challenges","last_synced_at":"2025-03-17T03:31:34.022Z","repository":{"id":46031470,"uuid":"82947417","full_name":"raysan5/challenges","owner":"raysan5","description":"graphics programming challenges","archived":false,"fork":false,"pushed_at":"2023-02-15T16:37:00.000Z","size":38237,"stargazers_count":173,"open_issues_count":2,"forks_count":22,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-03-16T08:01:47.307Z","etag":null,"topics":["blocks","dungeons","maze","opengl","raylib","videogames"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/raysan5.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","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},"funding":{"github":"raysan5","patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":null}},"created_at":"2017-02-23T16:32:32.000Z","updated_at":"2025-03-15T15:24:36.000Z","dependencies_parsed_at":"2024-10-27T12:12:26.222Z","dependency_job_id":null,"html_url":"https://github.com/raysan5/challenges","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/raysan5%2Fchallenges","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raysan5%2Fchallenges/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raysan5%2Fchallenges/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raysan5%2Fchallenges/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/raysan5","download_url":"https://codeload.github.com/raysan5/challenges/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243969095,"owners_count":20376513,"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":["blocks","dungeons","maze","opengl","raylib","videogames"],"created_at":"2024-08-01T14:00:19.735Z","updated_at":"2025-03-17T03:31:31.937Z","avatar_url":"https://github.com/raysan5.png","language":"C","readme":"# Graphics Programming\nThis repo contains some challenges about Graphics Programming. Challenges are organized in folders and include the solutions. They are intended to be used as tutorials to learn graphics programming for videogames development.\n\nSome of those challenges are based on [raylib](http://www.raylib.com/), a simple and easy-to-use library to enjoy videogames programming.\n\n## [Challenge 01. Blocks game](01_challenge_blocks#challenge-01-blocks-game)\n\nA blocks game where player has to break a wall of blocks controlling a ball with a paddle.\n\nThis game is developed using [raylib](http://www.raylib.com/) library.\n\n**Learning outcomes:**\n - raylib functionality and possibilities\n - Videogame life cycle (Init -\u003e Update -\u003e Draw -\u003e DeInit)\n - Basic screens management with screens transition\n - Basic shapes drawing (circle, rectangle)\n - Inputs management (keyboard, mouse)\n - Collision detection and resolution\n - Textures loading and drawing\n - Fonts loading and text drawing\n - Sounds and music loading and playing\n\n![blocks game](01_challenge_blocks/blocks_game.gif \"Blocks Game\")\n\n## [Challenge 02. Dungeon 2D game](02_challenge_dungeon2d#challenge-02-2d-dungeon-game)\n\nA tile-based dungeon 2D game where player moves around a 2D dungeon finding keys and defeating monsters.\n\nThis game is developed using raylib [rlgl](https://github.com/raysan5/raylib/blob/develop/src/rlgl.c) low-level library module.\n\n**Learning outcomes:**\n - rlgl functionality and possibilities\n - Window creation, configuration and management (GLFW3)\n - Context creation (OpenGL 3.3) and extensions loading (GLAD)\n - Inputs management (keyboard, mouse) (GLFW3)\n - Basic shaped drawing defining vertex data (immediate-mode)\n - Image loading (RAM), texture creation (VRAM) and drawing\n - Tilemap data loading from text file\n - Tilemap drawing and collision detection\n\n![dungeon game](02_challenge_dungeon2d/dungeon_game.gif \"Dungeon Game\")\n\n## [Challenge 03. Maze 3D game](03_challenge_maze3d#challenge-03-3d-maze-game)\n\nA cubes-based maze 3D game where player has to escape from a 3D labyrinth.\n\nThis game is developed using [OpenGL](https://en.wikipedia.org/wiki/OpenGL) graphics library.\n\n**Learning outcomes:**\n - OpenGL 3.3 graphic pipeline functionality\n - Window creation, configuration and management (GLFW3)\n - Context creation (OpenGL 3.3) and extensions loading (GLAD)\n - Inputs management (keyboard, mouse, gamepad) (GLFW3)\n - Image loading (RAM), texture creation (VRAM) and drawing\n - Models loading, transform and drawing (3d meshes)\n - Level map data loading and vertex buffers generation (VBO)\n - Camera system creation and management (1st person)\n - Collision detection and resolution (AABB collisions)\n\n![maze game](03_challenge_maze3d/maze_game.gif \"Maze Game\") \n\n# License\n\nAll challenges lectures are licensed under a \u003ca rel=\"license\" href=\"http://creativecommons.org/licenses/by-nc/4.0/\"\u003eCreative Commons Attribution-NonCommercial 4.0 International License\u003c/a\u003e.\n\nAll challenges code is licensed under an unmodified zlib/libpng license. \n\nCheck [LICENSE](LICENSE) for further details.\n\n*Copyright (c) 2017 Ramon Santamaria ([@raysan5](https://twitter.com/raysan5))*\n","funding_links":["https://github.com/sponsors/raysan5"],"categories":["C","List"],"sub_categories":["Tutorials"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fraysan5%2Fchallenges","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fraysan5%2Fchallenges","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fraysan5%2Fchallenges/lists"}