Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

19 Commits

Folders and files

Repository files navigation

Ферма маленького милого призрака — версия на Defold

Перенос JS-версии (корень репозитория) на движок Defold (Lua). Цель та же: Telegram Mini App (HTML5) и APK, плавность на слабых телефонах. Логика, свой скелет и генерация мира перенесены один в один: из того же seed получается тот же мир, что и в JS.

Запуск

Открыть game.project в редакторе Defold → Project → Build (Ctrl+B).

Сборка из командной строки (bob входит в jar редактора):

"D:/Defold/packages/jdk-25.0.4.1+1/bin/java.exe" -cp "D:/Defold/packages/defold-<версия>.jar" com.dynamo.bob.Bob --root D:/FarmDefoldGames --variant debug build

Как устроено

game.project            настройки (лимиты спрайтов, мип-карты, HTML5/Android)
render/                 своя отрисовка: мир — ортокамера с зумом, интерфейс — в пикселях окна
main/main.script        сборка: ферма, камера, ввод на карте (тап, панорама, щипок, колесо, WASD)
main/*.go               прототипы спрайтов для фабрик (атлас земли и атлас мира)
gui/hud.gui_script      интерфейс: верхняя панель, задание, кнопки, меню у точки, окна, уведомления,
                        надписи над миром (+3, таблички участков, номера очереди)
gui/kit.lua             помощники разметки (точки ≈ CSS-пиксели, скругления, текст, значки)
farm/                   логика без Defold (проверяется обычным Lua)
  data.lua              весь баланс (как src/game/data.js)
  world.lua             генерация мира из seed, участки, сохранение разницы
  farm.lua              действия, рост, энергия, опыт, эффекты (как src/game/Farm.js без отрисовки)
  player.lua            призрак: путь, очередь до 6 действий
  skeleton.lua          свой движок скелетной анимации (кости, слоты, скины, смешивание)
  ghost_data.lua        кости и анимации призрака (сгенерировано из src/game/ghost.js)
  pathfinding.lua       A* по 8 направлениям
  quests.lua            сюжет и задания
  camera.lua, iso.lua   камера и изометрия 2:1
  view.lua              отрисовка в Defold: спрайты из фабрик, глубина через z
  save.lua, app.lua     сохранение (sys.save) и общее состояние мира и интерфейса
assets/                 атласы (ground, world, gui), шрифт Inter (OFL)
tools/                  подготовка графики из JS-версии

Графика

tools/export_code_art.mjs выгружает в PNG то, что JS-версия рисует кодом (призрак, инструменты, значки над грядками, берег пруда, текстуру воды по ромбам). tools/build_assets.py берёт картинки художника из assets/art и эту выгрузку, дополняет каждую прозрачными полями так, чтобы точка опоры была в центре, и пишет атласы и farm/art_meta.lua (масштаб и размеры каждого спрайта).

node defold/tools/export_code_art.mjs     # из корня репозитория, нужен Playwright
python3 defold/tools/build_assets.py

Карта мира (редактируется в Defold)

Мир берётся из map/farm.tilemap. Откройте его в редакторе Defold двойным щелчком и рисуйте кистью плитками из палитры (map/palette.png). Карта показана ровной сеткой «сверху»: левый верхний угол — верхний угол ромба в игре, вправо — ось, идущая в игре вправо-вниз, вниз — влево-вниз.

Слои (переключаются в панели Outline справа):

  • ground — земля: трава, дорожка (песок), вода, грядка;
  • objects — деревья, кусты, камни, валун и дом (2×2 — ставятся в левую верхнюю клетку), колодец, призрак (место появления);
  • zones — зелёные клетки: участки, открытые с начала игры (достаточно одной клетки в участке 10×10).

Объект ставится только на свободную траву, иначе игра пишет в консоль map: ... does not fit. После правки карты старые сохранения берут объекты с новой карты (деньги, уровень, грядки сохраняются). Палитру пересобирает python3 tools/make_map.py palette; export перезаписывает карту сгенерированным миром.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages