SlideShare a Scribd company logo
Ловушка универсализации
Что будет 
1. Проблема 
2. Наблюдения 
3. Варианты решения 
4. Эксперимент 
5. Решения для менеджера 
6. Решения для программиста 
7. Практика в Unity 
8. Вопросы
Prime World (PC)
Prime World: Defenders (PC, iOS, Android)
Blitzkrieg 3 (PC, Mac, Linux)
Etherlords (iOS, Android)
Что сделает программист 
если ему не “мешать”?
Проблема 
Бесполезно потраченные ресурсы на: 
• добавление не востребованного 
функционала (универсализация, 
“переиспользование” компонент) 
• излишнее упрощение (наведение красоты, 
чрезмерный рефакторинг) 
Следствие: 
• Падение мотивации менеджеров 
Дороговизна разработки 
• Усложненная инфраструктура
Наблюдения 
Тезисы: 
• Программисты любят упрощать (путь 
наименьшего сопротивления/красота) 
• Часто это не выгодно 
• Дольше в разработке не значит лучше (есть 
некоторый предел, по сравнению с забором)
Варианты решения 
На теории: 
• Архитектор 
• Технический дизайн 
На опыте: 
• Ретроспективы 
• “Чужие” компоненты 
• Метрики пора/не пора универсализировать 
Легко считается только при “заказе” 
всех изменений
Аппроксимации 
N – число ревизиий конкретной ветки/папки
Аппроксимации 
M = цикломатическая сложность, 
E = количество рёбер в графе, 
N = количество узлов в графе, 
P = количество компонент связности.
Аппроксимации 
N – число функций 
M – число вызванных функций в эталонном 
запуске
Эксперимент 
Не сработало: 
• Метрики 
• Архитектор 
Сработало: 
• Ретроспективы 
• Технический дизайн 
• Упрощение компонент
Решения для менеджера 
Направлять желание сделать 
“правильную” систему для часто 
модифицируемых элементов 
Примеры+: игровая логика, отладка, обслуживание, 
стабильность серверов/клиентов, аналитика, 
нотификации оператора, размер клиента, процесс сборки 
(opt) 
Примеры-: рендер, логи, архитектура (на поздних 
стадиях)
Решения для программиста 
1. Больше доверять программистам, которые 
не вы 
2. Понимать позицию заказчика 
3. Не тратить силы на порицания 
4. Передавать опыт/технологии 
5. Находить время подумать о деталях
Практика в Unity 
Требования к компоненте: 
• Тестируемость 
• Гибкость 
• Надежность 
Сильные стороны Unity API: 
• Асинхронность без callback 
• Компонентный подход 
• Reflection редактор 
• Runtime обновление public значений
Практика в Unity 
Под что в Unity нужно адаптироваться: 
• Смешанные MVC компоненты 
• Слабоуправляемый конвеер вызовов 
• Слабоуправлямая работа с памятью 
• MonoBehaviour должен находиться на 
GameObject
Практика в Unity 
Варианты архитектуры: 
• “Скриптовать” 
• Делить на ActiveComponents + Managers 
• Адаптировать архитектуру под Unity 
компонеты (IHTTP, IUnityData, IUnityView...)
Выводы 
1. Выделение компонент необходимо 
2. Нужно понимать разницу между 
практичностью и увлеченностью 
3. Делать проще чем хотели часто хорошее 
решение 
4. MVP бывает и на уровне проектирования
Индекс Хирша (h-индекс)
nival.com 
gamesjam.org 
oleg.chumakov@nivalnetwork.com 
twitter.com/gamescodedogs

More Related Content

PPTX
Wargaming.net: Архитектура современных 3D движков
PPTX
Aterdux Entertainment: Собственный движок как способ экономной и эффективной...
PPTX
Внедрение параллельного рендеринга в игровой движок
PPT
Архитектура современного 3 d движка: Разработка Xenus: Точка кипения
PPTX
Heyworks: Cравнительный анализ решений для клиент-серверного взаимодействия и...
PPTX
Well-executed architecture decisions for game backend on Unity
PPTX
Porting existing games to Apple Metal API. Case study: Divinity Original Sin ...
PDF
Никита Ефимов Lead UX Architect, New Cloud Technologies
Wargaming.net: Архитектура современных 3D движков
Aterdux Entertainment: Собственный движок как способ экономной и эффективной...
Внедрение параллельного рендеринга в игровой движок
Архитектура современного 3 d движка: Разработка Xenus: Точка кипения
Heyworks: Cравнительный анализ решений для клиент-серверного взаимодействия и...
Well-executed architecture decisions for game backend on Unity
Porting existing games to Apple Metal API. Case study: Divinity Original Sin ...
Никита Ефимов Lead UX Architect, New Cloud Technologies

What's hot (20)

PDF
Унификация взаимодействия
PPTX
Кикие вопросы нужно задать для выбора компьютера
PPT
Unreal Engine 4: Best Practices and Recent Showcases
PPTX
Алексей Алексеев ”Blitz-доклад”/ Wargaming
ODP
3D в браузерных играх, социальных сетях и на мобильных платформах
PPTX
Wargaming.net: Как мы впихнули танки в планшет
PDF
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
PPTX
Лучшие практики на практике
PDF
UI, сделай мне хорошо
PDF
Podlodka i os crew 8
PPTX
трики разработчика мобильных игр
PPT
презентация.1
PDF
SECON'2016. Парамонов Сергей, Автоматизируй это! Как не погрязнуть в рутине п...
PDF
"Как остаться в светлой памяти: доклад о том, почему наши приложения вылетают...
PDF
прототипирование юзабилити
PPTX
Test Driven Development in .NET Applications
PDF
11 HappyDev-lite'14 Андрей Казимиров. Особенности разработки по для встраива...
PDF
Александр Смага, Юрий Муратов - Meet Magento Ukraine - Технический обзор OroCRM
PPTX
Unity Editor Extensions for project automatization
PDF
Раскопки в интерфейсах
Унификация взаимодействия
Кикие вопросы нужно задать для выбора компьютера
Unreal Engine 4: Best Practices and Recent Showcases
Алексей Алексеев ”Blitz-доклад”/ Wargaming
3D в браузерных играх, социальных сетях и на мобильных платформах
Wargaming.net: Как мы впихнули танки в планшет
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
Лучшие практики на практике
UI, сделай мне хорошо
Podlodka i os crew 8
трики разработчика мобильных игр
презентация.1
SECON'2016. Парамонов Сергей, Автоматизируй это! Как не погрязнуть в рутине п...
"Как остаться в светлой памяти: доклад о том, почему наши приложения вылетают...
прототипирование юзабилити
Test Driven Development in .NET Applications
11 HappyDev-lite'14 Андрей Казимиров. Особенности разработки по для встраива...
Александр Смага, Юрий Муратов - Meet Magento Ukraine - Технический обзор OroCRM
Unity Editor Extensions for project automatization
Раскопки в интерфейсах
Ad

Similar to Nival: Как не увлечься погоней за универсализацией компонент (20)

PDF
Архитектура для мобильных игр - с чего начать и популярные решения / Евгений ...
PPTX
AI and navigation in games: problems, solutions, mobile platform optimization
ODP
Refactoring
PPT
2013-04-06 01 Максим Юнусов. Архитектура в agile-проекте
ODP
игровая логика, проблемы и решения
PPT
Архитектура в Agile проекте
PPTX
Производительность Unity3D: подводные камни / Алексей Чубарь (BIT.GAMES)
PDF
мартюшев почему юнит-тесты не работают. история большого проекта
PPTX
мартюшев почему юнит-тесты не работают. история большого проекта
PPT
Как поддерживать и развивать пачку "похожих" проектов. Кластер или конгломера...
PPTX
Genome
PPTX
Практические аспекты разработки ПО #3
PPS
Antipatterns in software (ru)
PDF
Unity: "Очевидное-невероятное” или хитрости разработки на Unity Android
PDF
Game Design and Programming. Stirred not Shaken
PPTX
Фича-компонентный подход при разработке игр
PPTX
«трудности при разработке сложных распределённых систем на Java. способы реше...
PDF
“Tips&Tricks&Antitricks with .Net Core backend in GameDev”
PPTX
SOLID – принципы объектно-ориентированного дизайна
PDF
Модифицируемость программных систем
Архитектура для мобильных игр - с чего начать и популярные решения / Евгений ...
AI and navigation in games: problems, solutions, mobile platform optimization
Refactoring
2013-04-06 01 Максим Юнусов. Архитектура в agile-проекте
игровая логика, проблемы и решения
Архитектура в Agile проекте
Производительность Unity3D: подводные камни / Алексей Чубарь (BIT.GAMES)
мартюшев почему юнит-тесты не работают. история большого проекта
мартюшев почему юнит-тесты не работают. история большого проекта
Как поддерживать и развивать пачку "похожих" проектов. Кластер или конгломера...
Genome
Практические аспекты разработки ПО #3
Antipatterns in software (ru)
Unity: "Очевидное-невероятное” или хитрости разработки на Unity Android
Game Design and Programming. Stirred not Shaken
Фича-компонентный подход при разработке игр
«трудности при разработке сложных распределённых систем на Java. способы реше...
“Tips&Tricks&Antitricks with .Net Core backend in GameDev”
SOLID – принципы объектно-ориентированного дизайна
Модифицируемость программных систем
Ad

More from DevGAMM Conference (20)

PPTX
The art of small steps, or how to make sound for games in conditions of war /...
PPTX
Breaking up with FMOD - Why we ended things and embraced Metasounds / Daniel ...
PPTX
How Audio Objects Improve Spatial Accuracy / Mads Maretty Sønderup (Audiokine...
PPTX
Why indie developers should consider hyper-casual right now / Igor Gurenyov (...
PPTX
AI / ML for Indies / Tyler Coleman (Retora Games)
PDF
Agility is the Key: Power Up Your GameDev Project Management with Agile Pract...
PPTX
New PR Tech and AI Tools for 2023: A Game Changer for Outreach / Kirill Perev...
PDF
Playable Ads - Revolutionizing mobile games advertising / Jakub Kukuryk (Popc...
PDF
Creative Collaboration: Managing an Art Team / Nastassia Radzivonava (Glera G...
PDF
From Local to Global: Unleashing the Power of Payments / Jan Kuhlmannn (Xsolla)
PDF
Strategies and case studies to grow LTV in 2023 / Julia Iljuk (Balancy)
PDF
Why is ASO not working in 2023 and how to change it? / Olena Vedmedenko (Keya...
PDF
How to increase wishlists & game sales from China? Growth marketing tactics &...
PDF
Turkish Gaming Industry and HR Insights / Mustafa Mert EFE (Zindhu)
PDF
Building an Awesome Creative Team from Scratch, Capable of Scaling Up / Sasha...
PPTX
Seven Reasons Why Your LiveOps Is Not Performing / Alexander Devyaterikov (Be...
PDF
The Power of Game and Music Collaborations: Reaching and Engaging the Masses ...
PPTX
Branded Content: How to overcome players' immunity to advertising / Alex Brod...
PPTX
Resurrecting Chasm: The Rift - A Source-less Remastering Journey / Gennadii P...
PPTX
How NOT to do showcase events: Behind the scenes of Midnight Show / Andrew Ko...
The art of small steps, or how to make sound for games in conditions of war /...
Breaking up with FMOD - Why we ended things and embraced Metasounds / Daniel ...
How Audio Objects Improve Spatial Accuracy / Mads Maretty Sønderup (Audiokine...
Why indie developers should consider hyper-casual right now / Igor Gurenyov (...
AI / ML for Indies / Tyler Coleman (Retora Games)
Agility is the Key: Power Up Your GameDev Project Management with Agile Pract...
New PR Tech and AI Tools for 2023: A Game Changer for Outreach / Kirill Perev...
Playable Ads - Revolutionizing mobile games advertising / Jakub Kukuryk (Popc...
Creative Collaboration: Managing an Art Team / Nastassia Radzivonava (Glera G...
From Local to Global: Unleashing the Power of Payments / Jan Kuhlmannn (Xsolla)
Strategies and case studies to grow LTV in 2023 / Julia Iljuk (Balancy)
Why is ASO not working in 2023 and how to change it? / Olena Vedmedenko (Keya...
How to increase wishlists & game sales from China? Growth marketing tactics &...
Turkish Gaming Industry and HR Insights / Mustafa Mert EFE (Zindhu)
Building an Awesome Creative Team from Scratch, Capable of Scaling Up / Sasha...
Seven Reasons Why Your LiveOps Is Not Performing / Alexander Devyaterikov (Be...
The Power of Game and Music Collaborations: Reaching and Engaging the Masses ...
Branded Content: How to overcome players' immunity to advertising / Alex Brod...
Resurrecting Chasm: The Rift - A Source-less Remastering Journey / Gennadii P...
How NOT to do showcase events: Behind the scenes of Midnight Show / Andrew Ko...

Nival: Как не увлечься погоней за универсализацией компонент

  • 2. Что будет 1. Проблема 2. Наблюдения 3. Варианты решения 4. Эксперимент 5. Решения для менеджера 6. Решения для программиста 7. Практика в Unity 8. Вопросы
  • 4. Prime World: Defenders (PC, iOS, Android)
  • 5. Blitzkrieg 3 (PC, Mac, Linux)
  • 7. Что сделает программист если ему не “мешать”?
  • 8. Проблема Бесполезно потраченные ресурсы на: • добавление не востребованного функционала (универсализация, “переиспользование” компонент) • излишнее упрощение (наведение красоты, чрезмерный рефакторинг) Следствие: • Падение мотивации менеджеров Дороговизна разработки • Усложненная инфраструктура
  • 9. Наблюдения Тезисы: • Программисты любят упрощать (путь наименьшего сопротивления/красота) • Часто это не выгодно • Дольше в разработке не значит лучше (есть некоторый предел, по сравнению с забором)
  • 10. Варианты решения На теории: • Архитектор • Технический дизайн На опыте: • Ретроспективы • “Чужие” компоненты • Метрики пора/не пора универсализировать Легко считается только при “заказе” всех изменений
  • 11. Аппроксимации N – число ревизиий конкретной ветки/папки
  • 12. Аппроксимации M = цикломатическая сложность, E = количество рёбер в графе, N = количество узлов в графе, P = количество компонент связности.
  • 13. Аппроксимации N – число функций M – число вызванных функций в эталонном запуске
  • 14. Эксперимент Не сработало: • Метрики • Архитектор Сработало: • Ретроспективы • Технический дизайн • Упрощение компонент
  • 15. Решения для менеджера Направлять желание сделать “правильную” систему для часто модифицируемых элементов Примеры+: игровая логика, отладка, обслуживание, стабильность серверов/клиентов, аналитика, нотификации оператора, размер клиента, процесс сборки (opt) Примеры-: рендер, логи, архитектура (на поздних стадиях)
  • 16. Решения для программиста 1. Больше доверять программистам, которые не вы 2. Понимать позицию заказчика 3. Не тратить силы на порицания 4. Передавать опыт/технологии 5. Находить время подумать о деталях
  • 17. Практика в Unity Требования к компоненте: • Тестируемость • Гибкость • Надежность Сильные стороны Unity API: • Асинхронность без callback • Компонентный подход • Reflection редактор • Runtime обновление public значений
  • 18. Практика в Unity Под что в Unity нужно адаптироваться: • Смешанные MVC компоненты • Слабоуправляемый конвеер вызовов • Слабоуправлямая работа с памятью • MonoBehaviour должен находиться на GameObject
  • 19. Практика в Unity Варианты архитектуры: • “Скриптовать” • Делить на ActiveComponents + Managers • Адаптировать архитектуру под Unity компонеты (IHTTP, IUnityData, IUnityView...)
  • 20. Выводы 1. Выделение компонент необходимо 2. Нужно понимать разницу между практичностью и увлеченностью 3. Делать проще чем хотели часто хорошее решение 4. MVP бывает и на уровне проектирования