{"id":21162569,"url":"https://github.com/josepedrodias/ld39","last_synced_at":"2026-04-19T02:06:46.465Z","repository":{"id":144777062,"uuid":"98722522","full_name":"JosePedroDias/ld39","owner":"JosePedroDias","description":"Soaring - a ludum dare 39 game jam submission \\o/","archived":false,"fork":false,"pushed_at":"2017-08-01T00:56:01.000Z","size":35385,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-14T16:14:33.610Z","etag":null,"topics":["gamedev","hackathon","ludumdare"],"latest_commit_sha":null,"homepage":"https://josepedrodias.github.io/ld39/","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/JosePedroDias.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":"2017-07-29T09:27:20.000Z","updated_at":"2017-08-01T00:55:20.000Z","dependencies_parsed_at":null,"dependency_job_id":"cb66e73f-0b71-4fea-9609-9e6471c8695b","html_url":"https://github.com/JosePedroDias/ld39","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/JosePedroDias/ld39","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JosePedroDias%2Fld39","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JosePedroDias%2Fld39/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JosePedroDias%2Fld39/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JosePedroDias%2Fld39/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JosePedroDias","download_url":"https://codeload.github.com/JosePedroDias/ld39/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JosePedroDias%2Fld39/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266454880,"owners_count":23931348,"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","status":"online","status_checked_at":"2025-07-22T02:00:09.085Z","response_time":66,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"robots_txt_url":"https://github.com/robots.txt","online":true,"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":["gamedev","hackathon","ludumdare"],"created_at":"2024-11-20T13:30:58.067Z","updated_at":"2026-04-19T02:06:46.417Z","avatar_url":"https://github.com/JosePedroDias.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# LD39 - Soaring\r\n\r\nThis is a Ludum Dare 39 game jam entry.\r\n\r\n\r\n## Game summary\r\n\r\n  * rules\r\n    * 1HP, must pick fuel periodically (in tough spots) and may pick coins\r\n    * constant player movement in XX\r\n    * vertical impulses to keep ship above ground\r\n\r\n  * items\r\n    * gas (required to keep gas level above 0 else game over)\r\n    * coins (best effort. catching all in a level unlocks full level completion)\r\n    * power ups\r\n\r\n  * score\r\n    * survived game time and picked coins\r\n\r\n  * obstacles\r\n    * static platforms\r\n    * moving platforms (recurring movement/rotation)\r\n      * gates opening/closing\r\n      * rotating elements\r\n\r\n  * item placement\r\n    * items can be static, but also tied to platforms and or with assigned paths (if so, one must grasp them fast otherwise too hard)\r\n\r\n  * enemies (not sure these are necessary given the game constraints, only relevant if we can affect them in some way)\r\n    * classic patrolling movement around point\r\n    * sine wave movement à là r-type\r\n\r\n  * power ups\r\n    * invincible\r\n    * speed up/down XX speed\r\n    * power up centers camera ahead of player, allowing to see more of the level\r\n    * rotate the camera (harder to reason about)\r\n    * kill visible enemies\r\n    * kill destructible obstacles (are these any of these?)\r\n    * invert YY gravity\r\n\r\n  * game appearance / vibe\r\n    * average/poor art, best effort (most likely)\r\n    * crude solids with vibrant colors (geometry dash)\r\n    * dramatic with normal lights\r\n\r\n\r\n  * nice to haves\r\n    * decent sprites (may drop compo to jam and use artwork from elsewhere such as [kenney](https://kenney.nl/assets))\r\n    * music (either: none, use free licensed, from a friend - therefore jam)\r\n    * sfx (might do with simple generators since the theme is simple enough)\r\n    * lighting as an obstacle (would require sprites to have )\r\n\r\n\r\n## Supported browsers\r\n\r\n* tested / targetted\r\n  * android chrome\r\n  * mobile safari (iphone/ipad)\r\n* best effort\r\n  * chrome, safari\r\n\r\n\r\n## Tech stack\r\n\r\n* browser and javascript\r\n* 2D gfx with [pixi](http://www.pixijs.com/)\r\n* collision detection with [bump](https://github.com/kittykatattack/bump)\r\n* audio with [howler](https://howlerjs.com/) [docs](https://github.com/goldfire/howler.js#documentation)\r\n\r\n## Artwork stack\r\n\r\n* graphics\r\n  * used [blender3D](https://www.blender.org/), [inkscape](https://inkscape.org/),  [gimp](https://www.gimp.org/) and generated some procedural textures with [tg](http://blackpawn.com/dev/tg.html)\r\n  * the background sky and a couple of pill sprites came up from kenney.nl, didn't manage to replace those in time :P\r\n\r\n* sfx and music\r\n\r\n  full credits to [@asilva4000](https://twitter.com/asilva4000)\r\n\r\n  composed with [reason](https://www.propellerheads.se/en/reason)\r\n\r\n  audio encoding with [xmedia recode](http://www.xmedia-recode.de/download.html)\r\n\r\n## some references\r\n\r\n* \u003chttps://github.com/kittykatattack/learningPixi\u003e\r\n\r\n## TODO list\r\n\r\n* ~~brainstorm~~\r\n* ~~set up basic engine~~\r\n  * ~~renders sprites~~\r\n  * ~~touch support~~\r\n  * ~~music and sfx playback~~\r\n  * ~~level loading~~\r\n  * ~~keep aspect ratio and viewport independent of screen~~\r\n* implement game rules\r\n  * ~~xx constant movement~~\r\n  * ~~impulse~~\r\n  * ~~texture loading~~\r\n  * ~~basic box collision support~~\r\n  * ~~pick up coin~~\r\n  * ~~gas tank logic~~\r\n* ~~tiling bg~~\r\n* ~~animated items (coins etc)~~\r\n* ~~start screen \u003e play \u003e game over | pause states~~\r\n* ~~compress audio to howler compatible formats~~\r\n* ~~request fs and avoid double events~~\r\n* ~~reset time on game over~~\r\n* ~~level transition~~\r\n* ~~highscores (displayed on game over)~~\r\n* ~~pitch ship according to y speed (requires improved collision det)~~\r\n* ~~graphics made with blender, tg (procedural) and gimp~~\r\n* ~~prepare publish~~\r\n\r\nMAYBE\r\n* animate title screen\r\n* toggle sfx and audio (persist to LS) -\u003e done. still no way of toggling\r\n* google analytics, if time permits\r\n\r\nDOUBT IT\r\n* review cleanup (ex: sprite.destroy())\r\n* implement and add power-ups\r\n* particle effects\r\n* additional backgrounds with different parallax?\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjosepedrodias%2Fld39","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjosepedrodias%2Fld39","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjosepedrodias%2Fld39/lists"}