{"id":15897048,"url":"https://github.com/etherealxx/shuttle-madness","last_synced_at":"2026-05-07T09:32:54.590Z","repository":{"id":205407286,"uuid":"713814758","full_name":"etherealxx/shuttle-madness","owner":"etherealxx","description":"OpenGL C++ game made with glut.h, stb_image.h and miniaudio.h","archived":false,"fork":false,"pushed_at":"2023-12-06T23:54:05.000Z","size":8419,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-02T19:11:18.098Z","etag":null,"topics":["arcade-game","college-project","cpp","freeglut","game","gamedev","glut","opengl","opengl-game","university-project"],"latest_commit_sha":null,"homepage":"","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/etherealxx.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}},"created_at":"2023-11-03T09:42:15.000Z","updated_at":"2023-12-06T23:57:40.000Z","dependencies_parsed_at":"2023-12-07T02:03:24.309Z","dependency_job_id":null,"html_url":"https://github.com/etherealxx/shuttle-madness","commit_stats":null,"previous_names":["etherealxx/shuttle-madness"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/etherealxx/shuttle-madness","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/etherealxx%2Fshuttle-madness","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/etherealxx%2Fshuttle-madness/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/etherealxx%2Fshuttle-madness/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/etherealxx%2Fshuttle-madness/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/etherealxx","download_url":"https://codeload.github.com/etherealxx/shuttle-madness/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/etherealxx%2Fshuttle-madness/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32731374,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-07T02:14:30.463Z","status":"ssl_error","status_checked_at":"2026-05-07T02:14:29.405Z","response_time":62,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["arcade-game","college-project","cpp","freeglut","game","gamedev","glut","opengl","opengl-game","university-project"],"created_at":"2024-10-06T09:40:30.754Z","updated_at":"2026-05-07T09:32:54.569Z","avatar_url":"https://github.com/etherealxx.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Shuttle Madness\n OpenGL C++ game made with glut.h, [stb_image.h](https://github.com/nothings/stb) and [miniaudio.h](https://github.com/mackron/miniaudio). Third semester final project. For Windows only. The point of this project is to use only single file header libraries (other than GLUT and standard library) to make a presentable arcade game.\n\n\u003c!--- ![image](https://github.com/etherealxx/shuttle-madness/assets/64251396/0bc9834d-fad1-4e6c-aa57-82a3e6d8e951) --\u003e\n\u003c!-- \u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/etherealxx/shuttle-madness/assets/64251396/0bc9834d-fad1-4e6c-aa57-82a3e6d8e951\" alt=\"shuttle-madness\" width=\"500\"/\u003e\n\u003c/p\u003e --\u003e\n![shuttle_anim](https://github.com/etherealxx/shuttle-madness/assets/64251396/78e1388d-d4e6-46f2-98b4-1b0e641b3d8f)\n\n## Workspace Setup (VSCode, the easy way)\n- Clone this repository\n- Download [this zip](https://github.com/MdAlbinHossain/Computer-Graphics/archive/refs/heads/main.zip) containing OpenGL dependencies from [MdAlbinHossain/Computer-Graphics](https://github.com/MdAlbinHossain/Computer-Graphics)\n- Extract the zip, open the folder `Computer-Graphics \u003e OpenGL Programming`\n- Inside, copy 'mingw' and '.vscode' folder into this repo's folder you've cloned earlier (`shuttle-madness`)\n- On VSCode, install an extension called Run++ ([this one](https://marketplace.visualstudio.com/items?itemName=AlbinBD.run))\n- Still on VSCode, `File \u003e Open Folder...` and choose the cloned directory (`shuttle-madness`)\n\n#### The Manual Way\nI haven't tried this myself, but you need to do a GLUT installation by yourself, and run the program with this (there might be other dependencies, tbh idk how to install those manually).\n```\ng++.exe shuttle_madness.cpp -lfreeglut -lopengl32 -lglu32 -lwinmm -lgdi32 -Wl,--subsystem,windows -o shuttle_madness\n```\n\n## Running the game\n- Open `shuttle_madness.cpp`\n- Click the `Run++` button on the top right, OR press Alt + B\n\n#### Controls\n- WASD controls: `W` to jump/double jump. `S` to fastfall/crouch.\n- `Space` to swing the racket\n- Immediately jumping after releasing crouch button will result in high jump.\n- Hit the pink shuttlecock to score point, dodge the gray shuttlecock, and don't hit the yellow shuttlecock.\n\n## Building the game\n- Download `cmake` from [here](https://cmake.org/download/) and install it. (Choose the Windows x64 Installer, recommended to install for all user).\n- Make sure that the `mingw32` folder from the previous guide is located properly inside the repo's folder (`shuttle-madness`)\n**or**\n- You can use your locally installed MSYS64 *if you have already installed one*.\n\n###### Note:\nI tried several dev tools and only MSYS64 which works (aside the above *mingw32 method*), my MSYS2 apparently can't. So for other build tools, you need to adjust the `CMakeLists.txt` manually. And to make things worse, the built executable from the MSYS64 method can't run on other device. So, just stick with the mingw32 method.\n\n#### Python Method (assuming you installed one)\n- Run `cmakeautomate_mingw32.py` inside the `tools` folder\n- Go to newly made `build` folder, the executable name is `ShuttleMadness.exe` (it needs the png and wav files to be on the same directory as it). There will also a zip file that contains everything you need to run the game.\n\n###### Note:\nUse `cmakeautomate_msys64.py` instead if you want to use MSYS64 method.\n\n#### Manual Method\n- Inside the repo folder, create a new folder named `build`\n- Download `ninja-win.zip` [from here](https://github.com/ninja-build/ninja/releases/download/v1.11.1/ninja-win.zip)\n- Extract it, put the `ninja.exe` inside the `build folder`\n- Launch command prompt (`cmd.exe`), change directory (`cd`) to the build folder\n- Type these in succesion,\n\nif you're using mingw32 (default) method:\n```\nfor %I in (\"%CD%\") do set \"updir=%~dpI\"\nset \"updir=%updir:\\=/%\"\ncmake -G \"Ninja\" -DCMAKE_MAKE_PROGRAM=%updir%build/ninja.exe -DCMAKE_PREFIX_PATH=%updir%mingw32 -DCMAKE_C_COMPILER=%updir%mingw32/bin/gcc.exe -DCMAKE_CXX_COMPILER=%updir%mingw32/bin/c++.exe ..\ncmake ..\nninja\n```\nif you're using MSYS64 method:\n```\ncmake -G \"Ninja\" -DCMAKE_MAKE_PROGRAM=ninja.exe ..\ncmake ..\nninja\n```\n- Go to newly made `build` folder, the executable name is `ShuttleMadness.exe` (it needs the png and wav files to be on the same directory as it).\n\n## Static Linking (Single Portable Executable)\n- Download [Enigma Virtual Box](https://enigmaprotector.com/en/downloads.html), install it.\n\n#### Python Method (assuming you installed one)\n- Run `enigmavirtualboxsetup.py` inside the `tools` folder\n- Double click the `shuttle_build.evb`, it should open the Enigma Virtual Box app.\n- Click `Process` on the bottom right\n- Visit `build` folder, the executable name is `ShuttleMadnessPortable.exe` (you can move it wherever you like)\n\n#### Manual Method (assuming you installed one)\n- Open the `Enigma Virtual Box` app.\n- Browse the input file name, choose the newly built `ShuttleMadness.exe`\n- Click `Add \u003e Add File(s)`, choose every `.png`, `.wav`, and `.dll` file inside the `build` folder. Also include `shuttle_howtoplay.txt` and `shuttle_audio_credit.txt`.\n- Click `Process` on the bottom right\n- Visit `build` folder, the executable name is `ShuttleMadnessPortable.exe` (you can move it wherever you like)\n\n## To-Dos\n- Make challenges (like how the way the shuttlecock spawns) as a reason for the player to not just stay on the bottom without jumping at all. (also challenges that utilizes ducking)\n- Make the directory clean (separate files into folders based on extension)\n- ~~Figure out the build dependency problem~~\n- Static linking the `libfreeglut.dll`\n\n## Attribution\n- `Arcade Music Loop.wav` by joshuaempyre on [freesound.org](https://freesound.org/people/joshuaempyre/sounds/251461/)\nAdjusted so that the volume is 20% of the original\n\n- `Jump_C_05.wav` by cabled_mess on [freesound.org](https://freesound.org/people/cabled_mess/sounds/350905/)\n\n- `Tennis racket_whoosh.wav` by speedygonzo on [freesound.org](https://freesound.org/people/speedygonzo/sounds/235727/)\nCutted so that only the second last swing that plays\n\n- `Badminton.wav` by PerMagnusLindborg on [freesound.org](https://freesound.org/people/PerMagnusLindborg/sounds/324244/)\nCutted so that it plays a little bit faster\n\n- `8-bit damage sound.wav by EVRetro` on [freesound.org](https://freesound.org/people/EVRetro/sounds/501104/)\nCutted so that it ends earlier\n\n- `retro taking damage sfx.wav` by stumpbutt on [freesound.org](https://freesound.org/people/stumpbutt/sounds/629656/)\n\n- `8-bit Explosion2.aiff` by timgormly on [freesound.org](https://freesound.org/people/EVRetro/sounds/501104/)\nConverted to 24bit pcm wav, decreased the volume to 50%\n\n- `Game over sounds 1.wav` by afleetingspeck on [freesound.org](https://freesound.org/people/afleetingspeck/sounds/232444/)\nCutted so that only the first part is used\n\n- `pause.mp3` by crisstanza on [freesound.org](https://freesound.org/people/crisstanza/sounds/167127/)\nConverted to 24bit pcm wav, decreased the volume to 60%\n\n- `Chiptune Loop Episode 01.wav` by orginaljun on [freesound.org](https://freesound.org/people/orginaljun/sounds/396960/)\nDecreased the tempo by 30%\n\n- `Menu screen mouse over.wav` by DrMinky on [freesound.org](https://freesound.org/people/DrMinky/sounds/166186/)\nAmplified by 15dB\n\n- `SFX UI Button Click.wav` by suntemple on [freesound.org](https://freesound.org/people/suntemple/sounds/253168/)\nAmplified by 15dB\n\n## Used Libraries\n- [GLUT](https://www.opengl.org/resources/libraries/glut/glut_downloads.php)/[FreeGLUT](https://github.com/FreeGLUTProject/freeglut)\n- [stb_image](https://github.com/nothings/stb)\n- [miniaudio](https://github.com/mackron/miniaudio)\n\n## Special Thanks\n- Ikhsan Ridwan who made the `shuttle_knight.png` sprite\n\u003cbr/\u003e\n\n###### Note:\n The directory itself is messy since I thought I was just gonna use the single cpp file and the single file headers, but eventually i split the code into parts, and i added images, musics, and icon.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fetherealxx%2Fshuttle-madness","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fetherealxx%2Fshuttle-madness","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fetherealxx%2Fshuttle-madness/lists"}