• Возможно ли создать онлайн-игру с использованием блокчейн?

    Jump
    @Jump
    Системный администратор со стажем.
    Возможно ли создать онлайн-игру с использованием блокчейн?

    Возможно.
    0_facfe_46f0772c_orig.jpg

    В промышленности можно делать что угодно, но чтобы это было модным там обязательно должен быть графен и нанотрубки.
    В IT тоже можно делать что угодно, но чтобы это было модным, там обязательно должен быть блокчейн.
    Ответ написан
    1 комментарий
  • Как равномерно двигать объект (пуля)?

    BasmanovDaniil
    @BasmanovDaniil
    Геймдизайнер-телепат
    Проще всего такое делать физикой. Чтобы пули взаимодействовали с коллайдерами вам нужно повесить на них Rigidbody и отключить трение и гравитацию. Помимо этого на коллайдер пули нужно повесить физический материал с нулевым трением и единичной прыгучестью, чтобы при столкновении пули не тормозились. При выстреле запускаете пули с помощью Rigidbody.AddForce или Rigidbody.velocity, и после этого они будут вечно лететь и отскакивать от всех поверхностей.
    Ответ написан
    Комментировать
  • С чего начать изучение Unity3D?

    BasmanovDaniil
    @BasmanovDaniil
    Геймдизайнер-телепат
    Начинать нужно с мануала, тут без вариантов. Всё подряд можно не читать, всё равно потом к нему ещё вернётесь.
    docs.unity3d.com/Manual
    Потом посмотрите официальные туториалы, особенно в категории Intermediate, они годные и постоянно обновляются.
    unity3d.com/learn/tutorials/modules
    unity3d.com/learn/tutorials/projects
    Ещё очень советую почитать статьи на Catlike Coding. Нет лишней воды и много хороших примеров.
    catlikecoding.com/unity/tutorials
    Ответ написан
    Комментировать
  • GameDev - куда "шагнуть", и как туда попасть для обучения?

    BasmanovDaniil
    @BasmanovDaniil
    Геймдизайнер-телепат
    С чего начать путь в Game Dev?
    Что нужно, чтобы стать разработчиком игр?
    Какое должно быть портфолио?

    Хотите делать игры - делайте игры. Участвуйте в геймджемах (Ludum Dare, itch.io, Global Game Jam) и выкладывайте всё в интернет. Есть хороший канал про игры на YouTube, буквально на днях они начали серию роликов про разработку, очень полезно, посмотрите. Походите на собеседования, там вам скажут чего не хватает.
    Ответ написан
    1 комментарий
  • Игровой движок для инди-студии и карьеры, что выбрать?

    BasmanovDaniil
    @BasmanovDaniil
    Геймдизайнер-телепат
    Unreal и CryEngine всю жизнь были ориентированы на большие студии, какие-то подвижки в сторону инди начались только в последний год, когда на юнити стали делать чуть ли не половину всех новых игр. Скрипты на плюсах дело усугубляют, сферический скрипт в вакууме на плюсах писать и поддерживать дороже чем на шарпе. Да, возможно есть преимущество в производительности, но, чтобы упереться в эту планку, нужно либо очень хреново писать, либо иметь огромный мир с морем свистелок. Кроме того, у юнити есть Asset Store с кучей плагинов и готовых проектов, которые экономят кучу времени. Marketplace по наполнению даже рядом не стоит. В целом у юнити перспективы хорошие: Microsoft открывает исходники .Net, а юнити переходит на технологию IL2CPP.

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

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

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

    Исходя из всего этого, я бы посоветовал вам поскорее пройти весь путь до магазина в минимально возможном масштабе, а потом уже наращивать обороты. Повторюсь, начинать с MMO не надо, ваш абстрактный диздок скорее всего во многих местах ошибочен, начните с более простых вещей.
    Ответ написан
    7 комментариев
  • С чем связана зачастую непривлекательная анимация в 3D-онлайн-играх?

    BasmanovDaniil
    @BasmanovDaniil
    Геймдизайнер-телепат
    Потому что это никому не нужно. В большинстве игр всех персонажей можно поменять на кубики и не заметить разницы. Начиная с определённого момента повышение детальности анимации уже не даёт особого эффекта или наоборот может оттолкнуть игрока (проблема зловещей долины). Кроме того, слишком реалистичная и размашистая анимация может повредить геймплею, если персонаж перед каждым прыжком будет приседать и толкаться ногами вверх, то управление покажется игроку неотзывчивым, поэтому между нажатием кнопки и фазой полёта обычно проходит всего пару кадров. Не очень интересно, да, зато ощущается намного лучше.
    Иногда анимацию специально делают примитивнее и как можно более стилизованной, потому что так быстрее, оригинальнее и этого достаточно. Все графические свистелки и рюшечки зачастую нужны только первые полчаса игры, чтобы завлечь игрока, а дальше интерес должен поддерживаться за счёт геймплея. Если игра плохенькая, то да, можно дотащить игрока до концовки за счёт графона, например, так делают в Crytek. Другое дело, если вы делаете игру, где каждый персонаж очень важен, так делают в Telltale Games, у них половина игры это просмотр анимаций.
    Вообще в разработке игр очень активно применяют концепцию Minimum viable product. Если игрок понял что ему пытались донести, значит всё сделано правильно, а абстрактное «качество» никого не волнует.
    Ответ написан
    1 комментарий
  • Как реализованы порталы в игре Portal?

    BasmanovDaniil
    @BasmanovDaniil
    Геймдизайнер-телепат
    Честные порталы делать очень сложно, нужно хорошо понимать физику и весь пайплайн рендера. Есть очень много граничных случаев, каждый из которых нужно отдельно поддерживать: портал внутри портала, пересечение границ внутреннего и внешнего портала, несколько внутренних порталов, повороты плоскости портала, перемещение предметов, тени и освещение, прозрачные материалы и т. п. Есть две основные техники реализации отрисовки порталов: через рендер текстуры и стенсильный буфер.

    Порталы на рендер текстурах делаются проще, но они дороже по производительности, даже на простой геометрии несколько порталов могут оказаться непосильной задачей для компьютера. Основной принцип следующий: когда вы смотрите на портал, на другой стороне портала камера рисует картинку в текстуру, эта текстура натягивается на плоскую геометрию, и со стороны кажется, будто бы через дырку видно другую часть сцены. Примитивную реализацию такой схемы можно собрать руками в редакторе, но дальше начинаются сложности. Если у конечного портала "за спиной" будет геометрия, она попадёт во вьюпорт камеры и будет странно смотреться. Чтобы это предотвратить нужно ближнюю плоскость отсечения у камеры сдвигать в плоскость портала с помощью CalculateObliqueMatrix. Для вычисления положения камеры и пересчёта матрицы есть удобный колбэк OnRenderObject. После корректировки матрицы порталы будут смотреться более-менее корректно, но будут всплывать всевозможные косяки при перемещении через плоскость портала из-за буфера глубины и nearClipPlane основной камеры.

    Стенсильные порталы будут работать сильно быстрее, но для их реализации нужно хорошо шарить в шейдерах. Расписывать их работу подробно не буду, в целом они делаются точно так же, только трюки с рендер текстурами заменяются на трюки с буферами, предлагаю лучше почитать пару полезных статей на тему: раз и два. В контексте юнити всё немного сложнее, чем на чистом OpenGL, потому что нет прямого доступа ко всем буферам и для получения похожего результата придётся немного поизвращаться. Потенциально облегчить задачу может низкоуровневое API, но у меня не получилось добиться хороших результатов без потери качества картинки. Я возлагаю большие надежды на ScriptableRenderLoop, если судить по документации, это как раз то, что нужно.

    Прошу заметить, что всё вышесказанное касается чисто графической части, для простейшего случая, когда мы имеем FPS камеру без анимаций, без дополнительных механик, которая просто ездит по уровню и может заглядывать в порталы. Что уж говорить про миллион потенциальных багов, если вы захотите включить рядом с порталом систему частиц или взять в руки кубик. Посему советую либо купить плагин и довольствоваться тем, что он умеет, либо приготовиться потратить несколько месяцев на разработку своей портальной системы. И в том и другом случае ограничения движка не позволят вам в разумные сроки получить Portal, в лучшем случае это будет Narbacular Drop.
    Ответ написан
    Комментировать
  • Можно ли так использовать интерфейсы в unity?

    BasmanovDaniil
    @BasmanovDaniil
    Геймдизайнер-телепат
    Нормальный подход, так много где делают, просто мало кода видели, вот и кажется странным. Более того, его используют не только для атакующих, но и атакуемых, например, делают интерефейс IDamageable и при нанесении урона работают с ним, а логика нанесения повреждений скрывается в конкретном классе.
    P. S. Attack пишется с двумя t.
    Ответ написан
    4 комментария
  • Как создать приложение на python для составления расписания (универского, например)?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    SQLite - "типа БД" вполне подойдет
    PyQT, да
    входит - выходит
    cx+Freeze чтобы ексезшник получить

    для освоения PyQT идея отлична (или Tkinter, например)
    Ответ написан
    5 комментариев
  • Какие начальные книги посоветуете для изучения нейронных сетей?

    Extremesarova
    @Extremesarova
    Биоинформатика, машинное обучение, анализ данных.
    Саймон Хайкин "Нейронные сети. Полный курс."
    Ответ написан
    Комментировать
  • Как сделать ограничение по времени на ввод символов в C++?

    gbg
    @gbg Куратор тега C++
    Любые ответы на любые вопросы
    Есть не совсем стандартное средство, доступное в visual studio - _kbhit()
    Посмотрите этот вопрос
    Ответ написан
    Комментировать
  • Как организовать параллельные процессы в С++ ?

    gbg
    @gbg Куратор тега Программирование
    Любые ответы на любые вопросы
    Идея состоит в том, чтобы ждать малое время (0.1с), потом проверять наличие символа в буфере клавиатуры, если он есть - стоп, если нет - повторяем цикл.

    #include <conio.h>
    #include <iostream>
    #include <windows.h>
    
    using namespace std;
    
    bool waitKey(const size_t secondsToWait)
    {
        int i=secondsToWait*10;
        for(;(i)&&(!_kbhit());i--)
        {
             Sleep(100);
             if(i%10==0)
             {
                 cout<<i/10<<endl;
             }
        }
        //очистка буфера клавиатуры
        while(_kbhit())
        {
            getch();
        }
        return(i);
    }
    
    int main()
    {
      cout<<"press any key..."<<endl;
      if(waitKey(5))
      {
          cout<<"Countdown was stopped by key" << endl;
      }
      else
      {
          cout<<"Countdown was not stopped"<<endl;
      }
      return 0;
    }
    Ответ написан
    1 комментарий
  • Чем сгенерировать надпись на картинке?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    <?php
      //Set the Content Type
      header('Content-type: image/jpeg');
    
      // Create Image From Existing File
      $jpg_image = imagecreatefromjpeg('sunset.jpg');
    
      // Allocate A Color For The Text
      $white = imagecolorallocate($jpg_image, 255, 255, 255);
    
      // Set Path to Font File
      $font_path = 'font.TTF';
    
      // Set Text to Be Printed On Image
      $text = "This is a sunset!";
    
      // Print Text On Image
      imagettftext($jpg_image, 25, 0, 75, 300, $white, $font_path, $text);
    
      // Send Image to Browser
      imagejpeg($jpg_image);
    
      // Clear Memory
      imagedestroy($jpg_image);
    ?>

    www.phpforkids.com/php/php-gd-library-adding-text-...
    php.net/manual/en/function.imagettftext.php
    php.net/manual/en/function.imagestring.php
    Ответ написан
    Комментировать