Big Tower Tiny Square — Github Best

Let’s say you pick emilyxxie’s clone. Here’s how to get the best local experience:

Best for: Framework enthusiasts (Phaser 3) and mobile touch optimization.

Phaser is a popular 2D game framework, and this implementation shines on both desktop and phone. The repository includes a level editor built with React – drag and drop hazards, save to JSON, and share with friends. The “tiny square” here has slightly faster movement, appealing to speedrunners.

Why it’s among the best:

Link: github.com/losttheory/tiny-tower-phaser big tower tiny square github best

To label a project the "best" on GitHub is a subjective claim, but in the case of Big Tower Tiny Square, it is justified by its utility. It is a rare example of a project that is fun to play and educational to read. It proves that a game does not need high-fidelity textures or complex narratives to be successful; it needs a solid core loop and clean code.

index.html

<!doctype html>
<html>
<head>
  <meta charset="utf-8" />
  <meta name="viewport" content="width=device-width,initial-scale=1" />
  <title>Big Tower Tiny Square</title>
  <link rel="stylesheet" href="style.css" />
</head>
<body>
  <canvas id="game"></canvas>
  <script type="module" src="src/main.js"></script>
</body>
</html>

style.css

html,bodyheight:100%;margin:0;background:#111;display:flex;align-items:center;justify-content:center
canvasbackground:#20232a;border:4px solid #333;max-width:100%;height:auto

src/main.js

import  Game  from './game.js';
const canvas = document.getElementById('game');
const game = new Game(canvas);
game.start();
window.addEventListener('resize', ()=>game.resize());

src/game.js

import  Player, Tower  from './entities.js';
export class Game {
  constructor(canvas){
    this.canvas = canvas;
    this.ctx = canvas.getContext('2d');
    this.resize();
    this.player = new Player(60, this.h - 60);
    // Big tower positioned center-left
    const towerW = 160, towerH = this.h * 0.8;
    this.tower = new Tower(this.w/2 - 80, this.h - towerH, towerW, towerH);
    this.keys = {};
    window.addEventListener('keydown', e=>this.keys[e.key]=true);
    window.addEventListener('keyup', e=>this.keys[e.key]=false);
  }
  resize() 1;
    this.w = Math.min(window.innerWidth, 900);
    this.h = Math.min(window.innerHeight, 700);
    this.canvas.width = this.w * DPR;
    this.canvas.height = this.h * DPR;
    this.canvas.style.width = this.w + 'px';
    this.canvas.style.height = this.h + 'px';
    this.ctx.setTransform(DPR,0,0,DPR,0,0);
start() this.last = performance.now(); requestAnimationFrame(t=>this.loop(t)); 
  loop(t)
    const dt = Math.min(0.05,(t - this.last)/1000); this.last = t;
    this.update(dt); this.render();
    requestAnimationFrame(tt=>this.loop(tt));
update(dt)
    // simple input
    const speed = 200;
    this.player.vx = 0; this.player.vy = 0;
    if(this.keys['ArrowLeft']
  render()
    const ctx = this.ctx;
    ctx.clearRect(0,0,this.w,this.h);
    // draw tower
    ctx.fillStyle = '#4b5563';
    ctx.fillRect(this.tower.x, this.tower.y, this.tower.w, this.tower.h);
    // tower details (windows)
    ctx.fillStyle = '#111827';
    for(let y=this.tower.y+20;y<this.tower.y+this.tower.h-20;y+=30)
      for(let x=this.tower.x+20;x<this.tower.x+this.tower.w-20;x+=30)
        ctx.fillRect(x,y,12,12);
// draw player (tiny square)
    ctx.fillStyle = '#ffcc00';
    ctx.fillRect(this.player.x, this.player.y, this.player.size, this.player.size);
}

src/entities.js

export class Player 
  constructor(x,y)
    this.x = x; this.y = y; this.size = 10;
    this.vx = 0; this.vy = 0;
update(dt)
    this.x += this.vx * dt; this.y += this.vy * dt;
    // bounds clamp
    this.x = Math.max(0, Math.min(this.x, 900 - this.size));
    this.y = Math.max(0, Math.min(this.y, 700 - this.size));
export class Tower 
  constructor(x,y,w,h) this.x=x; this.y=y; this.w=w; this.h=h;

Why it is the best: This configuration is the gold standard. It utilizes the workbench.colorCustomizations to hide the activity bar, status bar, and title bar completely.

Key features:

GitHub snippet from the repo:

"window.titleBarStyle": "custom",
"workbench.activityBar.visible": false,
"workbench.statusBar.visible": false,
"editor.minimap.enabled": false,
"editor.renderLineHighlight": "all"
  • assets/ (images, sounds if any)
  • demo/ (optional build or packaged site)
  • Here is your curated list of winners. If you only have time to look at three, start here.

    | Repository | Platform | Best For | | :--- | :--- | :--- | | zen-mode.nvim | Neovim | The purest "Tiny Square" experience. | | vscode-zen-mode-plus | VS Code | Adds blurred background to monaco editor. | | tiny-square-theme | All (Sublime/VSCode/Vim) | A strictly monochrome theme using only #FFFFFF, #888888, and #000000. | | yabai-tiny-square | macOS | A window manager config that forces every app to become a floating square. | | awesomewm-bigtower | Linux (AwesomeWM) | The most complex "Big Tower" rice; uses Lua to create a dynamic grid where only the active window is visible. |

    3 thoughts on “Android 1.5 (Cupcake) firmware

    1. big tower tiny square github best nemo says:

      Caution white G1 owners: Cupcake kills DarkKeys, so the physical keyboard is once again almost impossible to see in moderate lighting conditions. 🙁

    2. big tower tiny square github best derek says:

      How can I receive the cupcake update sooner? I haven't gotten it still and have had the phone since the day after after its release. And I've been waiting on it since like decemberrrr.

      Thanks
      -derek

      1. big tower tiny square github best Colin Turner says:

        Hi Derek,

        I wouldn't recommend you download the devphone firmware since it warns that it may miss some features for "proper" localised phones. The page I used is here: http://www.htc.com/www/support/android/adp.html , but I repeat, you should probably not do this. I think the upgrade is starting to be distributed by most operators about now.

        CT.

    Leave a Reply

    Your email address will not be published. Required fields are marked *

    This site uses Akismet to reduce spam. Learn how your comment data is processed.