Антон Юдинцев, основатель Gaijin Entertainment, рассматривает проблемы продуктивности и производительности разработчиков в масштабных программных проектов с длинным циклом жизни – таких, как онлайн игры. Антон рассматривает типовые проблемы и исторически популярные пути их решения на реальных случаях, а также представляет недавний скрипт-язык собственной разработки, как механизм увеличения продуктивности и креативности – daScript – и опыт работы с ним.
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.
Доклад будет рассказывать о современных подходах проектирования ПО. Основной темой будет построение компонентных архитектур на примере архитектуры сцены 3D движка. Будет рассмотрен классический объектно-ориентированный подход организации сцены, его плюсы и минусы, и в качестве альтернативы будет показан компонентно ориентированный подход организации сцены. Доклад позволит слушателям понять, как разрабатывать сложные системы, которые впоследствии можно легко поддерживать.
Кикие вопросы нужно задать для выбора компьютераAlexey Samoylov
на мой взгляд и сейчас актуальная вещь. это переложение в слайды того опыта который мне ещё в 2004-2007 годах помогал быть успешным продавцом.
В дизайн я сейчас ничего вносить не стал -
Алексей Лустин. Непрерывная проверка качества кода.ScrumTrek
Я расскажу о нашем двухлетнем опыте использования инженерной практики «Continious Inspection» и платформы SonarQube при организации кросс-языковой разработки в процессе «непрерывной поставки» (CI-CD для языков Java, C#, JavaScript, typeScript и Gherkin) при автоматизированном code-review.
11 HappyDev-lite'14 Андрей Казимиров. Особенности разработки по для встраива...HappyDev
Мобильное приложение можно перезагрузить. Баг во встраиваемом ПО может унести жизни. Доклад об особенностях небольших устройств и ответственности за ошибку.
Разработка ресурсоемких приложений в среде Visual C++Tatyanazaxarova
Статья познакомит разработчиков прикладного программного обеспечения с задачами, которые ставит перед ними массовое внедрение многоядерных 64-битных вычислительных систем, знаменующих революционное увеличение вычислительной мощности, доступное рядовому пользователю. Будут рассмотрены вопросы эффективного использования аппаратных ресурсов для решения повседневных прикладных задач в рамках операционной системы Windows x64.
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.
Доклад будет рассказывать о современных подходах проектирования ПО. Основной темой будет построение компонентных архитектур на примере архитектуры сцены 3D движка. Будет рассмотрен классический объектно-ориентированный подход организации сцены, его плюсы и минусы, и в качестве альтернативы будет показан компонентно ориентированный подход организации сцены. Доклад позволит слушателям понять, как разрабатывать сложные системы, которые впоследствии можно легко поддерживать.
Кикие вопросы нужно задать для выбора компьютераAlexey Samoylov
на мой взгляд и сейчас актуальная вещь. это переложение в слайды того опыта который мне ещё в 2004-2007 годах помогал быть успешным продавцом.
В дизайн я сейчас ничего вносить не стал -
Алексей Лустин. Непрерывная проверка качества кода.ScrumTrek
Я расскажу о нашем двухлетнем опыте использования инженерной практики «Continious Inspection» и платформы SonarQube при организации кросс-языковой разработки в процессе «непрерывной поставки» (CI-CD для языков Java, C#, JavaScript, typeScript и Gherkin) при автоматизированном code-review.
11 HappyDev-lite'14 Андрей Казимиров. Особенности разработки по для встраива...HappyDev
Мобильное приложение можно перезагрузить. Баг во встраиваемом ПО может унести жизни. Доклад об особенностях небольших устройств и ответственности за ошибку.
Разработка ресурсоемких приложений в среде Visual C++Tatyanazaxarova
Статья познакомит разработчиков прикладного программного обеспечения с задачами, которые ставит перед ними массовое внедрение многоядерных 64-битных вычислительных систем, знаменующих революционное увеличение вычислительной мощности, доступное рядовому пользователю. Будут рассмотрены вопросы эффективного использования аппаратных ресурсов для решения повседневных прикладных задач в рамках операционной системы Windows x64.
Выступление на конференции TrueTechDay 2023 в Москве.
Содержание:
1. Причины появления интереса к low-code платформам
2. Управление сложностью в обычном и low-code подходах
3. Технические проблемы с low-code и как снизить эти риски
4. Организационные проблемы с low-code и как снизить эти риски
5. Сценарии успешного применения
6. Чеклист выбора low-code платформы
Статья на эту тему и видео-запись доклада https://blog.byndyu.ru/2023/04/low-code.html
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...Tech Talks @NSU
http://techtalks.nsu.ru
20 февраля 2013. Рассказ о разных профессиях в IT-индустрии, или почему не все выпускники IT-специальностей пишут код (Семён Факторович, Noveo)
«Семен Факторович (Noveo, Новосибирск) рассказывает о разных профессиях в IT-индустрии и о вариантах карьерного роста IT-специалиста»
Лекция прочитана в рамках проекта Tech Talks @NSU – серии открытых лекций о разработке ПО и карьере в IT, проводимых в Новосибирском государственном университете.
Подробности: http://techtalks.nsu.ru
http://techtalks.nsu.ru
Видеозапись: http://www.youtube.com/watch?v=9sWD3RBwz30
23 сентября 2014. Проходим тест Джоэла (Семён Факторович и Олег Годовых, Noveo)
«Вот уже 14 лет как Джоэл Спольски придумал свой Joel test, но до сих пор далеко не все компании успешно проходят его. Мы поговорим о самых важных частях этого теста: о сервисах и инфраструктурных инструментах разработки (к ним относятся системы контроля версий, багтрекеры, continuous integration...) Принципы, о которых мы расскажем, одинаково применимы и для крупных компаний, и для стильных молодежных стартапов, и для студенческих курсовых проектов.»
Лекция прочитана в рамках проекта Tech Talks @NSU – серии открытых лекций о разработке ПО и карьере в IT, проводимых в Новосибирском государственном университете.
Подробности: http://techtalks.nsu.ru
"How to build powerful CI / CD based on GitLab and Docker", Aleksandr Matkovs...Provectus
Aleksandr Matkovskiy – Head of IT Department lives and works with the motto "Scaling and load balancing is our all!". Therefore, he has 3 sons and dreams to find DEV for his OPS.
You will be able to see how the CI / CD was created and saved our lives. From concept to the final product.
Vladislav Anikin – Team Leader & Software Architect, specializing in SAAS flexible and scalable solutions for business. Driving DDD/TDD oriented squad of awesome SOLID developers.
You will be able to see how the CI / CD was created and saved our lives. From concept to the final product.
SECON'2016. Парамонов Сергей, Автоматизируй это! Как не погрязнуть в рутине п...SECON
В разработке игр существует множество сопутствующих проблем, которые приходиться решать разработчику, но которые напрямую не связаны с игровым процессом. Автоматизация рутинных задач - лучшее решение, позволяющее сэкономить время для воплощения творческого замысла в условиях компактных команд и компаний.
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...HappyDev
Матерый enterprise проект с "зоопарком" из разнообразных технологий. Часто меняющаяся команда и требовательный заказчик. Менеджер, активно пытающийся вытянуть проект... Все составляющие для сюжета, достойного Титаника.
Было перепробовано множество практик для улучшения процесса разработки, и больше всего это влияло на нас, разработчиков. В одночасье рушились привычные устои, а новые, не успев прижиться, менялись снова. Разве возможна нормальная работа в такой нервной обстановке?
Автор критически оценит парное программирование, тестирование, code review и прочие практики из мира улучшения разработки, а также расшарит набитые шишки и обнаруженные грабли.
"Этот код плохой, его нужно переписать". Слышали? Как обосноватьMaksym Bezuglyi
Как на языке бизнеса доказать необходимость переписывания кода. Как бизнес может объяснить инженерам, что этого делать не нужно, либо как сделать это правильно с перспективы бизнеса.
The art of small steps, or how to make sound for games in conditions of war /...DevGAMM Conference
During a year of the war, our studio continues working and creating audio for video games. What helps us to stay productive and meet the deadlines under rocket attacks and blackouts? My short story is about choices and real steps which help us to adapt the mind and business to the new reality.
Breaking up with FMOD - Why we ended things and embraced Metasounds / Daniel ...DevGAMM Conference
Are you tired of being in a stagnant relationship with your game's audio system? Our team felt the same way, so we broke up with FMOD and started seeing Metasounds instead. We had to navigate some challenges during the transition, but we built custom editor scripts to automate certain processes, and we found that while FMOD made it easier to design sounds and music, Unreal provides fewer bugs. And while both Unreal Audio and Metasounds have their quirks, we decided to take matters into our own hands and build our own custom tools and features to make the workflow as efficient as we can.. Our bumpy journey from transitioning to Unreal Audio is not without any problems, but we feel like we are on the right track. We have the flexibility to create the sounds we want and take our game's audio to new heights. So if you're ready to break free from your boring audio engine, join us as we share our story of breaking up with FMOD and embracing the wacky world of Metasounds.
More Related Content
Similar to Продуктивность и производительность в новых скриптовых языках / Антон Юдинцев (Gaijin Entertainment)
Выступление на конференции TrueTechDay 2023 в Москве.
Содержание:
1. Причины появления интереса к low-code платформам
2. Управление сложностью в обычном и low-code подходах
3. Технические проблемы с low-code и как снизить эти риски
4. Организационные проблемы с low-code и как снизить эти риски
5. Сценарии успешного применения
6. Чеклист выбора low-code платформы
Статья на эту тему и видео-запись доклада https://blog.byndyu.ru/2023/04/low-code.html
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...Tech Talks @NSU
http://techtalks.nsu.ru
20 февраля 2013. Рассказ о разных профессиях в IT-индустрии, или почему не все выпускники IT-специальностей пишут код (Семён Факторович, Noveo)
«Семен Факторович (Noveo, Новосибирск) рассказывает о разных профессиях в IT-индустрии и о вариантах карьерного роста IT-специалиста»
Лекция прочитана в рамках проекта Tech Talks @NSU – серии открытых лекций о разработке ПО и карьере в IT, проводимых в Новосибирском государственном университете.
Подробности: http://techtalks.nsu.ru
http://techtalks.nsu.ru
Видеозапись: http://www.youtube.com/watch?v=9sWD3RBwz30
23 сентября 2014. Проходим тест Джоэла (Семён Факторович и Олег Годовых, Noveo)
«Вот уже 14 лет как Джоэл Спольски придумал свой Joel test, но до сих пор далеко не все компании успешно проходят его. Мы поговорим о самых важных частях этого теста: о сервисах и инфраструктурных инструментах разработки (к ним относятся системы контроля версий, багтрекеры, continuous integration...) Принципы, о которых мы расскажем, одинаково применимы и для крупных компаний, и для стильных молодежных стартапов, и для студенческих курсовых проектов.»
Лекция прочитана в рамках проекта Tech Talks @NSU – серии открытых лекций о разработке ПО и карьере в IT, проводимых в Новосибирском государственном университете.
Подробности: http://techtalks.nsu.ru
"How to build powerful CI / CD based on GitLab and Docker", Aleksandr Matkovs...Provectus
Aleksandr Matkovskiy – Head of IT Department lives and works with the motto "Scaling and load balancing is our all!". Therefore, he has 3 sons and dreams to find DEV for his OPS.
You will be able to see how the CI / CD was created and saved our lives. From concept to the final product.
Vladislav Anikin – Team Leader & Software Architect, specializing in SAAS flexible and scalable solutions for business. Driving DDD/TDD oriented squad of awesome SOLID developers.
You will be able to see how the CI / CD was created and saved our lives. From concept to the final product.
SECON'2016. Парамонов Сергей, Автоматизируй это! Как не погрязнуть в рутине п...SECON
В разработке игр существует множество сопутствующих проблем, которые приходиться решать разработчику, но которые напрямую не связаны с игровым процессом. Автоматизация рутинных задач - лучшее решение, позволяющее сэкономить время для воплощения творческого замысла в условиях компактных команд и компаний.
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...HappyDev
Матерый enterprise проект с "зоопарком" из разнообразных технологий. Часто меняющаяся команда и требовательный заказчик. Менеджер, активно пытающийся вытянуть проект... Все составляющие для сюжета, достойного Титаника.
Было перепробовано множество практик для улучшения процесса разработки, и больше всего это влияло на нас, разработчиков. В одночасье рушились привычные устои, а новые, не успев прижиться, менялись снова. Разве возможна нормальная работа в такой нервной обстановке?
Автор критически оценит парное программирование, тестирование, code review и прочие практики из мира улучшения разработки, а также расшарит набитые шишки и обнаруженные грабли.
"Этот код плохой, его нужно переписать". Слышали? Как обосноватьMaksym Bezuglyi
Как на языке бизнеса доказать необходимость переписывания кода. Как бизнес может объяснить инженерам, что этого делать не нужно, либо как сделать это правильно с перспективы бизнеса.
The art of small steps, or how to make sound for games in conditions of war /...DevGAMM Conference
During a year of the war, our studio continues working and creating audio for video games. What helps us to stay productive and meet the deadlines under rocket attacks and blackouts? My short story is about choices and real steps which help us to adapt the mind and business to the new reality.
Breaking up with FMOD - Why we ended things and embraced Metasounds / Daniel ...DevGAMM Conference
Are you tired of being in a stagnant relationship with your game's audio system? Our team felt the same way, so we broke up with FMOD and started seeing Metasounds instead. We had to navigate some challenges during the transition, but we built custom editor scripts to automate certain processes, and we found that while FMOD made it easier to design sounds and music, Unreal provides fewer bugs. And while both Unreal Audio and Metasounds have their quirks, we decided to take matters into our own hands and build our own custom tools and features to make the workflow as efficient as we can.. Our bumpy journey from transitioning to Unreal Audio is not without any problems, but we feel like we are on the right track. We have the flexibility to create the sounds we want and take our game's audio to new heights. So if you're ready to break free from your boring audio engine, join us as we share our story of breaking up with FMOD and embracing the wacky world of Metasounds.
Object-based audio improves spatial accuracy by assigning sounds as independent audio objects that can be precisely positioned in 3D space, rather than assigning them to fixed speaker channels. This allows for maximum spatial precision and flexibility to author once and have sounds adapt to different output configurations. Key benefits of object-based audio include improved spatial accuracy, leveraging of hardware capabilities through object rendering, and authoring once for all output configurations.
Why indie developers should consider hyper-casual right now / Igor Gurenyov (...DevGAMM Conference
This document discusses why indie game developers should consider developing hyper-casual games. It provides a brief history of hyper-casual games, noting their rise in popularity from 2013 onward. It argues that hyper-casual games are no longer just about mobile, as their mechanics can be adapted to other platforms. The document advises indies to start small, simplify control schemes, invest minimally in initial prototypes, and work with publishers to test concepts before fully developing games. It suggests reimagining existing hit games in hyper-casual form as a smart strategy for indies.
In this talk we'll cover the complexities of the AI/ML landscape and what that means for independent studios. We'll look at tools for image, text, video, and multimedia and how these tools could be used to help smaller studios stand out in a competitive landscape. We'll also explore the potential legal and ethical ramifications of utilizing these tools and provide a roadmap for how to navigate this tumultuous ocean of technology
Agility is the Key: Power Up Your GameDev Project Management with Agile Pract...DevGAMM Conference
Agile processes have been widely adopted in software development for over a decade, but their adoption in game development studios is relatively new. In this talk, Epam Management experts Ganna Ivanicheva and Boris Lesun will discuss the benefits of adopting Agile processes in game development studios, drawing from their expertise and industry research. They will also explore the similarities and differences between software and game development processes, and common pain points studios face. Additionally, the speakers will delve into the acceleration of game development processes due to the adoption of artificial intelligence (AI).
New PR Tech and AI Tools for 2023: A Game Changer for Outreach / Kirill Perev...DevGAMM Conference
This document discusses tools for public relations outreach in 2023, focusing on free and inexpensive AI and web-based options. It outlines the PR process of finding contacts, creating pitches, tracking responses, and scheduling demos. ChatGPT and Notion AI are recommended for writing, Hunter.io and Voila for contacts, Streak and Mailtrack for tracking, and Calendly and Otter.ai for scheduling and transcription. The document emphasizes using AI tools strategically and building relationships over marketing in PR.
Playable Ads - Revolutionizing mobile games advertising / Jakub Kukuryk (Popc...DevGAMM Conference
Explore the world of playable ads and their impact on mobile gaming advertising. In this presentation, I'll walk you through the pros and cons of playable ads, providing insight into how they perform and how they can be used to gain and retain users. I'll also walk you through the technical details of creating and testing playable ads, and provide tools and tips on how to maximize their impact.
Creative Collaboration: Managing an Art Team / Nastassia Radzivonava (Glera G...DevGAMM Conference
Does managing an art team differ from managing any other team?
This speech is based on personal experience in managing an art team. It is a story about forging and sustaining a healthy and trusting atmosphere that allows artistic growth. It is about a collaborative team culture, clear communication, professional development, and alignment with project goals.
Discover how focusing on these areas has allowed us to create a space where personal goals can help achieve the project goals.
From Local to Global: Unleashing the Power of Payments / Jan Kuhlmannn (Xsolla)DevGAMM Conference
Join Jan Kuhlmann, Marketing Manager for Europe at Xsolla, as he shares his expertise on taking your game to new heights. Discover the power of incorporating payments and direct-to-consumer strategies, and learn how to effectively connect with players globally. With Xsolla's fully customizable solutions, you'll have the tools to tailor your game to your players' specific needs, resulting in increased revenue and profitability.
Strategies and case studies to grow LTV in 2023 / Julia Iljuk (Balancy)DevGAMM Conference
While CPI is rising and monetization is getting harder, mobile developers explore ways to leverage the full potential of in-app purchases. This session uncovers how to stand the competition by maximizing your in-app revenue with LiveOps at any stage of the product. You will get practical steps and real-life case studies from Balancy’s work with mobile game studios.
Why is ASO not working in 2023 and how to change it? / Olena Vedmedenko (Keya...DevGAMM Conference
What will we talk about today? - What App Store Optimizationion - Main mistakes done in App Store Optimization - How to make ASO work for app succes - How to use keyword promotion in combination with ASO
How to increase wishlists & game sales from China? Growth marketing tactics &...DevGAMM Conference
Author draws from the experience of providing marketing services for 10 game development studios, the majority of which are PC developers. Presentation is divided into 3 parts: - Chinese social media & distribution platforms introduction - logic behind selected tactics - case study: games we worked on, actions taken & most effective practices
Turkish Gaming Industry and HR Insights / Mustafa Mert EFE (Zindhu)DevGAMM Conference
This time Zindhu's CEO will share more about Turkish gaming industry and its numbers. The salary ranges in Turkey, turn-over ratios, most popular reasons of turn-over and Game Studio insights diversified by genre, size and their performance
Building an Awesome Creative Team from Scratch, Capable of Scaling Up / Sasha...DevGAMM Conference
When scaling up creative production, one of the biggest headaches is ensuring consistent quality, managing a higher volume of iterations, onboarding and training new team members, and handling unexpected challenges. In this discussion, we will explore real-life case studies that provide strategies for streamlining the scaling process while prioritizing mental well-being and maintaining quality standards.
Seven Reasons Why Your LiveOps Is Not Performing / Alexander Devyaterikov (Be...DevGAMM Conference
Are you struggling with LiveOps and can't seem to figure out what's going wrong? You're not the only one. In this talk, Alexander Devyaterikov, a game producer at Belka Games, will dive into the seven most common reasons why LiveOps isn't working and provide practical solutions to overcome these challenges.
The Power of Game and Music Collaborations: Reaching and Engaging the Masses ...DevGAMM Conference
In this talk, we'll explore the power of music collaborations and how they can help reach and engage gameindustries’ audience. With music and games being among the most popular entertainments among the youthful demographic, so they make a perfect match. We'll share real-life examples of how games are using music collabs to captivate players and drive success. From game soundtracks to in-game events, we'll show how to use music to connect with audience in meaningful ways and turn it into essential tool for every developer and publisher.
Branded Content: How to overcome players' immunity to advertising / Alex Brod...DevGAMM Conference
The document discusses the results of a study on the effects of exercise on memory and thinking abilities in older adults. The study found that regular exercise can help reduce the decline in thinking abilities that often occurs with age. Specifically, older adults who exercised regularly performed better on memory and thinking tests compared to those who did not exercise regularly.
Resurrecting Chasm: The Rift - A Source-less Remastering Journey / Gennadii P...DevGAMM Conference
Discover the story behind the impressive remastering of Chasm: The Rift, originally developed by Ukrainian developer Action Forms. In this talk, we unravel the challenges of reverse engineering, asset restoration, and game mechanic reconstruction. Learn how our team breathed new life into this cult classic, overcoming the absence of the original source code to create a captivating modern gaming experience. Witness video game preservation in action, as we celebrate and cherish digital heritage.
How NOT to do showcase events: Behind the scenes of Midnight Show / Andrew Ko...DevGAMM Conference
The document outlines plans for a Midnight Show event to showcase upcoming games in a cinematic format, similar to Apple events. Several projects are listed for announcement, including Codename Project T and Codename PDW U2 Feature Film Project. Production timelines are provided from Summer 2021 through June 2022. Reflections on a previous Midnight Show note some mistakes like small post-production issues, lack of marketing and empty trailers. However, it is deemed worthwhile and they plan to do it again in a better format. The document promotes the event as a cinematic showcase for games.
2. 2
Gaijin – это
War Thunder,
Enlisted &
more
Компания Gaijin занимается разработкой и изданием
онлайн-игр – игр с большим жизненным циклом и для
всех платформ.
3. 3
Продуктивность -
ключ к успеху
Evergreen-игры постоянно развиваются. В
первый же год после лонча в игре
появляется в разы больше контента, чем за
всё время разработки.
За 10 и более лет развития меняются
(и добавляются) платформы,
меняются разработчики, концепции.
Чтобы игра развивалась, необходимо,
чтобы скорость и продуктивность
разработки увеличивались после
релиза, а не снижались.
Архитектура и дизайн должны быть
гибкими и устойчивыми к изменениям.
4. 4
С++ – основной
язык игр
Большая часть игр сделаны на С++,
это де-факто индустриальный стандарт.
• C++ обеспечивает оптимальный компромисс между
производительностью C и удобством написания
кода.
• Широкая поддержка на всех платформах и
middleware
• Lingua franca любой платформы С напрямую
совместима с C++
• Как следствие — мощные IDE, широкая
распространенность.
• Генерирует машинный код, оптимальный на каждой
платформе.
• Даже Unity написан на С++
• … к сожалению, этот язык — не без проблем.
5. 5
Но …
Вот только часть проблем С++:
• C++ требует ручного менеджмента памяти
• С++ преисполнен undefined behavior, unspecified
behavior
• С++ медленно компилируется (увеличивая время
итерации) и линкуется.
• Это усложняет локализацию и воспроизведение
ошибок.
• Так как С++ генерирует машинный код, то
исправлений любой ошибки или добавление новой
функциональности, это выпуск патча или
обновления. И это не всегда возможно.
• С++ не очень дружественен к многопоточности,
допуская легкость создания data race / dead locks /
un-optimal multithreaded code
В конечном итоге, всё это просто замедляет
разработку, которая уходит на поиск и исправление
ошибок.
7. 7
Недостатки С++ в основном относятся к
продуктивности.
В целях сохранения производительности, мы жертвуем
продуктивностью, тратя время на поиск
трудноуловимых ошибок, утечек памяти, или просто на
компиляцию и перезапуск с целью воспроизведения
ошибки.
В основном, разработчики готовы жертвовать
производительностью для увеличения продуктивности.
Time-to-market — это ключевой показатель и для
бизнеса и для качества продукта.
… и тем не менее, производительность важна!
Производительность или
продуктивность?
Tim Sweeney, 2005, «The next mainstream programming language. The
game developer’s perspective»
10. 10
Инструменты
программисто
в
Игровая индустрия быстро растёт и развивается, и для
художников количество и качество инструментов,
увеличивающих производительность их труда растёт
опережающими темпами.
Инструменты, улучшающие производительность труда
программистов существенно отстают.
За последние годы лучшими действительно новыми
инструментами для работы на С++ стали анализаторы,
санитайзеры и фаззеры (…и clang-format).
И это было 10 лет+ назад.
11. 11
Инструменты
выручают?
• В War Thunder используются и sanitizers, и статические
анализаторы кода, и автоматическое тестирование.
Это позволяет решить/поймать/не допустить сотни и
тысячи ошибок в год.
• И всё равно, в среднем, в год 5% всех «крашей»
просочившихся хотя бы в QA билд, были связаны
именно с ошибками управления/доступа памяти (в
2020 это 333/6514)
• Большая часть остальных — это логические ошибки
модели данных, ошибки испорченных данных и
проблемы железа
12. 12
Скриптовые
языки?
• Основным решением для увеличения продуктивности
таким образом, до сих пор остаются скриптовые языки
(вот уже ~30 лет). QuakeScript, UnrealScript, Lua,
Squirrel и другие
• Высокая скорость разработки, низкая когнитивная
нагрузка, автоматический менеджмент памяти,
высокая безопасность (memory safety)
• Hot reload, горячая смена модели данных (ECS)
• Легкость в воспроизведении ошибок, легкость в их
исправлении
• Легкость в освоении, простота концепций
• Решение, используемое в большинстве PC/консольных
игр (Valve, id Software, Bungie, Epic Games, Ubisoft, etc.)
• В 2021м самый популярный язык разработки игр, по
количеству и разработчиков и игр — это Lua (Roblox).
13. 13
Code as data –
серебряная пуля
оперирования
• Code as data!
• Возможность обновления игры «на лету», в том числе
в продакшене, без проблем для пользователей.
• В War Thunder каждый месяц выходят сотни
«невидимых» обновлений (скриптов игры), которые
исправляют ошибки, улучшают UX, и добавляют
пользовательский опыт
• Только за один рождественский период 2019/2020,
когда выпуск патчей на консолях вообще невозможен,
было сделано 650 коммитов, которые исправляют
ошибки и добавляют контент пользователям.
• В том числе такие «невидимые» обновления
позволяют «исправлять» и ошибки в С++ коде,
«обходя» сломанную функциональность.
• (…не относится к Unity).
15. 15
Dynamic typing &
GC
• Большая часть скриптовых языков — dynamic typed и
с automatically managed memory (GC/ref-counted).
Тому есть и исторические и объективные причины
(удобство написания без дженериков).
• Dynamic Typing вызывает ошибки, которые можно
увидеть только в момент выполнения кода, так как в
фазу компилирования информация о типах
неизвестна. Это драматически усложняет
поддержание написанного кода и рефакторинг,
«резистентность к изменениям».
• GC — существенно увеличивает пиковое
потребление памяти, и создает неприятные «пики»
(stop-the-world GC). На самом деле, это приводит к
необходимости управлять временем жизни (ручное
управление памятью)
• Референс типы и GC существенно замедляют работу
программы (cache-locality). (А Boehm GC — ещё
хуже)
16. 16
Dynamic Typing и
analyzers
• War Thunder использует Quirrel.io (форк squirrel lang),
520k+ LoC – в два+ раза больше (и более
лаконичного), чем во всём Gears of War.
• Этот код надо менять, рефакторить, развивать и
поддерживать!
• Мы написали (и развиваем) статический анализатор
кода, который суммарно ретроспективно(!) нашёл
десятки или сотни ошибок в скриптах, успешно и
долго работающих на продакшене на миллионах
человек (и не допускает возникновение новых).
• Существуют так же форки Typed Lua, TypeScript и
прочая.
• Но динамическая природа – существенное свойство
уже написанного кода, самого скрипта и подхода к
разработке, влияющего и на производительность
этого кода.
17. 17
… и
производительно
cть
Игроки могут начать играть только из-
за красивых скриншотов.
Но даже если игра и красива и
интересна, играть при низком FPS —
некомфортно.
Количество «слабого» (по CPU)
железа растёт, а не падает. Ноутбуки
«отменили» закон Мура.
Одна из самых популярных «новых»
платформ – Switch – слабее консолей
прошлого поколения.
Самые быстрые скрипт языки
(LuaJIT, Wren) в разы медленнее
наивного C++!
И даже компилируемый C# обладает существенными
перформанс проблемами и сильно зависит от JIT.
18. 18
Реальные улучшения
инструментария – Unity/C#.
• Устойчивый к ошибкам язык — большая часть
ошибок С++ просто невозможна в написании.
• Более строго типизированный.
• Нет ручного управления памятью
• Легче кривая обучения.
• EC/ECS модель
Но…
• На самом деле управление памятью есть, а GC всё
равно приносит сюрпризы.
• Во многих случаях разница производительности с
C++ достигает порядка. AAA-индустрия не готова к
такой цене.
• Hot reload долгий и не очень работающий
• Обновления требуют патчей
C#
..и Unity
19. 19
Blueprints.
• Да, это тяжелый для рефакторинга и поддержки
код.
• Программисты не любят «писать мышью».
• Высокая когнитивная нагрузка на чтение.
• Даже «нативизированные» блюпринты в разы
медленнее С++.
…и тем не менее, это:
• Устойчивый к ошибкам язык — большая часть
ошибок С++ просто невозможна в написании.
• Строго типизированный.
• Нет ручного управления памятью
• Легкая кривая обучения.
20. 20
2018-2019
Использовать скрипт-языки – жизненная необходимость и
для оперирования и особенно, для продуктивности
разработки (в сравнении с С++).
В играх - никакая производительность не бывает «лишней».
Часть скриптового кода превращается в «технический долг»
(см. Optimizing Fortnite).
К сожалению, все существовавшие скриптовые языки не
отвечали требованиям изложенным в докладе 2005г от Tim
Sweeney «The next mainstream programming language».
Не отвечал и не отвечает им и С++ (и C#), которые
вдобавок существенно усложняют оперирование онлайн-
игрой.
И мы запустили разработку своего языка!
…а Джонатан Блоу начал делать Jai.
21. 21
Язык будущего
Безопасность.
Безопасный, без необходимости ручного управления
памятью.
… но без высокой цены GC
«Поддерживаемость»
Статически типизированный, strong typed (C++ — weak
typed)
Парето-оптимальная производительность.
Производительность в 90% случаях должна быть не
меньше 90% от наивного С++. А лучше — быстрее
наивного С++.
..и быстрый interop c C++!
Удобство использования и оперирования.
Hot reload, рефакторинг тулчейн, интерпретируемость.
Низкая резистентность к изменениям модели данных.
ECS-friendly, reflection, кастомизация языка.
22. 22
daScript • Первая версия: 15.08.2019
• С тех пор написано 150k
(лаконичного) LoC. (200k+ с {})
• Суммарное время компиляции всех
строк — 2.1 секунды в один поток
на Xbox.
• Среднее время hot reload одной
системы — измеряется
миллисекундами.
• Высокая продуктивность и
высокая безопасность.
• Ahead-of-time compilation, yet
patchable with interpretation
• strong static typing
• amazing performance
• instant hot reload
• generics and type inference
• fast and easy-to-reset execution context, allowing
automatic burst free memory management. No memory
leaks yet with no GC/reference counting cost.
• Hygienic macro, AST/reader macro, reflection – ECS-
friendly
• Fast and powerful C++ interop
• Data oriented
•Open Source – BSD license
23. 23
Laconic&unifor
mal
def fibR(n)
if (n < 2)
return n
else
return fibR(n - 1) + fibR(n - 2)
def fibI(n)
var last = 0
var cur = 1
for i in range(0, n-1)
let tmp = cur
cur += last
last = tmp
return cur
24. 24
High-
performance
• В интерпретации, в среднем в 3-6 раз
быстрее Lua/Squirrel в интерпретации
и в 2 раза быстрее LuaJIT
• В data-oriented ECS коде — в ~30+
раз
• В Ahead-of-time от 10% медленнее, до
30% быстрее «наивного» C++
• Burst-free GC, no memory leak memory
management
25. 25
Powerful tools
• Powerful VS Code extension (LSP), with
auto-completion, type/function hinting,
go-to-definition, etc.
• Debugger
• Profiler
• GitHub Copilot