Back to 2048

2048: source & credits

Created by Gabriele Cirulli. This is a modified, self-hosted open-source edition provided by Tab Arcade without in-game ads. It is not the author's official website.

Source repository · Original license file

The unminified game files are served alongside this page. Upstream history and local modifications are recorded below.

Version and modifications

# 2048 — self-hosted edition

## Upstream and license

- Authoritative game source: https://github.com/gabrielecirulli/2048
- Pinned commit: `478b6ec346e3787f589e4af751378d06ded4cbbc`.
- Source tree: https://github.com/gabrielecirulli/2048/tree/478b6ec346e3787f589e4af751378d06ded4cbbc
- Original license: https://github.com/gabrielecirulli/2048/blob/478b6ec346e3787f589e4af751378d06ded4cbbc/LICENSE.txt
- Game JavaScript and CSS are MIT, copyright 2014 Gabriele Cirulli. The complete upstream notice is retained unchanged in `LICENSE.txt`; visible creator attribution appears inside the game.
- The board and tiles use CSS and text. No upstream screenshots, app icons, startup images, audio, or third-party game artwork are distributed here. This adapted copy does not claim to be the official 2048 site.

## Font assets

`style/fonts/` contains unchanged copies of Tab Arcade's already local IBM Plex Sans regular and bold TTF files, with their complete SIL Open Font License 1.1 notice (`ibmplexsans-OFL.txt`). These fonts are separately licensed under OFL, not MIT. Official font project/license: https://github.com/IBM/plex/blob/master/LICENSE.txt.

The existing font source is recorded in the site's `public/fonts/source-1.css`; no Google font CSS or remote resource is requested at runtime. Exact SHA-256 checksums of the redistributed files:

- Regular: `6dbe082463cf749cfa057d45c3048c90f4df031496498e5b5bdfd0b6babb9d16`.
- Bold: `e129a20e8ff7c907ffd07124b573e88c323b7b18afc934d4aa539a3e0f2fe100`.

## Adaptation

- Kept upstream 4×4 gameplay, scoring, keyboard/WASD input, swipes, restart, win/lose states, and local save behavior.
- Replaced the upstream document's official-version claim and outbound promotional links with concise instructions and creator/license attribution. Removed unused upstream icon/startup-image links and Clear Sans font imports.
- Added `style/embed.css` for a compact responsive iframe board, native 44 px action buttons, keyboard focus, local font faces, and reduced-motion support. The upstream tile colors and animation states remain.
- Converted anchor-shaped game actions to semantic buttons and labeled the game board and score.
- Namespaced local save keys as `tabarcade:2048:bestScore` and `tabarcade:2048:gameState` to avoid colliding with other same-origin games.
- Added `js/embed.js` and a startup guard in `js/application.js` for visible initialization/network errors, reload recovery, and an unavailable-storage notice. No ad SDK, analytics, donation, or remote font loader is included.
- Added a restrictive content security policy and `noindex, follow` to the raw runtime. The enclosing `/games/` detail page supplies the searchable game content.

All runtime scripts, styles, and fonts load from this directory on the site's own origin. There are no external frames, outbound runtime requests, ad placements, or tracking calls. This describes this vendored runtime, not any third-party game elsewhere in the catalog.

## Validation boundary

Static validation checks JavaScript/CSS syntax, local resource resolution, no external runtime URLs/network APIs, the retained notices, and deterministic upstream move/merge, score, win, restart, persistence and unavailable-storage behavior in a Node VM. Real browser rendering, keyboard/touch input, iframe sizing and network-request verification are separate integration checks performed by the site's release workflow.

License

The MIT License (MIT)

Copyright (c) 2014 Gabriele Cirulli

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.