Game Manual

Spinny-title Mechanical-title

Table of Contents

Key Features

  • Explore Vibrant Worlds: Discover levels full of animations and effects that will captivate your senses.
  • Level Editor: Unleash your creativity with a powerful level editor featuring tens of different entities, backgrounds, weather effects, and hundreds of assets.
  • LevelEditorScreenshot
  • Multiplayer Mode: Engage in split-screen multiplayer mode for up to 4 players, perfect for playing with friends or family members.
  • MultiplayerScreenshot
  • Immersive Experience: Enjoy day-night cycles, fractal Brownian motion clouds, caustics, rain, lightning, and storms that will draw you into the game world.
  • ImmersiveScreenshot
  • Advanced Sound and Vibration System: Feel and hear the world around you with 3D spatial sound and advanced vibration system. Headsets are recommended for a truly immersive experience.
  • Built-in Chat Client and Server: Communicate with other players using the built-in multiplayer chat client and server, featuring touch keyboard, notifications, and more.
  • ImmersiveScreenshot

NFC Functionality

This game supports NFC (Near Field Communication) cards to interact directly with the game. Currently, NFC cards allow players to quickly open the Load Slot screen (load game menu).

Requirements

  • An NFC reader connected to your computer (e.g., ACS ACR122U).
  • Python 3.x installed with the pyscard library.
  • The Python listener script (listener.py) running in the background.
  • Cards registered in uid_actions.json with the target set to love.

How to Use NFC Cards

  1. Start the Python listener by running: python listener.py. A small popup will appear when a card is detected.
  2. Launch the game (make sure NFC.lua is included in the project).
  3. Tap an NFC card on the reader. If recognized, the game will automatically open the Load Slot menu corresponding to that card.
  4. The popup will display the card UID and icon (if configured in uid_actions.json).

Adding New Cards

  • Get the UID of your new NFC card.
  • Add a new entry to uid_actions.json with the payload, icon, and target:
  • "04 AA BB CC DD EE FF": {
        "nfc_payload": {
            "action": "load",
            "slot": 3
        },
        "target": "love",
        "icon": "icons/slot3.png"
    }
          
  • Restart listener.py to load the new card mapping.

Notes

  • Currently, NFC cards only support opening the Load Slot menu, but future updates may support additional in-game actions.
  • Ensure the Python listener is running before starting the game; otherwise, NFC cards will not be recognized.

Story Mode Features

  • Engaging Storyline: Follow an engaging storyline with dialogues and A.I.-powered NPC interactions.
  • RPG Elements: Enjoy save/load system, progression system, missions & objectives in story mode, perfect for players who enjoy RPG games.
  • MultiplayerScreenshot

Story

Baron Cogsworth, a mechanical genius with a penchant for steampunk inventions, and obsessed with turning Verdantia’s natural beauty into a world of gears and metal, used his mechanical army to capture and corrupt the animals of Verdantia.

Controls

Here you will find the control scheme for the game.

Control Scheme
  • You move the player with the thumbstick or analog stick
  • You can interact with objects by pressing up or the key 'Y'
  • The guide buttons opens the chathud with which you can chat, talk to npcs or execute commands
  • The radial menu and zoom are triggered by pressing the RT and LT Buttons and by moving the right thumbstick
  • Open the inventary and missions with the LB and RT Buttons
  • Mobile Features

    Touch Gestures

    • Pinch to Zoom: Use two fingers to pinch outward or inward on the screen to zoom in or out. Zoom works during gameplay.
    • Pinch to zoom
    • Swipe down to pull the menu: Release to select an option.
    • Pull Menu

    Radial Menu

    Description: Touch with two fingers to open the radial menu. Slide your finger toward an option, then release.

    Radial Menu

    Story game elements

    Story game elements

    • Dream altars are scattered across various stages. "When you rest at one, your dreams are preserved.ou can resume your adventure exactly where you left off.
    • Pinch to zoom
    • Progression System - Rescue animals to advance through the story"
    • Rescue-animals
    • Missions & Objectives - Complete specific challenges"
    • Rescue-animals
    • RPG elements - Collect,use, trade items, engange with npc"
    • Rescue-animals

    Jigoku mode

    Jigoku mode

    • Jigoku mode: A streamlined, high-performance version that stays faithful to the original, with only essential additions: touch controls, mobile screen layouts and pull menu.
    • Based on latest update from the original developer of the game and engine Ricky Thomson (aka Jigoku): https://github.com/Jigoku/boxclip
    • jigoku-mode

    Memory modes

    Memory modes

    • By default, the game launches in Low Memory Mode. This reduces memory usage by approximately 2 GB. You can switch to High Quality Mode at any time via the pull-down menu or radial menu. Ensure you have at least 2 GB of additional RAM before enabling it, or your system may freeze. The game requires a minimum of 4 GB of RAM. Multiplayer and High Quality Mode need at least 6–8 GB of RAM.

    ChatHUD Overview

    Features

    • 📘 ChatHUD Overview
    • ChatHUD is a powerful chat interface that serves three main purposes:
    • 1. 💬 Chat Server Communication
      Connects to a NoobHub chat server by default. If no special command is detected, it sends input as a standard chat message.
    • 2. 🤖 AI Interaction (GPT4All / Ollama)
      Routes command-style input to either:
      - GPT4All (default local model)
      - Ollama (e.g. for character-based or advanced interactions)
      Supports backend switching via commands like:
      switch to gpt4all, switch to ollama
    • 3. 🖥️ Terminal-Like Commands with Autocomplete
      ChatHUD includes an intelligent command-line interface supporting autocomplete. You can:
      - Configure settings
      - Toggle features
      - Send commands like: set temperature to, enable music, quit game, set server to
    • 🎁 Bonus – NPC Interaction with Whiskers (AI):
      Use talk to whiskers [question] to interact with an AI-powered in-game cat.
      Whiskers uses the Ollama backend to provide answers with fuzzy matching and synonyms.
    • ChatHUD Screenshot

    Useful Commands

    System Commands

    • set temperature to
    • set max tokens to
    • set model to
    • set api url to
    • switch to gpt4all
    • switch to ollama

    Feature Toggles

    • enable / disable touch controls
    • enable / disable performance mode
    • enable / disable day night
    • enable / disable speech

    NPC Interaction

    • talk to whiskers + question
    • Example: talk to whiskers tell me about baron cogsworth

    Messaging

    • send to channel
    • send to user + username + message
    • set username to + new username
    • set server to + IP of the noobhub server

    NoobHub Overview

    What is NoobHub?

    • 📘 NoobHub: Network multiplayer and messaging for CoronaSDK, Moai, Gideros, LÖVE & Defold
    • GitHub Repository

    How to Start NoobHub

    1. Open ChatHUD:
      - Press the guide key (gamepad), or
      - Open pull menu > select "ChatHUD"
      Open ChatHUD
    2. Select "Start NoobHub" from the contextual pull menu
      Start NoobHub
    3. On successful start:
      - You’ll see a notification that you've joined the main channel
      - Your nickname appears in the user list
      - The listening port is shown
      NoobHub Connected

    Alternatively, run the original server from: src/extras/NoobHub/server/

    • Follow instructions at: NoobHub GitHub
    • Start it with: nodejs node.js (requires Node.js)

    Lua vs Node.js

    🟦 Lua / LÖVE2D NoobHub

    • Fully integrated—no external server needed
    • Includes new features like message notifications
    • Best for local or lightweight multiplayer/chat

    🟧 Node.js Original Server

    • Fully compatible
    • Lacks newer features (e.g. notifications)
    • Updates may favor the Lua version

    🚀 Performance Notes

    • Node.js: High concurrency, asynchronous, scalable
    • Lua: Simpler, ideal for embedded or small-scale usage

    Connecting to External Servers

    • set server to + IP — connect to external NoobHub
    • send to user + username + message — send private messages
    • set username to + new username — change nickname
    • By default, all messages go to the main channel

    NPC Interactions

    AI-Powered NPCs

    • One of the most advanced features of this game is the use of AI-powered NPCs.
    • You can interact with characters using natural language, thanks to integrated AI models.
    • NPCs have access to an internal knowledge base. They can answer questions about gameplay, story, characters, settings, menus, and even help with puzzles.
    • Each NPC has a distinct personality and stays consistently in character, making conversations feel realistic and immersive.
    • In addition to answering questions, NPCs can also change game settings. Simply type the relevant command — the chat interface features autocomplete, and you can use the TAB key to select suggestions.
    • NPC Interaction Screenshot
    • To talk to an AI-powered NPC, locate them in the game world. They may be found inside houses, buildings, or out in the open. To initiate a conversation, press the interact button (Y) or enter the area where the NPC is located.
    • Requirements for NPC Interactions:
    • 1. ollama must be installed on your local or remote machine.
    • 2. An AI model must be installed via ollama.
    • Note: The NPC interaction system and the chat interface (ChatHUD) are still under development. Some options may not be configurable yet — defaults should be used.
    • The required model for NPCs is: qwen3:b
    • By default, the NPC system will search for ollama locally. To use a remote instance, type the command:
      set api url to "IP_ADDRESS_OF_OLLAMA"
    • ⚠️ Do not confuse this with set server to IP, which is for configuring the NoobHub messaging server.
    • While there is a command set model to, it only applies to the GPT4ALL backend, which is not used by the AI-powered NPCs.
    • Installing Ollama and Required Models (Ubuntu):
    • For other OS or distributions, refer to the official documentation for your system.
    • 1. Open a terminal and run:
      curl -fsSL https://ollama.com/install.sh | sh
    • 2. Verify that Ollama is running by visiting localhost:11434 in your browser. You should see the message “Ollama is running”.
    • Installing the Required Model:
    • Use this command to install the LLM:
      ollama pull qwen3:b
    • You can check the wiki for further instructions Spinny the runner: Wikie. "Default Model for Npcs"
    • This specific model is required for the NPC interaction system to function correctly.
    • Note: This requirement is temporary until model selection via terminal is implemented.
    • Advanced Tip (For Developers Only):
    • If you're experienced and know what you're doing, you can hardcode the model in the following file:
      extras/chatHud/chathud.lua
      Look for this section and modify accordingly:
      if backend == "ollama" then
          requestBody = {
              model = "qwen3:b",
              prompt = userMessage
          }
          apiUrl = OLLAMA_API_URL
      end
                
      ⚠️ Do not edit this unless you understand the implications.

    🗣️ Enabling NPC Voice with Coqui TTS

    • In addition to text-based interaction, NPCs can speak aloud using a local Text-to-Speech (TTS) engine powered by Coqui TTS.
    • This adds a new layer of immersion by giving each character a voice.

    ✅ Requirements:

    • Install and run a local Coqui TTS server on port 5002.
    • Ensure your firewall or security settings allow local HTTP requests.

    🔧 Setup Instructions:

    1. Install Coqui TTS:
      You need Python 3.8+ and pip. Run:
      pip install TTS
    2. Start the TTS Server:
      Use this command to launch the API server:
      tts --model_name "tts_models/en/ljspeech/tacotron2-DDC" --vocoder_name "vocoder_models/en/ljspeech/multiband-melgan" --use_cuda false --port 5002
    3. Test the Server:
      Visit http://localhost:5002/docs to confirm it’s running.
    4. How It Works In-Game:
      • When an NPC speaks, the text is sent to the Coqui TTS server via HTTP.
      • The response audio is saved locally as output_audio.wav.
      • The audio is immediately played back using love.audio.newSource.

    📜 Internal Logic Summary:

    • Spoken lines are added to a speechQueue via queueTextToSpeech(text).
    • processSpeechQueue() handles playback one at a time and calls textToSpeech(text, callback).
    • The system waits until each line is finished before continuing, using audioSource:setFinishCallback().
    • Music volume is restored after speech ends.

    💡 Developer Tips:

    • The audio is played from output_audio.wav. If needed, you can update the filename per NPC or use in-memory audio with Love2D’s SoundData.
    • Callback support ensures that dialogue and actions can resume once speaking ends.
    • You can customize cooldowns, audio fading, or background music handling in processSpeechQueue.

    VR Mode

    Immersive VR Panorama

    VR Mode Screenshot
    • VR Mode allows you to step into the game world in full 3D, with head tracking and panoramic immersion.
    • To enter VR mode, navigate the main menu to: Extras > VR Mode.
    • You require a device equipped with accelerometers and/or a gyroscope (such as a phone, VR glasses, or certain controllers) for full motion tracking.
    • If no motion sensors are detected, you can still explore the VR environment using the joystick thumbsticks on your controller.
    • Head tilting and rotation are mapped directly to accelerometer or gyroscope data, creating a natural sense of looking around and leaning.
    • If you reset your view (press R on keyboard or Y on joystick), your head orientation and offsets will return to neutral.
    • To enable post-processing effects such as CRT framing and scanlines, go to Settings > Graphics > Post-processing and select Toggle Moonshine.
    • Tip: Moonshine shaders are supported only on x86_64 architectures. If you encounter performance issues, try disabling unnecessary shaders and/or enable Performance Mode for smoother gameplay.
    • VR Mode Screenshot
    • Requirements for VR Mode:
    • 1. A compatible device with motion sensors (accelerometer/gyroscope) or a game controller with thumbsticks.
    • 2. A display such as a monitor, phone, or VR glasses that can run the game in standard 2D.
      Note: LÖVE does not natively support stereoscopic (dual-eye) rendering. The VR mode simulates immersion using head tracking, camera offsets, and shaders rather than true 3D split-screen output.
    • 3. (Optional) A joystick/gamepad for smoother navigation and comfort.
    • Compatible VR Devices (via LÖVR bridge):
    • LÖVR supports most **OpenXR and OpenVR devices**, including:
      • • Oculus / Meta Quest (Quest, Quest 2, Quest Pro, Quest 3)
      • • Oculus Rift (CV1, Rift S)
      • • HTC Vive (Vive, Vive Pro, Vive Cosmos)
      • • Valve Index
      • • Windows Mixed Reality headsets
      • • Pico Neo / Pico 4
      • • Most SteamVR-compatible headsets
    • Additionally, smartphones with gyroscopes can be mounted into simple VR glasses (e.g. Google Cardboard-style headsets) and used as motion trackers via companion apps or direct sensor access.
    • Setting Up the VR Tracking Server (LÖVR side):
    • 1. Install LÖVR on your VR-ready PC or headset (standalone Quest headsets require SideQuest or similar to run custom apps).
    • 2. Place the provided vr_sender.lua file in your LÖVR project folder.
    • 3. Run the LÖVR script with your headset connected:
    • VR Mode Screenshot
    • lovr vr_sender.lua
    • 4. The script will start streaming your headset (and controller, if supported) position and orientation data over UDP to the game.
    • 5. No extra configuration is needed inside the game: as soon as you enable VR Mode, the client will automatically listen for tracking data.
    • For the full VR tracking bridge and setup instructions, visit the LOVR2LOVE repository.
    • Controls in VR Mode:
    • Head tilt/rotation → camera orientation (if sensors are active).
    • Left stick → move forward/backward, strafe left/right.
    • Right stick → adjust view yaw/pitch offsets (manual look).
    • R / Y → reset view to default center.
    • Tips for Best Experience:
    • • Use a headset with built-in sensors for the most immersive effect.
    • • Ensure enough physical space around you to avoid collisions.
    • • If you experience motion sickness, take frequent breaks and reduce head movement sensitivity in the settings.
    • • Combine joystick navigation with natural head tilts for smoother exploration.