Flash games development
    with Unity3D


Valentin “valyard” Simonov
     Interactive Lab
v@lent.in / va.lent.in / onenterframe.ru / @valyard
Почему Unity3D?
Why Unity3D?


• 3D                          • 3D
• Отличный IDE                • Great IDE
• Быстрое прототипирование    • Fast prototyping
• C#, .NET                    • C#, .NET
• Расширяемость               • Extensibility
• Экспорт под iOS и Android   • 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                 • 3.5 — preview
• Можно скачать c unity3d.com   • Download at unity3d.com
• Не все фичи Unity3d           • Not all Unity3d features work
• API будет меняться            • API will change
• Сложность отладки             • Hard to debug
• Нужно думать о Flash          • 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


Почти все кроме:                Almost everything except:
• Некоторые фулскрин эффекты    • Some fullscreen effects
• Часть .NET                    • Subset of .NET
• API системы частиц Shuriken   • Shuriken particle system API
• Профайлер                     • Profiler
• Загрузка ассетов через        • Assets loading via bundles and
bundles и WWW                   WWW
• Raknet                        • Raknet networking
• Terrain, Cloth                • Terrain, Cloth
• Deffered Rendering            • Deffered Rendering
• Аудио эффекты                 • Audio effects
С чем можно столкнуться
What problems you can face


• Не работают некоторые             • Some popular scripts don’t work
популярные скрипты                  • Can’t get reference to stage
• Нельзя получить stage             • Some unexpected parts of .NET
• Не работают неожиданные           don’t work: Convert.ToInt32, Regex,
части .NET, например:               generics.
Convert.ToInt32, Regex, generics.   • Weird JavaScript errors
• Странные ошибки JavaScript        • < Shader Model 2.0
• < версия шейдеров 2.0             • SWCs a fully compiled in —
• SWC вкомпиливаются                classes not found errors
полностью — не находит
классы
Алгоритм экспорта
Publishing algorithm


1. Исправить ошибки C#        1. Get rid of C# errors
2. Выпилить что не            2. Cut everything which is not
поддерживается                supported
3. Отследить ошибки слишком   3. Track down complicated C#
сложного C# кода              code errors
4. Сломать голову над         4. Fix weird AS3 generation
ошибками генерации AS3        errors

/Temp/StagingArea/Data        /Temp/StagingArea/Data
Отладка
Debugging


• Debug Player / flashlog.txt   • Debug Player / flashlog.txt
• mm.cfg                        • mm.cfg
  ErrorReportingEnable=1          ErrorReportingEnable=1
  TraceOutputFileEnable=1         TraceOutputFileEnable=1
• Кастомная консоль             • Custom console
• Внешняя консоль               • External console
Интеграция с AS3
AS3 integration


• UnityEngine.Flash.ActionScript                • UnityEngine.Flash.ActionScript
ActionScript.Import("com.Bla");                 ActionScript.Import("com.Bla");
ActionScript.Statement("trace({0})", “hi");     ActionScript.Statement("trace({0})", “hi");
• AS3 код в папке ActionScript                  • AS3 code in ActionScript folder
• .NET класс -> AS3 класс                       • .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                               • Flex SDK 4.6
• Target Flash Player 11.1.0                 • Target Flash Player 11.1.0
• wmode=direct                               • wmode=direct
• UnityShared.swc                            • UnityShared.swc
• Общение с Unity3D                          • 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                 Browser games   Experiments
         Indie games                      MMOs
Simple 3D*        Simple 3D*


* speed tax effect

Interactive Lab: Разработка Flash игр на Unity3D

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