Nival: Почему ваш Unity проект должен работать в консоли?

15
Почему ваш Unity проект должен работать в консоли?

description

Если вы сможете сделать так, что ваш Unity проект будет иметь консольную версию — вы сильно упростите жизнь программистам и QA. Помимо более гладкой архитектуры кода, вы сильно выигрываете в скорости починки сложных проблем. Доклад основан на опыте разработки и оперирования Prime World.

Transcript of Nival: Почему ваш Unity проект должен работать в консоли?

Page 1: Nival: Почему ваш Unity проект должен работать в консоли?

Почему ваш Unity проект должен работать в консоли?

Page 2: Nival: Почему ваш Unity проект должен работать в консоли?

Что будет

1. Специфика Prime World2. Как реализовать вынос кода в

консоль3. Зачем4. Чем пришлось пожертвовать5. Что удалось выиграть6. Вопросы

Page 3: Nival: Почему ваш Unity проект должен работать в консоли?

• Проект на Unity• Проект с сервером• Проект большой (>20k CCU)• Команда тоже большой (>90 человек)• Проект на PC• Проект в оперировании

Prime World

Page 4: Nival: Почему ваш Unity проект должен работать в консоли?

Найди кота

Page 5: Nival: Почему ваш Unity проект должен работать в консоли?

Прекрасное рядом

public string Path{ get { return this.Parent.Path + _name; }}

Page 6: Nival: Почему ваш Unity проект должен работать в консоли?

Как

Выносим код из Unity в отдельную DLL:1. Windows Standalone выносим и все;2. AOT выносим и собираем с помощью Mono;3. Browser делаем ссылки на *.cs файлы.

Только если очень нужно:using UnityEngine;using UnityEditor;

Page 7: Nival: Почему ваш Unity проект должен работать в консоли?

Зачем

Тестирование• Unit тесты• Все плюшки NUnit + ReSharper• Автоматический прогон тестов на

компьютере без Unity

Профилировние• dotTrace vs Unity Profiler• *Profiler• Полный цикл жизни логики(реакция

на сервер, реакция на большие/частые пакеты, чат)

Page 8: Nival: Почему ваш Unity проект должен работать в консоли?
Page 9: Nival: Почему ваш Unity проект должен работать в консоли?
Page 10: Nival: Почему ваш Unity проект должен работать в консоли?

Зачем

Архитектура• Нет лишних зависимостей (DI)• Компоненты обособлены и

тестируемы• Возможность авто проверок на

соответствие Code Standarts

Скорость разработки• Компиляция без реимпорта ассетов• Работа в Visual Studio• Скорость пересборки• Работа в Visual Studio

Page 11: Nival: Почему ваш Unity проект должен работать в консоли?

Чем пришлось пожертвовать

• Дублирование струтур (BB, GameObject, etc)

• Батничек для тех, у кого нет Visual Studio

• Много Iкода• Иногда протащить что-то куда это

хорошая программерская задача• Хитрые StackTrace

Page 12: Nival: Почему ваш Unity проект должен работать в консоли?

Что удалось выиграть

• 60% оптимизация операций при загрузке

• Детальное понимание памяти• Упрощение архитектуры клиента• Повышение скорости починки багов:

Breakpoint + Умение "играть по логам"

Page 13: Nival: Почему ваш Unity проект должен работать в консоли?

Найди PhysX

Page 14: Nival: Почему ваш Unity проект должен работать в консоли?

Прекрасное рядом

public string Path{ //get { return this.Parent.Path + _name; }

get { return _cachedPath; }}