Skip to main content

A tiny web3 pet that costs you nothing but attention

 I've been quiet here, but not idle. For the past few weeks I've been

building Solgotchi — a small pixel creature you raise in a handheld-style

device that sits in a browser tab.


No download, no app store, no wallet transaction. You sign in (Solana

wallet or Google, whichever you prefer), get one pet per account, and feed it.


What it actually is


Every pet is generated from a hash: colours, face, and one of twelve body

shapes. The shape is rolled once at birth and never changes — and that

shape decides its rarity:


  Common, 70%      round, blob, cat, dog

  Uncommon, 20%    bunny, frog, fish

  Rare, 8%         spiky, dino, grey

  Super rare, 2%   alien, ghost


So a ghost is roughly 1 in 100. It gives no gameplay advantage. It's just

a nicer silhouette to stare at for four hours.


The loop


- Feeding unlocks every 4 hours: 100 coins and some XP.

- Treats raise bond: +2 each, plus +2 on the first one each day. You hold

  up to 5, and one refills every 10 minutes.

- Bond runs 0–100. It sets how much XP a meal pays (x1 / x1.5 / x2, so

  10 / 15 / 20 XP) and how eagerly the pet runs over when you call it.

  Ignore it for 6 hours and it starts decaying 5 points every 3 hours.

- Levels evolve the pet at 3, 5, 8 and 12: an accessory, a second colour,

  its own eyes, then a shimmer. Cap is 12; XP keeps counting after that.

- At bond 100 it gets a golden aura and says something soppy.


It has opinions about your schedule


The part I like most: it naps. Leave it alone for an hour during the day

and it has a 10% chance every 15 minutes to curl up for half an hour. At

night it sleeps properly. Waking it — a tap, a feed, a treat — costs 10

bond. That felt mean the first time I tested it, which is how I knew it

worked.


There's also a five-part story inside the device, told by a gatekeeper at

the end of a cable. Each episode explains one mechanic, so it doubles as

a manual.


Under the hood (for the *nix crowd)


- Next.js 16 on Cloudflare Workers, Turso/libSQL for data

- Pets are SVG, drawn from a DNA JSON derived from a hash

- Auth is shared with my other sites via a one-time-code handoff from

  auth.015959.xyz: SIWS or Google, host-only cookies per app

- Cloudflare Turnstile on every mutating route

- The wallet is for login only — nothing is signed on-chain, no gas,

  no transactions


Honest fine print


Coins are points right now, not money. No payout, no token, nothing to

buy. I'd rather say that plainly than have someone assume otherwise. Ads

cover the hosting.


Try it: https://solgotchi.015959.xyz


Tell me if it naps too much. I suspect it does.

Comments

Popular posts from this blog

using Class.getResource() load resource file in Eclipse

There are many ways to load resource file in java app. What sun recommended is using Class.getResource(" resource_name ") or Class.getResourceAsStream(" resource_name ") then you will get URL and InputStream respectively. If resource_name is specified without "/", it will be prepend with Class package. So resource file must be in same place[folder structure] as the Class. What I love to do is call getResource() with "/" and put resource file at the root of package. This way i can have separate resource folder. below is in Eclipse, 1. From Package explorer right click src folder->click import 2. In import dialog, Choose General->File System ->next 3. from directory:->Browse to your resource folder. 4. to folder:-> I add "resource" as a folder name under src folder. then click "Finish". In the code, load resource with this.getClass().getResource("/resource/buttons1.png") or this.getClass().getResourceAs...

Too many open files

Last week tomcat log file report many error about "Too many open files" when it has high traffic. Some in catalina_log say 2007-04-07 16:13:40 HttpProcessor[80][272] Starting background thread 2007-04-07 16:13:40 HttpConnector[80] accept: java.net.SocketException: Too many open files and here is from localhost_log 2007-04-07 16:13:40 StandardWrapperValve[myservlet]: Servlet.service() for servlet myservlet threw exception java.io.FileNotFoundException: /home/log/mylog_070407.log (Too many open files) This is because too many file descriptors're opened by tomcat. File descriptor can be limited in both system level and shell level. To check maximum number of fd in system type 'cat /proc/sys/fs/file-max'. In my case it is 65536(someone said it should set to 200000). Tomcat error when try to open socket number 272 so I think 65536 is ok for me for now. Anyway if u want to set it add 'fs.file-max = 200000' to /etc/sysctl.conf pnix@pnix-a7:~$ cat /proc/sys/fs/fil...

Mount ISO, CUE/BIN, NRG, IMG, MDF files in ubuntu

I known that to mount iso file pnix@pnix-a7n:~$ sudo mount -o loop file.iso mountpoint or pnix@pnix-a7n:~$ sudo mount -o loop -t iso9660 file.iso mountpoint and for cue/bin file ,I convert it to iso first use bchunk pnix@pnix-a7n:~$ bchunk file.bin file.cue file.iso but how about the others. After some search, I collect tips to handle many types of image file in linux. For nrg [ nero image ], img [ clone cd] and mdf [ alcohol 120% ] files, We need nrg2iso, ccd2iso and mdf2iso to convert those image files to iso image. Luckily, All are in Feisty repos. pnix@pnix-a7n:~$ sudo aptitude install nrg2iso ccd2iso mdf2iso Reading package lists... Done Building dependency tree Reading state information... Done Reading extended state information Initializing package states... Done Building tag database... Done The following NEW packages will be installed: ccd2iso mdf2iso nrg2iso 0 packages upgraded, 3 newly installed, 0 to remove and 0 not upgraded. Need to get 19.1kB of archiv...