Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,4 @@ node_modules
package-lock.json
bun.lock
dist
*.zip
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@
"www/**/*"
],
"devDependencies": {
"eslint": "10.8.0",
"eslint": "10.8.1",
"@eslint/js": "10.0.1",
"typescript-eslint": "8.65.0"
"typescript-eslint": "8.66.0"
}
}
5 changes: 5 additions & 0 deletions www/games/orbit-idle/index.css
Original file line number Diff line number Diff line change
Expand Up @@ -42,4 +42,9 @@ a:hover {

a:active {
color: pink;
}

kbd {
padding: 0.25rem;
background: dimgray;
}
8 changes: 6 additions & 2 deletions www/games/orbit-idle/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,17 @@
<h1>Orbit Idle</h1>
<div id="game"></div>
<div id="game-info">
<button id="close-info" title="Close game information.">x</button>
<button id="close-info" title="Close game information." onclick="document.body.removeChild(document.getElementById('game-info'))">x</button>
<p><i>This game takes a new <b>spin</b> as the 4th game in the Revolution Idle series.</i></p>
<p>Controls: Mouse/click for everything. Instructions are shown in-game.</p>
<p>In Orbit Idle, grow a interplanetary idle economy by speeding up planets, ascending orbits, and compounding income from each revolution. Manage your solar system, zoom into individual planets, and watch your earnings explode even while the tab is hidden.</p>
<p><b>Controls:</b> Mouse/click for everything. Instructions are shown in-game.</p>
<p><b>Hotkeys:</b> Zoom: <kbd>+</kbd> and <kbd>-</kbd> &emsp; Save: <kbd>S</kbd> &emsp; Stats: <kbd>A</kbd> &emsp; Mute/Unmute: <kbd>M</kbd> &emsp; Help: <kbd>H</kbd> &emsp; Menu: <kbd>ESC</kbd></p>
<hr>
<p>The original game: <a target="_blank" href="https://www.kongregate.com/en/games/ninjanic/revolution-idle">Revolution Idle</a> (2017)</p>
<p>Fan collab/remake: <a target="_blank" href="https://www.kongregate.com/en/games/gumrok/revolution-idle-2">Revolution Idle 2</a> (2017)</p>
<p>My Unity3D remake: <a target="_blank" href="https://www.kongregate.com/en/games/ninjanic/idle-r3volutions">Idle R3volutions</a> (2018)</p>
<p>Fun fact: Idle R3volutions was available on Android/Google Play for a short time!</p>
<p>Orbit Idle is also available on <a href="https://nicfv.gamejolt.io/orbit-idle" target="_blank">GameJolt</a> and <a href="https://nicfv.itch.io/orbit-idle" target="_blank">Itch.io</a>.</p>
</div>
</body>

Expand Down
6 changes: 6 additions & 0 deletions www/games/orbit-idle/release
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#!/usr/bin/env bash

bun start prod
cp dist/main.js ./*.mp3 released
zip -r released.zip released
rm -r released/*.js released/*.mp3
11 changes: 11 additions & 0 deletions www/games/orbit-idle/released/index.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
@import url('https://fonts.googleapis.com/css2?family=Roboto+Mono:ital,wght@0,100..700;1,100..700&display=swap');

* {
box-sizing: border-box;
border-collapse: collapse;
}

body {
margin: 0;
padding: 0;
}
17 changes: 17 additions & 0 deletions www/games/orbit-idle/released/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
<!DOCTYPE html>
<html lang="en">

<head>
<title>Orbit Idle</title>
<meta charset="UTF-8">
<meta name="description" content="A remake of the original Revolution Idle from the same author.">
<meta name="author" content="Nicolas Ventura">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link type="text/css" rel="stylesheet" href="index.css">
<script type="text/javascript" src="main.js" defer></script>
</head>

<body>
</body>

</html>
3 changes: 0 additions & 3 deletions www/games/orbit-idle/src/close-info-handler.ts

This file was deleted.

2 changes: 1 addition & 1 deletion www/games/orbit-idle/src/data/state.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import { Tutorial } from '../form-controls/tutorial';
import { Zoom } from '../ui/zoom';

// Global constants
export const version = 'v1.3.0-alpha';
export const version = 'v1.0.0';

// UI elements
export const cursor: Cursor = new Cursor();
Expand Down
6 changes: 3 additions & 3 deletions www/games/orbit-idle/src/data/stats.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { Drawable } from 'graphico';
import { Label } from '../form-controls/label';
import { Color } from 'viridis';
import { player } from './state';
import { player, version } from './state';
import { N, SaveLoad } from './lib';
import { SMath } from 'smath';

Expand All @@ -21,7 +21,7 @@ export class Statistics extends SaveLoad<StatsData> implements Drawable {
super(data);
this.visible = false;
this.title = new Label('Orbit Idle: Statistics', new Color(255, 255, 255), 2, true, 'center', 'bottom', 0, Label.fontSize * 16);
this.headers = new Label('Started on\nSolar system size\nTotal earned\nTotal spent\nTotal planetary years\nSpeed levels purchased\nAscensions purchased\n\nCredits\n\n\nDisclaimer', new Color(255, 255, 255), 1, false, 'right', 'top', 0, Label.fontSize * 18);
this.headers = new Label('Started on\nSolar system size\nTotal earned\nTotal spent\nTotal planetary years\nSpeed levels purchased\nAscensions purchased\n\nCredits\n\n\nDisclaimer\n\n\n\nVersion', new Color(255, 255, 255), 1, false, 'right', 'top', 0, Label.fontSize * 18);
this.content = new Label('', new Color(255, 255, 255), 1, true, 'left', 'top', 0, Label.fontSize * 18);
}
public load(data: Partial<StatsData> = defaultStats): void {
Expand Down Expand Up @@ -53,7 +53,7 @@ export class Statistics extends SaveLoad<StatsData> implements Drawable {
graphics.fillStyle = Statistics.shade.toString();
graphics.fillRect(Label.fontSize * 15, Label.fontSize * 10, graphics.canvas.width - Label.fontSize * 30, graphics.canvas.height - Label.fontSize * 20);
// Set content
this.content.value = `${new Date(this.data.startTime).toLocaleString()}\n${N(player.getNumOrbits())} planets\n$${N(this.data.moneyEarned)}\n$${N(this.data.moneySpent)}\n${N(this.data.orbitsCompleted)} orbits\n${N(this.data.speedLevelsPurchased)}\n${N(this.data.ascensionsPurchased)}\n\nNicolas Ventura\nnicfv.com\n\nGenerative AI was used for\n30-second looping audio but\nnot for game design or code`;
this.content.value = `${new Date(this.data.startTime).toLocaleString()}\n${N(player.getNumOrbits())} planets\n$${N(this.data.moneyEarned)}\n$${N(this.data.moneySpent)}\n${N(this.data.orbitsCompleted)} orbits\n${N(this.data.speedLevelsPurchased)}\n${N(this.data.ascensionsPurchased)}\n\nNicolas Ventura\nnicfv.com\n\nGenerative AI was used for\n30-second looping audio but\nnot for game design or code\n\n${version}`;
// X-center all labels
this.title.x = graphics.canvas.width / 2;
this.headers.x = (graphics.canvas.width - Label.fontSize) / 2;
Expand Down
2 changes: 1 addition & 1 deletion www/games/orbit-idle/src/game/orbit.ts
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ export class Orbit extends SaveLoad<OrbitData> implements Drawable {
this.maxSpeedLevel = 100;
this.baseCost = 10 ** index;
this.costIncrease = 1.02 + 0.02 * index;
this.ascCostIncrease = 2.25 + 0.05 * index;
this.ascCostIncrease = 3.25 + 0.25 * index;
}
public load(data: Partial<OrbitData> = defaultOrbitData): void {
this.data.angle = SMath.clamp(data.angle ?? defaultOrbitData.angle, 0, Orbit.TAU);
Expand Down
1 change: 0 additions & 1 deletion www/games/orbit-idle/src/index.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import './close-info-handler';
import { Canvas } from 'graphico';
import { ascBtn, buyType, cursor, income, menu, paused, player, shop, stats, system, tutorial, zoom } from './data/state';
import { GameData } from './data/gamedata';
Expand Down