[HN Gopher] Show HN: Mochia, a virtual pet browser game, built w...
       ___________________________________________________________________
        
       Show HN: Mochia, a virtual pet browser game, built with Rust,
       SolidJS, Postgres
        
       Around three years ago, I was reminiscing about how much I loved
       playing Neopets as a kid. Meanwhile, I was also looking for a
       project to better learn Rust and SolidJS. So.. I figured making my
       own virtual pet browser game would be a fun way to practice! Since
       then, I've been working on it nearly every day, and.. it's grown
       quite a bit! Here are some bulleted lists for your convenience:
       Technical Details:                 * Backend monolithic Rust server
       runs on a single $5/month VPS            * Lean frontend with just
       3 dependencies (SolidJS, Solid Router, and Mutative)            *
       Around 130,000 combined lines of code (frontend + backend)
       * Rust server uses axum, sqlx, tokio, rand, strum, tungstenite
       (websockets)            * No server crashes or data loss in 3 years
       (thank you Rust + Postgres!)            * Almost all graphics (500+
       assets) are SVGs for perfect detail at every zoom level
       * Fully mobile responsive and playable on all modern browsers and
       devices            * Actor model for player actions enables trivial
       parallel, multi-core scaling            * Single page application
       that preloads entire game world on initial page load            *
       Instantaneous navigation between pages (no additional page fetches
       required)            * Lightweight game engine for minigames,
       powered by custom WebGL shaders            * Rust is the single
       source of truth for data structures shared between browser and
       server            * Custom derive macros used to autogenerate
       TypeScript bindings and binary decoding functions            *
       Binary WebSocket messages with custom protocol for client-server
       communication            * O(1) selection for nested, weighted-
       random item reward pools            * Minigames can be played
       without an account (but rewards can't be saved)
       Features:                 * Completely free to play with no ads or
       tracking            * Multiplayer browser-based virtual world with
       80+ locations to explore            * Dark mode toggle switch
       * Simple minigames that smoothly run at your display's refresh rate
       * Public leaderboards that track the top scores in each minigame
       * Pet training system with turn-based card-based battle arena
       * Dynamic player economy with player-run shops            * Player
       guilds that members can level up to unlock perks            *
       Abandoned mines area created by maze generation algorithm
       * Create / adopt pets, adorn them with hats, give them pets, change
       their color, etc.            * 220 items to collect (food, toys,
       cosmetics, books, charms, tiny creatures, etc.)            * In-
       game currency with banking, auctions, stock market, and jobs system
       * Villagers you can talk to, befriend, and complete quests and jobs
       for            * Optional push notifications (like for when you win
       an auction)            * 38 achievement avatars to unlock
       * Social features: befriend others, send gifts, and share your
       recent activity            * NPC shops that restock over time
       (sometimes with very rare items!)            * Luck system with
       ways to boost your luck for better rewards            * Many
       puzzles that grant items or MP (currency) when solved            *
       Fishing, gardening, caves, random events, fountains, galleries,
       etc.            * Wheels to spin, treasure maps to complete, and
       secrets to explore!            * Much, much more but I don't want
       to spoil everything!            Links:                 * Website
       URL: https://mochia.net            * Community Discord:
       https://discord.gg/ub6z8YH866            * Gameplay Video:
       https://www.youtube.com/watch?v=CC6beIxLq8Q            *
       Screenshots Album: https://imgur.com/a/FC9f9u3            I'd love
       to answer any questions, hear any thoughts, or read any sort of
       feedback or criticism!
        
       Author : lemphi
       Score  : 7 points
       Date   : 2025-07-03 17:00 UTC (6 hours ago)
        
 (HTM) web link (mochia.net)
 (TXT) w3m dump (mochia.net)
        
       | npinsker wrote:
       | I played Neopets a long time ago. It meant a lot of different
       | things to a lot of people, and -- while you're obviously not 100%
       | there yet -- it's incredibly impressive to have done such a large
       | piece of it on your own.
       | 
       | That said, I always saw the "core fantasy" of the experience as
       | developing a relationship with your pet(s). I liked having to
       | feed my pet, and read books to it, and then it would talk to me
       | back. Playing games and going on adventures were framed as being
       | done "with" your pet. The pets were well-drawn and cute, and the
       | higher-level cosmetic items were expensive but very desirable.
       | 
       | From your page, I wasn't sold on that fantasy, or any fantasy in
       | particular. If you look at the popular pet-care games nowadays,
       | they have a fraction of the features you do while still (clearly)
       | striking a chord with a huge number of people. Maybe part of it
       | is because they focus on that relationship more? Especially in
       | today's world -- but even back in 2000 -- I think features like
       | games, items, stats, etc. need to tie in to some sort of greater
       | fantasy in order to catch interest.
       | 
       | You don't have to care about any of this though, especially since
       | you're making it for yourself. It looks fun and the tech stack
       | seems awesome.
       | 
       | Is it actually possible to play minigames without creating an
       | account? I couldn't figure out how.
        
         | lemphi wrote:
         | Thank for you for this thoughtful reply!
         | 
         | Yeah, I definitely hear you with regard to the "greater
         | fantasy" aspect. Some other players have also recently
         | mentioned their desire for more fleshed out lore. It's
         | something I personally struggle with but I should definitely do
         | better in this regard, as I do want mochia to be enjoyed by
         | more people.
         | 
         | You currently can feed your pets, give them toys, and read
         | books to them (each book also has unique text that you can read
         | inside, often with secrets about the world), and your pets
         | should reply with their reaction (as different pet species like
         | different things), but I agree with you that a lot of these
         | interactions don't really "sell" themselves, and they certainly
         | deserve more polish.
         | 
         | And yes, the minigames don't require an account. My apologies,
         | I should have been more clear in the original post on exactly
         | what a minigame is in this context. These are the locations
         | that start off with a black tutorial screen, and then generally
         | involve a game loop. Most other locations require an account
         | because they require making a request to the server, but
         | minigames can just be played entirely client-side just for fun.
         | Here's some of my favorite ones that don't require a login:
         | 
         | https://mochia.net/map/airia/shrumble
         | 
         | https://mochia.net/map/whisperwood/enspell
         | 
         | https://mochia.net/map/treehollow/snarf
         | 
         | https://mochia.net/map/treehollow/loose-lambs
         | 
         | https://mochia.net/map/airia/leapscape
         | 
         | https://mochia.net/map/whisperwood/stellara
         | 
         | https://mochia.net/map/airia/sugar-rush
         | 
         | https://mochia.net/map/dunespire/pyramid/brick-break
         | 
         | https://mochia.net/map/ghoulery/spelunker
         | 
         | https://mochia.net/map/whisperwood/comet-rush
         | 
         | https://mochia.net/map/whisperwood/fruit-blast
         | 
         | https://mochia.net/map/whisperwood/radiant-revival
         | 
         | https://mochia.net/map/flakefall/matchicle
        
       ___________________________________________________________________
       (page generated 2025-07-03 23:01 UTC)