Доклад будет рассказывать о современных подходах проектирования ПО. Основной темой будет построение компонентных архитектур на примере архитектуры сцены 3D движка. Будет рассмотрен классический объектно-ориентированный подход организации сцены, его плюсы и минусы, и в качестве альтернативы будет показан компонентно ориентированный подход организации сцены. Доклад позволит слушателям понять, как разрабатывать сложные системы, которые впоследствии можно легко поддерживать.
Solit 2014, Опыт участия в конкурсе по спортивному программированию Russian A...solit
Иван Поляков, Минск. Программист, занимается разработкой компьютерных игр (Shareware / Indy) с 99 года. Закончил ФПМИ БГУ, где участвовал в чемпионатах ACM по программированию.
«Опыт участия в недавно прошедшем конкурсе по спортивному программированию Russian AI Cup 2013″. Development секция. Не упустите возможности узнать, как думают алгоритмически участники олимпиад.
(http://russianaicup.ru/profile/Cooler – 15-е место в финале, 11-е место в песочнице – это лучший результат среди участников из Беларуси). Об особенностях задачи, о принципах работы моего решения и особенностях решений некоторых других участников из топа, о вероятных ошибках и способах их избежать.
P.S. Рассказ победителя конкурса имеется тут – http://habrahabr.ru/post/206680/
Cоциальный граф "Одноклассников" в myTargetOleg Tsarev
Задача выглядит обманчиво простой — рядом с баннером игры из Одноклассников показывать текстовый тизер «эту игру играет Кот Матроскин и ещё 5 твоих друзей» (имя и количество берутся из друзей пользователя на Одноклассниках).
Как обрабатывать граф друзей проекта Одноклассники для этой задачи?
На этот простой вопрос дают разные ответы:
- взять графовую базу данных
- использовать матрицу инцидентности
- использовать список смежных вершин.
Если уточнить, что сырые данные занимают полтора терабайта, в графе 200 миллионов вершин и 13 миллиардов связей, то ручные решения сразу отметаются.
«Графовая база данных!» Стоит озвучить нагрузку в десятки тысяч запросов секунду и требования отвечать за миллисекунды (тысячные доли секунды!) как графовые базы сразу оказываются за бортом — типичное время ответа на простые запросы — единицы секунд.
Экс-разработчик MySQL и SciDB, ныне ведущий разработчик myTarget Олег Царёв расскажет, как решалась эта непростая задача в рамках проекта.
Porting existing games to Apple Metal API. Case study: Divinity Original Sin ...DevGAMM Conference
The session essentially focuses on case study of porting Divinity Original Sin 2 engine to Apple Metal API. Real-life examples are provided as well as a demo of frame capture, dissection and explanations of techniques used. The case study is followed by best practices section with advises for transitioning generic titles to Metal. The session concludes with ‘future tech’ section where advanced samples of Metal rendering technologies are displayed and briefly explained.
Основная цель практически любой атаки при реализации угроз -- получение несанкционированного доступа к информации.
Мы, как тестировщики, проверяем приложение на наличие уязвимостей, вместе с тем нам удобно иметь какую-то систему для эффективного тестирования безопасности.
Одной из таких основ может стать моделирование угроз для приложения. Это одна из практик Security Development Lifecycle (SDL).
Эта база дает возможность тестировщикам выявлять и разработчикам устранять потенциальные проблемы безопасности на ранних этапах разработки ПО.
Я расскажу основную концепцию моделирования угроз и покажу как это можно выполнить.
Доклад будет интересен специалистам которые недавно открыли увлекательный мир безопасности ПО.
11 HappyDev-lite'14 Андрей Казимиров. Особенности разработки по для встраива...HappyDev
Мобильное приложение можно перезагрузить. Баг во встраиваемом ПО может унести жизни. Доклад об особенностях небольших устройств и ответственности за ошибку.
http://techtalks.nsu.ru
23 сентября 2013. Как сделать Dota-like игру (Семен Корзунов, Nival (Москва))
Лекция прочитана в рамках проекта Tech Talks @NSU – серии открытых лекций о разработке ПО и карьере в IT, проводимых в Новосибирском государственном университете.
Подробности: http://techtalks.nsu.ru
Докладчиками будут описаны тонкости в процессе создания социальной игры “Зомби Ферма”: как преодолевались трудности, которые возникали в процессе разработки продукта. Как устранялись проблемы, касающиеся обслуживания игры. Как велась работа над оптимизацией и усовершенствованием некоторых процессов. Какие технологии помогли поднять игру в ТОПы и привлечь внимание более 14 000 000 пользователей не только русскоязычных, но и зарубежных социальных сетей. Каким методом была создана та самая “технология успеха”
Юрий Леонычев «Безопасность мобильных приложений для Android. Теория и практика»Yandex
Научно-технический семинар «Android и iOS: безопасность мобильных приложений» в московском офисе Яндекса, 7 марта 2013 г.
Юрий Леонычев, администратор ИБ, Яндекс.
Хайлоад и безопасность в мире DevOps: совместимы ли? / Юрий Колесов (security...Ontico
* Поговорим о рисках, подстерегающих как стартапы, так и устоявшиеся компании, отсортировав их по степени важности.
* Рассмотрим особенности cloud vs bare metal в контексте безопасности.
* Подискутируем о технических методах обеспечения безопасности, постараемся внедрить безопасность не в ущерб хайлоаду.
* Будут примеры как из моей практики, так и показательные из общемировой.
Как пережить запуск онлайн-игры и справиться с мертвыми душами / Андрей Трифа...Ontico
HighLoad++ 2017
Зал «Рио-де-Жанейро», 7 ноября, 18:00
Тезисы:
http://www.highload.ru/2017/abstracts/3077.html
Я работал в команде, которая создала несколько игр в соцсетях и для мобильных платформ. В разработке игр считается, что первые несколько минут в игре создают основное впечатление игрока об игре. Поэтому геймдизайнеры тратят много времени на полировку этих первых мгновений нового игрока в игре. Но это создает также много интересных задач и для программистов сервера и клиента.
...
3. Зачем нам все это?
• Плюсы
– Каждый писал игрушки в детстве
– Рынок доступен каждому
– Это интересно
– Радость от результатов
• Минусы
– Играть и разрабатывать — не одно и то же
– Большой уровень вхождения
– Играть в игры уже не хочется
10. Обычная задача для game-handler
melee attack
• Валидация параметров
• Расчет урона
• Отправка клиенту списка
команд(нанесение урона, смерть юнита)
11. Обычная задача для game-handler
melee attack
• Валидация параметров
• Расчет урона:
– у атакующего юнита есть меч, который наносит двойной урон для
скелетов
– у атакованного есть броня +10% от двуручного оружия
– на атакованного наложено заклинания “проклятье” – атакующий наносит
половинный удар
– битва проходит на святой земле, где с вероятностью 70% урон от
“черных ” заклинаний сокращается на половину
– у атакуемого юнита висит амулет, увеличивающий силу черной магии на
25%
– у атакуемого юнита есть аура: 20% урона с вероятностью 25%
возвращается атакующему
• Отправка клиенту списка команд (нанесение урона, смерть юнита)
12. Другие виды задач
• Общие
– Селекция целей
– Выбор оружия
– Поиск пути
• Сетевые
– Пинг и быстродействие
– Оптимизация производительности сервера
– Таинственные баги Flash или другой клиентской
платформы
20. Примеры багов
• ООП костыли
– Уплывший корабль
– Фау 2 в Блицкриге
– Патроны для собаки
• Большое количество if
– Воздушный щит при осаде
• Непродуманные граничные условия
– Лучники в Викингах
23. Ошибки
• Ошибки будут всегда
• Правильное логирование
• Устойчивость к нештатным ситуациям
• Терминаторы и восстановление состояния
24. Gameplay
• Моделирование
• Гибкость настройки игровых параметров
• Гейм-дизайнеры должны иметь
возможность менять максимальное
количество параметров без участия
программистов
25. Тестирование
• Сложность автоматического тестирования
• Привлечение community
• Логирование и анализ поведения
пользователя
• Возможность динамически менять уровни
логирования
26. Безопасность!
• Клиенту доверять
нельзя
• Ради нового стула
пользователи готовы
10 часов "хакать" ваше
приложение.
27. Безопасность
• Проверка на сервере
• Система арбитров
• Основные характеристики на клиенте
должны быть защищены от artmoney
• Шифрования трафика
• Проверка подлинности
• Проверка “времени жизни” пакета