ESP32-S3 Bench Guide
ESP32-S3 N16R8 bench guide: live pinout, lessons, simulators and the bench log.
翻譯準備中
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證an earth science laboratory platform
翻譯準備中
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
A gamified science learning platform for middle schoolers (ages 11–14). The first lab is Soil Science. Earth science, environmental science, biology, and chemistry show as "coming soon" on the hub. [README 설치·사용 부분 발췌] Getting started檢視完整 README ↗
A gamified science learning platform for middle schoolers (ages 11–14). The first lab is Soil Science. Earth science, environmental science, biology, and chemistry show as "coming soon" on the hub.
| Area | Route | What it does |
|---|---|---|
| Learn: Soil Science Curriculum | /soil/learn | A K-12 curriculum: 5 units and 16 lessons, each written at Elementary (K-5), Middle (6-8), and High School (9-12) depth. Every lesson has objectives, vocabulary, cited sections, an interactive (texture triangle, 3D profile, food web, nitrogen and carbon cycles, pH scale, and more), a hands-on activity, a quiz, sources, and NGSS standards. A grade-level dropdown in the header switches the depth everywhere. |
| Teacher Guide | /soil/teach | Printable unit plans by level: driving questions, objectives, vocabulary, activities, standards, and pacing. |
| Sources | /soil/sources | The bibliography every lesson draws on (USDA NRCS, Soil Science Society of America, FAO, Smithsonian, NOAA, Weil & Brady, Jenny). |
| Soil & Sprout | /soil/game | A cozy 3D farming game in the spirit of Stardew Valley. You inherit an overgrown organic garden: walk around, clear weeds, sticks, and stones, till, plant, water, and harvest. Crops grow over in-game days, and the clock only runs while you play. The soil under every tile stays hidden until you test it (lab kit, shovel test, infiltration ring). Seasons and daily weather matter: rain waters crops, storms wash away bare soil, heat waves dry it, and frost kills tender plants. Sell produce at Seed & Soil Co. or the shipping bin (organic sells for 25% more), then buy seeds, amendments, a bigger watering can, and buildings: a greenhouse for growing in any season, a compost bin, rain barrel, beehive, bird house, bug hotel, scarecrow, fences, flower beds, and paths. Bugs, fungi, birds, pond life, and weather go in a Nature Journal whose facts follow the grade level. |
| Soil Globe | /soil/globe | A 3D globe with 50 regions colored by USDA soil order or by texture class, region cards with a texture-triangle plot, and a "Guess the Soil" quiz. |
A 3D periodic table that opens on top of any page, so students keep their place. Open it with the ⚛️ Elements button in the header or the E key, and close it with Esc. It also has its own page at /elements, and /elements?z=26 links straight to an element. Element names in lesson text (nitrogen, phosphorus, iron, and more) link into it.
Progress (XP, levels, 18 badges, lesson scores, visited regions, journal pages) is saved in the browser's localStorage. There are no accounts. The farm saves itself every in-game hour, when you sleep, and when you leave the page.
| Key | Action |
|---|---|
| W A S D or arrows | Walk |
| Space | Use the item in your hand on the tile in front of you (harvests ripe crops, observes critters) |
| E | Interact whatever you're holding: talk to townsfolk, harvest, observe critters, open buildings and the notice board |
| Q | Quest log |
| 1–0 | Pick a hotbar slot |
| I | Bag (click two slots to swap) |
| J | Nature Journal |
| P | Pick up a building you placed |
| Esc | Pause menu: resume, change settings, or save and quit to the main menu |
| Mouse wheel | Zoom |
On touch screens, an on-screen D-pad and action button appear.
The game opens on a main menu. Start begins a new farm with the recommended (Classic) settings, Continue loads your saved farm, and New Game opens a setup screen (farmer, science features, time speed, calendar). There's one save per browser, kept in localStorage.
src/world/settings.ts): 18 realism features that can each be switched on or off: hidden soil, crop grades from soil, pH, nutrients, tillage damage, living soil, erosion, thirsty plants, waterlogging, crop rotation, planting seasons, pollinators, weeds, pests, temperature, frost & snow, energy, and bedtime. Presets: Sandbox (all off), Classic (all but waterlogging and temperature), and Real Science (all on). They can be changed mid-game from the pause menu.Crop grades (src/world/grades.ts): every harvest gets a grade from E (lowest) through D, C, B, A, to S (highest). Higher grades sell for more (E ×0.5 up to S ×2.2) and yield more. With the "Crop grades from soil" feature on, the grade comes from soil health, minus a penalty for hours the crop spent thirsty, waterlogged, weedy, or with pests, plus a bonus from amendments. With it off, only amendments raise the grade: compost, biochar, and fertilizer +2, mulch +1, lime +1 (+2 on acidic soil), so one compost gives C and three give S. Amendment bonuses are used up at harvest. Harvest amounts are a seeded roll in each crop's per-tile range (beans 2–5, tomatoes and potatoes 3–8, carrots 3–6, corn, wheat, and buckwheat 2–4, squash and sunflowers 1–3), scaled by grade: about half at E, normal at C, and up to triple at S. Graded produce stacks by grade. Space uses the item in your hand; E always harvests, observes, or opens.
Adding a science feature: add it to SCIENCE_FEATURES, wrap its code in on(state, "yourId"), and add a test in src/world/settings.test.ts showing it has no effect when off. A test fails if a feature is registered but never checked, or checked but not registered.
The map is two halves joined by a road through a forest strip: your farm on the west, and a town on the east (src/world/map.ts, src/world/town.ts). The town has Seed & Soil Co. (where you buy and sell), the County Extension Office, a square with a fountain and notice board, cottages, the Ortegas' cornfield, and an overgrown community garden. You can't build in town; buildings go on your own farm. Saves from before the town keep their farm and gain the town.
src/world/quests.ts): story quests from each person (deliveries, science requests like testing soil spots or raising pH, finding critters), and a three-step community project to restore the garden. The notice board posts two delivery requests a day that pay well and come down after 3 days. Deliveries take your lowest qualifying grade first. Q opens the quest log.Soil & Sprout is being ported to Godot 4 (GDScript) so it can run on the web and, later, on desktop and Steam. The project lives in godot/. Its web build is embedded at /soil/game/godot and shares the farm save (the same localStorage key and JSON format) and the site's grade level with the current game, which stays at /soil/game until the port catches up.
| Command | What it does |
|---|---|
npm run godot:fetch | Downloads the pinned Godot editor and the web export templates into node_modules/.cache/godot (or .godot-cache/ if it exists; about 150 MB; the templates are read straight out of the release archive) |
npm run godot:test | Runs the GDScript tests in godot/tests headless |
npm run godot:export | Copies public/models into the project, imports it, and exports the web build to public/godot/ (gitignored) |
The Godot build already plays the whole game: the main menu and new-game setup, the farm and town in 3D, tools, crops, weather, the HUD and tile inspector, the bag, shop, shipping bin, house and weather TV, the Nature Journal (at the site's grade level), the pause menu with every science setting, and the townsfolk, gifts, quests, and notice board. Its UI is in godot/ui, built with the site's colors and the Nunito font. Godot's web build has no emoji font, so node scripts/godot-assets.mjs downloads the emoji the game uses as pictures (Google's Noto emoji, Apache 2.0) into godot/assets/emoji; a test fails if one is missing.
Deploys: on Vercel, npm run vercel-build exports the Godot build before next build (Vercel runs it instead of build). Godot and its web templates are cached in node_modules/.cache/godot, which Vercel keeps between builds; the editor download is checked against its published SHA-512. If the Godot export fails, the deploy still succeeds and the preview page says the build isn't there. To playtest before the Godot version replaces /soil/game, see godot/PLAYTEST.md.
The game engine is ported to GDScript in godot/engine (one module per TS file, working on the same JSON-shaped world as the save). The TypeScript engine in src/world is the reference while the port is under way: src/world/godot-golden.test.ts writes fixtures to godot/tests/golden/, and the GDScript tests must reproduce them exactly. Besides unit fixtures (weather, maps, grades, critters, NPC routes, the notice board), four seeded playthroughs record every step of a bot playing the game (tools, planting, nights, shopping, quests, gifts) and Godot must match each step. The game's tables (crops, items, journal, NPCs, quests) are exported to godot/data/ the same way. Regenerate with GOLDEN=1 npx vitest run godot-golden; npm test fails if they're stale. Saves written by the Godot tests are loaded back by src/world/godot-roundtrip.test.ts. Site ↔ game messages are documented in godot/autoload/Site.gd.
The farm's 3D models and item pictures are free CC0 packs by Kenney (Nature Kit, Fantasy Town Kit, Survival Kit, Food Kit, Mini Characters) and Quaternius (Ultimate Crops; Ultimate Nature, with trees, rocks, stumps, and logs in autumn and snowy versions; and Farm Buildings: barns, silos, a windmill, a water tower, a well, and a chicken coop), committed under public/models and public/icons. Quaternius's OBJ source files live in assets-src/quaternius-*; npm run assets converts only the models the game uses to compressed GLB (rebuilding any missing .mtl colors from each pack's shared palette), re-downloads the Kenney packs, copies only the models the game uses, keeps only the three animations the farmers use, renders the item icons, and writes public/models/CREDITS.md. Both games draw their trees from Quaternius's textured Stylized Trees (assets-src/quaternius-trees: birches, maples, and dead snags; npm run assets packs them into small GLBs in public/models/qtrees with 256–512px textures), tinted gold and red in fall and bare in winter, with Ultimate Nature pines on the mountain and its stumps, logs, and rocks. Each model has a hand-built fallback shape, so the game still works while models load. Crops are composed from these parts at four growth stages (sprout, young, mature, ripe) in src/components/world/scene/cropLooks.ts, including real flower colors before fruit sets.
@react-three/fiber and @react-three/drei (globe, soil profile, farm game)zustand for progress, d3-geo + world-atlas for the globe texture (no external images)npm install
npm run dev # http://localhost:3000
Without any setup, progress is saved in the browser. With a Supabase project connected:
/account with an email and make classes at /teacher. Each class gets a
six-character join code and a progress table (XP, farm day, harvests, journal pages, last played)./account they choose Join my class, type the code and a first
name or nickname, and get three login words for other computers. A teacher can issue new words.To connect a project:
supabase/schema.sql (safe to run again after updates)..env.local for
development; see .env.example):
NEXT_PUBLIC_SUPABASE_URL and NEXT_PUBLIC_SUPABASE_ANON_KEY (Supabase → Project Settings → API; the
anon or publishable key)SUPABASE_SERVICE_ROLE_KEY (the service-role or secret key; server only, used to make student accounts)https://*.vercel.app/** to the redirect URLs, so teacher confirmation emails link back to the site.npm run typecheck
npm run lint
npm test # texture classifier, farm simulation, progress rules, data consistency
npm run build
npm start & # then:
npm run smoke # loads every page in Chromium, plays the farm game, fails on console errors
app/ routes (hub, /soil, /soil/learn/[slug], /soil/game, /soil/globe)
src/content/soil/ curriculum (units, leveled lessons, quizzes) and the source registry
src/data/ soil orders, globe regions, and the 118 elements
src/lib/soil/ USDA texture-triangle classifier
src/game/ crop data (what each crop takes from and gives back to the soil) and the seeded RNG
src/world/ the farm game's pure simulation: clock, weather, map, items, engine, nature, journal
src/store/ progress rules (pure) and the zustand store
src/components/ UI, split into learn/, world/, globe/, elements/
public/models, public/icons Kenney CC0 game art (regenerate with npm run assets)
The farm simulation (src/world/engine.ts) is pure: state + action → state, with seeded weather, weeds, pests, and critters. tick(state, minutes) advances the clock; tools, planting, the shop, and building are plain functions. React (src/components/world/) only renders it: a zustand store runs the clock with requestAnimationFrame, pauses for menus and hidden tabs, and saves to localStorage. Tests in src/world/engine.test.ts cover growth, weather, frost, the greenhouse, money, composting, saving, and the journal.
Adding a new lab means adding routes under app/<lab>/, content under src/content/<lab>/, and enabling its tile in app/page.tsx.
See CONTENT_SOURCES.md for where the science content comes from and which facts to double-check.