Search
Write a publication
Pull to refresh
0
0
Светлов Александр @Mehalich

Пользователь

Send message

Философия программирования 10 — ИИ

Reading time5 min
Views22K
Вам кажется, что искусственного интеллекта не существует. Ну, кажется, да. Но что вы понимаете в интеллекте? Кто сказал, что искусственный интеллект должен быть таким, как его проектировали? Фильмов надо меньше смотреть. То есть смотреть можно и больше, но верить в них, как в проектор реальности, или будущего — не стоит.


Читать дальше →

Виртуальный квадрокоптер на Unity + OpenCV (Часть 2)

Reading time11 min
Views21K
КПДВ

Доброго времени суток, дорогие хабравчане!

Этой статьей я хотел бы продолжить серию о том, как подружить Unity, C++ и OpenCV. А также, как получить виртуальную среду для тестирования алгоритмов компьютерного зрения и навигации дронов на основе Unity. В предыдущей статье я рассказывал о том, как сделать виртуальный квадрокоптер в Unity. В этой статье речь пойдет о том, как подключить C++ плагин, передать туда изображение с виртуальной камеры и обработать его посредством OpenCV.
Читать дальше →

Unity — Концептуальные идеи и подсказки для новичков игродева. Мощная оптимизация 2D проекта

Reading time5 min
Views38K
Ссылка на первую статью из этой серии.

Быстрое вступление

Я долго думал какую тему выбрать на этот раз, и решил, что расскажу про некоторые фишки, которые помогут оптимизировать вашу игру. Особенно это будет актуально для новичков, потому что чаще всего первая игра оказывается игрой для смартфонов и планшетов. А на мобилках, сколько бы там ядер не оказывалось — 6 или 8, игры все ещё очень несбалансированные в плане потребления ресурсов. Код и его идея, которые будут приводится в этой статье являются немного более сложными для понимания чем те две строчки кода, которые я приводил в своей предыдущей публикации. Хотя, я не правильно выразился — код легко понять — но порог вхождения в это понимание будет чуть выше чем легко (для новичков конечно), придется посидеть минут 5.

Введение в идею

Как вы создаете объекты в Unity из префабов? Только Instantiate и никак иначе — другой функции там просто не существует.

Для тех кто не помнит или еще не знает, что такое Instantiate (), маленькая справка — *аргументы инстанции*. Вот вы их создаете (объекты), и создаете, иногда удаляете, потом опять создаете, и так в течении всего уровня. Это бьёт по оптимизации и существенно — почему? Потому что так написано на всех форумах Unity, а иногда проглядывается и в документации, а документацию надо слушаться. Как Instantiate бьет по про производительности?
Читать дальше →

В Dungeons & Dragons теперь можно играть в виртуальной настолке

Reading time2 min
Views62K
imageОнлайн-сервис Fantasy Grounds начал предлагать своим клиентам лицензионный контент от Wizards of the Coast для игры в Dungeons & Dragons. Теперь игрокам доступны монстры, карты, классы, модули приключений, с помощью которых они могут сыграть в любимую настолку, не выходя из дома – а их партнёры по игре могут находиться в любом месте, где есть интернет.

Fantasy Grounds – это сервис «виртуальных настолок», компьютерный симулятор настольных игр, доступный в Steam. Он позволяет играть в различные настольные игры по интернету. Это могут быть как простые игры с передвижением фишек по карте, так и игры со сложными правилами, в которых действиями нескольких игроков руководит ведущий. Именно так происходят игры типа Dungeons & Dragons.

Лично я просиживал долгие часы в свободных аудиториях института с компанией таких же фанатов RPG. У нас были ксерокопии официальных книг AD&D и не было фирменных многогранных игральных костей, зато были воображение и интерес к ролёвкам. Воображение сильнее компьютерной графики, а игра в компании интереснее одиночного сидения за компьютером.
Читать дальше →

16 причин, по которым игроки уходят из вашей игры

Reading time6 min
Views49K
image

Игроки уходят из игр. Согласно одному из источников, в среднем менее 40% игроков возвращаются в бесплатную игру после первого раза. Важнейшая задача гейм-дизайнера – создать захватывающий продукт. Мы делаем игры для того, чтобы в них интересно было играть. Если они бросают наши игры слишком часто и быстро, мы не справились с задачей.

Размышляя о том, почему игроки покидают вашу игру, вы ставите себя на их место. Ваш финансовый успех зависит от размера аудитории – особенно, если ваша монетизация происходит через внутриигровые покупки. Две основных причины ухода игрока – разочарование и скука. Они же – главные враги "потока". Поток – это состояние сознания, характеризуемое чувством активной сосредоточенности и поглощённости текущей деятельностью. Именно в это состояние мы и стремимся ввести игроков – независимо от жанра игры.

Наша задача, как гейм-дизайнеров – подойти к разработке со стороны позитивной психологии. Удержание игроков сводится к разработке продукта, создающего состояние потока. Не стоит путать это с казуалками или играми, построенными на повторении простых задач. В статье я собрал материал для чек-листа – причины, по которым игроки могут покидать игру, перечислены в порядка убывания важности. Убедитесь в том, что вы проверили все пункты списка.
Читать дальше →

Откуда растут руки у GetHashCode в .NET

Reading time12 min
Views109K

Введение


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

Что хранится в объектах помимо их полей?


Начнем нашу статью с того, что узнаем что хранится у объектов ссылочного типа помимо их полей.

У каждого объекта ссылочного типа есть так называемый заголовок (Header), который состоит из двух полей: указатель на тип которым является данный объект (MethodTablePointer), а так же индекс синхронизации (SyncBlockIndex).
Читать дальше →

Как оценить глубину игровой механики. Часть первая

Reading time6 min
Views20K
В этой статье по геймдизайну Майк Стаут, в прошлом дизайнер студии Insomniac Games, делится полезной информацией о глубине игровых механик и рассматривает вопросы их излишней перегруженности на примере серии игр Ratchet & Clank.


Читать дальше →

Бинарные деревья поиска и рекурсия – это просто

Reading time8 min
Views648K
Существует множество книг и статей по данной теме. В этой статье я попробую понятно рассказать самое основное.

Бинарное дерево — это иерархическая структура данных, в которой каждый узел имеет значение (оно же является в данном случае и ключом) и ссылки на левого и правого потомка. Узел, находящийся на самом верхнем уровне (не являющийся чьим либо потомком) называется корнем. Узлы, не имеющие потомков (оба потомка которых равны NULL) называются листьями.

image
Рис. 1 Бинарное дерево
Читать дальше →

Наш опыт переезда на адаптивный UI-кит

Reading time8 min
Views18K


Всем привет! Меня зовут Дмитрий Беляев, я работаю frontend-разработчиком в отделе медиапроектов Mail.Ru Group. Вместе с нашей командой мы занимаемся разработкой и поддержкой 13-ти вертикальных проектов различной тематики. До недавнего времени каждый из них довольно сильно отличался от остальных как в плане дизайна, так и в плане используемых технологий. Поскольку сейчас они развиваются в схожих направлениях, к нам все чаще стали приходить менеджеры с вопросом: «На одном из проектов недавно выкатили фичу N, можем ли запустить аналог для нашего проекта на следующей неделе / завтра / вчера?», после которого мы начинали копаться в особенностях верстки очередного проекта, натыкаться на новые подводные камни, не считая того, что мы повторно решали одни и те же задачи. Подобные ситуации начали наталкивать всех на мысль об унификации, что позволило бы не только повысить узнаваемость проектов, но и сократить время на решение рабочих задач.
Читать дальше →

Трудности и радости разработки первой игры на андроид

Reading time3 min
Views32K
image

Хочу поделиться историей разработки моей первой андроид игры.

Предыстория


Начнем с того, что меня зовут Евгений, мне 26 лет. Всю свою сознательную жизнь я пытался сделать игру. В детстве это были самодельные настольные игры с кубиками; в юности попытки разобраться в бейсике и программах для создания игр на ZX Spectrum; в подростковом возрасте, до того как у меня появился персональный компьютер, я придумывал и рисовал лабиринты, в которых можно было собирать ключи, убивать врагов и т.д.
Читать дальше →

Взятка, или История одного пасьянса

Reading time2 min
Views20K
image
Предупреждение! Статья предназначена для любителей карточных игр и головоломок.

К созданию новых сюжетов я отношусь скептически. Все уже было, сказал Экклезиаст, и что он сказал — тоже было. Тем не менее, программисты до сих пор мечтают и покупают лотерейные билеты. И я мечтал — перенести на свой iPhone семейную карточную игру — как вдруг мечта сбылась. Где-то я об этом уже писал.

Игра была рассчитана на двоих, и я играл с процессором А7. Разыгрывалось 18 взяток, процессор был тупой (господи, ну кто так программирует!) и через месяц игры я досконально изучил характер оппонента. Основной целью стала задача обыграть его со счетом 18-0.
Читать дальше →

Пол Грэм: «О чем вы не можете сказать»

Reading time22 min
Views26K
image

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

Зато у нас в конце есть примечания, как в книге «Хакеры и Художники», которую мы продолжаем переводить совместными усилиями.

Оригинал «What You Can't Say»

За помощь с переводом огромное спасибо Щёкотовой Яне и Artem unknown

Январь 2004

То, что Вы не можете сказать

Видели ли Вы Ваше старое фото и не были ли обескуражены тем, что видите? Одевались ли мы таким образом? В действительности, да. И мы не имели представления, как глупо выглядим. Истинная природа моды и стиля — быть невидимыми, как невидимо движение Земли для тех, кто живет на ней.

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

Если бы Вы могли совершить путешествие на машине времени назад в прошлое, единственная вещь оставалась бы неизменной: вам следовало бы следить за своими словами. Мнения, считающиеся безвредными сейчас, могли бы доставить множество неприятностей. Я уже упомянул одну из них, которая могла бы доставить большие неприятности почти во всей Европе в середине 17 века, и доставила Галилею, когда он сказал, что Земля вращается. [1]
Читать дальше →

К чему можно оказаться не готовым, став тим-лидом

Reading time8 min
Views60K
imageОдин технический специалист нашей компании PayOnline, которая занимается автоматизацией приема платежей, предложил перевести статью автора Pascal de Vink, который проработал тим-лидом уже 2 года. Когда Pascal только занял эту должность, оказалось, что ко многим вещам он был просто не готов. Эта статья поможет избежать многих ошибок на пути от разработчика к лидеру команды. Ниже идет непосредственно перевод.

До этого я был инженером и занимался непосредственно кодом. Мне говорили, что у меня хорошие лидерские качества, наверно, поэтому я и попросил о повышении. Я даже не задумывался, что значит управлять целой командой инженеров. Сейчас думаю, вот бы тогда у меня было побольше времени на подготовку. Итак, без лишних слов, вот вещи, к которым я оказался не готов.

Меньше заниматься разработкой


Может, это и очевидно, но роль ведущего разработчика означает, что надо больше смотреть на общую картину, чем углубляться в конкретные аспекты того, что происходит. Я этого не понимал, пока не проработал пару месяцев, в течение которых мучился от того, что хотел разобраться во всех задачах, а времени на это не было. У меня было все меньше времени копаться в коде, а люди продолжали обращаться ко мне со своими очень узкоспециализированными задачами. Слишком поздно я понял, что надо разбираться в команде, а не во всех ее знаниях. Узнать, кто разбирается в нужной области оказалось намного быстрее и ценнее. Хотя, копаться в коде было намного веселее.
Читать дальше →

Как без мата создать игру на Unity3D

Reading time9 min
Views129K

Пролог


В начале 2015 года я решил написать свою первую игру. В качестве движка я, не долго думая, выбрал Unity3D, так как у меня был опыт в C# и JavaScript, и знакомые, которые могли помочь. Я вспомнил одну мини-игру, в которую я играл в детстве, и решил сделать нечто похожее. Установил себе Unity и поставил себе цель сделать рабочий прототип за пару недель, параллельно изучая движок.

Я начал реализовывать эту идею в свое свободное время. Через неделю был рабочий прототип, через полтора месяца у меня уже был работоспособная версия игры со всей прописанной логикой. Я удовлетворился этим и на время отложил игру на полочку. В июне я снова взялся за нее, с мыслями, что мне понадобится максимум месяц на то, чтобы ее доделать. Ох, как же я был не прав…
Читать дальше →

Фоны старых квестов — методы разработки, секреты, советы

Reading time12 min
Views43K


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

Давайте, впрочем, вернемся к теме сегодняшней публикации. Считаю это маленьким открытием, и мне непременно нужно поделиться им с теми, кто собирается соединить некоторый отрезок своей жизни с тем, что может называться классической адвенчурой. Быть может это поможет вернуть на рынок игры, которые немного оттеснят «хипстерский пиксель» заменив его на то, что может напомнить времена лучших игр от «Westwood Studios», «Sierra» и «Lucas Arts». Предположу вскользь, что множество художников и так знают это. И, тем не менее — я не заметил публикаций на эту тему. Наша братия не спешит делиться своими секретами, сохраняя некую монополию на собственные открытия.

Я хотел приурочить эту статью к началу разработки собственной адвенчуры. Но кто знает, когда это произойдет? А вам эта информация может помочь уже сейчас. Стоит ли откладывать? Думаю, что нет. Лопаты в руки.


Продолжить копать

Metaballs без шейдеров + физика жидкостей

Reading time7 min
Views20K
Как-то раз возник у меня диспут с хабраюзером ZimM по поводу безшейдерного 2D движка: я утверждал, что для простых 2D игр шейдеры не обязательны, почти все эффекты можно сделать спрайтами, его же позиция была обратной. Я не раз в уме возвращался к этому спору и придумывал задачи, не реализуемые на первый взгляд без шейдеров, и именно решение одной такой задачи и привело к созданию игры, где игрок управляет жидкостью наклоном телефона.
Читать дальше →

Экспорт Terrain'а из WorldMachin в Unity3D

Reading time3 min
Views22K


Эта статья является адаптированным под современны редактор переводом на русский язык оригинальной инструкции: «Terrain export from world machine to unity».


World Machine может служить отличным генератором местности для Unity. Unity же имеет нативную поддержку текстур и splatmaps. Вы можете создать и использовать несколько слоёв текстур местности одновременно. Здесь представлен простой рабочий код для импорта в Unity местности из World Machine. Пожалуйста, обратите внимание, что, хотя этот метод работает для основных местностей в unity, многие продвинутые пользователи могут создать собственные шейдеры местности, которые могут потребовать другую технику исполнения.
Читать дальше →

Поиск и чтение унаследованного кода

Reading time20 min
Views27K
Вася — молодой программист. Получив задачу и засучив рукава, он берется за написание кода. Уже через день решение задачи готово, Вася запускает его… И сталкивается с неожиданной досадной ошибкой. Вася старательно исправляет ее и повторно запускает решение. В результате — снова неприятная ошибка. Так Вася долго наступает на грабли, пару раз значительно переписывает программу, пока, наконец, через неделю задача окончательно не решена.

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

Как найти нужный вам кусок исходного кода? Как его понять? А главное — зачем все это делать? В поиске ответов на эти вопросы добро пожаловать под кат.
Читать дальше →

Information

Rating
Does not participate
Location
Таллин, Эстония, Эстония
Date of birth
Registered
Activity