Рубрика «разработка игр» - 139

7–8 апреля в Контуре был открытый хакатон — 27–часовой марафон по программированию. Разработчики, тестировщики, дизайнеры и проектировщики интерфейсов собрались, чтобы штурмовать задачи. Только темой стали не рабочие проблемы, а игры.

Правила простые до ужаса: вы приходите без каких-либо заготовок и через сутки показываете, что успели сделать. Хакатон проходил в пяти городах: Екатеринбурге, Ижевске, Иннополисе, Новосибирске и Перми. Впервые мы приглашали всех желающих.

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

Кибер–бабка, или как мы хакатонили сутки - 1

Не знаю, что я сделал, но это со мной селфятся?

Читать полностью »

Продолжение истории разработки мобильного приложения iOS/Android для мотивации детей заниматься математикой

Это вторая часть истории (вперемешку с рассказом о моих ошибках и их решениях) о том, как я (где-то два года в свободное время) разрабатывал мобильное приложение (под iOS/Android), которое бы мотивировало мою дочь решать примеры по математике. В итоге, получилось приложение, позволяющее ребёнку зарабатывать деньги своим умом.

Первую часть читайте тут.

План второй части

  • О написании кода
  • О контроле версий
  • Об озвучке
  • Об иконке
  • О сборке под Android и о размере
  • О сборке под iOS и о размере
  • О названии и продвижении
  • Статистика
  • О чём жалею
  • Что понял
  • Ссылки

Мелочи в программировании, которые упрощают мне жизнь

  • Ещё с Mono продолжаю использовать //TODO (в комментариях) для отметок мест, которые нужно доработать. Потом, все эти места можно удобно мониторить на закладке Task List (вызывается Ctrl+, T):

Читать полностью »

Здесь будет рассмотрен способ деления сферической поверхности процедурно-генерируемой планеты нерегулярными тайлами, и, как его следствие, подразделение океана и континентов на отдельные участки (сектора). Мы предполагаем, что на поверхности планеты уже задана структура участков суши с помощью какой-либо GIS и возможен экспорт векторных данных в ESRI shapefiles или непосредственно в PostgreSQL базу данных с расширением PostGIS. Сам процесс создания секторов осуществляется средствами PostGIS.
Читать полностью »

Как выглядит стратегическая игра, если мы будем смотреть только на мини-карту? Недавно я решил изучить эту идею, вернувшись к классической Age of Empires II.

Начало исследования

Я начал с изучения матча с тремя ИИ-игроками на карте средних размеров. Вот исходное состояние:

Мини-империи - 1

Если «Первому игроку приготовиться» и научил меня чему-то, так это тому, что абсолютно нормально вечно держаться за своё детство.

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

Читать полностью »

image

В процессе движения к долгожданному титулу Lead Senior C++ Over-Engineer, в прошлом году я решил переписать игру, которую разрабатываю в рабочее время (Candy Crush Saga), с помощью квинтэссенции современного C++ (C++17). И так родилась Meta Crush Saga: игра, которая выполняется на этапе компиляции. Меня очень сильно вдохновила игра Nibbler Мэтта Бирнера, в которой для воссоздания знаменитой «Змейки» с Nokia 3310 использовалось чистое метапрограммирование на шаблонах.

«Что ещё за игра, выполняемая на этапе компиляции?», «Как это выглядит?», «Какой функционал C++17 ты использовал в этом проекте?», «Чему ты научился?» — подобные вопросы могут прийти к вам в голову. Чтобы ответить на них, вам придётся или прочитать весь пост, или смириться со своей внутренней ленью и посмотреть видеоверсию поста — мой доклад с Meetup event в Стокгольме:

Примечание: ради вашего психического здоровья и из-за того, что errare humanum est, в этой статье приведены некоторые альтернативные факты.
Читать полностью »

Привет! Мы продолжаем нашу экспериментальную серию статей, наблюдая за которой вы можете в реальном времени влиять на ход создания игры на UWP. Сегодня мы поговорим о постоянно возникающем в рядах разработчиков вопросе — «Где хранить данные?». Присоединяйтесь и делитесь своими мыслями в комментариях!

А где вы храните данные? - 1Читать полностью »

История создания приложения, позволяющего детям зарабатывать деньги своим умом

Это первая часть истории (вперемешку с рассказом о моих ошибках и их решениях) о том, как я (где-то два года в свободное время) разрабатывал мобильное приложение под iOS и Android, которое бы мотивировало мою дочь решать примеры по математике, чтобы она достигла автоматизма в основах арифметики (склад числа 10 или табличка умножения). В итоге, получилось приложение, позволяющее ребёнку зарабатывать деньги своим умом.

Использовал я движок Unity и язык C#, а также дополнительный набор софта вроде обязательного Photohsop или Audacity (для создания звуков).

План рассказа (часть первая)

  • Предыстория
  • О монетизации
  • Почему Unity
  • О Scriptable Objects
  • О плагине Anima2D
  • О Lean Localization
  • Об iTween
  • О Unity Analitics
  • О Visual Studio
  • Ссылки

Предыстория и колорадские жуки

Мой предыдущий опыт — это несколько лет в 3D и, с недавних пор, разработка нескольких инди-игр на пару с программистом, где я выступал в основном только в роли дизайнера и художника (очень редко пописывая какие-то элементарные скрипты на C#). Хотя, с программированием знаком не понаслышке (колупал Basic в школе и баловался с C/C++ в универе).

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

Читать полностью »

image

Как показывают годы, шансов увидеть оригинальный исходный код — или хотя бы ремейк — первой части Diablo у нас практически нет (событие The Darkening of Tristram в Diablo III в честь 20-летия выхода первой части — это, конечно, хорошо, но все же немного не то, чего ожидали поклонники). И пусть последнее обновление для игры вышло в 2001 году, и сама Blizzard давно перестала поддерживать и продавать ее — память о ней по-прежнему остается жива в наших сердцах. Что лишний раз и подтвердил некий GalaXyHaXz, решивший произвести реверс-инжиниринг игры.

Исходный код доступен на Github. Проект Devilution, который его автор GalaXyHaXz окрестил «деволюцией Diablo», занял у него свыше 1,200 часов — 4 месяца работы. Также не пропустите объемные комментарии автора, проливающие свет на исходный код игры, и расположенные в другом репозитории. Сам код пока выглядит неважно, но будет продолжать приводится в порядок по мере прогресса работы над другими модулями игры.

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

B 1998 году Blizzard отдала исходный код Diablo двум студиям: Synergestic Software, которая занималась разработкой дополнения Hellfire, и Climax Studios, работавшей над портом для Playstation. Отдел QA Sony в Японии не в первый раз «радует» своими утечками, отличились они и на этот раз — в японской версии порта был случайно забыт символический файл (a symbolic file), который включал в себя функции, данные, типы и многое другое. Это и позволило восстановить оригинальные функции, глобальные переменные, структуры данных и прочее. Бета-версия порта для Playstation также утекла, и в ней лежал еще один подобный файл, что значительно упростило задачу.
Читать полностью »

image

Следование по пути и управление движением

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

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

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

Технические требования

Необходима версия Unity 2017, установленная в системе с Windows 7 SP1+, 8, 10 или с Mac OS X 10.9+. Код из данной статьи не будет работать на Windows XP и Vista, а серверные версии Windows и OS X не тестировались.

Файлы кода для этого поста можно найти на GitHub.

Чтобы изучить код в действии, посмотрите это видео.
Читать полностью »

image

На уровне могут находиться тысячи врагов.

У игры Defender's Quest: Valley of the Forgotten DX всегда были давние проблемы со скоростью, и мне наконец удалось их решить. Основным стимулом к масштабному повышению скорости стал наш порт на PlayStation Vita. Игра уже вышла на PC и хорошо, если не идеально, работала на Xbox One с PS4. Но без серьёзного усовершенствования игры нам ни за что бы не удалось запустить её на Vita.

Когда игра тормозит, комментаторы в Интернете обычно винят язык программирования или движок. Справедливо то, что языки наподобие C# и Java связаны с большими издержками, чем C и C++, а у инструментов наподобие Unity есть не решаемые проблемы, например со сборкой мусора. На самом деле люди придумывают такие объяснения потому, что язык и движок являются наиболее явными свойствами ПО. Но истинными убийцами производительности могут оказаться глупые крошечные детали, никак не связанные с архитектурой.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js