Все работы

Ironworks

Своя игра студии в жанре «построй завод»: от бура на рудном поле до производственных линий. Пишем на Swift без сторонних библиотек, здания рисуем через Blender.

Тип
Своя игра, в разработке
Платформа
iPhone и iPad, iOS 17
Что делали
Геймдизайн, код, арт
Год
2026
Ironworks

Задача

Заводские стратегии на телефоне обычно либо упрощают механику, либо начинают тормозить, когда завод разрастается. Цель — полноценная симуляция, которая держит 120 кадров в секунду на экранах ProMotion.

Архитектура

Симуляция — чистый Swift без SpriteKit. Она идёт фиксированными шагами, 60 раз в секунду, и одинаково считается на любом устройстве. Отрисовка отдельно: SpriteKit рисует до 120 кадров и сглаживает движение между шагами.

Мир генерируется из зерна шумом GameplayKit и хранится чанками. У каждого чанка своя тайловая карта, поэтому на экране только то, что видно. Камера приближает от 0,25 до 2× с инерцией.

Что уже работает

Размещение и поворот зданий, инвентарь и ручной крафт, буры на топливе, ленты с двумя полосами, подземные ленты и разделители, манипуляторы и ящики. 112 автотестов и ноль предупреждений компилятора — это правило проекта. Следующие этапы — плавильни и сборочные машины.

Арт

Здания моделируются в Blender, рендерятся сверху и переводятся в пиксель-арт в палитре игры: охра, графит и бирюза.

Шаг симуляции и кадр отрисовки

Вся линия от бура до ящика движется от одного спускового колеса на 60 зубьев: это шаг симуляции. Маховик рядом крутится плавно, как отрисовка на 120 кадрах.

IRONWORKS
Рука манипулятора с рудой — за ней и следитеСпусковое колесо, 60 зубьев: один зуб — один тик симуляцииМаховик и полотно ленты — картинка, плавная между тикамиНастольная модель линии из Ironworks — стратегии про заводы для iOS на Swift 6 и SpriteKit. Симуляция написана на чистом Swift без SpriteKit и шагает фиксированными часами, 60 обновлений в секунду: спусковое колесо проворачивается на один зуб за тик, и вал двигает линию шагами. Отрисовка идёт отдельно, до 120 кадров в секунду на ProMotion, и интерполирует между тиками, поэтому маховик крутится, а лента и руда скользят плавно. Мир генерируется из сида чанками. На столе буры сыплют руду на ленту с двумя полосами, манипулятор переносит её в плавильню, слитки падают в ящик; из этого в игре уже готовы буры на топливе, ленты, манипуляторы и ящики (этапы M0–M6).

Технически

  • Фиксированный шаг 60 раз в секунду, отрисовка до 120 кадров на ProMotion.
  • Бур выдаёт кусок руды за 150 шагов, полоса ленты везёт до 7 предметов в секунду, цикл манипулятора — 54 шага.
  • Мир из зерна: шум GameplayKit, чанки с тайловыми картами, камера 0,25–2× с инерцией и щипком.
  • Данные игры — в JSON: предметы, рецепты, здания и стартовый набор.
  • Swift 6 и SpriteKit без сторонних зависимостей, 112 тестов на Swift Testing.

Swift 6 · SpriteKit · SwiftUI · GameplayKit · Blender

Обсудим ваш проект?

Обсудить проект