{"id":17359057,"url":"https://github.com/maximepremont/myrpg_epitech","last_synced_at":"2025-03-27T16:17:05.903Z","repository":{"id":122042825,"uuid":"377419919","full_name":"MaximePremont/MyRpg_Epitech","owner":"MaximePremont","description":"Epitech project : complete role play game developed using the CSFML.","archived":false,"fork":false,"pushed_at":"2022-11-06T09:51:44.000Z","size":23397,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-02-01T19:44:59.829Z","etag":null,"topics":["c","epitech","game-engine","myrpg","rpg"],"latest_commit_sha":null,"homepage":"https://github.com/MaximePremont/MyRpg_Epitech","language":"C","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/MaximePremont.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":"2021-06-16T08:09:12.000Z","updated_at":"2022-11-05T15:43:25.000Z","dependencies_parsed_at":null,"dependency_job_id":"f07fa5c3-0a2d-45c4-bd1e-01851271189e","html_url":"https://github.com/MaximePremont/MyRpg_Epitech","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MaximePremont%2FMyRpg_Epitech","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MaximePremont%2FMyRpg_Epitech/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MaximePremont%2FMyRpg_Epitech/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MaximePremont%2FMyRpg_Epitech/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MaximePremont","download_url":"https://codeload.github.com/MaximePremont/MyRpg_Epitech/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245878924,"owners_count":20687297,"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":["c","epitech","game-engine","myrpg","rpg"],"created_at":"2024-10-15T19:07:55.391Z","updated_at":"2025-03-27T16:17:05.882Z","avatar_url":"https://github.com/MaximePremont.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ⚡️ MyRpg\n**Epitech Project, 2021 | 1st Year (PGE)**\n## 🔍 Description\nThis project is one of the freest project of your first year, the creation of your own RPG. The subject is available [here](./B-MUL-200_my_rpg.pdf).\n\nYour game must follow the following rules:\n- The player needs to have characteristics which you can find in the status menu.\n- The player can fight enemies, statistics will impact the fights results.\n- There must be NPC in your game.\n- You need to implement at least one quest.\n- The player must have an inventory which can contain a limited set of items.\n- The player can earn experience by winning fights and accomplishing specific actions.\n- With enough experience, the player can level up, upgrading its statistics.\n\nTo realize our project, we were only allowed to use some functions.\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"./.github/images/function.png\" /\u003e\n\u003c/p\u003e\nWe started with the creation of a game engine, that is to say that we created functions allowing to add buttons, particle generators, animated texts... as simply as possible to save time later. You just have to call the function and the new object will be stored after the linked list of its type.\n\u003cp align=\"center\"\u003e\n    \u003cbr/\u003e\n    \u003cimg src=\"./.github/images/linked_list.png\" /\u003e\n\u003c/p\u003e\n\nAnother important part, is the creation of a JSON parser and writer.\\\nWe were obviously not allowed to use what already exists, so we remade a [JSON parser](https://github.com/Davphla/JSON-Parser) which you will see will be useful later on.\n\n[![ReadMe Card](https://github-readme-stats.vercel.app/api/pin/?username=Davphla\u0026repo=JSON-Parser\u0026theme=gruvbox\u0026hide_border=false)](https://github.com/Davphla/JSON-Parser)\n\nThen, after preparing our game engine, we made a scene system that fades at each scene change, then we focused on the menu, a smooth interface, intuitive, buttons that have pixel accurate hitboxes.\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"./.github/images/menu.png\" /\u003e\n\u003c/p\u003e\nIt was also important to create a menu setting. We decided to program sliders for the sound, buttons for frames per second, and for full screen settings.\n\u003cp align=\"center\"\u003e\n    \u003cbr/\u003e\n    \u003cimg src=\"./.github/images/settings.png\" /\u003e\n\u003c/p\u003e\nAfter that we have the different saves, the game can manage up to 3 different saves, if you create a new game you will have the choice between 4 different skins, which does not change anything to the gameplay.\n\nThe saves are saved in a JSON format.\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"./.github/images/save.png\" /\u003e\n\u003c/p\u003e\nSpeaking of the json format, here is an example of a map file.\n\u003cp align=\"center\"\u003e\n    \u003cbr/\u003e\n    \u003cimg src=\"./.github/images/json_file.png\" /\u003e\n\u003c/p\u003e\n\nAnd speaking of maps, our maps are on five different layers to recreate a 3D effect, including a collision layer to manage the hitbox. The maps were entirely created by ourselves using [Tiled](https://www.mapeditor.org/) software, and then exported to JSON format.\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./.github/images/layers.png\" /\u003e\n\u003c/p\u003e\nWe also have event management integrated directly into the map files.\n\u003cp align=\"center\"\u003e\n    \u003cbr/\u003e\n    \u003cimg src=\"./.github/images/event.png\" /\u003e\n\u003c/p\u003e\nIt is also possible to talk to NPC's, which move according to patterns. They stop when they detect you near them, you can talk to them, then animated texts are displayed, the facial expressions change according to the dialogues.\n\u003cp align=\"center\"\u003e\n    \u003cbr/\u003e\n    \u003cimg src=\"./.github/images/npc.png\" /\u003e\n\u003c/p\u003e\nMoreover, talking to the NPC allows you to unlock quests. Dialogues, events, accessible zones evolve according to the quests and the player's progress.\n\u003cp align=\"center\"\u003e\n    \u003cbr/\u003e\n    \u003cimg src=\"./.github/images/Quest.png\" /\u003e\n\u003c/p\u003e\nIn some areas it is possible to be attacked by monsters, the fight takes place in two phases. A first phase of attack where you have to press the space key at the right moment, the bar moves thanks to a sinusoidal function.\n\u003cp align=\"center\"\u003e\n    \u003cbr/\u003e\n    \u003cimg src=\"./.github/images/attack.png\" /\u003e\n\u003c/p\u003e\nThen the defense part is a \"Hell bullet\", you are the blue ball and you have to dodge the red balls that are generated by 4 particle generators on the edges that are moving to avoid blind spots. Moreover the statistics of the monsters (level, attack) define the number, the speed, and the damages of the red balls.\n\u003cp align=\"center\"\u003e\n    \u003cbr/\u003e\n    \u003cimg src=\"./.github/images/defense.png\" /\u003e\n\u003c/p\u003e\nFighting monsters gives you experience and items, some events also give you items. All of this is directly manageable from an inventory that handles drag \u0026 drop or double click to equip/use an item. It is also possible to throw an item out of the inventory by drag \u0026 drop to delete it permanently.\n\u003cp align=\"center\"\u003e\n    \u003cbr/\u003e\n    \u003cimg src=\"./.github/images/inventory.png\" /\u003e\n\u003c/p\u003e\nBy the way, in terms of experience, each time you pass a level you unlock a star that allows you to improve your skill tree. Each upgrade unlocks another one, several paths are possible, will you choose attack, defense or speed in priority ?\n\u003cp align=\"center\"\u003e\n    \u003cbr/\u003e\n    \u003cimg src=\"./.github/images/skilltree.png\" /\u003e\n\u003c/p\u003e\nTo finish this description, here is the in-game menu, with the possibility to save, to go back to the menu, to quit the game, to open a minimalist in-game settings menu, or just to resume the game.\n\u003cp align=\"center\"\u003e\n    \u003cbr/\u003e\n    \u003cimg src=\"./.github/images/in_game_menu.png\" /\u003e\n\u003c/p\u003e\n\n#\n## ⚙️ Installation\n⚠️ This project requires CSFML 2.5.0 to build.\n```\ngit clone https://github.com/MaximePremont/MyRpg_Epitech\ncd MyRPG_Epitech\nmake\n```\n#\n## 📝 Start project\n```\n./my_rpg\n```\n#\n## ❤️ Contributors\n\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp; 📌 [PREMONT Maxime](https://github.com/MaximePremont)  \n\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp; 📌 [VALLENET Mikael](https://github.com/Mikatech)  \n\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp; 📌 [SABRE Nolann](https://github.com/Nolann71)  \n\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp; 📌 [GOZLAN David](https://github.com/Davphla)\n\nSpecial thanks to [VALLENET Mikael](https://github.com/Mikatech) who allowed the use of [his readme](https://github.com/Mikatech/my_rpg/blob/main/README.md) to write this one.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaximepremont%2Fmyrpg_epitech","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmaximepremont%2Fmyrpg_epitech","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaximepremont%2Fmyrpg_epitech/lists"}