Pull to refresh
12
0
Алексей Павлов @lexxpavlov

Программист

Send message

Самая сложная программа

Reading time5 min
Views127K
От переводчика: я нашел на Quora вопрос: Какую программу или код можно назвать самыми сложными из когда-либо написанных? Ответ одного из учасников был настолько хорош, что вполне тянет на статью.

Пристегни ремни.

Самая сложная программа в истории была написана командой людей, имена которых нам неизвестны.

Это программа – компьютерный червь. Червь был написан, судя по всему, между 2005 и 2010 годами. Поскольку этот червь является таким сложным, я могу дать лишь общее описание того, что он делает.
Читать дальше →
Total votes 174: ↑158 and ↓16+142
Comments272

Видеозаписи выступлений по геймдеву в Лектории Вышки

Reading time1 min
Views4.1K
В марте этого года в рамках лектория Вышки прошел цикл лекций об игровой индустрии. Лекции читали преподаватели программы «Менеджмент игровых проектов» ВШБИ НИУ ВШЭ. Под катом я собрал для вас видеозаписи, ссылки на конспекты и краткое описание всех докладов.

Total votes 11: ↑11 and ↓0+11
Comments4

N+6 полезных книг

Reading time4 min
Views45K


Привет! Это шестой пост про книги: мы их читаем и запоминаем, которые были полезны для развития компании и вообще. Поскольку это уже не первая подборка, в неё попало достаточно много странных вещей — классика управления проектами и бизнеса не сильно меняется.

Первая в списке — «Агрессия» Конрада Лоренца. Она вообще-то про зверей и людей, но эта штука настолько системная и захватывающая, что прямо накладывается на бизнес. Ну и просто на жизнь. Особенно интересны выкладки про уровень агрессии в разных сообществах. Ну и у него описаны баги разных зверей, что меня лично всегда дико радует.

Коллаборация — Мортен Хансен
Это инструкция по совместной работе и взаимодействию между людьми в команде и командами. Она меня здорово успокоила рядом исследований, например, тем, что вообще-то не надо заниматься нетворкингом, если ты занимаешься делом. Не надо знать 200-400 человек, чтобы найти нужного — надо знать 10 человек, каждый из которых знает по 50-100. А это в разы проще и эффективнее. Нетворкинг для интроверта — это прекрасно.
Читать дальше →
Total votes 43: ↑41 and ↓2+39
Comments16

Хакатон и гейм-джем в Екатеринбурге

Reading time2 min
Views5.2K
So popular! Much people! Wow! Регистрация закрыта 29 марта.

Мечтаешь сделать игру с собственными правилами и бомбическим сюжетом? Надоело ждать Half-Life 3 и смотреть, как battle royale разрывают гейм-индустрию? Тогда регистрируйся на хакатон Контура и сделай что-то по-настоящему взрывное! Поторопись, 29 марта ровно в полночь (по Мск.) мы закроем превратим в тыкву регистрацию. 7 и 8 апреля тебя ждет 27 часов непрерывной работы над собственным проектом, знакомство с самыми крутыми разработчиками города и командное месилово за призы.




Мы не будем ограничивать ни жанром, ни технологиями. Хочешь Super Mario на Марсе? Вперед! Любишь коллекционные карточные игры? Действуй! Каким бы шерстяным волчарой ты ни был, запилить крутой проект за сутки будет сложно. Даже если ты отличаешь друг от друга Defold, Corona, Unity и Unreal Engine. Поэтому тебе помогут другие разработчики, гейм-аналитики, дизайнеры — хакатон будет командным. Если у тебя есть проверенная команда — бери всех с собой. Не каждый может затусить в нашем офисе разработки на Широкой речке. А ты сможешь!



На нашем предыдущем хакатоне было клёво.

Читать дальше →
Total votes 14: ↑14 and ↓0+14
Comments33

Описание прототипа моего игрового мультиплеерного сервера

Reading time6 min
Views6K
Привет, Хабр. Рад представить свою первую статью: описание прототипа игрового мультиплеерного сервера.

Исходный код (под лицензией Apache 2.0)

Содержание:

  • Архитектура обработки входящих запросов
  • Краткое описание прочих моментов
    • Модули и взаимодействия основных классов
    • Разные виды тестов
    • Кэширование при работе с БД

Архитектура обработки входящих действий от пользователя


Входной точкой является websocket-контроллер, принимающий всевозможные реквесты от пользователей: начиная от логина и заявок на игру до игровых ходов и написания сообщений в чат. Этот контроллер обслуживает thread-pool (около 20 потоков).

Одной из самых важных вещей в игре — является быстрая обработка игровых действий (приоритетный безнес-кейз). То есть в идеале игра должна мгновенно реагировать на действия пользователя и не «зависать». В то время как для множества других не игровых действий, таких например, как аутентификация, написание сообщений в чат или матчинг игроков (для совместной игры) — большая или меньшая задержка вполне приемлема для пользователя.

Поэтому архитектуру я постарался спроектировать также и в соответствии с этим требованием (см. картинку):
Читать дальше →
Total votes 17: ↑11 and ↓6+5
Comments12

Релиз Apache Ignite 2.4 — Distributed Database and Caching Platform

Reading time5 min
Views4.9K
12 марта 2018 г., спустя 4 месяца после прошлой версии, вышел Apache Ignite 2.4. Этот релиз примечателен целым рядом нововведений: поддержка Java 9, множественные оптимизации и улучшения SQL, поддержка платформой нейронных сетей, новый подход к построению топологии при работе с диском и многое другое.

Apache Ignite Database and Caching Platform — это платформа для распределенного хранения данных (оптимизированная под активное использование RAM), а также для распределенных вычислений в близком к реальному времени.

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

Примеры использования: быстрый распределенный кеш; слой, агрегирующий данные из разрозненных сервисов (например, для Customer 360 View); основное горизонтально масштабируемое хранилище (NoSQL или SQL) оперативных данных; платформа для вычислений и т.д.

Далее рассмотрим основные новшества Ignite 2.4.
Читать дальше →
Total votes 20: ↑19 and ↓1+18
Comments5

Развязываем игровой код с помощью паттерна Command, и дебажим, летая на машине времени

Reading time18 min
Views21K

Картинка для привлечения внимания: > Replay bug-10492; going back in time


Привет! Я пишу статьи, посвященные архитектуре в игровой разработке. В этой статье я хочу разобрать паттерн Команда (Command). Он многогранен, и может быть применен по-разному. Но я покажу, как сделать мой любимый трюк — машина времени для отладки изменений гейм стейта.


Эта штука сэкономила мне кучу времени в поиске и воспроизведении сложных багов. Она позволяет делать "снапшоты" игрового состояния, историю его изменения, и пошагово их применять.


Начинающие разработчики познакомятся с паттерном, а продвинутые, возможно, найдут трюк полезным.


Хотите узнать как это сделать? Прошу под кат.

Читать дальше →
Total votes 31: ↑31 and ↓0+31
Comments27

Откуда «мыло» в WPF и как с ним бороться

Reading time21 min
Views82K


Это руководство для WPF-разработчиков, стремящихся добиться максимально чёткой картинки в своих приложениях. Графическая система WPF до мозга костей векторная, но конечным результатом её работы по-прежнему является растр. Если не уделить этому факту должного внимания, можно столкнуться с различными сортами «мыла» — паразитными артефактами растеризации. В такой ситуации важно не терять присутствия духа, причины их возникновения вполне рациональны, а методы борьбы достаточно просты и эффективны.
Читать дальше →
Total votes 184: ↑175 and ↓9+166
Comments62

Создание игры на Lua и LÖVE — 1

Reading time37 min
Views38K
image

Введение


В этой серии туториалов мы рассмотрим создание завершённой игры с помощью Lua и LÖVE. Туториал предназначен для программистов, имеющих некоторый опыт, но только начинающих осваивать разработку игр, или для разработчиков игр, уже имевших опыт работы с другими языками или фреймворками, но желающими лучше узнать Lua или LÖVE.

Создаваемая нами игра будет сочетанием Bit Blaster XL и дерева пассивных навыков Path of Exile. Она достаточно проста, чтобы можно было рассмотреть её в нескольких статьях, не очень больших по объёму, но содержащих слишком большой объём знаний для новичка.

GIF

Кроме того, туториал имеет уровень сложности, не раскрываемый в большинстве туториалов по созданию игр. Большинство проблем, возникающих у новичков в разработке игр, связано с масштабом проекта. Обычно советуют начинать с малого и постепенно расширять объём. Хотя это и неплохая идея, но если вас интересуют такие проекты, которые никак нельзя сделать меньше, то в Интернете довольно мало ресурсов, способных вам помочь в решении встречаемых задач.

Что касается меня, то я всегда интересовался созданием игр со множеством предметов/пассивных возможностей/навыков, поэтому когда я приступал к работе, мне было сложно найти хороший способ структурирования кода, чтобы не запутаться в нём. Надеюсь, моя серия туториалов поможет кому-нибудь в этом.
Читать дальше →
Total votes 21: ↑21 and ↓0+21
Comments7

Релиз первой беты кросс-платформенного XAML UI-тулкита Avalonia

Reading time6 min
Views22K

Состоялся релиз первой бета-версии Авалонии.


Avalonia — кроссплатформенный .NET UI-тулкит, вдохновлённый технологиями WPF и распространяемый под лицензией MIT. Он полностью поддерживает .NET Core 2.0, XAML, дата-биндинги, lookless-контролы и многое другое. Avalonia позволяет писать на C# приложения под Windows, Linux и Mac OS X. Возможность запуска на iOS и Android находится в экспериментальном состоянии.



Данная версия стабильна и имеет полное право называться бетой: тулкит не разваливается в руках и имеет приличный базовый набор контролов (см. видео). На нём создано два достаточно больших приложения с открытым исходным кодом: AvalonStudio — кроссплатформенная IDE для разработки на C# и C++ и Core2D — редактор 2D-схем и диаграмм.

Total votes 100: ↑97 and ↓3+94
Comments77

Как устроена Алиса. Лекция Яндекса

Reading time8 min
Views86K
В этой лекции впервые рассматриваются технологические решения, на основе которых работает Алиса — голосовой помощник Яндекса. Руководитель группы разработки диалоговых систем Борис Янгель hr0nix рассказывает, как его команда учит Алису понимать желания пользователя, находить ответы на самые неожиданные вопросы и при этом вести себя прилично.


— Я расскажу, что внутри у Алисы. Алиса большая, в ней много компонент, поэтому я немного поверхностно пробегусь.
Total votes 86: ↑83 and ↓3+80
Comments67

Почему люди не покупают вашу игру

Reading time10 min
Views21K
image

В постмортемах многих игр часто повторяется одно и то же клише. Оно всплывает и в разговорах с инди-разработчиками. Звучит клише примерно так: «Чёртовы потребители! Они каждый день тратят по пять баксов на один и тот же безвкусный латте из Starbucks, но не могут выделить ту же сумму на покупку моей созданной с любовью, графически красивой инди-игры, которую я, вложив душу, разрабатывал целых три года? Почему, почему люди не могут дать моей игре шанса?»

Да, выбор кажется очевидным: или один и тот же пережаренный кофе или поистине независимое творение мысли.

Но вот как это выглядит с точки зрения покупателя: Starbucks потратила десятилетия и миллионы долларов на установление отношений с этим покупателем. Покупатель знает компанию и знает, чего ему ждать за свои пять баксов.

Нежелание покупателя тратить пять долларов на странную инди-игру связано с тем, что он не представляет, какая она. Хорошо ли она сделана? Как долго можно в неё играть? На что похожа эта игра? Но, что более важно — кто её сделал? В конце концов, нам, инди-разработчикам нужно преодолеть огромное препятствие: установить взаимоотношения с нашими игроками, чтобы они доверяли нам и покупали наши игры.
Total votes 42: ↑39 and ↓3+36
Comments32

Бухгалтерский учет для программистов

Reading time16 min
Views81K

Введение


Занимаюсь автоматизацией бухгалтерского учета 17 лет. После универа поработал как программист бухгалтерской программы. Выяснилось, что есть спрос на программистов этой программы. Поменял одну работу, вторую. Начал брать заказы на стороне. Выяснилось (или показалось), что выполнять заказы выгоднее, чем получать зарплату. Стал частным предпринимателем. Выяснилось (или опять показалось), что продавать программу выгоднее, чем программировать. Стал дилером. Оказалось, что выгоднее всего – подписка на обновления и обслуживание. Возможно, еще выгоднее сделать веб-сервис для онлайн-бухгалтерии…

В ходе работы приходилось нанимать программистов и обучать основам бухгалтерского учета. Когда обучал программистов бухучету, мне нравилось за час рассказать им всю базовую теорию. Приятно срывать покровы сложности и таинственности. Оказывается, курсы бухгалтеров никому не нужны. Нет такой науки. Разве что набор терминов, в которых путаются сами бухгалтера…
Читать дальше →
Total votes 51: ↑51 and ↓0+51
Comments182

Git Rebase: руководство по использованию

Reading time8 min
Views802K
Rebase — один из двух способов объединить изменения, сделанные в одной ветке, с другой веткой. Начинающие и даже опытные пользователи git иногда испытывают нежелание пользоваться ей, так как не видят смысла осваивать еще один способ объединять изменения, когда уже и так прекрасно владеют операцией merge. В этой статье я бы хотел подробно разобрать теорию и практику использования rebase.

Теория


Итак, освежим теоретические знания о том, что же такое rebase. Для начала вкратце — у вас есть две ветки — master и feature, обе локальные, feature была создана от master в состоянии A и содержит в себе коммиты C, D и E. В ветку master после отделения от нее ветки feature был сделан 1 коммит B.


Читать дальше →
Total votes 122: ↑121 and ↓1+120
Comments169

Обучение программированию: рисование пальцами и убийство зомби

Reading time14 min
Views8.4K

Zmob, моя первая (и единственная) собственная игра.

К концу курса ширина и глубина нашего коллективного знания была гораздо больше, чем кто-либо мог ожидать от любого курса старшей школы по любому предмету.

Образование против исследований


В этом семестре я работаю помощником преподавателя вводного курса по Python, и это вгоняет меня в депрессию. Я вспоминаю свои ранние годы программирования, когда возможности казались почти безграничными, а добавление новых возможностей в мои программы было восхитительным и радостным процессом. Я гордился каждой строкой, хвастал друзьям о том, какие потрясающие вещи мне удавалось сделать, и чувствовал себя всемогущим. Мир в буквальном смысле менялся под моими пальцами. Я мог облечь в плоть практически любую идею, которая мне была интересна, и любую грань жизни, которую хотел исследовать. Я развил в себе неутолимую жажду к программированию, которая остаётся со мной и по сей день.
Читать дальше →
Total votes 16: ↑16 and ↓0+16
Comments11

Git: советы новичкам – часть 2

Reading time8 min
Views81K
Во второй части нашего пособия для новичков в Git мы рассказываем об управлении ветками, особенностях их слияния, а также о принципах работы указателей. Первую статью вы можете прочитать по ссылке.


Читать дальше →
Total votes 37: ↑34 and ↓3+31
Comments37

“Cтрашилка” о GDPR

Reading time7 min
Views36K
В мае 2018 года в Европе вступают в силу обновлённые правила обработки персональных данных, установленные Общим регламентом по защите данных (Регламент ЕС 2016/679 от 27 апреля 2016 г. или GDPR — General Data Protection Regulation).

Все компании, которые обрабатывают (как внутри, так и за пределами ЕС) персональные данные граждан европейских стран, обязаны соблюдать требования этого документа. Сфера действия новых правил GDPR распространяется на все 28 стран ЕС. Этот документ заменит существующие законы о защите персональных данных в европейских странах. С учетом того, что новые правила GDPR будут применяться экстерриториально, их соблюдение будет обязательным для российских компаний, имеющих присутствие в ЕС. То есть для любого российского бизнеса, собирающему и обрабатывающему персональные данные хотя бы одного гражданина страны-члена ЕС.
Читать дальше →
Total votes 14: ↑12 and ↓2+10
Comments49

Чему инди-разработчики могут научиться у инди-писателей

Reading time15 min
Views15K
image

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

Но представьте рынок, на котором такие рекомендации неприменимы. На нём нет таких вещей, как Steam Launch Visibility Round или рекомендации в App Store. Что, если нет прессы, с радостью пишущей обзоры? И что, если вместо 7667 игр, выпущенных в Steam в 2017 году, в тот же год выпущено больше 100 000 новых книг? А общее количество книг на рынке превышает 4 000 000 наименований?
Читать дальше →
Total votes 46: ↑43 and ↓3+40
Comments42

Как писать чистый и красивый код

Reading time7 min
Views35K
Каким должен быть качественный код? Роберт Мартин выразил это невероятно точно, когда сказал: «Единственная адекватная мера качества кода — это количество восклицаний «какого чёрта!» в минуту».

image

Позвольте мне пояснить эту идею.
Читать дальше →
Total votes 35: ↑28 and ↓7+21
Comments47

Что в имени? Анализ данных названий 5820 игр в Steam

Reading time6 min
Views9.8K

«Что в имени»? Больше, чем можно подумать. Если вы уже давно работаете над своей игрой или находитесь на этапах планирования, то в какой-то момент вам всё равно придётся выбирать ей название. Названия видеоигр могут стимулировать воображение и вызывать ностальгические воспоминания.

В Steam ежегодно выпускается больше шести тысяч игр, но какая их часть вызывает интерес игроков? Давайте рассмотрим исследование, в котором мы изучили названия игр, выпущенных в прошлом году.

Почему названия важны?


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

В магазине Steam название и небольшая картинка — это всё, чем может привлечь к себе игра. На ранних этапах цифрового маркетинга существовало гораздо меньшее количество выпущенных игр. Увеличившийся вал выпускаемых игр с уменьшившимся маркетинговым пространством делают название важным, как никогда.

Кроме того, следует рассмотреть множество других аспектов. Маркетинг «сарафанного радио», места в поисковых движках, возможность перепутать игру с другими и многое другое — вот причины, по которым стоит вложить дополнительные усилия, чтобы обеспечить названию игры «защиту от дурака».

Ну а теперь перейдём к данным.
Читать дальше →
Total votes 17: ↑17 and ↓0+17
Comments12

Information

Rating
Does not participate
Location
Саратов, Саратовская обл., Россия
Date of birth
Registered
Activity