В одной из предыдущих статей мы провели обзор технологий, которые используются на нашем новом проекте — fast paced шутере для мобильных устройств. Теперь хочу поделиться, как устроена клиентская часть сетевого кода будущей игры, с какими трудностями мы столкнулись и как их решали.
Рубрика «проектирование» - 11
Как мы писали сетевой код мобильного PvP шутера: синхронизация игрока на клиенте
2018-07-03 в 7:59, admin, рубрики: android, C#, ecs, Gamedev, iOS, mobile development, online multiplayer, pvp, unity, unity3d, Блог компании Pixonic, геймдев, мобильные игры, мультиплеер, проектирование, Проектирование и рефакторинг, разработка игр, разработка мобильных приложений, шутер, юнити25 ошибок начинающего программиста
2018-06-21 в 10:15, admin, рубрики: gtd, планирование, Программирование, проектирование, Проектирование и рефакторинг, психология, рефакторинг, Совершенный код, советы разработчику, Эмоции
Научитесь выявлять их. Выработайте привычки избегать их.
Цель этой статьи не загнобить новичков за типичные ошибки, а научить выявлять их и избегать. Порядок перечисления – случайный.
От переводчика
Иногда бывает трудно объяснить простыми словами казалось бы банальные вещи: зачем использовать гит, в чем фишка инкапсуляции, зачем писать тесты, как планировать свой код, рефакторить чужой и т.д. Мне показалось, что в этой статье компактно собраны важные «гуманитарные» аспекты программирования. Что-то вроде морального кодекса, ориентира и мотиватора в принятии решений, связанных с написанием кода.
Как бы это смешно не звучало, я работал над этим текстом с середины марта, стараясь подобрать подходящие формулировки и упростить для восприятия. Ещё пару дней воевал с хабра-редактором. Поэтому, если вы найдёте недочёты, прошу не винить меня в нерадении, а оповестить, я их сразу же исправлю. Я думал украсить статью картинками, но решил, что это только раздует её до совсем неприличных размеров. Приятного чтения. Читать полностью »
Как и почему мы написали свой ECS
2018-06-13 в 8:14, admin, рубрики: android, C#, ecs, Gamedev, iOS, mobile development, online multiplayer, pvp, unity, unity3d, архитектура, Блог компании Pixonic, геймдев, мобильные игры, мультиплеер, проектирование, Проектирование и рефакторинг, разработка игр, управление проектами, шутерВ прошлой статье я описал технологии и подходы, которые мы используем при разработке нового мобильного fast paced шутера. Т.к. это была обзорная и даже поверхностная статья — сегодня я копну глубже и подробно расскажу, почему мы решили написать собственный ECS-фреймворк и не стали использовать существующие. Будут примеры кода и небольшой бонус в конце.
Читать полностью »
Как мы замахнулись на мобильный fast paced шутер: технологии и подходы
2018-05-21 в 10:30, admin, рубрики: android, Gamedev, iOS, mobile development, multiplayer, online, pvp, unity, Блог компании Pixonic, геймдев, мобильные игры, мультиплеер, проектирование, разработка игр, Разработка под android, разработка под iOS, управление разработкой, шутер
Год назад у нас в компании был один проект — мобильный шутер War Robots с относительно медленными, но красочными и напряженными боями. Игра продолжает развиваться, у нее десятки миллионов установок и игроков по всему миру, постоянно выходят апдейты. В какой-то момент мы захотели сделать динамичный шутер на Unity со скоростями, сравнимыми с Overwatch, CS:GO или Quake. Но реализовать задуманное для мобильных платформ (в первую очередь iOS и Android) на основе War Robots при текущих архитектуре и подходах было практически нереально.
Мы понимали, как это сделать в теории — есть много статей, презентаций на YouTube, детально рассказывающих о том, как написать шутер, как работать с сетью, какие возникают проблемы и как их решать. Здесь нет Rocket Science, все эти подходы придумали еще 30 лет назад и за это время они особо не поменялись. НО: у нас не было практики.
Забегая вперед, скажу — нам удалось реализовать задуманное. Мы создали для мобильных платформ динамичный быстрый шутер, который сейчас находится в бета-тестировании и активно дорабатывается. И мне очень хотелось бы всем этим поделиться. Это первая, обзорная статья с перечислением и кратким описанием практически всего того, что мы используем (прошу не путать с другим нашим проектом в разработке, технологии и подходы в котором похожие, но отличаются в деталях).Читать полностью »
Дневник техлида: вторые полгода разработки нового мобильного PvP
2018-04-26 в 10:00, admin, рубрики: android, Gamedev, iOS, mobile development, multiplayer, online, pvp, unity, Блог компании Pixonic, геймдев, мобильные игры, мультиплеер, проектирование, разработка игр, разработка мобильных приложений, разработка под iOS, управление разработкой
Я лид команды в Pixonic, где работаю уже год. О старте и развитии одного из наших новых проектов я ранее написал статью на Хабре. По ходу дальнейшего производства, спустя еще полгода, у меня накопилось большое количество интересного опыта, которым хотел опять поделиться. На этот раз речь пойдет о процессе наращивания функционала в мобильном клиенте и поддержании кода в гибком состоянии.
Уверен, подавляющее большинство хотя бы раз запускали какую-нибудь многопользовательскую игру. На старте клиент, как правило, пишет несколько магических сообщений и через несколько секунд (хотя в случае с одним известным десктопным шутером — несколько минут) игрок попадает в главное меню, где есть заветная кнопка «В бой» или типа того. Но процесс запуска состоит из огромного количества этапов, которые происходят очень быстро и без вмешательства игрока:Читать полностью »
Студенческий конкурс на разработку экспериментальных технологий в области протезирования и реабилитации
2018-04-24 в 16:39, admin, рубрики: AR и VR, ассистивные технологии, Блог компании Моторика, инвалидность, проектирование, протезы, реабилитация, робототехника, электротехника
Современные протезы уже не просто восполняют утраченные функции руки, но и во многом превосходят ее.
Мы бросаем вызов устаревшим технологиям и решили объединить всех талантливых студентов и молодых ученых, которые не боятся по-новому взглянуть на то, каким должен быть современный протез
Читать полностью »
Matthias Noback Об Идеальной Архитектуре — Слои, Порты и Адаптеры (Часть 3 — Порты и Адаптеры)
2018-04-03 в 16:37, admin, рубрики: DDD, php, symfony, архитектура, гексогональная архитектура, ооп, порты и адаптеры, Программирование, проектирование, Проектирование и рефакторинг, слоистая архитектураMatthias Noback (автор A year with Symfony) опубликовал цикл из трех статей, в котором описал свои взгляды на идеальную архитектру корпоративных приложений, сформировавшуюся за долгие годы практики.Первая часть является вводной и не представляет особого интереса(можно ознакомиться в оригинале). Перевод второй — по ссылке. И так как он вызвал БЕШЕННЫЙ ажиотаж(целых ДВА человека подискутировали со мной в комментах), то не перевести третью было бы преступлением.
В предыдущей статье мы обсудили разумную систему расслоения проекта, состоящую из трех слоёв:
- Домен
- Прикладной слой
- Инфраструктура
Сейчас, подробно рассмотрим инфраструктурный слой.
Matthias Noback Об Идеальной Архитектуре — Слои, Порты и Адаптеры(Часть 2 — Слои)
2018-03-25 в 23:15, admin, рубрики: DDD, php, symfony, архитектура, гексогональная архитектура, ооп, порты и адаптеры, Программирование, проектирование, Проектирование и рефакторинг, слоистая архитектураВ 2017 году Matthias Noback (автор A year with Symfony) опубликовал цикл из трех статей, в котором описал свои взгляды на идеальную архитектру корпоративных приложений, сформировавшуюся за долгие годы практики.Первая часть является вводной и не представляет особого интереса(можно ознакомитсья в оригинале). Переводом второй является данная статья. Перевод третьей будет доступен в скором времени.
Для меня, одним из обязательных требований, к "чистой" архитектуре, является грамотное разделение кода приложения по слоям. Сам слой не делает ничего, вся соль в том, как он используется и какие ограничения накладываются на компоненты, ему принадлежащие. Давайте немного пофилософствуем, перед тем как рассмотреть конеретные практические приемы.
Проблемы проектирования новой фото и видеотехники
2018-03-12 в 9:45, admin, рубрики: патентное право, проектирование, Производство и разработка электроники, ФототехникаЧто не могут сделать могучие корпорации с их огромными финансовыми, интеллектуальными и технологическими возможностями, то может сделать один человек. Это кажется парадоксальным, но если взглянуть ретроспективно на развитие фототехники, окажется, что многие инновационные на тот исторический период решения, были предложены энтузиастами фотографии, а вовсе не коллективом профессионалов.
Создатель фотокамеры Leica Оскар Барнак был инженером – самоучкой.
Виктор Хассельблад был в первую очередь энтузиастом, а профильное образование помогало ему в работе. Еще подростком он страстно увлекался фотографией, постоянно делал эскизы своих открытий. В его эскизах уже тогда можно было найти интересные решения по усовершенствованию фотоаппаратов. Не будь этого опыта, не было бы и славного начала компании Hasselblad.
Зензабуро Ёcино создатель линейки фотоаппаратов «Bronica» был разработчиком фототехники лишь по призванию, но никак не по образованию и специальности.
Никто из выше названых авторов не проводил так называемые маркетинговые исследования, они сами были фотографами и очень хорошо представляли, какими возможностями должна обладать и как должна выглядеть фотокамера. Они смотрели дальше профессионалов. Читать полностью »
Защищенность переменных в Kotlin на примере Java
2017-12-16 в 12:19, admin, рубрики: java, kotlin, Программирование, проектирование, Проектирование и рефакторингСовсем недавно у меня состоялся разговор с коллегой по поводу новых языков программирования. После того, как разговор зашел о Kotlin, мой друг обронил фразу «Там нулл нельзя передавать, если не указал, что переменная может быть nullable». Эта фраза сильно озадачила меня — а действительно ли, так важны киллер фичи Котлина в сравнении с уже известными языковыми возможностями Явы? Размышления на этот вопрос вылились в целый комплекс примеров, в рамках которых я хочу показать (в первую очередь самому себе, наверно), зачем же нужны все эти новые языковые возможности.
Самая скучная часть разработки на уже обкатанном языке — рутинные задачи. Например, показ картинок. Абсолютно рядовая задача, которая в любом проекте обрастает рядом условностей.Читать полностью »