{"id":27072523,"url":"https://github.com/project-flipper/clubpenguin","last_synced_at":"2026-05-10T02:52:29.386Z","repository":{"id":284992147,"uuid":"432300700","full_name":"project-flipper/ClubPenguin","owner":"project-flipper","description":"Putting the late MMO back where it belongs.","archived":false,"fork":false,"pushed_at":"2025-03-29T18:32:56.000Z","size":4373,"stargazers_count":1,"open_issues_count":10,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-29T19:28:54.824Z","etag":null,"topics":["clubpenguin","cpps","html5","typescript","webpack"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","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/project-flipper.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":"2021-11-26T21:04:06.000Z","updated_at":"2025-03-12T17:25:45.000Z","dependencies_parsed_at":"2025-03-29T19:29:12.974Z","dependency_job_id":null,"html_url":"https://github.com/project-flipper/ClubPenguin","commit_stats":null,"previous_names":["clubpenguin-html5/clubpenguin","project-flipper/clubpenguin"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/project-flipper%2FClubPenguin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/project-flipper%2FClubPenguin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/project-flipper%2FClubPenguin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/project-flipper%2FClubPenguin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/project-flipper","download_url":"https://codeload.github.com/project-flipper/ClubPenguin/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247411383,"owners_count":20934674,"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":["clubpenguin","cpps","html5","typescript","webpack"],"created_at":"2025-04-05T23:18:13.029Z","updated_at":"2026-05-10T02:52:29.380Z","avatar_url":"https://github.com/project-flipper.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"![0618-Marketing-Evergreen-Homepage-Billboard-Igloos (2)](https://github.com/project-flipper/ClubPenguin/assets/44991848/0b711f05-86ce-46fc-a987-59511f69e267)\n\n# Index\n\n1. [About](#about)\n2. [Installation](#installation)\n    - [Options](#options)\n4. [Modifications](#modifications)\n5. [Demo](#demo)\n6. [Contributing](#contributing)\n\n# About\nFollowing Flash Player's discontinuation, this project aims to bring Club Penguin back into the web. This is achieved by employing newer technologies that allow it to remain as accessible as ever, in your browser.\n\nA key component is [Phaser](https://github.com/photonstorm/phaser), providing a game framework for HTML5 standards. The codebase of this project has been built from the ground up for performance using TypeScript, while maintaining high-fidelity to the Flash counterpart visually.\n\nIt should be noted that the project only aims to stay close to the source material visually, meaning that communication to the back-end servers is not cross-compatible with the Flash client. Instead, we employ a [dedicated server](https://github.com/project-flipper/Island) with our own protocol using a Rest API and a WebSocket throughout.\n\n# Installation\nClone this repository using `git`:\n```\ngit clone git@github.com:project-flipper/ClubPenguin.git\n```\n\nNext, install the mediaserver. If you plan on running a [webpack DevServer](https://webpack.js.org/configuration/dev-server/) using the provided configuration, then the mediaserver must be available as a directory called `media` in the project root. Otherwise, you may install it anywhere **as long as the game can access it** and is defined in [options](#options).\n\nFinally, build the game source:\n\n- To output a build, run `npm run build`. This will output the game files and play page to a directory called `dist` in the project root.\n- To run a DevServer instead, run `npm run serve`. This option is best for development, but keep in mind **it will run under a production environment if no options are given**.\n\n### Options\nBoth `npm run build` and `npm run serve` run `webpack` under the hood, so you may pass options to it. It is encouraged to customize your builds as the default options may not apply to your environment.\n\nTo pass environment options to a build command, you must use a separator `--` to forward arguments to `webpack`, and use the `--env` argument afterwards to define an option.\n\nA build command with options may look like this:\n```sh\nnpm run build -- --env development --env mediaPath=\"http://localhost\" --env homeLink=\"http://localhost\" --env playLink=\"http://localhost\"\n```\nNote that `development` is a boolean option, so there is no need to provide a value for it unlike string options. The absence of this option would mean `false`.\n\nBelow is a list of valid options.\n\n---\n\n- `--env development`: Marks this build as a `development` build, disabling any post-processing for optimization and thus greatly reducing build times.\n\u003e If this option is present, then a class instance will be made available in the playpage as `CP.debug` to assist debugging. Otherwise, this property will be undefined.\n\u003e This instance exposes a handful of properties and other utility functions, which should not be made available for the public as it can easily give a window to tamper with game internals.\n- `--env apiPath=string`: Sets the base API URL for communication. It is recommended that you provide an absolute URL for this option.\n- `--env mediaPath=string` (default: `\"/\"`): Sets the base URL for the mediaserver. It is recommended that you provide an absolute URL for this option.\n- `--env crossOrigin=string` (optional): Sets the CORS rule for file fetching. Must be one of `anonymous` or `use-credentials`. Best left untouched if you are not handling cross-origin requests.\n- `--env cacheVersion=string` (optional): Sets the base cache version. This is used by the game to get around file caching on mediaserver asset requests.\n- `--env contentVersion=string` (optional): Sets the cache version for content files. If not provided, then it defaults to the value of `cacheVersion`.\n- `--env minigameVersion=string` (optional): Sets the cache version for minigame files. If not provided, then it defaults to the value of `cacheVersion`.\n- `--env environmentType=string` (optional): Sets the environment type hint for the game. If not provided, then it will infer the value based on the build type: `prod` for production and `dev` for development.\n- `--env homeLink=string` (default: `\"\"`): Sets the URL to the home page. This will affect the play page navigation. Example: `https://clubpenguin.com`. **Do not include a slash at the end.**\n- `--env playLink=string` (default: `\"\"`): Sets the URL to the English play page. This affects resource loading and navigation of the play page. Example: `https://play.clubpenguin.com`. This assumes other languages are available as nested pages (e. g. `https://play.clubpenguin.com/es` for Spanish). **Do not include a slash at the end.**\n\n# Modifications\nYou may have noticed `.scene` files (amongst others) that are left unused in the source. These files are editable using [Phaser Editor 2D](https://phasereditor2d.com/), and the editor will compile TypeScript files upon change. It is adviced you only modify TypeScript files in the project that **are not compiled by the editor**, and in case they are, **make sure you are editing a section that is not compiled**.\n\nTo check whether a section is compiled, look for block comments in the desired TypeScript file that look like this: `/* START-USER-CODE */`. This indicates the start of a section that will not be overwritten by the editor, and likewise a comment like `/* END-USER-CODE */` indicates the end of it.\n\nPhaser Editor 2D will also need to read asset files from the mediaserver, so you will need to make it available inside of the project root as a directory. For the editor to recognize the mediaserver as an extension of the project root (needed for asset loading), you must include an empty file called `projectroot` (without an extension) inside of the mediaserver root. This will hint the editor that the mediaserver is used for asset loading, and you will be able to edit freely the scenes.\n\nFor more info. on this, read [Setting the root folder for the asset files](https://help-v3.phasereditor2d.com/asset-pack-editor/public-root.html).\n\nIf you wish to fork this project, please give credits where credit is due. Thank you.\n\n# Contributing\nThank you for your interest! 😉. You may contribute to bug reports and fixes by submitting issues and pull requests through this repository. Together we will let Club Penguin's legacy live on.\n\n# Demo\nSee [Project Flipper](https://projectflipper.me/) (non-affiliated with Disney).\n\n# Support\n\u003cp\u003e\n    \u003cimg align=\"right\" width=\"250\" height=\"250\" src=\"https://github.com/project-flipper/ClubPenguin/assets/44991848/49c007ac-1011-4948-972e-39c293c7fcda\"\u003e\nCatch us on our Discord server \u003ca href=\"https://discord.gg/CfBct5NUjv\"\u003ehere!\u003c/a\u003e or join through this code: \u003ccode\u003eCfBct5NUjv\u003c/code\u003e.\n\nPlease be mindful of the information shared here, as it may contain the answer to your query.\n\nWe ask that you are knowledgeable in at least the basics of TypeScript and Phaser before attempting to modify the project, as the techniques employed in this project may not be beginner-friendly.\n\u003e If you wish to just play the game, then you may be interested in visiting our [own demonstration of the project](#demo).\n\n\u003ch4\u003eMade with 💙 by the Club Penguin HTML5 team.\u003c/h4\u003e\n\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fproject-flipper%2Fclubpenguin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fproject-flipper%2Fclubpenguin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fproject-flipper%2Fclubpenguin/lists"}