{"id":25869609,"url":"https://github.com/pasek108/goblinslayer","last_synced_at":"2025-07-15T07:32:48.038Z","repository":{"id":167661139,"uuid":"603443433","full_name":"Pasek108/GoblinSlayer","owner":"Pasek108","description":"Arcade game where player have to survive increasing waves of goblins in one attempt","archived":false,"fork":false,"pushed_at":"2025-02-20T17:29:56.000Z","size":19122,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-20T17:41:52.316Z","etag":null,"topics":["achievements","arcade-game","canvas-game","goblins"],"latest_commit_sha":null,"homepage":"https://pasek108.github.io/GoblinSlayer/","language":"JavaScript","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/Pasek108.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":"2023-02-18T14:30:46.000Z","updated_at":"2025-02-20T17:30:01.000Z","dependencies_parsed_at":null,"dependency_job_id":"d24b1fee-9c59-4a8a-96b4-2350fc0f917f","html_url":"https://github.com/Pasek108/GoblinSlayer","commit_stats":null,"previous_names":["pasek108/goblinslayer"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Pasek108%2FGoblinSlayer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Pasek108%2FGoblinSlayer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Pasek108%2FGoblinSlayer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Pasek108%2FGoblinSlayer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Pasek108","download_url":"https://codeload.github.com/Pasek108/GoblinSlayer/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241460814,"owners_count":19966636,"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":["achievements","arcade-game","canvas-game","goblins"],"created_at":"2025-03-02T05:18:59.188Z","updated_at":"2025-03-02T05:18:59.927Z","avatar_url":"https://github.com/Pasek108.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003eGoblinSlayer - Readme\u003c/h1\u003e\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003e\n    Arcade game where player have to survive increasing waves of goblins in one attempt\n  \u003c/strong\u003e\n\u003c/p\u003e\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"_for_readme/banner.png?\"\u003e\n\u003c/div\u003e\n\n\u003cbr\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003e❓Why does sound start playing after the first click and not when I open the page?❓\u003c/summary\u003e\n  This happens because autoplaying sounds are blocked by the browser until the user interacts with the document.\n\u003c/details\u003e\n\n\n# Table of Contents\n* [Overview :sparkles:](#overview-sparkles)\n  * [About](#about)\n  * [Features](#features)\n  * [Technologies](#technologies)\n  * [Setup](#setup)\n  * [Acknowledgements](#acknowledgements)\n* [Details :scroll:](#details-scroll)\n  * [User interface](#user-interface)\n  * [Project structure](#project-structure)\n  * [Code organization](#code-organization)\n\n\u003cbr\u003e\n\n# Overview :sparkles:\n\n## About\nArcade game where player have to survive increasing waves of goblins in one attempt. It is an improved version of my old project from technical school. The game features improved visuals and sound, as well as achievements and a credits section.\n\nCheck out the [live version](https://pasek108.github.io/GoblinSlayer/) of this project.\n\n\u003cbr\u003e\n\n![preview](/_for_readme/preview.png)\n\n## Technologies\nLanguages:\n- HTML\n- CSS\n- JS\n  \nLibraries:\n- [SCSS](https://sass-lang.com)\n- [FontAwesome](https://fontawesome.com) 6.2.1\n- [GoogleFonts](https://fonts.google.com)\n  \nPrograms:\n- [VSCode](https://code.visualstudio.com)\n- [Prepros](https://prepros.io)\n- [PowerToys](https://learn.microsoft.com/en-us/windows/powertoys/)\n- [ShareX](https://getsharex.com)\n- [GIMP](https://www.gimp.org)\n\n## Features\n- Nice and consistent UI  \n- Animated menu background  \n- Achievements with three levels of completion  \n- Well-designed credits view  \n- Increasingly larger and faster waves of goblins  \n- Tracking and saving survived waves, defeated goblins, and time spent in the game  \n- Game over screen and the ability to restart without reloading the page  \n- Mute/unmute sound option  \n\n\u003cbr\u003e\n\n\u003e [!NOTE]  \n\u003e Room for improvements:\n\u003e - Choosing the hero appearance for achievements\n\u003e - Fixing fps problem (game gets faster or slower depending on device framerate)\n\n## Setup\nWays to run this program: \n1. Use the [live demo](https://pasek108.github.io/GoblinSlayer/)\n2. Download this repo and run index.html file\n3. Download this repo and start live server ([VSCode LiveServer Extension](https://marketplace.visualstudio.com/items?itemName=ritwickdey.LiveServer), Prepros preview etc.) \n\nTo edit this program:\n- Download this repo\n- Install [Prepros](https://prepros.io)\n- Add this project in Prepros\n- Start coding\n\n## Acknowledgements\n### Images\n- [Menu background](https://i.imgur.com/LAFEmei.png)\n- [Achievement ribbon](https://svgsilh.com/image/1093181.html)\n- [Achievement star](https://svgsilh.com/image/775819.html)\n- [Game background](https://lil-cthulhu.itch.io/pixel-art-cave-background)\n- [Game background floor](https://lil-cthulhu.itch.io/pixel-art-tileset-cave)\n- [Hero sprite](https://www.spriters-resource.com/ds_dsi/rondoofswords/sheet/42664/)\n- [Goblin sprite](https://www.spriters-resource.com/psp/lunarsilverstarharmony/sheet/58114/)\n- [Favicon](https://www.iconarchive.com/show/fluentui-emoji-flat-icons-by-microsoft/Crossed-Swords-Flat-icon.html)\n\n### Music and sounds\n- [Menu music](https://opengameart.org/content/fantasy-music-the-wraiths-of-winter)\n- [Menu option select](https://opengameart.org/content/menu-selection-click)\n- [Game music 1](https://opengameart.org/content/massacre-soundtrack)\n- [Game music 2](https://opengameart.org/content/fight-theme-metal)\n- [Game music 3](https://filmmusic.io/song/4814-metalicious)\n- [Game over music](https://freesound.org/people/HerbertBoland/sounds/128554/)\n- [Goblin death](https://freesound.org/people/Rickplayer/sounds/398007/)\n\n\u003cbr\u003e\n\n\n# Details :scroll:\n\n## User interface\n### Main menu\n![main menu](/_for_readme/UI/menu.png)\nMain menu has:\n- Animated snow background\n- Mute/unmute sound button\n- Three options too choose:\n  - Start option will hide the menu and runs the game\n  - Achievements option will show the achievements view\n  - Credits option will show the credits view\n\n----------------------------------\n\n### Achievements\n![achievements](/_for_readme/UI/achievements.png)\nAchievements view shows achievements, each of which has:\n- Title ribbon\n- Three stars that indicate completion of a given level\n- Target text with current value of achievement and required value for next level (if it's not already max level)\n- Progress bar\n\nAchievements has 3 levels to complete and 4 possible stages:\n- Stage 0:\n  - Gray border\n  - Disabled all stars\n  - Progess bar empty or bronze color (going to bronze level)\n- Stage 1:\n  - Bronze border\n  - Bronze star lighted up\n  - Silver progess bar color (going to silver level)\n- Stage 2:\n  - Silver border\n  - Silver and bronze stars lighted up\n  - Gold progess bar color (going to gold level)\n- Stage 3:\n  - Gold border\n  - All stars lighted up\n  - Gold progess bar color (gold level is max and it is completed)\n\n----------------------------------\n\n### Credits\n![credits](/_for_readme/UI/credits.png)\nCredits page contains 2 sections with links for resources used in the project, button for contact form and link to my portfolio.\n\n\u003cbr\u003e\n\n![contact](/_for_readme/UI/contact.png)\nA contact form is provided as a Google Forms iframe because it’s the best free solution I could think of.\n\nUsers must provide:\n- Purpose of contact\n- Message\n- Captcha code\n\nUsers can optionally provide:\n- Rating of the project\n- E-mail - in case a response is needed\n- Name - to address them properly in case of a follow-up\n\n----------------------------------\n\n### Game\n![in game](/_for_readme/UI/game.png)\nAt the top of the game view are wave and killed goblins counters and at the bottom is an instruction on what keys are used to play the game.\n\nThe way the game works is simple:\n- Player is standing in the middle\n- Game generates random waves of goblins which runs towards the player\n- Player has to use keys A and D to face left or right direction\n- If player is facing goblin direction, he will kill the goblin, otherwise player will lose\n- When player clears a wave, new one is generated with more goblins that are faster\n\n----------------------------------\n\n### Game over\n![game over](/_for_readme/UI/game_over.png)\nGame over view displays survived waves, killed goblins and button that goes back to main menu\n\n\n## Project structure\n- :file_folder: GoblinSlayer (project folder)\n  - :page_facing_up: *github and prepros config*\n  - :page_facing_up: *readme file*\n  - :page_facing_up: *index.html file*\n  - :file_folder: _for_readme - :page_facing_up: *files for readme*\n  - :file_folder: Images - :page_facing_up: *images used in the project*\n  - :file_folder: Sound - :page_facing_up: *sounds and music used in project*\n  - :file_folder: Scripts - :page_facing_up: *scripts used in project*\n  - :file_folder: Styles\n    - :page_facing_up: *css files compiled from scss by prepros*\n    - :file_folder: scss - :page_facing_up: *sccs files*\n\n\n## Code organization\n\n![program diagram](/_for_readme/program-diagram.png)\n\n\u003e [!WARNING]  \n\u003e Classes must be loaded from bottom to the top to avoid situation when class does not exist in the time of its objects creation\n\nMenu is entry of the program.\n\nMenu creates and manages one instance of each of the classes:\n- SnowyBackground\n- Game\n- Achievements\n- Credits\n\nGame class creates and manages:\n- One instance of Hero class\n- Many instances of Goblin class\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpasek108%2Fgoblinslayer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpasek108%2Fgoblinslayer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpasek108%2Fgoblinslayer/lists"}