Godot 4.7 top-down 2D JRPG (GDScript)
  • Python 71.1%
  • GDScript 28.9%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-10-24 18:18:03 +03:00
addons/godot-git-plugin Add git plugin 2026-10-24 16:43:13 +03:00
assets/sprites Add NPC dialog 2026-10-24 17:56:48 +03:00
resources Base OpenCode commit 2026-10-23 16:13:56 +03:00
scenes Add NPC dialog 2026-10-24 17:56:48 +03:00
scripts Add NPC dialog 2026-10-24 17:56:48 +03:00
tools Add NPC dialog 2026-10-24 17:56:48 +03:00
.editorconfig Initial commit 2026-10-23 15:45:29 +03:00
.gitattributes Initial commit 2026-10-23 15:45:29 +03:00
.gitignore Add NPC dialog 2026-10-24 17:56:48 +03:00
AGENTS.md Add AGENTS.md 2026-10-24 18:18:03 +03:00
icon.svg Initial commit 2026-10-23 15:45:29 +03:00
icon.svg.import Initial commit 2026-10-23 15:45:29 +03:00
project.godot Add NPC dialog 2026-10-24 17:56:48 +03:00
README.md Add NPC dialog 2026-10-24 17:56:48 +03:00

Ant Inc

2D JRPG с видом сверху на Godot 4.7.

Запуск

Откройте project.godot в Godot 4.7 и нажмите F5. Главной сценой сейчас назначена временная тестовая комната scenes/dev/dev_room.tscn.

Управление

Действие Клавиши
Движение (8 направлений) WASD, стрелки
Взаимодействие E, Space, Enter

Игрок

scenes/player/player.tscn + scripts/player.gd:

  • CharacterBody2D с движением в 8 направлений и ускорением.
  • Анимации idle_* / walk_* для четырёх направлений (resources/player_sprite_frames.tres).
  • Camera2D с зумом 3× и ограничениями, которые задаёт тестовая комната.
  • InteractionArea — Area2D перед игроком. Объекты взаимодействия должны быть в группе interactable и могут иметь метод interact(player). Нажатие E вызывает этот метод и сигнал interacted(target).
  • Слои физики: игрок — слой 2, мир — слой 1. Игрок сканирует слой 1, объекты мира — слой 2.

NPC и диалоги

Старейшина стоит в тестовой комнате рядом со стартовой позицией игрока. Подойдите к нему и нажмите E (или Space / Enter) — откроется диалоговое окно.

  • scenes/npc/npc.tscn + scripts/npc.gd — статичный NPC (StaticBody2D). Имя говорящего (speaker_name) и реплики (lines) задаются в инспекторе. NPC сам добавляется в группу interactable, а метод interact(player) открывает диалог.
  • scenes/ui/dialogue_box.tscn + scripts/dialogue_box.gd — окно диалога, подключённое автозагрузкой Dialogue в project.godot.
  • Пока окно открыто, дерево сцены на паузе, поэтому игрок не двигается. Повторное нажатие E показывает следующую реплику, после последней — закрывает окно и снимает паузу.

Чтобы добавить нового NPC, перетащите scenes/npc/npc.tscn на уровень, задайте ему имя и реплики в инспекторе. Из кода диалог можно открыть так:

Dialogue.show_dialogue("Имя", ["Первая реплика", "Вторая реплика"])

Структура

assets/sprites/       плейсхолдерная графика (персонаж, NPC, трава, дерево, камень)
resources/            SpriteFrames игрока
scenes/player/        сцена игрока
scenes/npc/           сцена статичного NPC
scenes/ui/            окно диалога (автозагрузка Dialogue)
scenes/dev/           временная комната для проверки
scripts/              player.gd, npc.gd, dialogue_box.gd, dev_room.gd
tools/                генератор плейсхолдерной графики

Плейсхолдерная графика

Спрайт-лист персонажа — сетка 4×4 из кадров 32×32 (строки: вниз, влево, вправо, вверх; столбцы: idle, шаг A, idle, шаг B). Замените assets/sprites/player/player_sheet.png своей графикой с такой же сеткой.

Спрайт старейшины — один кадр 32×32: assets/sprites/npc/elder.png.

Перегенерировать плейсхолдеры:

python tools/generate_placeholder_art.py

Тестовую комнату и её скрипт можно удалить, когда появится настоящий уровень; не забудьте сменить run/main_scene в project.godot.