Categories
blog officialstupid threejs toy box toydoka

ToyDoka – profile

So, here we go again.

I really tried to stop this time. After finally giving this “toybox” a proper domain toydoka.com, I thought maybe that would be enough—a small sense of closure. But somehow, I’ve found myself right back in it. Same loop, same energy… here we go again.

Over the past couple of days – yesterday and the day before – I’ve already poured more than two full days into this. The homepage is done, the core structure is in place, and the marketplace is up and running.

Right now, I’m working on the profile system and the profile edit features. It’s one of those parts that seems simple at first, but quickly turns into something deeper, because profiles aren’t just forms, they shape how people exist inside the platform.

There’s something strange but exciting about this phase. It’s messy, a bit chaotic, but also very alive. Even when I try to step away, I keep coming back to tweak, improve, and build just a little more.

Maybe that’s the nature of creating something from scratch. You don’t really “stop” you just pause, and then eventually return.

Anyway, if you’re curious, here’s where it’s at right now:
https://toydoka.com/me/officialstupid

Let’s see where this goes next.

Categories
blog threejs toy box

Toybox found its home – https://toydoka.com

Screenshot 2026 04 07 at 01.09.23

https://toydoka.com new home for toybox finally I made up my mind to use domain…

Categories
blog threejs toy box

TOYBOX – update

Screenshot 2026 04 05 at 02.18.03

16+ hours

  • community
  • build and save
  • quick – sign up & login
  • export and import json
  • like
  • auto load new build at homepage
  • whole new light UI with less buttons and I think best UX


https://officialstupid.com/toybox/

02:25 AM, Sun 5 Apr

Categories
blog officialstupid toy box

ToyBox update!

Icon

back to toybox update

  • PWA and manifest.json
  • export as different size and transparent image
  • export presets code

https://officialstupid.com/toybox

Categories
blog officialstupid threejs toy box

Toybox moved to https://officialstupid.com/toybox/

Screenshot 2026 03 22 at 17.24.18

After the new cannon game, I moved back again to the toy box I designed for my daughter. Hope she will use it someday in the future. 😄


https://officialstupid.com/toybox/

update:

export – preset code to use at https://htmx.officialstupid.com/Cannon/

Categories
blog javascript toy box

Procedural

ToyBox Procedural Plugin – v1.1 (POTATO PC & MOBILE OPTIMIZED)

Screenshot 2026 03 01 at 22.36.28
/**
 * ToyBox Procedural Plugin - v1.1 (POTATO PC & MOBILE OPTIMIZED)
 * Extension for ToyBox Core.
 * Style: Randomized themes on every click.
 */
const TB_GEN = (function() {

	// Internal Helper: Uses Core TB.spawnVoxel
	const spawn = (x, y, z, c, s, h) => {
		if (typeof TB !== 'undefined') {
			// We set saveHistory to false during loops to save RAM/CPU
			TB.spawnVoxel(x, y, z, c, s, false, "gen_group", h);
		}
	};

	return {
		terrain: function(size = 15) { // Reduced default size for mobile safety (30x30 grid)
			console.log("Generating Lite Terrain...");

			// STYLE RANDOMIZER
			const styles = [
				{ c: 3, freq: 0.2, amp: 2 },  // Grasslands (Green)
				{ c: 1, freq: 0.4, amp: 3 },  // Desert Peaks (Orange)
				{ c: 10, freq: 0.1, amp: 1 }, // Snow Plains (White)
				{ c: 13, freq: 0.3, amp: 4 }, // Dark Mountains (Slate)
				{ c: 5, freq: 0.5, amp: 2 }   // Crystal Reef (Cyan/Transparent)
			];
			const theme = styles[Math.floor(Math.random() * styles.length)];
			const seed = Math.random() * 50;
			const grid = 1.0;

			for (let x = -size; x < size; x++) {
				for (let z = -size; z < size; z++) {
					// Optimized Math: Lower frequency noise
					const y = Math.round(
						Math.sin(x * theme.freq + seed) *
						Math.cos(z * theme.freq + seed) * theme.amp
					);

					// Skip blocks below ground to save memory
					if (y < -1) continue;

					spawn(x * grid, y, z * grid, theme.c, grid, grid);
				}
			}
			TB.saveGame(); // Final save
		},

		maze: function(size = 12) { // Small size is much faster for pathfinding/mobile
			console.log("Generating Lite Maze...");

			// STYLE RANDOMIZER
			const wallColors = [13, 12, 0, 7]; // Slate, Blue, Red, Purple
			const color = wallColors[Math.floor(Math.random() * wallColors.length)];
			const wallHeight = Math.random() > 0.5 ? 2 : 1;
			const density = 0.6 + (Math.random() * 0.2); // Random wall frequency

			for (let x = -size; x < size; x++) {
				for (let z = -size; z < size; z++) {
					// Logic: Create paths by checking grid modulo
					if (x % 2 === 0 || z % 2 === 0) {
						if (Math.random() > density) {
							spawn(x, wallHeight / 2, z, color, 1, wallHeight);
						}
					}
				}
			}
			TB.saveGame();
		}
	};
})();
Categories
blog officialstupid toy box

Toy Box – update and broken but worth to share!


lots of good good updates and tools. 12-15 hours (I don’t use timer 😀 )

  • checkpoints after death easy to apply – light green color paint blocks.
  • pen tool to make blocks easily
  • rotation flip and more tools
  • fix broken keys – hold – A/alt/shift
  • better multisite
Categories
blog toy box

toy box – draft

IMG

IMG
Categories
blog threejs toy box wordpress

TOY BOX – last update!

I’m just tired now, so everything is totally on hold. This is the last update for this journal.

https://toy.dharan.city/toybox_game/box-pig/

Tools for mobile for better UX. With more better buttons UI

IMG

Categories
blog toy box

Toy Box (.glb low poly support) — almost cried and tired.

Toy Box – .glb support progress. from 1 shark to low poly.

1 shark eats the whole CPU/GPU, so I got the idea in the morning: “low poly.” Already abandoned .glb, but I found new life with “low poly.”

https://pixabay.com/3d-models/

Categories
blog officialstupid threejs toy box

Toy Box – broken jump mode

Trashed broken jump mode. Wasted 4 hours.

Game mode: Auto jump forward. You just need to click the mouse/press the spacebar or tap the touchscreen to pull down duck from the sky. Light-colored blocks give extra jump power.