Skip to main content

Installation Guide

This guide will walk you through setting up the Nyuron project on your local machine, from cloning the repository to running your first minigame.

Prerequisites

Before you begin, ensure you have:

Git

Version control to clone the repository

Godot Engine 4.5+

The game engine (download from godotengine.org)
Nyuron requires Godot 4.5 or later. The project is configured with config/features=PackedStringArray("4.5", "Mobile") in project.godot:16.

Step 1: Install Godot 4

1

Download Godot 4.5+

Visit godotengine.org/download and download Godot 4.5 or later.
Download the standard version, not the .NET/C# version. Nyuron uses GDScript exclusively.
2

Extract and Run

Extract the downloaded file and run the Godot executable. No installation is required - Godot is portable.On Linux, you may need to make it executable:
chmod +x Godot_v4.5-stable_linux.x86_64
./Godot_v4.5-stable_linux.x86_64
3

Verify Installation

Open Godot and check the version number in the project manager. It should show 4.5 or higher.

Step 2: Clone the Repository

Clone the Nyuron repository to your local machine:
git clone https://github.com/your-username/nyuron.git
cd nyuron
Replace your-username with the actual repository owner’s username.

Step 3: Open Project in Godot

1

Launch Godot Project Manager

Open the Godot Engine application. You’ll see the Project Manager interface.
2

Import the Project

Click Import in the project manager, then navigate to the cloned nyuron directory.Select the project.godot file and click Open.
3

Import Assets

Godot will scan and import all assets (sprites, sounds, scenes). This may take 1-2 minutes on first import.
The import process creates a .godot/ directory with cached/imported assets. This directory is gitignored.
4

Open the Project

Once import completes, select the project and click Edit to open it in the Godot Editor.

Step 4: Understanding the Project Structure

Once opened, you’ll see the following structure in the FileSystem dock:
res://
├── minigames/               # All 6 minigames
│   ├── turtle_run/
│   │   ├── scenes/
│   │   │   └── main.tscn   # Turtle runner main scene
│   │   └── scripts/
│   ├── worm_bucket/
│   │   ├── Scenes/
│   │   │   └── main.tscn   # Worm catching main scene
│   │   └── Scripts/
│   ├── food_catch/
│   │   ├── scenes/
│   │   │   └── Main.tscn   # Food catch main scene
│   │   └── scripts/
│   ├── memorice/
│   │   ├── scenes/
│   │   │   └── minijuego_memorice.tscn
│   │   └── scripts/
│   ├── counting_animals/
│   │   ├── scenes/
│   │   │   └── Main.tscn   # Counting game main scene
│   │   └── scripts/
│   └── nyuron_color/
│       ├── scenes/
│       │   └── Main.tscn   # Color matching main scene
│       └── scripts/
├── scenes/
│   ├── main_menu.tscn       # Main hub (run/main_scene)
│   └── intro.tscn           # First-time intro
├── scripts/
│   ├── main_menu.gd         # Menu controller
│   └── ScoreManager.gd.gd   # Autoload singleton
├── tienda/                   # Shop system
├── Accesorios/               # Character customization assets
├── TransitionBlocks.gd       # Autoload transition system
└── project.godot             # Project configuration
Each minigame is self-contained with its own scenes, scripts, and assets. You can test any minigame independently by opening its main scene and clicking Play Scene (F6).

Step 5: Verify Autoloads

Nyuron uses two critical autoloaded singletons. Verify they’re configured:
1

Open Project Settings

Go to Project → Project Settings in the menu.
2

Check Autoload Tab

Click the Autoload tab. You should see:
NamePathEnabled
TransitionBlocksres://TransitionBlocks.gd
ScoreManagerres://scripts/ScoreManager.gd.gd
These are defined in project.godot:18-21 and loaded automatically at startup.

Step 6: Run the Game

Now you’re ready to run Nyuron!

Option A: Run from Main Menu

1

Verify Main Scene

Go to Project → Project Settings → Application → Run.Ensure Main Scene is set to res://scenes/main_menu.tscn (configured in project.godot:14).
2

Run the Project

Press F5 or click the Play button (▶️) in the top-right corner.The main menu should appear with buttons for all 6 minigames.
3

Select a Minigame

Click any minigame button to launch it. The game will:
  1. Set the correct orientation (portrait/landscape)
  2. Adjust viewport size (270x480 or 480x270)
  3. Transition to the minigame scene
From scripts/main_menu.gd:204-232:
func _on_turtle_pressed():
    DisplayServer.screen_set_orientation(DisplayServer.SCREEN_LANDSCAPE)
    get_tree().root.set_content_scale_size(Vector2i(480, 270))
    get_tree().change_scene_to_file("res://minigames/turtle_run/scenes/main.tscn")

Option B: Run a Minigame Directly

You can also test individual minigames without the menu:
1

Open Minigame Scene

In the FileSystem dock, navigate to a minigame’s main scene. For example:res://minigames/turtle_run/scenes/main.tscn
2

Play the Scene

Press F6 or click the Play Scene button to run just that scene.
When running a minigame directly, you may need to manually set the correct viewport orientation for accurate testing:
  • Portrait games: 270x480 (worm_bucket, food_catch, memorice, nyuron_color)
  • Landscape games: 480x270 (turtle_run, counting_animals)

Step 7: Test Core Systems

Verify that the core systems are working:

Test ScoreManager

Play any minigame and complete a round. Then return to the main menu and check:
  1. Coins display in the top corner should update
  2. High scores should persist between sessions
  3. Progress panel should show your scores
From scripts/ScoreManager.gd.gd:65-77:
func save_high_score(game_name: String, new_score: int) -> bool:
    if not high_scores.has(game_name):
        print("Error: Juego '%s' no registrado" % game_name)
        return false

    if new_score > high_scores[game_name]:
        high_scores[game_name] = new_score
        save_to_file()
        print("Nuevo récord en %s: %d" % [game_name, new_score])
        return true
High scores are saved to user://high_scores.cfg (platform-specific location). On Linux: ~/.local/share/godot/app_userdata/nyuron/

Test Transitions

Watch for the spiral block transition effect when moving between scenes. This is handled by the TransitionBlocks autoload:
# From TransitionBlocks.gd:54-70
func wipe_to(scene_path: String, duration := 0.1):
    visible = true
    var delay_per_block := 0.004
    for i in range(blocks.size()):
        var idx = block_order[i]
        var block = blocks[idx]
        block.visible = true
        # ... creates spiral wipe effect

Mobile Testing (Optional)

To test on an actual mobile device:
1

Set Up Export Templates

Go to Editor → Manage Export Templates and download the Android/iOS templates.
2

Configure Export Preset

Go to Project → Export and create a new Android or iOS preset.Configure signing keys and permissions as needed.
3

Export and Deploy

Click Export Project and install the APK/IPA on your device.
The game is optimized for mobile with touch controls, portrait/landscape switching, and the mobile renderer (project.godot:43).

Troubleshooting

This usually means a script file is missing or has syntax errors. Check the Output panel for the specific file path and verify it exists.
Ensure you’re setting the viewport size before changing scenes:
get_tree().root.set_content_scale_size(Vector2i(width, height))
Verify in Project Settings → Autoload that:
  • TransitionBlocks points to res://TransitionBlocks.gd
  • ScoreManager points to res://scripts/ScoreManager.gd.gd
Both should have the asterisk (*) indicating they’re enabled.
Close the project and delete the .godot/imported/ folder, then reopen the project to force a full reimport.

Next Steps

Now that Nyuron is running, explore the codebase:

Architecture Overview

Learn about core systems and project structure

Minigames Deep Dive

Understand each minigame’s mechanics and code

ScoreManager API

Work with the global state management system

Creating New Minigames

Add your own minigame to the ecosystem
Pro tip: Use F6 to test individual minigame scenes during development, and F5 to test the full game flow from the main menu.

Build docs developers (and LLMs) love