Розробка мобільної гри на SceneKit (iOS) — під ключ

Створення 3D-гри для iOS — це завжди пошук балансу між продуктивністю, графікою та термінами. Ми розробляємо нативні ігри на SceneKit та Swift, використовуючи вбудований фізичний рушій, анімації та ARKit без сторонніх залежностей. Наша команда реалізує проєкт під ключ — від концепції до публікації в App Store, забезпечуючи стабільну роботу та подальшу підтримку.

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1734 послуг
Розробка мобільної гри на SceneKit (iOS) — під ключ
Складний
від 1 тижня до 3 місяців
Часті запитання

Ми спеціалізуємося на розробці 3D-ігор для iOS з використанням нативного фреймворку SceneKit. Часто клієнти приходять з готовою ідеєю, але не знають, який технологічний стек обрати між Unity, Unreal та SceneKit. SceneKit — не Unity і не Unreal: немає візуального редактора pipeline, немає Asset Store, менше готових рішень. Але це й не сирий Metal: фізичний рушій, анімації, shader модифікатори, AR-інтеграція через ARKit — все входить в SDK без сторонніх залежностей. Для iOS-ексклюзивних 3D-ігор середньої складності це цілком робочий варіант, особливо якщо команда глибоко в Swift/Objective-C.

Сцена, ноди, рендеринг

Базова одиниця — SCNNode. Сцена — дерево нодів: корінь SCNScene.rootNode, до нодів прикріплені геометрія (SCNGeometry), світло (SCNLight), камера (SCNCamera), фізичне тіло (SCNPhysicsBody). Відмінність від SpriteKit у тому, що SceneKit працює в 3D-просторі з координатами SCNVector3, а трансформації задаються через simd_float4x4 (або зручні властивості position, eulerAngles, simdTransform).

Завантаження сцени з .scn-файлу (редагується прямо в Xcode Scene Editor):

let scene = SCNScene(named: "GameLevel.scn")!
let scnView = SCNView(frame: view.bounds)
scnView.scene = scene
scnView.allowsCameraControl = false
scnView.rendersContinuously = true // важливо для анімацій
view.addSubview(scnView)

rendersContinuously = true — якщо не виставити, SCNView рендерить тільки при зміні сцени. Для ігор з постійним рухом потрібен постійний рендер. Зворотна сторона — споживання батареї. Для меню з рідкісними змінами залишаємо false.

Фізика та колізії в 3D

SCNPhysicsBody трьох типів: .static (нерухомі об'єкти, колайдер не рухається), .dynamic (під керуванням фізики), .kinematic (рухається кодом, ігнорує сили, але бере участь у колізіях). Персонаж гравця зазвичай kinematic — ми рухаємо його через код, але стіни та підлога його зупиняють.

Форма колайдера впливає на продуктивність сильніше, ніж у 2D. Використовуйте капсулу для персонажа, а не складну геометрію:

let capsule = SCNCapsule(capRadius: 0.3, height: 1.8)
let physicsShape = SCNPhysicsShape(geometry: capsule, options: nil)
player.physicsBody = SCNPhysicsBody(type: .kinematic, shape: physicsShape)

Колізії обробляються через SCNPhysicsContactDelegate. Налаштовуйте categoryBitMask, collisionBitMask, contactTestBitMask — тільки для потрібних пар, щоб не перевантажувати didBegin.

Анімації: CAAnimation та SCNAnimationPlayer

Скелетна анімація імпортується з .dae (Collada). Перемикання між idle, run, jump робимо з blendInDuration для плавності:

func transition(to key: String, blendDuration: CGFloat = 0.3) {
    let player = characterNode.animationPlayer(forKey: key)!
    player.blendInDuration = blendDuration
    player.play()
    currentAnimationKey.flatMap {
        characterNode.animationPlayer(forKey: $0)?.stop(blendOutDuration: blendDuration)
    }
    currentAnimationKey = key
}

Без blendInDuration персонаж «стрибає» між позами — це перше, що помічає гравець.

Шейдери та постефекти

SceneKit дозволяє підключати GLSL/Metal шейдери через SCNMaterial.shaderModifiers. Типове застосування — розчинення об'єкта при смерті:

let dissolveShader = """
#pragma transparent
#pragma body
float threshold = u_dissolveAmount;
float noise = ... // шум за координатами
if (noise < threshold) discard_fragment();
_output.color.a = smoothstep(threshold - 0.05, threshold, noise);
"""
material.shaderModifiers = [.fragment: dissolveShader]

SCNTechnique — для постобробки всього екрану (bloom, outline, depth of field). Конфігурується через plist-словник.

ARKit інтеграція

SceneKit — перший і основний рендерер для ARKit:

let arView = ARSCNView(frame: view.bounds)
let config = ARWorldTrackingConfiguration()
config.planeDetection = [.horizontal, .vertical]
arView.session.run(config)

ARSCNView автоматично синхронізує SCNScene з AR-координатним простором. Це основа для AR-ігор — ринок ARKit + SceneKit добре закритий прикладами Apple.

Як оптимізувати продуктивність SceneKit?

SCNView за замовчуванням використовує Metal на iOS 9+. Кілька правил, які реально впливають на fps.

Batching: SceneKit автоматично об'єднує draw calls для нодів з однаковим матеріалом. Тому 1000 дерев з одним матеріалом набагато дешевше, ніж 100 дерев з 100 різними матеріалами. Використовуй SCNMaterial інстанси, не створюй новий об'єкт матеріалу для кожного нода.

Level of Detail через SCNLevelOfDetail: для об'єктів на відстані більше 20 метрів можна показувати спрощену геометрію. Це знижує навантаження на GPU.

Occlusion culling: SceneKit робить frustum culling автоматично, але occlusion culling (приховування об'єктів за іншими об'єктами) — ні. Для складних сцен це потрібно робити вручну через isHidden = true за результатами ray cast або логіки рівня.

Інструмент для профілювання: Xcode → Metal System Trace + Render Graph. Ціль — не більше 30–50 draw calls для гри зі стабільними 60 fps на iPhone X. На одному з проектів ми оптимізували рендеринг з 40 до 60 fps, зменшивши кількість draw calls вдвічі за рахунок об'єднання матеріалів.

Коли варто відмовитися від SceneKit?

Мультиплатформа (iOS + Android + PC) — Unity або Godot. Складна фізика тіл з деформацією — Unity з Havok. Масивні відкриті світи — теж Unity/Unreal. SceneKit хороший для iOS-ексклюзиву з помірною 3D-складністю, AR-додатків та ігор, де важлива нативна інтеграція (Game Center, CloudKit).

Процес роботи

  1. Аудит ТЗ: тип гри, чи потрібен AR, цільові пристрої, мінімальна версія iOS, асети.
  2. Прототип ігрової механіки: рух, фізика, базова камера — 1–2 тижні.
  3. Core gameplay: рівні, вороги/перешкоди, UI (SwiftUI поверх SCNView).
  4. Аудіо: AVAudioEngine для 3D-звуку.
  5. Інтеграція Game Center, IAP, ARKit.
  6. Полірування продуктивності, тестування на слабких пристроях.

Що входить в роботу

  • Вихідний код з коментарями
  • Документація по архітектурі та збірці
  • Тестовий білд через TestFlight
  • Публікація в App Store (аккаунт розробника надається клієнтом)
  • Гарантійна підтримка 30 днів після релізу

Орієнтири по термінах

Тип проекту Термін
Прототип / proof of concept 2–3 тижні
Казуальна 3D-гра без AR 1,5–2 місяці
3D-гра з AR + Game Center 2–3 місяці
Складний проект (відкритий світ, мультиплеєр) Обговорюється окремо

Вартість розраховується індивідуально після аналізу ТЗ та наявності готових асетів.

Наш досвід: реалізували більше 10 3D-проектів на SceneKit, включаючи AR-додатки з високою продуктивністю. Всі проекти пройшли модерацію App Store без відхилень.

Пишіть — оцінимо ваш проект за 1 робочий день. Розробка під ключ з нуля до публікації. Офіційна документація Apple по SceneKit.

Наші компетенції:

Останні роботи

  • Розробка мобільного додатка для компанії FEEDME
    Розробка мобільного додатка для компанії FEEDME
    1010
  • Розробка мобільного додатку для компанії XOOMER
    Розробка мобільного додатку для компанії XOOMER
    903
  • Розробка мобільного додатку для компанії RHL
    Розробка мобільного додатку для компанії RHL
    1332
  • Розробка мобільного додатку для компанії ZIPPY
    Розробка мобільного додатку для компанії ZIPPY
    1180
  • Розробка мобільного додатку для компанії Affhome
    Розробка мобільного додатку для компанії Affhome
    1107
  • Розробка мобільного додатку для компанії FLAVORS
    Розробка мобільного додатку для компанії FLAVORS
    714