Как стать автором
Обновить
-1
0
Андрей Ведерников @Grom1

Программист; рационалист

Отправить сообщение

Undo и Redo — анализ и реализации

Время на прочтение6 мин
Количество просмотров42K
Привет, Хабр! В связи со своей реальной задачей проанализировать возможности Qt и .NET для реализации так называемых «Назад» (Undo) и «Вперёд» (Redo), цель которых отменить действие и отменить отмену соответственно, я решил все свои мысли, идеи и задумки развернуть в этой статье, даже если они будут частично или совсем неверными (поэтому по возможности и интересу пишите в комментарии свои замечания). Хоть и на просторах Интернета спокойно можно найти хорошие (и не очень) библиотеки и примеры реализаций, более общего представления на эти вещи я нашёл не так скоро, да и то, только в ответе на StackOverflow, а этого было мне не достаточно. Во всём найденном есть моменты, которые меня порадовали, есть и которые огорчили. Пожалуй, стоит отменить все печали и радости… чтобы к ним снова вернуться… «Назад… в будущее»!


Интересно? Добро пожаловать!
Do!
Всего голосов 27: ↑24 и ↓3+21
Комментарии44

Умный указатель для Pimpl

Время на прочтение6 мин
Количество просмотров15K

Pimpl (pointer to implementation, указатель на имплементацию) — полезная идиома, распространенная в языке C++. У этой идиомы есть несколько положительных сторон, однако, в этой статье она рассматривается только как средство уменьшения зависимостей времени компиляции. Более подробно о самой идиоме можно посмотреть, например, здесь, здесь и здесь. Эта статья посвящена тому какой умный указатель использовать при работе с Pimpl и зачем он нужен.

Читать дальше →
Всего голосов 28: ↑24 и ↓4+20
Комментарии10

Пользовательские исследования в играх

Время на прочтение16 мин
Количество просмотров15K
В январе в рамках нашей программы «Менеджмент игровых интернет-проектов» проходил мастер-класс приглашенного эксперта Наталии Спрогис (руководитель направления UX-исследований в Mail.Ru) на тему «Пользовательские исследования в играх».

В этой статье мы ответим на вопросы, которые обсуждались на мастер-классе:

— Зачем разработчикам игр нужны UX исследования?
— На какие вопросы они помогают ответить?
— В какой момент разработки стоит их применять?
— Как организовать исследование?



Всего голосов 15: ↑14 и ↓1+13
Комментарии4

233 орешка для Золушки: отбираем цвета для «идеальной» палитры

Время на прочтение13 мин
Количество просмотров20K


В процессе разработки игры в текстовом режиме, мне пришлось нарисовать больше сотни анимационных ASCII спрайтов. После релиза игра получила неожиданно хорошие отзывы и было принято решение делать продолжение. Рисуя спрайты для первой части и перепробовав с десяток вариантов выбора цвета и несколько десятков различных палитр, я понял, что нужен свой, «идеальный» набор цветов на все времена. За сотни и сотни часов рисования, сложились следующие критерии идеальности палитры:

  • Краткость: небольшое количество цветов в палитре. Весь набор цветов можно охватить одним взглядом.
  • Полнота: цвета палитры должны равномерно и достаточно плотно заполнять цветовое пространство.
  • Дискретность: цвета палитры должны отличаться друг от друга на глаз.
  • Группировка: цвета должны быть удобно сгруппированы для быстрого нахождения нужного.

Оказалось, что можно подобрать набор из ровно 233 цветов, который удовлетворит всем этим критериям.
Посмотреть идеальную палитру
Всего голосов 65: ↑61 и ↓4+57
Комментарии43

Как построить средневековый замок

Время на прочтение9 мин
Количество просмотров61K

Нормандское завоевание Англии привело к буму в строительстве замков, но процесс создания крепости с нуля далеко не так прост.


image
Замок Бодиам в графстве Восточный Суссекс, основан в 1385 году

1) Тщательно выберите место для строительства


Крайне важно построить свой замок на возвышении и в стратегически важной точке.

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

Историкам редко удавалось найти свидетельства современников, касающиеся выбора места для строительства замка, но всё же они существуют. 30 сентября 1223 года 15-летний король Генрих III прибыл в Монтгомери со своей армией. Король, успешно проведший военную кампанию против уэльского принца Лливелина ап Иорверта, собирался построить в этой местности новый замок, чтобы обеспечить безопасность на границе своих владений. Английским плотникам дали задание подготовить древесину ещё за месяц до этого, но советники короля только сейчас определили место строительство замка.
Читать дальше →
Всего голосов 67: ↑55 и ↓12+43
Комментарии64

Пишем сериализатор для сетевой игры на C++11

Время на прочтение18 мин
Количество просмотров25K
Написать этот пост меня вдохновила замечательная статья в блоге Gaffer on Games «Reading and Writing Packets» и неуёмная тяга автоматизировать всё и вся (особенно написание кода на C++!).

Начнём с постановки задачи. Мы пишем сетевую игру (и сразу MMORPG, конечно же!), и независимо от архитектуры у нас возникает необходимость постоянно посылать и получать данные по сети. У нас, скорее всего, возникнет необходимость посылать несколько разных типов пакетов (действия игроков, обновления игрового мира, просто-напросто аутентификация, в конце концов!), и для каждого у нас должна быть функция чтения и функция записи. Казалось бы, не вопрос сесть и написать спокойно эти две функции и не нервничать, однако у нас сразу же возникает ряд проблем.

  • Выбор формата. Если бы мы писали простенькую игру на JavaScript, нас бы устроил JSON или любой его самописный родственник. Но мы пишем серьёзную многопользовательскую игру, требовательную к трафику; мы не можем позволить себе отправлять ~16 байт на float вместо четырёх. Значит, нам нужен «сырой» двоичный формат. Однако, двоичные данные усложняют отладку; было бы здорово, если бы мы могли менять формат в любой момент, не переписывая целиком все наши функции чтения/записи.
  • Проблемы безопасности. Первое правило сетевой игры: не доверяй данным, присланным клиентом! Функция чтения должна уметь оборваться в любой момент и вернуть false, если что-то пошло не так. При этом использовать исключения считается неважной идеей, поскольку они слишком медленные. Мамкин хакер пусть и не сломает ваш сервер, но вполне может ощутимо замедлить его беспрерывными эксепшнами. Но вручную писать код, состоящий из if'ов и return'ов, неприятно и неэстетично.
  • Повторяющийся код. Функции чтения и записи похожи, да не совсем. Необходимость изменить структуру пакета приводит к необходимости поменять две функции, что рано или поздно приведёт к тому, что вы забудете поменять одну из них или поменяете их по-разному, что приведёт к трудно отлавливаемым багам. Как справедливо замечает Gaffer on Games, it is really bloody annoying to maintain separate read and write functions.

Всех интересующихся тем, как Бендер выполнил своё обещание и при этом решил обозначенные проблемы, прошу под кат.
Читать дальше →
Всего голосов 36: ↑36 и ↓0+36
Комментарии33

10 подкастов для изучения/продолжения изучения английского языка

Время на прочтение5 мин
Количество просмотров188K
image

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

Подкасты – это звуковые аудиофайлы в стиле радиопередач в интернете Как правило, подкасты имеют определенную тематику и периодичность издания. Каждый человек, у которого есть смартфон, может прослушивать подкасты. Для прослушивания подкастов у владельцев Apple есть родное приложение, называется «podcasts». Android пользователи могут использовать приложение «Podcast Addict».
Читать дальше →
Всего голосов 32: ↑32 и ↓0+32
Комментарии42

Эффективное использование Github

Время на прочтение13 мин
Количество просмотров125K

Github — важная часть жизни современного разработчика: он стал стандартом для размещения opensource-проектов. В «2ГИС» мы используем гитхаб для разработки проектов web-отдела и хостинга проектов с открытым кодом.

Хотя большинство из нас пользуются сервисом практически каждый день, не все знают, что у него есть много фишек, помогающих облегчить работу или рутинные операции. Например, получение публичного ключа из URL; отслеживание того, с каких сайтов пользователи приходят в репозиторий; правильный шаринг ссылок на файлы, которые живут в репозиториях гитхаба; горячие клавиши и тому подобное. Цель этой статьи — рассказать о неочевидных вещах и вообще о том, что сделает вашу работу с гитхабом продуктивнее и веселее (я не буду рассматривать здесь работу с API гитхаба, так как эта тема заслуживает отдельной статьи).


Содержание



Читать дальше →
Всего голосов 149: ↑148 и ↓1+147
Комментарии38

Разбор графики Supreme Commander

Время на прочтение9 мин
Количество просмотров27K

Total Annihilation занимает в моём сердце особое место, потому что это была моя первая RTS; вместе с Command & Conquer и Starcraft это одна из самых лучших RTS, выпущенных во второй половине 90-х.

Через десять лет, в 2007 году, был выпущена её наследница: Supreme Commander. Благодаря тому, что над игрой работали одни из основных создателей Total Annihilation (дизайнер Крис Тейлор, программист движка Джонатан Мейвор и композитор Джереми Соул), ожидания фанатов были очень высокими.

Supreme Commander была тепло принята критиками и игроками благодаря своим интересным особенностям, таким как «стратегический зум» и физически реалистичная баллистика.

Давайте посмотрим, как движок SupCom под названием Moho рендерит кадр игры. RenderDoc не поддерживает игры под DirectX 9, поэтому реверс-инжиниринг выполнялся при помощи старого доброго PIX.
Читать дальше →
Всего голосов 73: ↑73 и ↓0+73
Комментарии14

Учим английский дешево и эффективно

Время на прочтение9 мин
Количество просмотров161K
Английский можно выучить дешево, иногда даже бесплатно. В этой статье я расскажу про личный опыт: какой софт и ресурсы в Интернет оказались максимально эффективными для меня, и как ими правильно пользоваться.

Если вы не готовы тратить на английский хотя бы 2 часа в день, то дальше можно не читать.
Читать дальше →
Всего голосов 45: ↑40 и ↓5+35
Комментарии135

История PowerPoint. Как стартап изменил формат презентации

Время на прочтение43 мин
Количество просмотров49K
«Выступление» означает демонстрацию слайдов с текстом, изображениями и графиками. Конечно, можно обойтись и просто словами, но желательно прибегать к наглядным материалам. Визуальные элементы помогают запомнить и привлечь внимание. И сегодня у слова «презентация» есть ясный синоним — PowerPoint.

Конечно, существуют другие программы, которые позволяют создавать и редактировать презентации. Но явление, когда люди создают бессмысленные скучные наборы слайдов, называют «смертью от PowerPoint». Мы ведь не называем плохой стиль письма «смертью от Word», мы не называем ошибки в вычислениях «смертью от Excel». Программа PowerPoint стала стандартом для визуального сопровождения выступлений.

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

У компьютеров были сотни килобайтов ОЗУ, а Microsoft была мелкой фирмой. Её Windows не пользовалась особым успехом, Word и Excel куда лучше продавались на Mac. Если для выступления были нужны слайды, выступающий не создавал слайды самостоятельно. Приходилось полагаться на отдел дизайна, который слабо представлял, чего от него хотят. А результат демонстрировали на кодоскопе или, реже, на 35-мм плёнке.

В этот странный период свет увидел PowerPoint, ещё не в составе пакета Microsoft Office. Но обо всём по порядку.
Ещё 70 тысяч знаков текста на полчаса чтения
Всего голосов 53: ↑52 и ↓1+51
Комментарии16

Какие технологии компьютерных игр перетекают в реальность – и обзор технологий на играх живого действия

Время на прочтение8 мин
Количество просмотров33K


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

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

В общем, давайте посмотрим, какой технический антураж сейчас используется в играх живого действия, и что перекочевало в реал из шутеров и RPG.
Читать дальше →
Всего голосов 69: ↑67 и ↓2+65
Комментарии78

Как оптимизировать игру с помощью полигональных атласов

Время на прочтение5 мин
Количество просмотров30K
Как всем известно, жизнь разработчика мобильных игр непроста. Он должен найти свой путь на очень узкой дорожке. С одной ее стороны — требования гейм-дизайнеров, уверенно устремляющиеся к бесконечности. Больше функционала, больше красивой графики, больше эффектов, больше анимаций, больше звуков. А с другой стороны — ограниченные ресурсы мобильного устройства. И раньше всего, как правило, заканчивается оперативная память.

Например, iPad 2 — всего в нем 512 Мб RAM. Однако приложению доступно только примерно 275 Мб. Когда занимаемая приложением память будет приближаться к этой границе, операционная система пришлет так называемое «Memory warning» — мягко, но настойчиво предложит освободить память. И если лимит все же будет превышен, операционная система остановит приложение. Пользователь будет думать, что ваша игра упала и побежит писать гневное письмо в саппорт.



Главный потребитель памяти — это, конечно, графика. В этой статье мы попробуем рассказать о пусть немного сложном, но эффективном способе, который используется для уменьшения занимаемой текстурами памяти, а также для повышения скорости отрисовки.
Читать дальше →
Всего голосов 64: ↑61 и ↓3+58
Комментарии69

Документация — основа игры

Время на прочтение7 мин
Количество просмотров33K
В этой статье я хочу рассказать о том, как мы с другом оформляли документацию для своей первой игры. А так же о том, какое большое значение она имела и как помогла сэкономить деньги и время в процессе разработки. В статье я уделю чуть меньше внимания начальным главам дизайн документа, а больше расскажу о нашем опыте написания документации, связанной с контентом игры.


Читать дальше →
Всего голосов 16: ↑14 и ↓2+12
Комментарии6

Как подружить юнит-тестирование с базой данных

Время на прочтение10 мин
Количество просмотров33K
Как подружить TDD подход при работе с базой данных
История о том, как разрабатывалась система автоматического тестирования методов, взаимодействующих с базой данных, с подробным описанием того, с какими подводными камнями пришлось столкнуться в процессе разработки и внедрения системы в окружение проекта.
Читать дальше →
Всего голосов 14: ↑12 и ↓2+10
Комментарии20

2D магия в деталях. Часть первая. Свет

Время на прочтение10 мин
Количество просмотров76K

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

Читать дальше →
Всего голосов 63: ↑62 и ↓1+61
Комментарии25

Лекции ВШБИ: геймдизайн и оперирование игр

Время на прочтение5 мин
Количество просмотров21K
Ажиотаж вокруг игровой индустрии среди россиян различных возрастных групп не утихает — все больше людей, особенно молодежи, начинают относиться к играм не только как к развлечению, но и рассматривают разные виды работы в игровой индустрии в качестве своего призвания. К сожалению, для многих из них вопрос о том, как попасть в так называемый геймдев, остается не просто открытым, а даже тайной за семью печатями. Чтобы приоткрыть завесу этой тайны, в рамках проекта «Университет, открытый городу: лекции молодых ученых Вышки в Культурном центре ЗИЛ» прошел целый цикл лекций под общим названием: «Создание онлайн-игр: геймдизайн, монетизация, оперирование и продвижение», вели который преподаватели нашей программы “Менеджмент игровых интернет-проектов”. Под катом вы найдете их видео и конспекты.


Читать дальше →
Всего голосов 16: ↑12 и ↓4+8
Комментарии6

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

Время на прочтение12 мин
Количество просмотров43K
Мне очень приятно, что мою последнюю статью про продвижение игры на Steam Greenlight, которую я писал на хабр чуть больше года назад, прочитали почти 50k раз и как мне кажется в итоге она была написана не зря. Тогда наша маленькая команда только-только получила зелёный свет. С того момента произошло еще много событий, но одним из самых интересных и значимых было то, что мы также прошли в программу ID@Xbox для независимых разработчиков, с возможностью выпуска своей игры на консоли Xbox One. И вот неделю назад игра все-таки увидела свет.

image

В этой статье я хочу поделиться интересной и возможно кому-то полезной информацией о том, с чем мы столкнулись пока готовили к релизу нашу игру на консоли Xbox One и Steam. А для этого я попробую раскрыть следующие темы:
  • Сколько может стоить разработка консольного проекта
  • Где мы взяли такие деньги
  • Как все подсчитать и иметь представление на что рассчитывать
  • Почему мы решили работать без издателя и внешних инвестиций
  • Как мы попали в Steam и на Xbox One
  • Почему нужно платить и получать возрастные рейтинги
  • В чем разница между Steam и Xbox — минусы и плюсы консольной разработки для инди
Читать дальше →
Всего голосов 70: ↑65 и ↓5+60
Комментарии34

О проблемах осанки. Почему корректоры осанки редко помогают

Время на прочтение5 мин
Количество просмотров78K
Читая Geektimes, я регулярно нахожу для себя что-то новое и интересное, обращая особое внимание на все, что связано с медициной и здоровьем. Так уж сложилось, что основной интерес у меня в технологичных протезах конечностей — я врач травматолог-ортопед по образованию. По второму образованию я — врач мануальный терапевт. А еще я зануда и люблю разбираться в том, чем занимаюсь. Именно из-за моего профильного образования, занудства, а так же из-за возрастающего интереса аудитории geektimes к корректорам осанки (достаточно часто встречаю статьи на эту тематику) я понял, что мне есть что рассказать, поделиться своим видением коррекции осанки, а так же рассказать, почему корректоры осанки в том виде, в котором они существуют сейчас, будут помогать лишь в очень ограниченном количестве случаев, а в отдельных ситуациях могут и вредить.
Читать дальше →
Всего голосов 34: ↑34 и ↓0+34
Комментарии86

C++ без new и delete

Время на прочтение15 мин
Количество просмотров89K
Привет, хабравчане!

Меня зовут Михаил Матросов, я технический менеджер в компании Align Technology. Сегодня я поработаю капитаном и немного расскажу об основах современного С++.

Работая над большим проектом, мне часто приходится смотреть чужой код и порой я вижу странное. А именно, многие даже вполне матёрые программисты на С++ могут не знать некоторых фундаментальных для языка вещей. Ну, это даже не слишком удивительно — язык такой.

Мне бы хотелось поговорить об этих основах и начну я со своей любимой темы. Будем говорить об операторах new и delete. А точнее, об их отсутствии. Я расскажу, как писать надёжный и современный код на С++ без использования операторов new и delete.

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

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


Изображение взято с сайта behappy.me
Читать дальше →
Всего голосов 59: ↑59 и ↓0+59
Комментарии134

Информация

В рейтинге
Не участвует
Откуда
Екатеринбург, Свердловская обл., Россия
Зарегистрирован
Активность