A browser-based multiplayer survival game inspired by florr.io.
License notice: As of July 2026 this project is licensed under the GNU General Public License v3.0 or later (previously ISC). If you distribute this software or a modified version of it, you must do so under the same license and make the corresponding source code available.
Requires Node.js 22+
npm install
npm run build # builds cpp, webpacks the client, compresses bundle
npm start # compiles the server and runs dist/server.jsOpen https://localhost:3000.
| Script | Purpose |
|---|---|
npm run build |
Build cpp module, bundle client (production), compress bundle |
npm run build:server |
TypeScript compile of the server only |
npm run build:client |
TypeScript compile of the client only |
npm start |
Build server and run dist/server.js |
npm run dev |
Webpack dev watch |
npm run dev:server |
Run server under ts-node-dev |
The world is divided into biomes (ocean, desert, jungle, etc.) with their own mobs, rarities, and scaling. Biome maps are created in MapEditor.html and loaded from JSON (see map.json, example_biome_map.json).
common, uncommon, rare, epic, legendary, mythic, ultra, super, unique and apex.
- Multiplayer via raw WebSockets, with cross-server portals for transferring between server instances(server transfer disabled in default map)
- Biome system with per-biome mob pools, spawners, and scaling
- Petal crafting across the rarity ladder
- Guilds & squads, chat, and a leaderboard
- PvP arena with dedicated spawner and rendering
- Bots for populating servers
- Daily streak rewards and a tutorial flow for new players
- Map editor (
MapEditor.html) for authoring biome layouts - Persistence via custom JSON database
- HTTPS support (drop
cert.crt/cert.keyat the project root)
Players:
/help— list available commands/list_all,/list_common,/list_uncommon,/list_rare,/list_epic,/list_legendary,/list_mythic,/list_ultra,/list_super,/list_unique— list mobs of the given rarity
Chat accepts limited inline HTML: <b>, <i>, <u>, <span style="color:…">, <blink>.
Flag a user as admin by setting "admin": true on their record in dist/inventory.json (or the SQLite row). Admins can run server commands from chat with /admin <cmd> or /cmd <cmd>. Non-admins attempting admin commands get "Command does not exist". All admin invocations are logged server-side.
Typed on the server's stdin, or via /admin in chat:
save/save <playerId>— persist player progresslist-players,list-sockets— enumerate connectionsspawn <mobType> <rarity> [x y]— spawn a mob (e.g.spawn hornet legendary 1000 2000)spawn_special_mobs— spawn ultra/super/unique tiersset_max_enemies <n>— cap concurrent enemy count
Mob types include: bee, hornet, mantis, ladybug, soldier_ant, leafbug, bush, target_dummy, item_spawner. See src/mobs.ts for the current list.
src/
server.ts, server/ # server entry + managers (players, enemies, guilds, squads, bots, cross-server)
game.ts, player.ts # client game loop and player state
graphics/ # rendering (flower, enemies, panels, minimap, effects)
petals.ts, petal_action/ # petal configs and per-petal behaviors
mobs.ts, enemy.ts # mob definitions and AI
inventory.ts, shop.ts # inventory, crafting, shop
chat.ts, guildMenu.ts # chat and guild UI
map_data.ts # biome/map loading
database.ts # JSON persistence
ws_client.ts, ws_server.ts, signaling.ts # networking
cpp/ # native physics module (built with make)
assembly/ # AssemblyScript sources
assets/ # images and SVGs
scripts/ # build helpers (e.g. compressbundle.js)
MapEditor.html # standalone biome map editor
TypeScript, Canvas 2D, Socket.IO + ws, Express, better-sqlite3, Webpack
Make sure you have PM2 installed Paste update_aws.sh contents into terminal
Run "/admin update" in server chat
Copyright (c) 2026 sussybite8888
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. See LICENSE for the full text.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
Versions of this project prior to the relicense were distributed under the ISC License.