Help Wanted List: Difference between revisions
Jump to navigation
Jump to search
(Updated Linux task) |
mNo edit summary |
||
(55 intermediate revisions by 7 users not shown) | |||
Line 1: | Line 1: | ||
# ''' | |||
#* | # '''Zipping of Legacy games''': As of October 2023, we still have around 21,000 games to convert from Legacy format to GameZIP format. Anyone can help out with converting games, see [[Content_Patches#Legacy_Entries|Content Patches]] for more information on how to zip legacy titles. | ||
#* | # '''Help developing a system for automated Flashpoint builds''': To improve release quality and frequency, we are working on an automated and reproducible way to build Flashpoint, including Windows, Mac and Linux builds. Currently we are able to build Flashpoint Infinity for Windows, but we are looking for help completing build configurations for Mac and Linux. A short overview of our build system is below. If you have knowledge of these tools, please join the #developers channel in [https://discord.gg/kY8r2BbPQ9 our Discord] and let us know that you'd like to help! | ||
#* | #* A [https://gitlab.unstable.life self-hosted GitLab instance] allows us to store and manage Flashpoint's repositories and build configuration files | ||
# | #* Third-party binaries and other static files are stored in our [https://nexus-dev.unstable.life/ Sonatype Nexus Repository Manager instance] | ||
# | #* The build is run on Linux, with the [https://earthly.dev/ Earthly] CI/CD framework providing a consistent environment | ||
# '''Linux testers and developers''': | #* [https://docs.ansible.com/ Ansible] is the software that actually builds Flashpoint. Much of the work of maintaining our build system involves creating/modifying Ansible configuration files (playbooks). | ||
# '''Help developing and documenting the Flashpoint Submission System''': In 2021, we introduced a [https://fpfss.unstable.life website] for submitting [[Curation_Format#What_is_a_Curation.3F|curations]], with the code [https://github.com/FlashpointProject/flashpoint-submission-system/ available on GitHub]. But we need help documenting the process for setting up a development environment so we can bring new contributors on board. If you're proficient with Golang, please try to set up a development environment for the site and document your process along the way. Be sure to join the #developers channel in [https://discord.gg/kY8r2BbPQ9 our Discord server] and ask Dri0m (the site's developer and administrator) for any advice and clarifications. | |||
# '''Linux testers and developers''': We are unable to offer an official Linux version of Flashpoint due to a lack of maintainers. We hope to once again offer an official Linux version, but we need help finalizing our new system for running Flashpoint using Docker containers. We call this new paradigm ''fpdocker'', and you can find the latest experimental build pinned in the ''Mac & Linux Dev & Testing'' thread in the #developers channel in [https://discord.gg/kY8r2BbPQ9 our Discord]. Please test it out and let us know how it works for you! And if you'd like to help out, please take a look at [https://gitlab.fp.unstable.life/flashpoint/software/fpdocker our fpdocker repository] and share your thoughts/questions in the ''Mac & Linux Dev & Testing'' thread. | |||
# '''Mac testers and developers''': A heavily outdated Flashpoint package for Mac is available from our [[Mac Support]] page, but we are currently working on an updated and hugely improved new build. But none of our Launcher developers currently have access to a Mac, so it would be very helpful for us to have a developer with a Mac join the Launcher team and help out with Mac-specific issues as they arise. To see what we're working on for Mac at the moment, please join the ''Mac & Linux Dev & Testing'' thread in the #developers channel in [https://discord.gg/kY8r2BbPQ9 our Discord]. | |||
# '''Flashpoint Launcher developers''': We use a custom Electron app called Flashpoint Launcher for displaying and launching games in Flashpoint. We need some more help with its development. | # '''Flashpoint Launcher developers''': We use a custom Electron app called Flashpoint Launcher for displaying and launching games in Flashpoint. We need some more help with its development. | ||
#* See the GitHub repository for more info: https://github.com/FlashpointProject/launcher | #* See the GitHub repository for more info: https://github.com/FlashpointProject/launcher | ||
#* Skills needed: proficiency with Electron and TypeScript | #* Skills needed: proficiency with Electron and TypeScript | ||
# ''' | # '''Flashpoint Launcher extension developers''': We are looking for developers to help develop new features for the Flashpoint project through launcher extensions. To learn more about creating launcher extensions, see the [https://github.com/FlashpointProject/launcher/blob/master/docs/extensions.md extension documentation] and the [https://flashpointproject.github.io/launcher_ApiDocs/modules/_typings_flashpoint_launcher_d_._flashpoint_launcher_.html API documentation]. | ||
# | #* See [[Launcher Extensions]] for some examples of useful launcher extensions. | ||
#* | #* One idea that we have for a future extension is a partial re-implementation of the [https://github.com/FlashpointProject/FlashpointSecureTools/tree/master/FlashpointSecurePlayer Flashpoint Secure Player]. This would allow us to support many more of Flashpoint's [[Technologies]] on Mac and Linux, since launcher extensions are cross-platform but Flashpoint Secure Player only runs on Windows. Below is a list of Flashpoint Secure Player features that we think could be ported to a Launcher extension. For more details, please ask in the #development-chat channel in [https://discord.gg/kY8r2BbPQ9 our Discord]. | ||
#** Exporting custom environment variables to launched software | |||
#* | #** Changing the software's working directory | ||
#* | #** [https://stackoverflow.com/questions/31434909/hide-child-process-console-window Hiding the software's window] | ||
#* | #** Running software with elevated privileges | ||
#** Restricting software to a single instance | |||
# ''' | # '''Flashpoint Website and Launcher translators''': One great way to help us reach more people is localizing the Flashpoint Launcher into your language. See [[Translation Guide]] for more details on how to translate. We have also begun translating the Flashpoint website into multiple languages - we'll add information about how to help with this onto the Translation Guide soon. | ||
# | # '''RTMP streaming support''': Some games use [https://en.wikipedia.org/wiki/Real-Time_Messaging_Protocol Real-Time Messaging Protocol] (RTMP) for streaming video or audio. We need help supporting this technology in Flashpoint. | ||
#* Flash's RTMP connections are completely different from standard HTTP connections and are handled by the Flash plugin itself, so they do not appear in a browser's developer tools. We need help figuring out how to proxy RTMP connections, and specifically forcing Flash Player's RTMP connections to go through Flashpoint's proxy. | |||
#* Flashpoint's Apache/PHP server does not support RTMP, and according to this [https://en.wikipedia.org/wiki/List_of_RTMP_software#RTMP_server_software list of RTMP server software], there may not be any way to do so. We need help figuring out how to add support for RTMP to Flashpoint's server, or adding a separate server for RTMP support. | |||
# | #* Using [http://rtmpdump.mplayerhq.hu/ RTMPDump], we can download the videos or audio streamed to a Flash game/movie. We need help figuring out which games in Flashpoint or elsewhere may be using RTMP, so we can download the media they depend on. The top priority should be checking games that are already in Flashpoint because we do not want to be unknowingly relying on external RTMP servers that may go offline at any time. | ||
#* Here is an example of a game that uses RTMP for streaming video: [http://downloads.bbc.co.uk/tv/isite-flash/doctorwho/games/graske/geoip/bbc_drwho.swf Link], [http://web.archive.org/web/20230519101432/https://cdn.discordapp.com/attachments/444854424515379201/620820731793768478/ATTACK_OF_THE_GRASKE.7z Curation] | |||
# ''' | # '''Help implementing Kongregate user content and badges in Flashpoint''': [https://docs.google.com/spreadsheets/d/1OnnhmWgvljBZK4_oxoO6itpQWCddRc-usz5iPcrUvzU/edit This Google doc] lists all of the games on Kongregate for which we've scraped the user levels. [https://github.com/colin969/Kong_Api_Reimpl A re-implementation of the Kongregate API is in progress], but it only supports badges right now, and some ActionScript 2 games and non-Flash games aren't working properly yet. We need help improving the reimplementation and possibly hacking the games so the user levels can be loaded in Flashpoint. It's especially complicated because games use HTTPS, and because of interactions between the games and the pages on which they're embedded. | ||
# '''Replacing games hacked to bypass sitelocks with unmodified versions''': This is a very low priority task, but would be desirable nonetheless. In Flashpoint's earlier years, certain games had to be directly modified as to bypass built-in sitelocks. However, as Flashpoint now has the ability to trick such games into believing they're being played online, this is no longer necessary. While there are no functional differences between a hacked game and a tricked unmodified game, having the original files would be preferable. | |||
== Former Projects: == | == Former Projects: == | ||
# '''Differential updates''': An updater for Flashpoint Ultimate has been released, and is [https://github.com/FlashpointProject/FlashpointUpdater/releases available here]. | |||
# '''Differential updates''': | |||
# '''Action Message Format support''': We finished adding an AMF implementation to PHP on Flashpoint's server, so now we are working to save user content databases for games that require AMF. | # '''Action Message Format support''': We finished adding an AMF implementation to PHP on Flashpoint's server, so now we are working to save user content databases for games that require AMF. | ||
# ''' | # '''Archiving and curating Geocities.jp games''': Geocities.jp closed on March 31, 2019, and some of the games hosted there were lost forever. At Flashpoint, we worked to curate some of the games, and save the assets for as many as possible so they can be added to Flashpoint later. | ||
# '''Archiving Pogo games''': Pogo removed all of their Flash games in 2020. We worked to save some of these games, including packet captures of network activity to help with re-implementing Pogo's servers sometime in the future. Information about our efforts can be found in [https://docs.google.com/document/d/1PW58X2jfpt57Ce2fN4r4BXeALO0iW9o-r7-cYrI-w2A/edit this Google doc]. We still need help analyzing our packet captures and re-implementing enough of the server backend to make the single-player modes playable in Flashpoint. | |||
# '''PHP script/library to read SWF headers''': Staff member XXLuigiMario created a PHP script that can read the width and height of any SWF, along with a userscript to call this PHP script whenever the browser loads an SWF. To see it in action, download his patches for Flashpoint [https://cdn.discordapp.com/attachments/569426826691346444/674753616002678793/Infinity7.1BasiliskPatch.7z Infinity] or [https://cdn.discordapp.com/attachments/569426826691346444/674745464683233337/Core4.1BasiliskPatch.7z Core]. | |||
# '''Portable Shockwave Player plugin''': We finished integrating a portable Shockwave Player plugin with Flashpoint, and it is available in current Flashpoint releases. This was accomplished using our [https://github.com/FlashpointProject/ShockwaveExtender/ Browser Plugin Extender] module. | |||
# '''Hacking Unity Web Player games''': We discovered a viable method for hacking Unity Web Player games, the details of which have been [[Unity_Curation#Hacking_Unity_Web_Player_Games|shared here]]. | |||
# '''[https://github.com/colin969/FPL-InfoCheck Flashpoint Info Check Extension]''': A Flashpoint Launcher extension which checks for and alerts the user of common issues is now integrated with Flashpoint builds. If new issues arise in the future, we may need help updating the extension to cover these issues though. | |||
# '''Sorting of extreme tagged games''': All LEGACY-Extreme entries now have proper tags. | |||
# '''HTTPS support''': Some games have obfuscation or exact URL sitelocks that make them only work on HTTPS URLs. We have found a way forward to support these games without installing a root certificate on the user's system, using the new [https://github.com/FlashpointProject/FlashpointGameServer Flashpoint Game Server] and a custom root certificate trusted by Flashpoint Navigator. This feature of Flashpoint Game Server is currently under development. Solutions considered in the past included: | |||
## One plan for implementing it would be based on [https://github.com/mdn/webextensions-examples/tree/master/http-response this sample extension], and replace the response data outright with a version fetched over HTTP on certain URL match patterns. | |||
##* <code>filterResponseData</code> was added in Firefox 57, though you could also restrict it on earlier versions in <code>manifest.json</code>. | |||
##* Theoretically you could create a "fake domain" to store a configuration for this extension to be picked up by the proxy and then have the extension dynamically update its matched patterns every time the browser launches (<code>manifest.json</code> would not be able to be updated dynamically). This would require a browser based on Firefox 57+. You wouldn't even need to dynamically process the actual response, just overwrite it. | |||
## Another potential solution would be something like [https://github.com/Rob--W/crxviewer/blob/master/src/domain-fronter.js this], which changes the URL of the request rather than modifying the response. It might perform better in terms of network requests, as they wouldn't be duplicated. I believe the domain fronter changes the URL back once the response is returned, so XHR would report the correct URL. | |||
## Alternatively, given that [https://gitlab.fp.unstable.life/flashpoint/software/fpbrowser FPBrowser] is now hosted and compiled by us, we can probably redirect all the browser's HTTPS API calls to the HTTP ones. | |||
'''See Also''': [[Help Wanted Games]] | '''See Also''': [[Help Wanted Games]] | ||
<noinclude> | |||
[[Category:Meta]] | |||
</noinclude> |
Latest revision as of 20:26, 15 November 2023
- Zipping of Legacy games: As of October 2023, we still have around 21,000 games to convert from Legacy format to GameZIP format. Anyone can help out with converting games, see Content Patches for more information on how to zip legacy titles.
- Help developing a system for automated Flashpoint builds: To improve release quality and frequency, we are working on an automated and reproducible way to build Flashpoint, including Windows, Mac and Linux builds. Currently we are able to build Flashpoint Infinity for Windows, but we are looking for help completing build configurations for Mac and Linux. A short overview of our build system is below. If you have knowledge of these tools, please join the #developers channel in our Discord and let us know that you'd like to help!
- A self-hosted GitLab instance allows us to store and manage Flashpoint's repositories and build configuration files
- Third-party binaries and other static files are stored in our Sonatype Nexus Repository Manager instance
- The build is run on Linux, with the Earthly CI/CD framework providing a consistent environment
- Ansible is the software that actually builds Flashpoint. Much of the work of maintaining our build system involves creating/modifying Ansible configuration files (playbooks).
- Help developing and documenting the Flashpoint Submission System: In 2021, we introduced a website for submitting curations, with the code available on GitHub. But we need help documenting the process for setting up a development environment so we can bring new contributors on board. If you're proficient with Golang, please try to set up a development environment for the site and document your process along the way. Be sure to join the #developers channel in our Discord server and ask Dri0m (the site's developer and administrator) for any advice and clarifications.
- Linux testers and developers: We are unable to offer an official Linux version of Flashpoint due to a lack of maintainers. We hope to once again offer an official Linux version, but we need help finalizing our new system for running Flashpoint using Docker containers. We call this new paradigm fpdocker, and you can find the latest experimental build pinned in the Mac & Linux Dev & Testing thread in the #developers channel in our Discord. Please test it out and let us know how it works for you! And if you'd like to help out, please take a look at our fpdocker repository and share your thoughts/questions in the Mac & Linux Dev & Testing thread.
- Mac testers and developers: A heavily outdated Flashpoint package for Mac is available from our Mac Support page, but we are currently working on an updated and hugely improved new build. But none of our Launcher developers currently have access to a Mac, so it would be very helpful for us to have a developer with a Mac join the Launcher team and help out with Mac-specific issues as they arise. To see what we're working on for Mac at the moment, please join the Mac & Linux Dev & Testing thread in the #developers channel in our Discord.
- Flashpoint Launcher developers: We use a custom Electron app called Flashpoint Launcher for displaying and launching games in Flashpoint. We need some more help with its development.
- See the GitHub repository for more info: https://github.com/FlashpointProject/launcher
- Skills needed: proficiency with Electron and TypeScript
- Flashpoint Launcher extension developers: We are looking for developers to help develop new features for the Flashpoint project through launcher extensions. To learn more about creating launcher extensions, see the extension documentation and the API documentation.
- See Launcher Extensions for some examples of useful launcher extensions.
- One idea that we have for a future extension is a partial re-implementation of the Flashpoint Secure Player. This would allow us to support many more of Flashpoint's Technologies on Mac and Linux, since launcher extensions are cross-platform but Flashpoint Secure Player only runs on Windows. Below is a list of Flashpoint Secure Player features that we think could be ported to a Launcher extension. For more details, please ask in the #development-chat channel in our Discord.
- Exporting custom environment variables to launched software
- Changing the software's working directory
- Hiding the software's window
- Running software with elevated privileges
- Restricting software to a single instance
- Flashpoint Website and Launcher translators: One great way to help us reach more people is localizing the Flashpoint Launcher into your language. See Translation Guide for more details on how to translate. We have also begun translating the Flashpoint website into multiple languages - we'll add information about how to help with this onto the Translation Guide soon.
- RTMP streaming support: Some games use Real-Time Messaging Protocol (RTMP) for streaming video or audio. We need help supporting this technology in Flashpoint.
- Flash's RTMP connections are completely different from standard HTTP connections and are handled by the Flash plugin itself, so they do not appear in a browser's developer tools. We need help figuring out how to proxy RTMP connections, and specifically forcing Flash Player's RTMP connections to go through Flashpoint's proxy.
- Flashpoint's Apache/PHP server does not support RTMP, and according to this list of RTMP server software, there may not be any way to do so. We need help figuring out how to add support for RTMP to Flashpoint's server, or adding a separate server for RTMP support.
- Using RTMPDump, we can download the videos or audio streamed to a Flash game/movie. We need help figuring out which games in Flashpoint or elsewhere may be using RTMP, so we can download the media they depend on. The top priority should be checking games that are already in Flashpoint because we do not want to be unknowingly relying on external RTMP servers that may go offline at any time.
- Here is an example of a game that uses RTMP for streaming video: Link, Curation
- Help implementing Kongregate user content and badges in Flashpoint: This Google doc lists all of the games on Kongregate for which we've scraped the user levels. A re-implementation of the Kongregate API is in progress, but it only supports badges right now, and some ActionScript 2 games and non-Flash games aren't working properly yet. We need help improving the reimplementation and possibly hacking the games so the user levels can be loaded in Flashpoint. It's especially complicated because games use HTTPS, and because of interactions between the games and the pages on which they're embedded.
- Replacing games hacked to bypass sitelocks with unmodified versions: This is a very low priority task, but would be desirable nonetheless. In Flashpoint's earlier years, certain games had to be directly modified as to bypass built-in sitelocks. However, as Flashpoint now has the ability to trick such games into believing they're being played online, this is no longer necessary. While there are no functional differences between a hacked game and a tricked unmodified game, having the original files would be preferable.
Former Projects:
- Differential updates: An updater for Flashpoint Ultimate has been released, and is available here.
- Action Message Format support: We finished adding an AMF implementation to PHP on Flashpoint's server, so now we are working to save user content databases for games that require AMF.
- Archiving and curating Geocities.jp games: Geocities.jp closed on March 31, 2019, and some of the games hosted there were lost forever. At Flashpoint, we worked to curate some of the games, and save the assets for as many as possible so they can be added to Flashpoint later.
- Archiving Pogo games: Pogo removed all of their Flash games in 2020. We worked to save some of these games, including packet captures of network activity to help with re-implementing Pogo's servers sometime in the future. Information about our efforts can be found in this Google doc. We still need help analyzing our packet captures and re-implementing enough of the server backend to make the single-player modes playable in Flashpoint.
- PHP script/library to read SWF headers: Staff member XXLuigiMario created a PHP script that can read the width and height of any SWF, along with a userscript to call this PHP script whenever the browser loads an SWF. To see it in action, download his patches for Flashpoint Infinity or Core.
- Portable Shockwave Player plugin: We finished integrating a portable Shockwave Player plugin with Flashpoint, and it is available in current Flashpoint releases. This was accomplished using our Browser Plugin Extender module.
- Hacking Unity Web Player games: We discovered a viable method for hacking Unity Web Player games, the details of which have been shared here.
- Flashpoint Info Check Extension: A Flashpoint Launcher extension which checks for and alerts the user of common issues is now integrated with Flashpoint builds. If new issues arise in the future, we may need help updating the extension to cover these issues though.
- Sorting of extreme tagged games: All LEGACY-Extreme entries now have proper tags.
- HTTPS support: Some games have obfuscation or exact URL sitelocks that make them only work on HTTPS URLs. We have found a way forward to support these games without installing a root certificate on the user's system, using the new Flashpoint Game Server and a custom root certificate trusted by Flashpoint Navigator. This feature of Flashpoint Game Server is currently under development. Solutions considered in the past included:
- One plan for implementing it would be based on this sample extension, and replace the response data outright with a version fetched over HTTP on certain URL match patterns.
filterResponseData
was added in Firefox 57, though you could also restrict it on earlier versions inmanifest.json
.- Theoretically you could create a "fake domain" to store a configuration for this extension to be picked up by the proxy and then have the extension dynamically update its matched patterns every time the browser launches (
manifest.json
would not be able to be updated dynamically). This would require a browser based on Firefox 57+. You wouldn't even need to dynamically process the actual response, just overwrite it.
- Another potential solution would be something like this, which changes the URL of the request rather than modifying the response. It might perform better in terms of network requests, as they wouldn't be duplicated. I believe the domain fronter changes the URL back once the response is returned, so XHR would report the correct URL.
- Alternatively, given that FPBrowser is now hosted and compiled by us, we can probably redirect all the browser's HTTPS API calls to the HTTP ones.
- One plan for implementing it would be based on this sample extension, and replace the response data outright with a version fetched over HTTP on certain URL match patterns.
See Also: Help Wanted Games