{"id":26227600,"url":"https://github.com/kingsdigitallab/aisteroids","last_synced_at":"2025-12-27T10:11:06.116Z","repository":{"id":281843799,"uuid":"946478404","full_name":"kingsdigitallab/aisteroids","owner":"kingsdigitallab","description":"A(I)steroids is an Asteroids clone developed in Love2D","archived":false,"fork":false,"pushed_at":"2025-04-14T16:27:58.000Z","size":3243,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-04-14T17:33:26.034Z","etag":null,"topics":["ai","gamification","love2d","lua","sonification","stock-market"],"latest_commit_sha":null,"homepage":"","language":"Lua","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/kingsdigitallab.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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,"zenodo":null}},"created_at":"2025-03-11T07:50:13.000Z","updated_at":"2025-04-14T16:28:00.000Z","dependencies_parsed_at":"2025-03-11T13:21:57.152Z","dependency_job_id":"b5d0d410-f475-48da-b6ab-7bc68f95f5f9","html_url":"https://github.com/kingsdigitallab/aisteroids","commit_stats":null,"previous_names":["kingsdigitallab/aisteroids"],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/kingsdigitallab/aisteroids","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kingsdigitallab%2Faisteroids","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kingsdigitallab%2Faisteroids/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kingsdigitallab%2Faisteroids/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kingsdigitallab%2Faisteroids/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kingsdigitallab","download_url":"https://codeload.github.com/kingsdigitallab/aisteroids/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kingsdigitallab%2Faisteroids/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28077395,"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-12-27T02:00:05.897Z","response_time":58,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","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":["ai","gamification","love2d","lua","sonification","stock-market"],"created_at":"2025-03-12T20:18:04.097Z","updated_at":"2025-12-27T10:11:06.111Z","avatar_url":"https://github.com/kingsdigitallab.png","language":"Lua","funding_links":[],"categories":[],"sub_categories":[],"readme":"# A(I)steroids\n\nA(I)steroids is an [Asteroids](\u003chttps://en.wikipedia.org/wiki/Asteroids_(video_game)\u003e)\nclone developed in the [Love2D](https://love2d.org/) framework. The classic\nAsteroids game mechanics are used as a metaphor for the volatile and fragmented\nnature of AI technology and markets.\n\n![A(I)steroids welcome screen](assets/images/welcome.png)\n\nLarger asteroids splitting into smaller ones mimics how AI technologies branch\ninto specialised applications. The player's struggle to navigate/defend through\nchaos reflects our attempt to make sense of rapid AI delopments and the lack of\nconsistent or planned-ahead regulation.\n\nThe shooting/splitting is based on the original Asteroids game. In this version,\nthe size of the asteroid relates to the stock trading volume for that day. The\nshooting/splitting represents both the effort required to break down large\nvolumes of trades and the fragmentation of AI technologies into specialised\napplications.\n\nUsing stock prices to generate asteroids characteristics also creates an\ninteractive data visualition. Game mechanics are used to explore market\nvolatility through:\n\n- asteroid size based on the stock's trading volume for the day\n- asteroid colour reflects price change (last - open): green for gains, darker\n  red for larger losses\n- asteroid segments scale with the stock's last price\n- asteroid line width matches daily price range (high - low)\n- asteroid rotation speed tied to price change magnitude: clockwise for gains,\n  counter-clockwise for losses\n- asteroid speed correlates to daily stock volatility\n- the player's score reflects the stock's market value (last trading price), with\n  collisions against asteroids resulting in score penalties proportional to the\n  asteroid's size\n\n![A(I)steroids gameplay screenshot](assets/images/gameplay.png)\n\n## Download\n\nTo download the game, go to the [releases](https://github.com/kingsdigitallab/aisteroids/releases)\npage and download the appropriate package for your platform.\n\n\u003e [!WARNING]\n\u003e The Mac version is not signed, you may need to ignore the security warning\n\u003e to be able to run it.\n\n## Data\n\nThe stock data was downloaded from the [Nasdaq](https://www.nasdaq.com/) website,\nusing the historical data from the past month, covering the period between\n2025-02-07 and 2025-03-06. The data was combined into a single CSV file, and then\nconverted into a lua table using the `data/csv_to_lua.py` script. The stocks\nincluded are:\n\n- Amazon (AMZN)\n- AMD (AMD)\n- Apple (AAPL)\n- Broadcom (AVGO)\n- Google (GOOG)\n- Meta (META)\n- Microsoft (MSFT)\n- NVIDIA (NVDA)\n- Taiwan Semiconductor Manufacturing Company Ltd(TSM)\n\nThe conversion script requires the Python [pandas](https://pandas.pydata.org/)\nlibrary.\n\n## Music\n\nThe game music was created through [Data Sonification](https://en.wikipedia.org/wiki/Data_sonification),\nusing [Sonic Pi](https://sonic-pi.net/). The same variables used\nto generate the asteroids are used to generate the music. Notes are derived from\nthe stock volume, and synth effects are derived from the stock prices.\n\nThe script used to generate the music is `assets/music/csv_to_audio.rb`. The\nscript needs to be run inside Sonic Pi.\n\n## Development\n\nTo run the game, you need to have [Love2D](https://love2d.org/) installed, and\na copy of this repository.\n\n```bash\ngit clone https://github.com/kingsdigitallab/aisteroids.git\ncd aisteroids\nlove .\n```\n\n### Structure\n\n- `src/`: Source code\n  - `data/`: Data files\n  - `entities/`: Entity components, e.g. player, asteroid, bullet\n  - `systems/`: Systems components, e.g. collision detection\n  - `utils/`: Utility components, e.g. colours\n  - `states/`: Game state components, e.g. game state, game over\n- `assets/`: Assets, e.g. audio, fonts, images\n- `conf.lua`: Configuration\n- `main.lua`: Entry point and game loop\n- `README.md`: This file\n\n## Credits\n\n- `assets/sounds/laser.ogg` was converted to OGG format from the original by\n  [bubaproducer](https://freesound.org/s/151013/) -- License: Attribution 4.0\n- `assets/sounds/thrusters.ogg` was converted to OGG format from the original by\n  [DJT4NN3R](https://freesound.org/s/347576/) -- License: Creative Commons 0\n- `assets/sounds/explosion.ogg` was converted to OGG format from the original by\n  [Artninja](https://freesound.org/s/750822/) -- License: Attribution 4.0\n- `assets/sounds/asteroid_hit.ogg` was converted to OGG format from the original by\n  [runningmind](https://freesound.org/s/387857/) -- License: Creative Commons 0\n\n## References\n\n- [LOVE](https://love2d.org/wiki/Main_Page)\n- [Sheepolution - How to LÖVE - Table of Contents](https://sheepolution.com/learn/book/contents)\n- [GitHub - Keyslam/LOVE-VSCode-Starter-Template: A minimalistically configured VSCode template for LOVE](https://github.com/Keyslam/LOVE-VSCode-Starter-Template/)\n- [Data sonification - Wikipedia](https://en.wikipedia.org/wiki/Data_sonification)\n- [Sonification](https://en.wikipedia.org/wiki/Sonification)\n- [Telling data stories with music](https://datajournalism.com/read/longreads/data-sonification)\n- [The Sound of Data (a gentle introduction to sonification for historians)](https://programminghistorian.org/en/lessons/sonification)\n- [Sonic Pi: Basics](https://joeyreyes.dev/blog/sonic-pi/basics)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkingsdigitallab%2Faisteroids","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkingsdigitallab%2Faisteroids","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkingsdigitallab%2Faisteroids/lists"}