個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗Contribution and verification rules: AGENTS.md. Independent PR reviews use a separate session; formal milestone reviews happen before a release tag.
Oravitsa is a cosy forest game prototype. The default scene is the endless Mossbank woods: a procedural 2.5D world with meandering roads and waterways, generated bridges, lakes, ruins, standing stones and abandoned camps. Walk in any direction through meadows, birch, pine and alder-marsh areas. Gather food and watch six wildlife species. See the endless-world guide, design and character reference.
Open this folder in Godot 4.7.2 and press F5, or run
godot --path . here. The opening runs a bot-controlled DEMO MODE: Oravitsa
explores, gathers food and reacts to wildlife without player steering. Choose
Start (click/tap, Enter or controller A/Start), read the rules and controls,
then confirm Begin game. This creates a fresh playable world; the demo never
loads or writes the manual save. Release held controls to begin. The demo plays
continuously until Start, preserving its world and progress. Its normal HUD
shows food, aura and hunger. She stocks up on mushrooms, stuns and collects
hares, visits villages and explores cave checkpoints before returning outside.
Pets are optional: she may adopt one when she has enough aura, and help it
finish hindered cave monsters. During play,
use WASD / arrows to walk. The camera follows Oravitsa;
map and help start hidden, toggled with M/H or their buttons. Walking over
food collects it with keyboard/touch; on controller press A/Cross nearby.
Water, trunks, large rocks, walls and the well block movement; use bridges to
cross the waterways. Low path and shore stones can be stepped over. The cottage
roof cuts away inside. Select an animal, then press Space to Shoo it.
Click an animal to
select it, then right-click, press F, or click Sling to throw a stone. On phones,
tap the animal and then the Sling button. A gold ring marks the selected
target; the ring turns red when it is too far away. Stones stun on impact for
4.5 seconds, with a 4-second cooldown and a 600 px firing range.
A hit on an animal that is already stunned does not extend the stun, so an
animal always gets to recover. Stunned animals stop moving and show a
dizzy-stars icon whose bar counts down, then recover. The sling
does not injure or remove animals. Oravitsa can walk straight through a
stunned animal without bumping it. Hares are the one exception to the
no-killing rule: unchecked, they would multiply out of control, so a
stunned hare can be collected for raw meat: walk up to it (or press A on a controller) while it is still stunned.
It is removed once and adds one raw meat to the inventory's third slot, with a
+1 raw meat notice. Alert hares, other species and a stunned Oravitsa cannot
collect. In the endless woods a collected hare does not respawn; the sparse
population brings a new hare later. In the finite scenes it returns like a caught
hare. Clicking or tapping empty ground clears
the selection. Movement and Shoo remain available while using the sling.
Shoo uses the same selected animal and range as Sling (600 simulation px, about 9.4 m in 2.5D). Space, the Shoo button or controller LT gives that animal five seconds of scared status, shown above its head as a sweat-drops icon with a time-left bar. It immediately abandons feeding/hunting and runs away from Oravitsa faster than she can walk. Existing animal stun is cleared so it can flee immediately. No target, a dead/out-of-range target, player stun or cooldown prevents the cast without wasting its seven-second cooldown. Other animals are unaffected; normal behavior returns after fear expires. Both skills remain non-lethal.
Animals avoid each other and Oravitsa, forage, or hunt according to species. In the endless woods, lingering close to a wolf, lynx or boar for a few seconds may make it angry: after a red anger-mark warning icon it charges (a red burst icon), and if it reaches Oravitsa she is stunned for two seconds. Back away or Shoo it to avoid the charge. Hitting one with the sling makes it angry too: once its stun wears off it warns and charges, unless you Shoo it or get well away. Afterwards it loses interest. Wolves, lynxes and boars of different species occasionally fight each other under a scuffle-cloud icon; the loser is stunned, never hurt. Bumping an awake animal stuns both of them for 1.2 seconds (stunned animals can be walked through); the skill bar shows Oravitsa's recovery countdown. Animal states are shown as icons on dark round badges above the animal, never as text; a timed state has a bar that empties as it runs out, and a stunned, scared animal shows both icons.
Oravitsa now uses the approved eight-pose walk in all eight directions, with separate westward views. Her gait follows actual movement and keeps its phase through turns; blocked movement and stun return her to a grounded idle pose.
Hares are frequent, deer and foxes are less common, boars are uncommon, and wolves and lynxes are more frequent than in the retained finite scene. The woods are deliberately sparse: the fixed seed starts with 34 animals: 17 hares, 8 deer, 3 foxes, 2 boars, 2 lynxes and 2 wolves, with two hares near arrival, and food patches are about a third as dense as in v0.1. Replenishment keeps species-specific chances. New arrivals and respawns wait outside the actual camera view, including its smoothing lag.
Terrain, trees, food and nearby animal models stream around the camera. Gathered food and wildlife state survive leaving and returning to an area during the session. The endless woods can be saved and resumed: press K to save and L to load, use the Save/Load buttons under Help, or press X/B on a controller while Help is open. There is one manual save slot and no autosave. The save restores Oravitsa's absolute location, inventory, cooldowns, depleted food with its regrowth deadlines, and wildlife state. Game time is paused while the game is closed. Finite scenes are not saved. Berries can regrow after 3–6 minutes and mushrooms after 5–9 minutes, with staggered timers. Due patches wait until offscreen before reappearing; leaving/revisiting a region does not reset their countdown. Rendering rebases its local origin during long walks; generated world data has no fixed playable border. Only nearby terrain and animal visuals stay loaded.
Along the roads you will find named hamlets (Koivula, Björkby, Sosnivka…) of closed, weathered cottages around the chieftain's canvas store tent, at about one road crossing in six. Villagers stroll around them and ignore Oravitsa, but shooing (−5) or hitting (−10) one costs aura. The hamlet's chieftain, crowned and armoured, stands at the tent's entrance. Next to him, press O (controller A, or the button that appears) to give him a random item from the bag for aura: raw meat +3, a mushroom or berries +1. Aura fades by one point per minute while it is above zero.
Each hamlet also keeps one or two mounts tethered beside the store tent: a grey donkey (needs 15 aura), a dark mule (35) or a horse (70). Next to one, press T (controller Y, or the button that appears) to ride it; the button says how much aura it needs when you have too little. Riding is faster (donkey ×1.3, mule ×1.5, horse ×1.8) but there is no sprint. A donkey halves the stuns Oravitsa suffers, a mule is sure-footed, and a skittish horse throws her off when something knocks her down. If her aura drops below a mount's requirement it leaves her and walks home. Mounts never go into caves: they wait at the mouth. Press T / Y again to get off; the mount waits where she left it, and saves remember it.
About three hamlets in five also keep a pet near the edge of the clearing: a cat, a Shiba Inu or, rarely, a husky. A label above each shows the aura it asks for: 20–40 for a cat, 40–65 for a Shiba Inu, 65–90 for a husky. Next to one, press G (controller A, or the Adopt button) to have it follow; the button says how much aura it needs when you have too little. Up to two pets follow Oravitsa a few metres behind, keep up when she sprints or rides, and come into caves with her, down to the second level and back out. Oravitsa never kills a monster, but her pets do: once one is stunned (Sling), scared (Shoo) or slowed (Slow), a pet runs at it and kills it with a bite, and it stays dead in that cave. Cats take rats, spiders and kobolds; dogs take goblins too. A spider's bite poisons a pet and a rat's or goblin's wounds it: it follows slowly and stops hunting until Oravitsa's Cure heals it (within 6 m). If her aura falls below a pet's threshold it goes home, and pressing G / A right beside a follower sends it home too. Saves remember her pets.
On higher ground there are cave mouths, each with its own name (Hiidenluola, Trollgrottan, Vovcha Pechera…). Signposts at road crossings point the way to the nearest hamlet and cave, with their names and distances. Walk into one to enter that cave's first level: dark tunnels and rooms lit by Oravitsa's lantern. Glowing checkpoints give +20 aura once each. Giant rats and spiders chase her and bite, which only stuns her for a moment. Underground the woods fall silent: a low drone, dripping water and echoing squeaks and hisses take over. Sling stuns one and Shoo drives one off; meanwhile it leaves her alone and she can walk through it. Oravitsa never kills them; only her pets do. Deep inside each cave an amber-lit shaft ringed with stones is the way down to a larger, darker second level, where checkpoints give +30 aura once each. Goblins hunt her there in packs and club her (again only a stun), while timid kobolds keep their distance until three of them gather, then dart in and snatch an item from her bag. The stone ring she arrives on is the way up. The way out is the sunlit spot where she came in. The surface waits, unchanged, while she is underground. You can save there too, and loading puts her back in the cave.
Aura is the game's points, shown at the top of the screen as a glowing halo with the number on it. Beside it a bowl and a meter show how well fed Oravitsa is. She grows hungrier as she walks and eats a random item from her bag every two minutes unless she is full. The better fed she is, the faster she walks (up to 120%) and the shorter she is stunned (down to half). Starving, with nothing to eat, she walks at 60% until she finds food.
The endless woods have a quiet looping forest ambience, and nearby animals occasionally call (wolves howl, boars grunt, foxes yip…). Distant ones stay silent. Press 9/0 or use the Help panel buttons to cycle forest and animal volume (100/60/30%/Off). In a browser, sound starts after your first click, key or touch. The sounds are original synthesized CC0 audio.
The earlier 192 × 192 m clearing remains playable at
res://scenes/forest_25d/clearing.tscn, with its three lakes, four bridges and
five abandoned sites. Its guide describes that
finite version. The independently pinned alpha draft remains unchanged by
this development branch.
The original painted 416 × 416 tile 2D forest remains playable at
res://scenes/forest_2d/forest.tscn; open it and press F6. Its dark blocked
ground and tile/sprite streaming are described in the
2D forest guide.
The earlier timed, single-clearing foraging loop remains available at
res://prototypes/foraging_2d/game.tscn; open that scene and press F6 to
play it. It includes the boar and deer and is documented in its
playtest guide. The
creation workflow records the original demo.
The project stays in Godot 4.7.2 / GDScript. Desktop keeps WASD, arrows, and Space, with F to fire the sling. Touch devices show a thumb stick, Shoo, and Sling buttons, with a HUD that adapts to portrait and landscape. Keyboard and touch input can coexist. The Compatibility renderer supports native desktop builds and WebGL 2 browsers.
Controllers use the left stick or D-pad to move and right-stick flicks to cycle nearby living animal targets. LT/L2 casts Shoo and RT/R2 casts Sling directly at the selected animal. A trigger fires once when pulled past 60% and re-arms after it is released below 30%, so holding it never repeats the cast. LB/L1 casts Slow on the selected animal (half speed for six seconds) and RB/R1 casts Cure, which ends Oravitsa's own stun or panic and heals her pets nearby. On the keyboard they are E and R. A/Cross picks up food within reach. Return the stick to center between targets. Each skill slot shows its button and its cooldown. Stick movement is analog with a deadzone, so gentle input walks more slowly. On Web, enter the forest and press a controller button to let the browser detect it.
Shoo and Sling appear in the bottom-left skill bar with icons, cooldown timers, and prompts that follow keyboard/mouse, controller, or touch input. Berries and mushrooms appear as icons and counts in the bottom-right inventory. On phones, the movement stick sits above the inventory. Map and Help start hidden; open or collapse them with their buttons, M/H, or controller Select/Start. In the endless woods a second press of Map opens the world map: everywhere Oravitsa has been, with the hamlets and caves she has found and their names. Pause (button beside Help, P/Esc, or the controller's right-stick click) freezes the game until you resume. In the endless woods Shift (or a click of the left stick) sprints: faster, but she gets hungry three times as fast, and not at all while starving.
Web export requires the standard (non-.NET) Godot 4.7.2 editor together with
its matching 4.7.2.stable export templates (install them in the editor via
Editor > Manage Export Templates). The .NET/Mono edition rejects Web export
even though this project uses only GDScript, and its templates
(4.7.2.stable.mono) are a different set. Select the standard executable with
--godot (or GODOT_BIN); tools/export.py stops early with an explanation
if the chosen engine is the .NET edition. Then:
# Website and native Linux/Windows executables
python3 tools/export.py all
# Or export only one target; --godot selects a specific engine executable
python3 tools/export.py web --godot /path/to/standard/godot
python3 tools/export.py linux
python3 tools/export.py windows
The Windows build is build/windows/oravitsa.exe; the Linux build is
build/linux/oravitsa.x86_64. From a clean candidate checkout,
python3 tools/package_release.py creates three downloadable ZIPs plus source
metadata and SHA-256 checksums under build/releases/<version>/. Packaging
does not create a tag or publish a release. See release policy.
Host build/site/ on an HTTPS static host. The browser explicitly decompresses
the engine, so startup does not depend on the host applying _headers or
Content-Encoding. Content-hashed assets can be reused from browser cache.
The Web copy includes only the active forest and compresses its imported
textures at 85% quality, reducing the initial download from about 53 to 20 MiB.
Source PNGs, native desktop imports, sprite dimensions, and gameplay stay intact.
Downloads run alongside engine compilation, with byte progress and a retry
message for failures or a stalled connection. The single-threaded Web export
needs no cross-origin isolation headers. The ordinary
uncompressed build/web/ export can also be served by a standard HTTP server.
Opening HTML directly with file:// will not work.
Recent Android Chrome and iPhone Safari with WebGL 2 and browser gzip decompression support (Safari 16.4 or later) are the mobile targets. Real-device performance should be checked before a wider release. There is no cloud game server or multiplayer service: hosting delivers the Godot game to each browser. No game progress is persisted across reloads.
The GitHub Build desktop and Web workflow runs the offline Python suites and gameplay/input/streaming smoke checks, then exports Web, Linux and Windows. Its three artifacts contain the ready-to-host website and native Linux/Windows builds. Linux package startup is checked through the log-aware runner; Windows package startup is also checked locally during release preparation.
python3 -m unittest discover -s tools -p 'test_*.py'
python3 -m unittest discover -s art -p 'test_*.py'
python3 tools/verify.py --godot /path/to/standard/godot
The runner imports and checks both forests, queued streaming and the retained
foraging prototype and the continuous bot/start/cave flow (twenty-nine smoke scripts). It rejects logged errors immediately
and preserves output on timeouts. Native package startup uses the same log
checks via python3 tools/verify.py --native-smoke /path/to/export.
The offline art tests mock paid APIs; they make no uploads or paid requests.
node art/test_walk_layout.mjs is a local artifact-dependent check: it requires
the ignored Blender render manifest and is not a clean-checkout CI gate.
scenes/endless_woods/ — current default, procedural terrain/roads/ecology,
sparse forage state, floating origin, local map and recovery pathfinding.scenes/forest_25d/ — shared 3D presentation and retained finite clearing,
terrain/water/foliage, cottage/bridge/well dressing and world map.scenes/forest_2d/ — shared simulation, input, HUD and approved heroine walk,
plus the retained painted forest scene and its map/tiles/props.prototypes/foraging_2d/ — earlier fixed-clearing game, retained as a
separate playable experiment.docs/character.md and character-drafts/ — canonical Oravitsa reference.art/ — asset generation/import/repair scripts and offline paid-job guards.
scenes/, scripts/, models/ and resources/ also retain earlier 3D
experiments.Oravitsa uses eight distinct directional atlases, each with an eight-pose walk loop. The shipped walk comes from a paid Tripo reconstruction and Meshy animation through fal.ai, followed by local mesh/rig repairs and Blender renders. See the experiment record and approved-walk provenance.
The 2.5D deer, foxes and wolves use rigged Quaternius models; hares, boars and lynxes use painted animated billboards. Their sources and the tree assets are recorded in asset attribution. The retained 2D tile/prop bitmap generation used no Tripo, fal.ai or OpenRouter credits; that statement does not apply to the heroine's paid 3D-to-sprite pipeline.
Wolves and lynxes sprint in long bursts and catch hares quickly; foxes also chase hares but usually miss and then rest, and they eat berries between hunts. Deer take three seconds of continuous close pursuit to catch; both prey species return later away from the player. A catch resets the predator's hunger; after 180 s without a catch it despawns, including offscreen. Stuck animals can plan a local collision-safe recovery route. The finite scenes retain their original ecology. Oravitsa never injures wildlife, and hares are the only wildlife she kills (a stunned hare collected as raw meat), because unchecked they would multiply out of control. The cave monsters are the other exception. There are no quests, swimming, building loot or camera orbit yet; this is an early playable alpha.