• Как мы сделали движок и игру на нем за полтора года
    +18

    Путаете причину и следствие.
    Gta5/Witcher3 делала огромная команда высококлассных специалистов.
    А Unity3d/Ue снижают порог входа, соответственно, проекты могут делать и куда менее серьезные ребята. И качество таких проектов, очевидно, ниже.


    Полагаю, разработчики gta и из юнити вытянули бы очень приличную картинку и fps.


    Как плюсовый разработчик, который сейчас перешёл на юнити, открытым текстом: 95% проблем с Юнити — кривость рук разработчиков.
    Думаю, история как с js — он так снизил порог входа, что стало появляться много некачественных продуктов. Однако это не означает, что профессиональные разработчики будут писать на js такой же плохой код, как и все.

  • Генерация подземелий и пещер для моей игры
    0

    А чего там хитрого? Там видно же, как он сделал.
    Для каждого соединения:


    1. Взять две соединенные комнаты
    2. Получить дельту позиций комнат и выбрать максимальный по модулую компонент (x или y).
      Так мы понимаем, горизонтальный или вертикальный коридор и с какой стороны
    3. Получить минимальную и максимальную позицию коридора (для y:
      minY = Max(firstRoom.y, secondRoom.y)
      maxY = Min(firstRoom.y + firstRoom.height, secondRoom.y + secondRoom.height)
      Min и Max не перепутаны)
    4. Если min > max, тоннель нужно "сломать" посередине
    5. Выбрать позицию из указанного интервала: tunnelY = Random.Range(minY, maxY — tunnelHeight)
    6. Нарисовать тоннель

    Если проще: понять, горизонтальный или вертикальный коридор нужно нарисовать и нарисовать его, не выходя за границы комнат.

  • Как создать чужого — размышления о дизайне инопланетных видов
    0

    У Дробышевского в лекциях про это хорошо написано/сказано. Если ты охотишься на рыбу — все, что тебе нужно, быть умнее рыбы.
    Собственно, он противопроставляет хищникам всеядных — им сложнее, т.к еда каждый раз разная, её нужно по разному добывать и из-за разнообразия возможностей развитый разум становится эволюционным приемуществом. У хищникам разум тоже может быть полезен, но им нужно, как я уже говорил, всего лишь быть умнее жертвы.


    Плюс в океане затруднена орудийная деятельность. Это можно обойти, но не ради рыбы же :)

  • Усатый стрелок с полигональным пузом. Часть вторая
    +1

    Добрый день!
    Ответ получится развернутым, вы уж извините :)


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


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


    3. Хабр. К сожалению, я потерял веру в хабр. Для меня хабр — это не только способ прочесть крутые статьи про it-тематику. Это способ вступить в диалог профессионалами, которые могут задать вопросы, подсказать другие решения, оценить работу с точки зрения своего опыта. К сожалению, мои статьи не получают такого отклика. Я не знаю причину, но, за редким исключением, в комментариях не появилась ни одна полемика о графике, решениях, которые я применял, оптимизациях и т.д.
      Для меня было важно не только дать — поделиться контентом, но и получить — фидбек, мнения, обсуждения. Но хабр мне этого не даёт. :)
      Возможно, я попробую повторить этот опыт на другой платформе, может, англоязычной. Но пока что я не знаю где это можно сделать.



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

  • Реалистичные тени для roguelike
    0

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


    Знаете, на gpu можно делать очень ламповый пиксель :)

  • Реалистичные тени для roguelike
    0

    Ух ты, на мою статью ссылаются! Спасибо!
    А вообще есть пара мыслей.


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


    Мне кажется, что можно не рисовать рисовать дугу в начале тени — так станет проще и не будет видно резких углов, как на последнем скрине. Эта дуга сейчас необходима, иначе тень будет закрывать сам объект частично. Если не менять подход к отрисовке, но хочется убрать эти кружки, возникнет проблема.
    Придется отрисовывать объект их тень от самых дальних к игроку до самых ближних. При этом тени объектов будут рисоваться в таком порядке: объект1, тень1, объект2, тень2 и т.д. И тогда нельзя будет поправить наложение теней, про которое я говорил выше. Собственно, стандартная пробема с алгоритмом художника.


    Мой совет — попробовать рисовать все на видеокарте. Не знаю, насколько сложно это делать на современном Delphi, возможно есть нужные библиотеки.
    Если проект делается ради фана и опыта, можно попробовать переделать его на движок, более удобный для работы с 2d/3d, да тот же Unity3d мой любимый.


    Просто все эти вкусные вещи с тенями, освещением и т.д. делаются в разы проще, если можно оперировать ими как 3д/2д объектами на видеокарте, с буфферами, шейдерами, стенсилом и т.д.

  • Как портирование игры на PSVita повысило общую производительность
    0

    Зависит от разряженности объектов. У них, судя по всему, из-за волн противников может оказаться очень много юнитов в одной клетке.

  • Создание приложения-раскраски на Unity3D
    0

    Я правильно понимаю, что изначально меш с небольшим количеством треугольников, а когда пользователь начинает рисовать, вы тесселируете их?
    После того, как игрок закрасил бОльшую часть фигуры, объединяете треугольники с одним цветом?
    И еще, судя по гифке, размеры треугольников очень маленькие, по сравнению с размером самой фигуры. Не тормозит? Я пробовал сделать тесселяцию на лету, у меня лагало)

  • Алиса. Как Яндекс учит искусственный интеллект разговаривать с людьми
    0

    filldens, а как Алиса отвечает на вопросы про суицид и тд? Есть какие-то обработчики, чтобы переправлять на телефоны доверия?

  • Анонимный Дед Мороз 2017-2018: пост хвастовства новогодними подарками
    +1

    А как быть, если внучок подарок получил (судя по трекингу посылку забрали), но не отмечает в adm? И связаться с ним не получается. (

  • Анонимный Дед Мороз 2017-2018: пост хвастовства новогодними подарками
    +6

    Ну, обычно фио с посыки и города (плюс знания, что человек с хабра и из it скорее всего) хватает, чтобы нагуглить и через несколько запросов выйти на аккаунт. Думаю, многие так внуков гуглили, чтобы понять, что им дарить :)

  • Анонимный Дед Мороз 2017-2018: пост хвастовства новогодними подарками
    +5

    Наконец-то новогодние праздники закончились и появилось время написать. :)
    Огромное спасибо моему дедушке oWart, который приготовил чудесный подарок:

    Интересная книга, игорные фишки из Лас-Вегаса (из тех самых казино, которые грабил Оушен!), удобный мультитул (уже помог), уточка для знаменитого метода утёнка, снеговичка, который теперь гордо стоит на рабочем месте, и…
    офигенные nucleo mb1136 и NodeMCU Amica! Пока что не придумал, как именно их применить, но дедушка прямо как знал, что я люблю возится со всякой классной электроникой!


    P.s. Ну и конечно, в подарке были классные конфеты, но они уже использованы с превеликим удовольствием ;)


    Надеюсь, и мой внучек будет доволен, судя по трекингу, он сегодня утром забрал посылку :)

  • Новогодний пост добра
    +15

    Просто фидбека стало мало. Хочется каких-нибудь обсуждений в комментах, критики и т.д. А хабр стал сильно добрее в комментариях к техническим статьям. :(

  • Разработка браузерной онлайн игры без фреймворков и движков
    +1

    С течением лавы крутой хак. Я люблю такие шейдерные эффекты, но Гаусса для маски скорости никогда не применял, мб попробую где-нибудь

  • Разработка браузерной онлайн игры без фреймворков и движков
    0

    А каким образом после построения графа остаются несвязанные waypoints? На изображении видно несколько отдельных зелёных точек, от которых есть прямая видимость до ближайшего waypoint, находящегося на графе

  • Усатый стрелок с полигональным пузом. Часть вторая
    +1

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

  • Усатый стрелок с полигональным пузом. Часть вторая
    0

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

  • Создание шейдерного эффекта 3D-принтера
    0

    Можно, но такой шейдер будет сложнее (из-за полноценной модели освещения для пикселей, которым она не нужна).
    Да, нужно избегать, но это ведь не жесткое правило: чем меньше условных переходов, тем быстрее. Просто они довольно тяжелые. Опять же, если их используют в вертексном шейдере, это приемлемо, а вот в фрагментном уже не стоит.

  • Усатый стрелок из двадцати трёх полигонов
    0

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


    А про timeScale — мой Clock меняет и timeScale и fixedDeltaTime (в доке Unity про это есть). Если этого не делать — на паузе физика продолжит отрабатывать с нормальной скоростью и будет видно, как расталкиваются объекты.

  • Усатый стрелок из двадцати трёх полигонов
    0

    Один из источников вдохновения! :)

  • Усатый стрелок из двадцати трёх полигонов
    0

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

  • Усатый стрелок из двадцати трёх полигонов
    +3

    Знаете, это моя самая большая боль. Заходишь в тег unity3D и одна пятая статья достойна хотя бы чтения. Есть классные статьи, из которых можно подчерпнуть что-то хорошее, но их изчезающе мало.
    Пытаюсь что-то с этим сделать, но один, конечно, не справлюсь. :)
    Так что, господа, присоединяйтесь к написанию статей. )

  • Усатый стрелок из двадцати трёх полигонов
    +3

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


    Но в целом, идея, одна: упрощать как можно сильнее. Игрок может играть одной рукой? Отлично! Игрок может играть одним пальцем? Ещё лучше!
    За счет этого даже аудитория расширяется: в метро одна рука держится за поручень, вторая держит телефон, а игра ведётся одним большим пальцем.

  • Усатый стрелок из двадцати трёх полигонов
    +1

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


    1. Всего один жест на ход. Иногда нужно сделать несколько шагов вперед, чтобы куда-то прийти, чем меньше жестов, тем лучше;
    2. Игроку нужно собирать кристаллы, но при этом, не попав в них пулей. Механика работает за счет одного направления у движения и пули;
    3. Можно делать хитрые уровни с "таймерами" из зеркал: игрок должен успеть пройти по тоннелю, пока его пули не вернутся обратно.

    Ну и т.д. Так что общее направление — хорошая фича. :)

  • Усатый стрелок из двадцати трёх полигонов
    0

    Знаете, вот да, когда собрал прототип, обратил внимание, что они похожи, со своим замедлением времени. Но, к слову сказать, есть как минимум ещё 2 инди проекта, появившиеся до superhot, где течение времени зависило от хода.
    А Тут механика различается: по сути, игра пошаговая, но с обычной, не пошаговой физикой. Да и упор в основном — на постоянную и невыключаемую стрельбу.

  • Усатый стрелок из двадцати трёх полигонов
    +1

    Вторая часть уже написана процентов на 90% :)

  • Усатый стрелок из двадцати трёх полигонов
    +1

    Думаю, тут эта идея только помешает: вся механика (и весь интерес) основан на лаконичных, выверенных уровнях. С реальными данными карты получатся большими, шумными и не такими насыщенными по действию.

  • Усатый стрелок из двадцати трёх полигонов
    +3

    Про интеллект ботов всё интересно: с одной стороны, хочется, чтобы боты могли хитро ходить, с другой, нужно как-то дать возможность игроку предсказывать их действия. Там довольно хитрая система получилась, расскажу о ней в одной из следующих частей.

  • 2D магия в деталях. Часть четвёртая. Вода
    +2

    С каплями все просто — примерный размер игрока сейчас — 8 пикселей. По правде говоря, не хотел бы я находится рядом с кипящей водой, где брызги размером с мою голову. :)
    А если серьёзно, после доработки системы частиц попробую, и если окажется классно — напишу вам в личку большое спасибо.
    Про воду и лёд. Тут все достаточно просто — даже если исключить течения, конвекцию и т.д. в реальном мире возможны ситуации, в которых и вода не замерзает ещё и лёд уже толком не тает. Метастабильность.
    А у меня эти фишки принесены в жертву геймплею: из-за большой теплопроводности жидкости лед всё-таки достаточно быстро достигает дна. А если уменьшать теплопроводность, будет неинтересно использовать огненную и ледяную магию.


    Про лаву. Я уже пробовал колдовать с настройками жидкости, можно сделать довольно тягучую и медленно пузырящуюся субстанцию. Не могу сказать, что лава в приоритетных планах, но хочется. :)

  • 2D магия в деталях. Часть четвёртая. Вода
    +1

    Капель скорее всего, не будет, а вот пузырьки в кипящей воде — в разработке :)
    Толщина льда не сможет зависеть от температуры воздуха, как в реальности: т.к. в реальности вода редко промерзает до дна, а у меня вполне может, за некоторое время (течений ведь нет).
    Кстати, про пузыри во льду — шейдер для льда основная проблема, по которой задерживается написание следующей статьи — никак не могу придумать, как должен выглядеть прозрачный лёд так, чтобы при этом была видна граница вода/лёд

  • 2D магия в деталях. Часть четвёртая. Вода
    0

    Если честно, я буду очень рад обсуждению именно здесь — это полезнее и для меня и для хабровчан :)

  • 2D магия в деталях. Часть четвёртая. Вода
    +1

    Посмотрел (мельком, если честно) игрушку — всё-таки у нас очень разные подходы. У автора очень реалистичная и цельная штука, в то время как у меня модульная (т.е не один общий набор "законов", а много независимых взаимодействующих систем). Плюс у меня не так "честно" всё считается — хаки на каждом ходу, т.к. красивая картинка — одна из основных целей. :)

  • 2D магия в деталях. Часть четвёртая. Вода
    0

    Там немножко более дурацкая ситуация:
    При расчете волн у каждой пружины есть текущая скорость. И каждое обновление на эту скорость влияют 2 фактора:


    1. Затухание колебаний (неинтересно нам)
    2. Добавление ускорения

    А ускорение — рассчитывается как разница между y-координатой текущей пружины и соседних (+некие коэффициенты). Обычно все ок — т.к нужно выровнять воду к одному уровню.
    Но тут у пары пружин максимальная y-координата ниже, чем у соседей (т.к в стену упирается). И поэтому кадра 3-4 при расчете ускорения получается так, что y-координата пружины по-прежнему ниже соседей и в сумму получается нехилое ускорение. Из-за него и происходит такое "проседание".
    В общем, хороший вопрос — как это корректно исправлять :)

  • 2D магия в деталях. Часть четвёртая. Вода
    0

    Прямоугольные впадины в воде при колебаниях? Какая-то ошибка в коде :)

  • 2D магия в деталях. Часть четвёртая. Вода
    0

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

  • 2D магия в деталях. Часть четвёртая. Вода
    0

    Скорее косяк суммирования скоростей, спасибо, я как-то не заметил это.
    Думаю, довольно просто пофиксить будет.

  • 2D магия в деталях. Часть четвёртая. Вода
    0

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

  • 2D магия в деталях. Часть четвёртая. Вода
    0

    Вы еще на дату публикации видео посмотрите (
    Да, по сути, планируется минимум про:


    1. Воду (графика)
    2. Траву и систему частиц
    3. Статья по оптимизации всего этого дела

    Может, в процессе разработки еще что появится, например, ии.

  • 2D магия в деталях. Часть четвёртая. Вода
    +3

    Ох, если бы я знал. )
    Очень много кода и материала, причем приходится постоянно проводить research и иногда переписывать нафиг куски кода. Тут, похоже, процесс важен не менее, чем результат.

  • 2D магия в деталях. Часть четвёртая. Вода
    0

    Да, вот только всему этому придется игроку учится самому — слишком много взаимодействий. Но для уровней песочниц — идеально.