Как сделать 3D Игру на Python с Нуля [ Часть #6 Коллизии. Спецоптимизация ]

Поделиться
HTML-код
  • Опубликовано: 2 окт 2024
  • Продолжаем развивать псевдо 3d игру, написанную на Python и Pygame. В этом видео рассказывается о внедрении механизма коллизии со стенами и объектами в игре. Также проведём ускорение движка, путем использования декораторов JIT Numba и Pygame v.2 (версии для разработчиков)
    Код:
    github.com/Sta...
    #standalonecoder

Комментарии • 86

  • @blackfox4035
    @blackfox4035 4 года назад +18

    ДА ЗАБЕРИТЕ ЕГО УЖЕ В РАЙ, ЗА-БЕ-РИ-ТЕ!!!

  • @store38ru
    @store38ru 4 года назад +26

    Супер! Очень классно как всегда! В начале этих выпусков даже и не думал что будет такая классная графика в игре 😄😊👌👍 Горы сзади это просто красота 😍 Топовый графон👍 С нетерпением ждем следующего выпуска:))))))

    • @store38ru
      @store38ru 4 года назад +6

      Standalone coder, а как ты добавил такие клёвые горы на задний фон?) Я тоже хочууууу😍 Выглядит unreal красиво!

    • @1Safonov
      @1Safonov 4 года назад +3

      @@store38ru да, горы крутые, очень необычный фон, тоже хочу такие добавить! Standalone coder how you did that mountains?)))

    • @StandaloneCoder
      @StandaloneCoder  4 года назад +5

      В описание есть ссылка на код, там же и эти горы лежат)

    • @store38ru
      @store38ru 4 года назад +1

      @@StandaloneCoder класс, спасибо!)))

    • @mopkoBbka
      @mopkoBbka 3 года назад +1

      Помогите плз с установкой намбы

  • @dasha_in_vibe
    @dasha_in_vibe 3 года назад +9

    Какой у тебя красивый голос)

  • @MrMagno-pv7js
    @MrMagno-pv7js 2 года назад +6

    Я написал другую функцию коллизии со стенами, которая проще и по-моему эффективнее:
    def check_collision(self, dx, dy):
    if dx != 0:
    delta_x = (self.side // 2) * abs(dx) / dx
    if mapping(self.x + dx + delta_x, self.y + delta_x) in world_map:
    dx = 0
    if mapping(self.x + dx + delta_x, self.y - delta_x) in world_map:
    dx = 0
    if dy != 0:
    delta_y = (self.side // 2) * abs(dy) / dy
    if mapping(self.x + delta_y, self.y + dy + delta_y) in world_map:
    dy = 0
    if mapping(self.x - delta_y, self.y + dy + delta_y) in world_map:
    dy = 0
    self.x += dx
    self.y += dy

    • @StandaloneCoder
      @StandaloneCoder  2 года назад +4

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

  • @muhammadjonsharopov2744
    @muhammadjonsharopov2744 Год назад +2

    При запуске в файле map у меня возникает ошибка с библиотекой numba, OSError - не найден файл llvmlite.ddl.
    Как исправить эту ошибку?

  • @ВладимирЖуков-ы9е
    @ВладимирЖуков-ы9е 4 года назад +9

    Я кстати думал что тут уже несколько тысяч подписчиков, увидел их количество и что то удивился что маловато. А видео и выполненная работа как всегда шикарна.

    • @ЧиловикЧиловиков-р8э
      @ЧиловикЧиловиков-р8э Год назад

      Дело в том, что он озвучивает роботом, а здесь как ни крути, ютуб такие каналы не развивает, и смотрят такие каналы мало человек😞😞😞

  • @MrDanbro
    @MrDanbro 2 года назад +2

    Прошло блин, 2 года, контент лучше чем у Windy 31, но у него за минуту несколько тысяч лайков а у тебя всего 753 на данный момент, и просмотров мало, это доказывает что людей толковых будет мало.

  • @mkdm3617
    @mkdm3617 Год назад +1

    А на 2д игре такое сработает?

  • @igorduino
    @igorduino 4 года назад +5

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

    • @StandaloneCoder
      @StandaloneCoder  4 года назад +3

      в качестве оформления для PyCharm используется плагин - Monocai Color Theme

    • @doctor7628
      @doctor7628 3 года назад

      @@StandaloneCoder у меня проблемы с установкой библиотеки numba

    • @ChebyrekSFS
      @ChebyrekSFS 10 месяцев назад

      @@doctor7628 попробуй использовать python 3.10 или 3.9

  • @boomgg6902
    @boomgg6902 4 года назад +3

    Наконецто новое видео!

  • @Здесьбудеткрутаяиграпотом

    Numba это имба(канал хамибин)

  • @Андрей-х8ю6д
    @Андрей-х8ю6д 4 года назад +1

    следующее видео:делаем 3д онлайн игру на python с нуля

  • @ЧибисовВиталий
    @ЧибисовВиталий 4 года назад +1

    Я заметил в начале что когда проходишь через стену возникает эффект рыбьего глаза на несколько секунд

  • @shadow_blader192
    @shadow_blader192 3 года назад +1

    Ты очень классный продолжай в том же духе.

  • @wizard3374
    @wizard3374 4 года назад +1

    Чётко, желаю удачи в программировании

  • @svetlanaardasenova2541
    @svetlanaardasenova2541 4 года назад +1

    Ура!!! Новый видосик!!!

  • @blockedchannel7032
    @blockedchannel7032 4 года назад +1

    Если вплотную подойти к стене и начать поворачиваться ФПС очень сильно падает.
    И ещё вопрос: как сделать так, что бы не было двигающихся стен. Если у меня большая карта, то появляются стены, которые двигаются вместе с игроком. Портят всю картину. Спасибо за урок по коллизиям! Ждём урок про двери и врагов

    • @StandaloneCoder
      @StandaloneCoder  4 года назад +1

      Решение падения ФПС вблизи стен в следующем видео

  • @МатвейСамоделкин
    @МатвейСамоделкин 4 года назад

    Сними видос про зеркало, пж, а то я уже 2 дня мучаюсь, но нормальное зеркало так и не получилось сделать

  • @gost333
    @gost333 Год назад

    numba не устанавливается. что делать

    • @ChebyrekSFS
      @ChebyrekSFS 10 месяцев назад

      Перейди на python 3.10

  • @stashmm
    @stashmm 4 года назад +1

    Ты крут

  • @X666X
    @X666X 4 года назад +1

    Пайтон - молодой, развивающийся язык.
    Ахахахахахахахаххааххаах

    • @StandaloneCoder
      @StandaloneCoder  4 года назад +1

      Говоря про Python, я имею ввиду Python 3, он вышел в свет в 2008 году, и помоложе будет чем С, Objective-C, С++, С#, Java, JavaScrypt, Ruby

    • @X666X
      @X666X 4 года назад

      @@StandaloneCoder А, ну ок. Я вообще твой канал начал смотреть не изза того, что хочу научиться делать псевдо-трёхмерные игры, а из интереса, как ты из питона выжимаешь все соки. Ну во вторую очередь интересен результат

  • @charlesugwu4625
    @charlesugwu4625 4 года назад

    Mine shows this error "OSError: could not load shared object file:llvmlite.dll", I need help

    • @StandaloneCoder
      @StandaloneCoder  4 года назад

      try setting up a virtual environment with anaconda, and installing libs:
      conda install numba
      pip install pygame==2.0.0dev10

  • @warriorofredoran958
    @warriorofredoran958 4 года назад +1

    Кажется если скальзить возле стены персонаж сквозь неё будет проходить.

    • @StandaloneCoder
      @StandaloneCoder  4 года назад

      я же тестировал перед выпуском этого видео, персонаж точно не проходит сквозь стены

    • @warriorofredoran958
      @warriorofredoran958 4 года назад

      Если скользить. Может быть как в этом видио 12:30
      ruclips.net/video/i0IvgmBMFMw/видео.html

    • @StandaloneCoder
      @StandaloneCoder  4 года назад

      так персонаж же скользит и по моему алгоритму

  • @tlkdeni
    @tlkdeni 4 года назад

    Очень классно! Продолжайте в том же духе!

  • @fyfbif7744
    @fyfbif7744 4 года назад

    Привет, Standalone Coder! Я очень рад новым выпускам! Скажи, будет ли урок по смене уровня(карты), урок по главному меню, и по дверям?

    • @StandaloneCoder
      @StandaloneCoder  4 года назад +1

      Двери точно будут. Насчет остального пока не могу сказать

  • @usercommon1
    @usercommon1 4 года назад

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

    • @StandaloneCoder
      @StandaloneCoder  4 года назад

      возможность АОТ компиляции в Намбе есть!
      numba.pydata.org/numba-doc/dev/user/pycc.html

  • @alexanderpadalka5708
    @alexanderpadalka5708 3 года назад

    🗽

  • @hawkise
    @hawkise 4 года назад

    это охеренно

  • @Гурман-ц1ю
    @Гурман-ц1ю 4 года назад

    Как ты настолько хорошо выучил питон? Учился где - то?

    • @StandaloneCoder
      @StandaloneCoder  4 года назад +3

      нигде не учился, изучаю самостоятельно второй год

  • @mopkoBbka
    @mopkoBbka 3 года назад +2

    Хм, чувак, у меня проблема со скачиванием намбы

  • @ASW_StormOfficial
    @ASW_StormOfficial Год назад

    ты потом перейдешь на квадродеревья?

  • @DimPerch
    @DimPerch 4 года назад

    Будет ли добавления интерактива? То есть движущийся npc, события при касании спрайтов, интерактивное их добавление и удаление?

    • @StandaloneCoder
      @StandaloneCoder  4 года назад +3

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

    • @store38ru
      @store38ru 4 года назад

      @@StandaloneCoder анимация разрушения? 😱😍 огооо))) надо сделать круче чем в Battlefield Bad Company 2 ахахаха))))

  • @Brokcoli
    @Brokcoli 4 года назад

    У меня есть идея, что насчёт того чтобы несколько изменить систему прорисовки. Можно добавлять на один луч не один прямоугольник, а несколько вычисляя их размер по функции. Таким образом можно добиться гладкой стены даже если количество лучей небольшое, что будет хорошо для слабых компьютеров.

    • @StandaloneCoder
      @StandaloneCoder  4 года назад

      Если получится реализовать, то напишите на почту, будет очень интересно посмотреть)

    • @Brokcoli
      @Brokcoli 4 года назад

      @@StandaloneCoder Сейчас в тренеровочном лагере, к 20 числам вернусь домой и попробую.

  • @kislotka9717
    @kislotka9717 4 года назад +4

    Красавчик!)

  • @alexdubkov6998
    @alexdubkov6998 4 года назад

    Отлично!

  • @СергейКитин
    @СергейКитин 4 года назад

    Топ

  • @ДилфузаАскарова-л4с

    как приоброзавать графику в g код

    • @StandaloneCoder
      @StandaloneCoder  4 года назад

      Не совсем понял... Вот в этот G-код? ru.wikipedia.org/wiki/G-code

  • @si0era
    @si0era 4 года назад +1

    Урыы!

    • @kistv842
      @kistv842 4 года назад

      мужик продолжай очень нада

    • @kistv842
      @kistv842 4 года назад

      подгрузку 3D моделей вместо спрайтов можно запилить ?

    • @StandaloneCoder
      @StandaloneCoder  4 года назад

      Нужно на другой технологии тогда движок делать, raycasting для 3д моделей не совсем подходит

  • @PIEIgorEfremenko
    @PIEIgorEfremenko 2 года назад

    всё прекрасно, но слушать синтезированный голос реально напрягает уже :(

  • @TGrod
    @TGrod 4 года назад

    Если честно думал оптимизация добавит фпс 10-20, но как вижу я ошибался)) но меня все эти видео мучает вопрос. Вот этот способ рисования графики до ужаса простой, но фпс как в в шутерах. Как они графику там рисуют? Или это связано с тем, что используются более быстрые языки? Хотелось бы видос на эту тему))))

    • @StandaloneCoder
      @StandaloneCoder  4 года назад +1

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

    • @TGrod
      @TGrod 4 года назад

      @@StandaloneCoder будут видеоролики про создание игры с участием видеокарты?)))

    • @StandaloneCoder
      @StandaloneCoder  4 года назад +2

      Да, планирую и с видеокартой поработать

    • @TGrod
      @TGrod 4 года назад

      @@StandaloneCoder тоже на пайтоне? Или другой выберешь?

    • @iniuss20
      @iniuss20 4 года назад

      @@StandaloneCoder А будет ли далее урок по онлайн игре ?

  • @iniuss20
    @iniuss20 4 года назад

    Скоро-ли будет продолжение ?

    • @StandaloneCoder
      @StandaloneCoder  4 года назад

      планируется в течение следующей недели

  • @неизвестныйчеловек-т3т

    А какой у вас pycharm?

  • @kostya327mailru
    @kostya327mailru 2 года назад

    Просто супер! Вы гений! :)