• Как мы ловим Deadlock`и на PostgreSQL и чиним их

      Предисловие


      Ситуация: есть высоконагруженная мета-игра для наших танков под названием Глобальная карта. Эдакая пошаговая настолка для команд, где бои происходят в реальном танковом клиенте. В пиковые часы на карте несколько тысяч руководителей кланов производят игровые действия: атакуют друг друга, перемещают дивизии, покупают, продают, грабят корованы. Помимо этого, существует десяток сервисов, которые также могут вносить изменения в игровую ситуацию: подкидывают деньжат, штрафуют, добавляют игроков в клан и прочее.

      Всё это неизбежно приводит к дедлокам. Так вот, хочу вам поведать историю о том, как мы эти периодические проблемы держим в допустимых рамках.


      Читать дальше →
    • 4C: Kyiv — конференция разработчиков видеоигр

        23–24 сентября 2016 года состоится международная конференция разработчиков видеоигр 4C:Kyiv. Не важно, сколько проектов в портфолио вашей компании. Если вы живете играми — вам непременно следует посетить 4С: Kyiv.

        4С: Kyiv — это два дня докладов и мастер-классов от 50+ экспертов игровой индустрии, выпустивших в релиз не одну легендарную игру. Участники услышат выступления Криса Тейлора (создателя Totall Anihilation), Чета Фалисзека (сценариста Half-Life и Portal), Рейнира Хардарсона (креативного директора EVE Online), Эрика Симонича (креативного директора Alan Wake и Evolve), а также других авторитетных разработчиков.

        Подробности под катом.


        Читать дальше →
      • PostgreSQL. Как правильно хранить котов или история одной миграции

          История взята из реального проекта. Но поскольку реальный проект слишком скучный (и под NDA), в этой статье используется упрощенный пример.

          Жил-был один проект. И была у него база данных. И была в базе таблица для хранения, ну, скажем, котов. Вот такая:
          CREATE TABLE cats (
              id serial,
              cname varchar(20),
              ctype varchar(20),
              primary key(id)
          );
          

          Все довольно просто: у каждого кота есть id, имя и некий тип.

          Конечно, у нас были бизнес-требования к котам и их типам. Например, мы точно знали, что у нас есть типы big furry, neko и sudden danger. Предполагали, что могут появиться типы long tail и sleeper-eater. Но мы ожидали, что требования будут меняться. И пока не известно, какие в итоге понадобятся типы. Поэтому использовали тип данных varchar(20).
          Читать дальше →
        • Лучшие выступления WGDF

            Всем привет! Этой весной в Санкт-Петербурге состоялась West Game Development Forum — международная конференция, посвящённая разработке игр и всему, что с ней связано. Участники WGDF услышали более 40 докладов о разработке, геймдизайне, маркетинге, дизайне, юзабилити и тестировании в видеоиграх класса ААА. Своим опытом и знаниями поделились эксперты из компаний с мировым именем: Wargaming, Blizzard Entertainment, Rockstar Games, Remedy Entertainment, Unity Technologies, Autodesk и др.



            И теперь мы бы хотели поделиться записями лучших докладов с хабровчанами. Под катом вы найдете выступления:
            • Blending Eastern and Western Development Cultures / Thaine Lyman / WoTs PC Executive Producer, Wargaming
            • Through the Grinder: Refining Diablo III's game systems / Wyatt Cheng / Technical Game Designer, Blizzard Entertainment
            • Five Questions to Ask Everyday: The fun-damentals of strong game design / Alexander Brazie / Game Design Consultant
            • Leadership Traits Your Company Should Have (and you can teach yourself!) / Keith Fuller / Leadership Consultant, Fuller Game Production
            • Мотивация и эмоциональные потребности игроков / Надежда Иванова / IXD Researcher, Wargaming
            • Разработка идей в условиях высокой неопределенности / Никита Денисов / Senior Game Designer, Wargaming


            Приятного просмотра!
            Читать дальше →
          • Open WG Talk #3: Новые процессы и продуктовое управление

              В минском офисе Wargaming регулярно проходят встречи, на которых сотрудники компании делятся опытом и обсуждают насущные вопросы, волнующие разработчиков, менеджеров, дизайнеров, продюсеров, художников – словом, всех тех, кто работает в IT и геймдеве. Эти митапы мы называем WG Talk и проводим в закрытом формате, только для сотрудников компании.
              Но есть темы и знания, которыми нельзя не поделиться с широкой аудиторией. Поэтому мы организуем Open WG Talk.

              Сегодня мы хотим поделиться с вами видеозаписями выступлений последнего Open WG Talk, темой которого стало продуктовое управление и внедрение новых процессов. Под катом вы найдете доклады Сергея Бережного, директора разработки Wargaming, и Ярополка Раша, руководителя медиасервисов Wargaming.



              Приятного просмотра!
              Читать дальше →
            • Python: строим распределенную систему c PySyncObj

                Представьте, что у вас есть класс:
                class MyCounter(object):
                    def __init__(self):
                        self.__counter = 0
                    def incCounter(self):
                        self.__counter += 1
                    def getCounter(self):
                        return self.__counter
                

                И вы хотите сделать его распределённым. Просто наследуете его от SyncObj (передав ему список серверов, с которыми нужно синхронизироваться) и отмечаете декоратором @replicated все методы, которые изменяют внутреннее состояние класса:
                class MyCounter(SyncObj):
                    def __init__(self):
                        super(MyCounter, self).__init__('serverA:4321', ['serverB:4321', 'serverC:4321'])
                        self.__counter = 0
                    @replicated
                    def incCounter(self):
                        self.__counter += 1
                    def getCounter(self):
                        return self.__counter
                

                PySyncObj автоматически обеспечит репликацию вашего класса между серверами, отказоустойчивость (всё будет работать до тех пор, пока живо больше половины серверов), а также (при необходимости) асинхронный дамп содержимого на диск.
                На базе PySyncObj можно строить различные распределенные системы, например распределенный мьютекс, децентрализованные базы данных, биллинговые системы и другие подобные штуки. Все те, где на первом месте стоит надёжность и отказоустойчивость.
                Читать дальше →
              • Грязные трюки мобильной разработки от J2ME до Android

                  Сколько помню разработку игр для мобилок, всегда приходилось изобретать какие-то ухищрения, чтобы все достойно работало. Сталкивались с этим 15 лет назад, когда писали игры еще под черно-белые телефоны, сталкиваемся и сейчас. Уверен, что огромный набор подобных трюков существует в разработке игр для десктопов и, тем более, консолей. Но я занимаюсь именно мобилками, поэтому речь пойдет о них.


                  Читать дальше →
                • Мартовский Python Meetup: Python VS Erlang и возможности PostgreSQL

                    Всем привет!
                    После долгого перерыва блудный Python Meetup снова с нами. На долгожданной мартовской встрече сообщества любителей и профессионалов языка программирования Python обсуждались животрепещущие темы: противостояние Python и Erlang, а также дополнительные возможности PostgreSQL.
                    Видеозаписи выступлений под катом. Приятного просмотра!

                    Читать дальше →
                  • Erlang в Wargaming

                      Язык Erlang известен не очень широко, хотя это довольно интересная технология, очень сильная в своей нише. Последние несколько лет Erlang все чаще применяется в веб-разработке.

                      Отношение к Erlang противоречивое – есть как убежденные сторонники, так и суровые критики. Однако мало кто использует его в разработке. Так что специалистов, которые могут хвалить или ругать этот язык, опираясь на собственный опыт применения, совсем немного.

                      В компании Wargaming Erlang применяется более 3 лет. Есть около десятка разработчиков и несколько проектов, работающих под большими нагрузками. И в этой статье мы поделимся своим опытом и видением Erlang.


                      Читать дальше →
                    • West Game Development Forum: Create, Share, Improve

                        Компания Wargaming приглашает принять участие в крупнейшей конференции этой весны — West Game Development Forum 2016, которая состоится 22-23 апреля 2016 в Санкт-Петербурге!

                        West Game Development Forum — это крупная международная конференция, посвящённая разработке игр и всему, что с ней связано. Она состоится Санкт-Петербурге и объединит профессиональных разработчиков из разных стран и компаний, как ветеранов геймдева, так и молодых специалистов.


                        Читать дальше →
                      Самое читаемое