Flash games development with Unity3D. Valentin “valyard” Simonov. Interactive
Lab
Flash games development with Unity3D Valentin “valyard” Simonov Interactive Lab
[email protected] / va.lent.in / onenterframe.ru / @valyard
Почему Unity3D? Why Unity3D?
• 3D • Отличный IDE • Быстрое прототипирование • C#, .NET • Расширяемость • Экспорт под iOS и Android
• 3D • Great IDE • Fast prototyping • C#, .NET • Extensibility • Publishing to iOS and Android
Flash как платформа Flash as a platform
• Распространенность плагина • Stage3D, Domain Memory • Интерес “взрослых” игровых движков • UDK, Unity3D...
• Flash Plugin penetration • Stage3D, Domain Memory • Interest from “big” game engines • UDK, Unity3D
Tail Drift Unity3D Flash in a Flash contest winner
Текущее состояние Current state of Flash exporter
• 3.5 — preview • Можно скачать c unity3d.com • Не все фичи Unity3d • API будет меняться • Сложность отладки • Нужно думать о Flash
• 3.5 — preview • Download at unity3d.com • Not all Unity3d features work • API will change • Hard to debug • Have to keep in mind Flash
экспорте с самого начала проекта
export from the start of a project
• Будут продавать как аддон
• Will be sold as an add-on for
за 400$ / 1500$
400$ / 1500$
Что работает Stuff that works Почти все кроме:
• Некоторые фулскрин эффекты • Часть .NET • API системы частиц Shuriken • Профайлер • Загрузка ассетов через bundles и WWW • Raknet • Terrain, Cloth • Deffered Rendering • Аудио эффекты
Almost everything except: • Some fullscreen effects • Subset of .NET • Shuriken particle system API • Profiler • Assets loading via bundles and WWW • Raknet networking • Terrain, Cloth • Deffered Rendering • Audio effects
С чем можно столкнуться What problems you can face
• Не работают некоторые популярные скрипты • Нельзя получить stage • Не работают неожиданные части .NET, например: Convert.ToInt32, Regex, generics.
• Странные ошибки JavaScript • < версия шейдеров 2.0 • SWC вкомпиливаются полностью — не находит классы
• Some popular scripts don’t work • Can’t get reference to stage • Some unexpected parts of .NET don’t work: Convert.ToInt32, Regex, generics.
• Weird JavaScript errors • < Shader Model 2.0 • SWCs a fully compiled in — classes not found errors
Алгоритм экспорта Publishing algorithm 1. Исправить ошибки C# 2. Выпилить что не поддерживается 3. Отследить ошибки слишком сложного C# кода 4. Сломать голову над ошибками генерации AS3
1. Get rid of C# errors 2. Cut everything which is not supported 3. Track down complicated C# code errors 4. Fix weird AS3 generation errors
/Temp/StagingArea/Data
/Temp/StagingArea/Data
Отладка Debugging
• Debug Player / flashlog.txt • mm.cfg
• Debug Player / flashlog.txt • mm.cfg
ErrorReportingEnable=1 TraceOutputFileEnable=1
ErrorReportingEnable=1 TraceOutputFileEnable=1
• Кастомная консоль • Внешняя консоль
• Custom console • External console
Интеграция с AS3 AS3 integration
• UnityEngine.Flash.ActionScript
• UnityEngine.Flash.ActionScript
ActionScript.Import("com.Bla"); ActionScript.Statement("trace({0})", “hi");
ActionScript.Import("com.Bla"); ActionScript.Statement("trace({0})", “hi");
• AS3 код в папке ActionScript • .NET класс -> AS3 класс
• AS3 code in ActionScript folder • .NET class -> AS3 class
[NotRenamed], [NotConverted]
[NotRenamed], [NotConverted]
• Условная компиляция
• Conditional compilation
#if UNITY_FLASH ActionScript.Import("flash.ui.Mouse"); ActionScript.Statement("Mouse.hide();", ""); #else Screen.showCursor = false; #endif
Загрузка извне External preloader
• Flex SDK 4.6 • Target Flash Player 11.1.0 • wmode=direct • UnityShared.swc • Общение с Unity3D
• Flex SDK 4.6 • Target Flash Player 11.1.0 • wmode=direct • UnityShared.swc • Communication with Unity3D
loader.unityContent.sendMessage("Player", "OnMessage", new ASMessage("click!"));
• Свой прелоадер • Переопределение классовпустышек в прелоадере
• Custom preloader • Overriding dummy classes from C#
Налог на скорость Speed tax Premium features: Stage3D + domainMemory
Целевая аудитория Target audience
Experiments Indie games Simple 3D* Simple 3D*
* speed tax effect
Browser games Experiments MMOs