Mobile .NET gamedev is not only Unity

32

Transcript of Mobile .NET gamedev is not only Unity

Page 1: Mobile .NET gamedev is not only Unity
Page 2: Mobile .NET gamedev is not only Unity

Кросс-платформенная игровая разработка на .NET

Июль 15, 2015

Perepechko Grigory.NET Tech Lead

Page 3: Mobile .NET gamedev is not only Unity

$549.1Выручки

в 2014

миллионов5.7DAU

миллионов18.5

MAUмиллионов

$0.27DARPU

53%Выручки с

телефонов

Page 4: Mobile .NET gamedev is not only Unity

2010Компания основана в 7

Платформ

5Игр

1000+Сотрудников

Page 5: Mobile .NET gamedev is not only Unity
Page 6: Mobile .NET gamedev is not only Unity
Page 7: Mobile .NET gamedev is not only Unity
Page 8: Mobile .NET gamedev is not only Unity

https://3.downloader.disk.yandex.ru/preview/5e18301535bb4524b1222c59c1ef6e86239c866d5ea8446a79b509ed8268e980/inf/7mv97l0_f1GRcB8bRLC8M-9AMsDKsusPdhF_VpGw_JjRypK0epAInHHgi4pRhSAUdCmOsdggjm7mTiGS9j2Kew%3D%3D?uid=0&filename=wpss201507140013png&disposition=inline&hash=&limit=0&content_type=image%2Fpng&tknv=v2&size=1280x947

Page 9: Mobile .NET gamedev is not only Unity

https://3.downloader.disk.yandex.ru/preview/5e18301535bb4524b1222c59c1ef6e86239c866d5ea8446a79b509ed8268e980/inf/7mv97l0_f1GRcB8bRLC8M-9AMsDKsusPdhF_VpGw_JjRypK0epAInHHgi4pRhSAUdCmOsdggjm7mTiGS9j2Kew%3D%3D?uid=0&filename=wpss201507140013png&disposition=inline&hash=&limit=0&content_type=image%2Fpng&tknv=v2&size=1280x947

Page 10: Mobile .NET gamedev is not only Unity
Page 11: Mobile .NET gamedev is not only Unity
Page 12: Mobile .NET gamedev is not only Unity
Page 13: Mobile .NET gamedev is not only Unity
Page 14: Mobile .NET gamedev is not only Unity
Page 15: Mobile .NET gamedev is not only Unity

Monosyne1. Текстуры/атлас в .png/.pvr/.zpvr/.webp. Тайлинг, автобатчинг2. Видео-спрайты (.bik), Видеомаски, Эффекты на уровне glsl/hlsl3. Поддержка .ogg/.wav. Effect/Song аналогичные XNA4. Спрайтовые анимации/стейт-машины на уровне ресурсов5. Виджеты такие как button, checkbox, virtualized scroll6. Поддержка Bitmap/TrueType шрифтов7. Сценграф, json-based формат, экспорт сцен из Flash

Page 16: Mobile .NET gamedev is not only Unity
Page 17: Mobile .NET gamedev is not only Unity

1. IoC/DI2. MVP3. Event Aggregator4. Async-based TAP5. T4 для View6. PCL

Архитектура приложения

Page 18: Mobile .NET gamedev is not only Unity

Плюсы:

1. .NET это удобно!2. Легко пишутся Unit-test`ы3. Фичи модульны и практически не зависят друг от друга4. 95% кода – в PCL5. Разработка/отладка ведется под Windows6. Любые изменения в ресурсах видны на этапе сборки

Page 19: Mobile .NET gamedev is not only Unity

Минусы:

1. Требуется понимание сути IoC/Event Aggregator2. Легко написать неэффективный код (минус .NET)3. В PCL нет System.IO, Marshal и др.

Page 20: Mobile .NET gamedev is not only Unity

Итоговые мысли о .NET

1. Шикарный перфоманс 2. В итоге все больше кода уходит в native 3. Unsafe – огромное благо4. Аллокаторы памяти тоже5. Zero Alloc Rule (dotMemory MemoryTraffic)6. Мощный и красивый язык разработк7. Крупный проект выйдет за лимит apple по размеру бинарника8. Нестабильность стабильного Xamarin (40+ багов)9. Более сложная архитектура клиента из за необходимости в потоках10.Хороших разработчиков на .NET не больше чем на C++

Page 21: Mobile .NET gamedev is not only Unity
Page 22: Mobile .NET gamedev is not only Unity

1.Git Branching Strategy с упрощениями2.Фича в своей ветке пишется и тестируется.3.На каждый коммит, в каждой ветке – билд всех платформ4.Изначально билд степы в TC, теперь с проектом build scripts

Page 23: Mobile .NET gamedev is not only Unity
Page 24: Mobile .NET gamedev is not only Unity
Page 25: Mobile .NET gamedev is not only Unity

15:00:00|INFO|1|MO-2015|Логирование в продакшн среде

В QA билдах логи шлются в локальный LogStorageВ Release билдах логи шлются при краше в HockeyAppКритичная для аналитики инфа шлется в hadoop/GAСерверное логирование ведется в Kibana

Page 26: Mobile .NET gamedev is not only Unity
Page 27: Mobile .NET gamedev is not only Unity
Page 28: Mobile .NET gamedev is not only Unity
Page 29: Mobile .NET gamedev is not only Unity
Page 30: Mobile .NET gamedev is not only Unity

Нужен свой редактор сцен и ресурсов!

Page 31: Mobile .NET gamedev is not only Unity

1.2d меши2.Скиннинг3.Скелетные анимации4.Освещение на картах нормалей5.Объединение с web flash версией6.Ручная аллокация памяти7.Движок на плюсах

Page 32: Mobile .NET gamedev is not only Unity

Спасибо за внимание[email protected]

pk.grigory.perepechko