<ul><ul><li>Танки — многопользовательский  </li></ul></ul><ul><ul><li>трёхмерный экшен в браузере </li></ul></ul><ul><ul><...
<ul><li>План доклада: </li></ul><ul><li>Изменение бизнес-модели </li></ul><ul><li>История проекта </li></ul><ul><li>Танки ...
Adobe MAX 2009
Away3D Alternativa3D Papervision3D
Signor poliziotto, il mio passaporto è stato rubato
<ul><li>Изменение </li></ul><ul><li>бизнес-модели: </li></ul><ul><li>Началась продажа лицензий </li></ul><ul><li>Рынок 3D-...
<ul><li>Долгий путь </li></ul><ul><li>к технологическому преимуществу: </li></ul><ul><li>7 3D-движков </li></ul><ul><li>3 ...
A long time ago, in a city far, far away...
Tanks for two
1997
320x200, 256 colors
Turbo Pascal 7.0 + Assembler
Город Лизы Шариковой Liza Sharikova City
2005, Flash Player 7
Многопользовательский визуальный чат Multiuser visual chat
Окружение собирается из кусочков Tile-based environment
Простая Z-сортировка Simple Z-sorting
Динамическое освещение и тени Dynamic lights and shadows
Изометрическое 3D с освещением Isometric 3D with lighting
Перспектива Perspective view
Вид от первого лица First person view
Физический движок Physics engine
Ballance
Игра про ёлку New Year game
<ul><li>Многопользовательский </li></ul><ul><li>Трёхмерный </li></ul><ul><li>Экшен </li></ul><ul><li>В браузере </li></ul>...
Битвы Battles
Гараж Garage
Полностью трёхмерное окружение Full 3D environment
Мультиплеер Multiplayer
Прототип игры Game prototype
Игроки проявили интерес Players have shown an interest
Демо-эффектам — нет! Даёшь практическое применение! Say NO to demo-effects! Go practice!
Миф о лёгкости объединения демок Myth about simple combination of demos
<ul><li>Основная проблема — </li></ul><ul><li>последовательность отрисовки: </li></ul><ul><li>Сортировка по средним Z </li...
Оптимизация расчётов — алгоритмы и трюки Calculations optimization — algorithms and hacks
Оптимизация использования памяти Memory use optimization
Оптимизация областей перерисовки Redrawing regions optimization
Оптимизация переналожения Overlapping optimization
Оптимизация переналожения Overlapping optimization
FPS Размер пакета, Packet size Пакетная обработка, batch processing
FPS Количество треугольников, Number of triangles Производительность, Performance
FPS Количество треугольников, Number of triangles Anti-alias
Отсечение ненужного Cull unnecessary
kD-дерево kD-tree
Отсечение невидимых kD-ветвей Invisible kD-branches culling
Отсечение по описывающим кубам Bound-boxes culling
Обработка только конфликтных объектов Process only conflicted objects
Отсечение невидимых полигонов Invisible polygons culling
Подрезка под окно просмотра Clipping in viewport
Результат Result
<ul><li>Нестандартные </li></ul><ul><li>методы: </li></ul><ul><li>Аппаратное ускорение — только для PixelBender и не для в...
Физика активно используется в играх Physics is used wide in games
AlternativaPhysics — трёхмерный физический движок AlternativaPhysics — 3D physics engine
Быстрый поиск контактов, итерационный подход Fast collision detection, iterative approach
Прямоугольники, треугольники, кубы и сферы Quads, triangles, boxes and spheres
Танк на подвеске Tank on suspension
Плагинная система по спецификации OSGi на сервере и клиенте Plugin system based on OSGi on server and client
<ul><li>Интерфейсы </li></ul><ul><li>Типы </li></ul><ul><li>Кодеки </li></ul><ul><li>Модели поведения </li></ul><ul><li>In...
Протокол Protocol Большие команды  упаковываются алгоритмом DEFLATE (zlib, gzip) Код команды Command code X Y Z Long 8 byt...
PSD JPG, XML /resource/id/version/image.jpg Загрузка/выгрузка Load/unload 100 запросов 100 requests 10 запросов 10 request...
Один уровень — одна модель One level — one model
Элементы уровня Assets
AlternativaEditor
AlternativaEditor
Административный интерфейс Administration interface
Организация работы команды Team work orgranization SWF, JAR Bug-reports JPG, MP3 Tasks Docs PSD, WAV AS, JAVA Проект Proje...
Удачный 3D-геймплей — в браузер! Good 3D-gameplay — into browser!
Технологическое партнёрство — ваш продакшн + наши технологии Technological partnership — your production + our technologies
Ваше приглашение в закрытое тестирование Your invitation for closed test
Спасибо за внимание! Thank you! Anton Volkov [email_address] +7 902 473 1986
Upcoming SlideShare
Loading in …5
×

Tanki Online — multiplayer 3D-action in browser

15,310 views

Published on

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
15,310
On SlideShare
0
From Embeds
0
Number of Embeds
7,342
Actions
Shares
0
Downloads
40
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Tanki Online — multiplayer 3D-action in browser

  1. 1. <ul><ul><li>Танки — многопользовательский </li></ul></ul><ul><ul><li>трёхмерный экшен в браузере </li></ul></ul><ul><ul><li>Антон Волков, технический директор, 14 мая 2009 </li></ul></ul>Tanki — multiplayer 3D-action in browser Anton Volkov, CTO, 14 May 2009
  2. 2. <ul><li>План доклада: </li></ul><ul><li>Изменение бизнес-модели </li></ul><ul><li>История проекта </li></ul><ul><li>Танки Онлайн </li></ul><ul><li>Прототип </li></ul><ul><li>Alternativa3D 7 </li></ul><ul><li>Методы оптимизации </li></ul><ul><li>3D во Flash Player 10 </li></ul><ul><li>Отсечение ненужного </li></ul><ul><li>Нестандартные методы </li></ul><ul><li>Физика </li></ul><ul><li>Сервер </li></ul><ul><li>Организация производства </li></ul><ul><li>Итоги </li></ul><ul><li>Plan: </li></ul><ul><li>Changing business model </li></ul><ul><li>History </li></ul><ul><li>Tanki Online </li></ul><ul><li>Prototype </li></ul><ul><li>Alternativa3D 7 </li></ul><ul><li>Optimization methods </li></ul><ul><li>3D in Flash Player 10 </li></ul><ul><li>Cull unnecessary </li></ul><ul><li>Nonstandard methods </li></ul><ul><li>Physics </li></ul><ul><li>Server </li></ul><ul><li>Production organization </li></ul><ul><li>Summary </li></ul>
  3. 3. Adobe MAX 2009
  4. 4. Away3D Alternativa3D Papervision3D
  5. 5. Signor poliziotto, il mio passaporto è stato rubato
  6. 6. <ul><li>Изменение </li></ul><ul><li>бизнес-модели: </li></ul><ul><li>Началась продажа лицензий </li></ul><ul><li>Рынок 3D-Flash в стадии формирования </li></ul><ul><li>Продукты на платформе — двигатель рынка </li></ul><ul><li>Участие в проектах </li></ul><ul><li>Changing </li></ul><ul><li>business model: </li></ul><ul><li>Sales of licenses have started </li></ul><ul><li>3D-Flash market is just forming </li></ul><ul><li>Products on platfom boost market </li></ul><ul><li>Participating in projects </li></ul>
  7. 7. <ul><li>Долгий путь </li></ul><ul><li>к технологическому преимуществу: </li></ul><ul><li>7 3D-движков </li></ul><ul><li>3 серверных движка </li></ul><ul><li>2 GUI-движка </li></ul><ul><li>2 физических движка </li></ul><ul><li>Long way </li></ul><ul><li>to technological </li></ul><ul><li>advantage : </li></ul><ul><li>7 3D-engines </li></ul><ul><li>3 server engines </li></ul><ul><li>2 GUI-engines </li></ul><ul><li>2 physics engines </li></ul>
  8. 8. A long time ago, in a city far, far away...
  9. 9. Tanks for two
  10. 10. 1997
  11. 11. 320x200, 256 colors
  12. 12. Turbo Pascal 7.0 + Assembler
  13. 13. Город Лизы Шариковой Liza Sharikova City
  14. 14. 2005, Flash Player 7
  15. 15. Многопользовательский визуальный чат Multiuser visual chat
  16. 16. Окружение собирается из кусочков Tile-based environment
  17. 17. Простая Z-сортировка Simple Z-sorting
  18. 18. Динамическое освещение и тени Dynamic lights and shadows
  19. 19. Изометрическое 3D с освещением Isometric 3D with lighting
  20. 20. Перспектива Perspective view
  21. 21. Вид от первого лица First person view
  22. 22. Физический движок Physics engine
  23. 23. Ballance
  24. 24. Игра про ёлку New Year game
  25. 25. <ul><li>Многопользовательский </li></ul><ul><li>Трёхмерный </li></ul><ul><li>Экшен </li></ul><ul><li>В браузере </li></ul><ul><li>Multiplayer </li></ul><ul><li>3D </li></ul><ul><li>Action </li></ul><ul><li>In browser </li></ul>
  26. 26. Битвы Battles
  27. 27. Гараж Garage
  28. 28. Полностью трёхмерное окружение Full 3D environment
  29. 29. Мультиплеер Multiplayer
  30. 30. Прототип игры Game prototype
  31. 31. Игроки проявили интерес Players have shown an interest
  32. 32. Демо-эффектам — нет! Даёшь практическое применение! Say NO to demo-effects! Go practice!
  33. 33. Миф о лёгкости объединения демок Myth about simple combination of demos
  34. 34. <ul><li>Основная проблема — </li></ul><ul><li>последовательность отрисовки: </li></ul><ul><li>Сортировка по средним Z </li></ul><ul><li>Коррекция Z-конфликтов </li></ul><ul><li>BSP, kD, Octree </li></ul><ul><li>Подпространства </li></ul><ul><li>Всё вместе — Alternativa3D 7 </li></ul><ul><li>Main problem — </li></ul><ul><li>drawing order: </li></ul><ul><li>Average-Z sorting </li></ul><ul><li>Correcting Z-conflicts </li></ul><ul><li>BSP, kD, Octree </li></ul><ul><li>Subspaces </li></ul><ul><li>All-in-one — Alternativa3D 7 </li></ul>
  35. 35. Оптимизация расчётов — алгоритмы и трюки Calculations optimization — algorithms and hacks
  36. 36. Оптимизация использования памяти Memory use optimization
  37. 37. Оптимизация областей перерисовки Redrawing regions optimization
  38. 38. Оптимизация переналожения Overlapping optimization
  39. 39. Оптимизация переналожения Overlapping optimization
  40. 40. FPS Размер пакета, Packet size Пакетная обработка, batch processing
  41. 41. FPS Количество треугольников, Number of triangles Производительность, Performance
  42. 42. FPS Количество треугольников, Number of triangles Anti-alias
  43. 43. Отсечение ненужного Cull unnecessary
  44. 44. kD-дерево kD-tree
  45. 45. Отсечение невидимых kD-ветвей Invisible kD-branches culling
  46. 46. Отсечение по описывающим кубам Bound-boxes culling
  47. 47. Обработка только конфликтных объектов Process only conflicted objects
  48. 48. Отсечение невидимых полигонов Invisible polygons culling
  49. 49. Подрезка под окно просмотра Clipping in viewport
  50. 50. Результат Result
  51. 51. <ul><li>Нестандартные </li></ul><ul><li>методы: </li></ul><ul><li>Аппаратное ускорение — только для PixelBender и не для всех карт </li></ul><ul><li>wmode = &quot;gpu&quot; — медленно </li></ul><ul><li>Alchemy — большой объём, сложная инфраструктура, потери на передачи данных </li></ul><ul><li>PixelBender — растровые эффекты на небольших изображениях; для математики потеря на передаче данных, многопоточность </li></ul><ul><li>HaXe — недокументированные команды работы с памятью, быстрее до 40% чем Vector </li></ul><ul><li>Nonstandard </li></ul><ul><li>methods: </li></ul><ul><li>Hardware acceleration — only for PixelBender and not for every videocard </li></ul><ul><li>wmode = &quot;gpu&quot; — slow </li></ul><ul><li>Alchemy — big, complex structure, data transfer losses </li></ul><ul><li>PixelBender — raster effects for small images, data transfer losses for mathematics, multithreading </li></ul><ul><li>HaXe — undocumented memory managing methods, faster up to 40% than Vector </li></ul>
  52. 52. Физика активно используется в играх Physics is used wide in games
  53. 53. AlternativaPhysics — трёхмерный физический движок AlternativaPhysics — 3D physics engine
  54. 54. Быстрый поиск контактов, итерационный подход Fast collision detection, iterative approach
  55. 55. Прямоугольники, треугольники, кубы и сферы Quads, triangles, boxes and spheres
  56. 56. Танк на подвеске Tank on suspension
  57. 57. Плагинная система по спецификации OSGi на сервере и клиенте Plugin system based on OSGi on server and client
  58. 58. <ul><li>Интерфейсы </li></ul><ul><li>Типы </li></ul><ul><li>Кодеки </li></ul><ul><li>Модели поведения </li></ul><ul><li>Interfaces </li></ul><ul><li>Types </li></ul><ul><li>Codecs </li></ul><ul><li>Behavior models </li></ul>Генерация кода Code generation <ul><li>Type checking </li></ul><ul><li>Auto-completion </li></ul><ul><li>Compile-time errors </li></ul><ul><li>Проверка типов </li></ul><ul><li>Автокомплит </li></ul><ul><li>Ошибки компиляции </li></ul>Генератор кода Code generator Java-код Java-code FlexSDK AS-код AS-code SWC
  59. 59. Протокол Protocol Большие команды упаковываются алгоритмом DEFLATE (zlib, gzip) Код команды Command code X Y Z Long 8 bytes Number 8 bytes Number 8 bytes Number 8 bytes Код команды Command code battleName players Long 8 bytes ShortString 1 byte + N bytes ShortArray of int 1 byte + 4xN bytes Big commands are packed using DEFLATE (zlib, gzip) algorithm
  60. 60. PSD JPG, XML /resource/id/version/image.jpg Загрузка/выгрузка Load/unload 100 запросов 100 requests 10 запросов 10 requests Игровые ресурсы Game resources Диспетчер Dispatcher Разработчик Developer Ресурсный сервер Resource server Web-сервер Web-server Игровой сервер Game server Диспетчер Dispatcher Flash-клиент Flash-client Cache, proxy
  61. 61. Один уровень — одна модель One level — one model
  62. 62. Элементы уровня Assets
  63. 63. AlternativaEditor
  64. 64. AlternativaEditor
  65. 65. Административный интерфейс Administration interface
  66. 66. Организация работы команды Team work orgranization SWF, JAR Bug-reports JPG, MP3 Tasks Docs PSD, WAV AS, JAVA Проект Project Юзер User Команда Team Юзер User Юзер User Jira Confluence SVN Maven
  67. 67. Удачный 3D-геймплей — в браузер! Good 3D-gameplay — into browser!
  68. 68. Технологическое партнёрство — ваш продакшн + наши технологии Technological partnership — your production + our technologies
  69. 69. Ваше приглашение в закрытое тестирование Your invitation for closed test
  70. 70. Спасибо за внимание! Thank you! Anton Volkov [email_address] +7 902 473 1986

×