How to Make a 3D Game in Python from Scratch [ Pygame ]

Поділитися
Вставка
  • Опубліковано 25 гру 2024

КОМЕНТАРІ • 665

  • @TGrod
    @TGrod 4 роки тому +203

    Очень круто, но я немного не допёр по какому принципу ты определил пересечение со стенами)))

    • @StandaloneCoder
      @StandaloneCoder  4 роки тому +77

      Все несложно. У нас стена, это квадрат на карте, у которого есть только координаты левого верхнего угла, допустим (100, 100) и размер стороны квадрата 100. И, например, у нашего луча сейчас координаты (113, 159). Так вот, чтобы определить в каком квадрате наш луч, необходимо целочисленно поделить координаты луча и затем умножить их на размер квадрата. ( (113 // 100) * 100, (159 // 100) * 100 ) = (100, 100). То есть, мы попали в квадрат, и проверку на этом завершаем.

    • @TGrod
      @TGrod 4 роки тому +30

      @@StandaloneCoder спасибо! Теперь всё ясно. Я просто упустил тот момент, что мы как бы рисуем луч не сразу целиком, а постепенно, и на каждом шаге проверяем находится ли он в квадрате. Я просто думал, что мы сразу целиком рисуем луч) И ещё раз прошу продолжать делать видео. Не забрасывайте это дело))

    • @geeksamurai9852
      @geeksamurai9852 4 роки тому +3

      @@StandaloneCoder Здравствуйте, спасибо за урок, отлично объясняете, но у меня проблема такая вот,у меня все получилось отлично только вот лучи на экране остаются и когда я двигаюсь они тоже показывают направление, я про лучи которые показывают обзор, когда вы сделали графику от 2д до 3д то у вас они исчезли а у меня нет:(

    • @guitaresstv6777
      @guitaresstv6777 4 роки тому

      @@StandaloneCoder привет, а какую среду программирования ты используешь?

    • @StandaloneCoder
      @StandaloneCoder  4 роки тому +4

      @@guitaresstv6777 PyCharm

  • @emily-jv9xx
    @emily-jv9xx 4 роки тому +65

    Вот спасибо, ну хоть один нормальный человек!!!

    • @ronews4723
      @ronews4723 4 роки тому

      а што делать есле нехочет поворачивать я все проверил

    • @sadboy8538
      @sadboy8538 3 роки тому +1

      @@ronews4723 if keys[pygame.K_LEFT]:
      self.angle -= 0.02
      if keys[pygame.K_RIGHT]:
      self.angle += 0.02

    • @shangtsung9935
      @shangtsung9935 2 роки тому

      @@sadboy8538 я хоть и не вовремя, но у меня такая проблема возникла, лучи, что должны сталкиваться со стенами и поворачивать вместе с игроком не поворачивается, сам игрок поворот делает спокойно, а лучи нет. Я, может быть, что-то пропустил, но я несколько раз перепроверил код, не могу найти причину.

    • @sadboy8538
      @sadboy8538 2 роки тому

      @@shangtsung9935 даже не знаю что нужно сделать :(

    • @shangtsung9935
      @shangtsung9935 2 роки тому

      @@sadboy8538 печально, но все равно спасибо.

  • @thzeroucken
    @thzeroucken 4 роки тому +191

    Ну, теперь у меня есть стимул учить математику с синусами и косинусами. Ты лучший)

    • @ronews4723
      @ronews4723 4 роки тому +2

      а што делать есле нехочет поворачивать я все проверил

    • @Yan_Yagellon
      @Yan_Yagellon 3 роки тому +22

      @@ronews4723 учить русский язык

    • @ronews4723
      @ronews4723 3 роки тому +4

      @@Yan_Yagellon и зач он мне

    • @frostyk097
      @frostyk097 3 роки тому +10

      @@ronews4723 ахвхахх логично))

    • @nedoponatij
      @nedoponatij 3 роки тому

      Тригонометрия называется

  • @Jackson-yr9ih
    @Jackson-yr9ih 4 роки тому +23

    Спасибо ОГРОМЕЙНЕШЕЕ за столь изложенный гайд! Не ожидал от себя, что разберусь полностью в такой проекции.
    Функция enumerate() конечно неплохая, но когда о ней ничего не знаешь, ловишь себя на мысли, что непонятно, что вообще она вытворяет в программе. Положа руку на сердце напишу, что следующий алгоритм наверное более понятный и дружелюбный для такой цели, как граббинг всех координат квадратов:
    world_map = []
    y=0
    for line in text_map:
    x=0
    for sign in line:
    if sign == 'w':
    world_map +=[(x*tilesize, y*tilesize)]
    x += 1
    y += 1

  • @МихаилИсаков-о5б
    @МихаилИсаков-о5б 4 роки тому +15

    Ля, видео новое, всё понятно объясняется, как же я рад что нашёл это видео

  • @aparrot4254
    @aparrot4254 3 роки тому +14

    You know this is good content when you don't understand Russian but still get entertained. Keep up the good work!

  • @mr.den4ik968
    @mr.den4ik968 3 роки тому +6

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

  • @snowdaledwarf3929
    @snowdaledwarf3929 Рік тому +3

    Спасибо огромное! Лучшее объяснение алгоритма рэйкастинга из тех, что мне удалось найти, в том числе и на английском языке!

  • @freezeyt2519
    @freezeyt2519 Місяць тому

    Очень информативное видео, даже не думал, что случайно наткнусь на такой шедевр. За 1 присест посмотрел все части и прям очень понравилось. Однозначно лайк💪

  • @Несмешнонесмеемся
    @Несмешнонесмеемся 3 роки тому +7

    огромное спасибо за ваш труд! единственная серия роликов в которой подробно и понято рассказано про ray casting, по вашим видео сделал шутер на C++ и библиотеке sfml

  • @laifodes2805
    @laifodes2805 4 роки тому +6

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

    • @brawaga
      @brawaga 3 роки тому

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

  • @iprepperGames
    @iprepperGames 2 роки тому +1

    Несколько раз пересматривал видосик, очень помогло написать свою игру. Эта озвучка такая клёвая, жаль новые видео не с ней. Спасибо за контент.

  • @chessprogramming591
    @chessprogramming591 3 роки тому +10

    Enjoyed reading through the code!
    Very didactic!
    Thanks man!

  • @vrabosh
    @vrabosh 4 роки тому +148

    афигеть, в 15мин пояснить как делать 3д лабирин с ходьбой, это круто.

    • @flane2188
      @flane2188 4 роки тому +9

      Ага, был бы другой автор, растянул бы видео на час

    • @ronews4723
      @ronews4723 4 роки тому

      а што делать есле нехочет поворачивать я все проверил

    • @ohnocoder
      @ohnocoder 3 роки тому

      @@ronews4723 Решил?

    • @kozlik992
      @kozlik992 2 роки тому

      16 минут 14 секунд)

    • @HibikiKanta1
      @HibikiKanta1 2 роки тому

      @@ronews4723 решил?

  • @user-wx7ji9jv3j
    @user-wx7ji9jv3j 4 роки тому +4

    Лучший .Очень и очень интересно, а главное круто.

  • @КостяЕжов-я3б
    @КостяЕжов-я3б Рік тому

    Я никогда раньше не думал, что математика может когда-то пригодиться в таком масштабе. Я просто охренел от твоих знаний. Лайк и подписка однозначно!

  • @АлександрЛынник-з4ь
    @АлександрЛынник-з4ь 3 роки тому +12

    Вы лучший! было бы не плохо, если вы посвятите несколько видео уроков, нейронным сетям, с нуля естественно)

  • @mynameisArseny
    @mynameisArseny 2 роки тому +1

    Ваууууууууууууууууу, никогда не думал что 3d игру создавать очень просто, а то создавал раньше только 2d, думал другое сложно

  • @gargyorpiest6047
    @gargyorpiest6047 4 роки тому +2

    Почему я никогда не знал об этом канале! Вау!

  • @LifelessAl
    @LifelessAl 3 роки тому +1

    Это же Hovertank 3D! Просто история жанра FPS перед глазами) Просто нереальное спасибо!

  • @LiVViN-t7z
    @LiVViN-t7z Рік тому

    Бро ты легенда только благодаря тебе смог понять принцип работы "простых" Игр и делать их зная базу питона

  • @СергейКоновалов-ф4ы

    Добрый день и спасибо большое за видео, недавно начал изучать питон и сделал 1 игру в виде галаги. На основе данных уроков сделаю 2 проект. Большое спасибо за ваш труд.

  • @евгенартемьев-н8у

    Дядя ты гений. Так все быстро сделал. Браво.

  • @Lifad7
    @Lifad7 2 роки тому +4

    По поводу момента поворота линии в 5:35
    Перемещение точки осуществляется путём нажатия W, A. S, D. И у многих затем появляются вопросы на подобии: "У меня линия постоянно смотрит вправо".
    Изменение поворота линии осуществляется путём нажатия кнопок со стрелочками .

    • @SteelNoodles29
      @SteelNoodles29 Рік тому +1

      У меня линия постоянно смотрит вправо, при этом не реагирует на стрелочки или еще что то что могло их напоминать. что делать?

    • @fastwalker3551
      @fastwalker3551 Рік тому +1

      @@SteelNoodles29 тоже самое, я хз что делать

    • @maxdimosca1106
      @maxdimosca1106 Рік тому

      Что делать если вообще не двигается? В 3D не работает, а в 2D спокойно?

    • @Coldaser
      @Coldaser 7 місяців тому

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

  • @uralfgdhjvc-324
    @uralfgdhjvc-324 3 роки тому +1

    Я также смотрел ваш урок по деланью змейки. Тоже классно!

  • @lewdagone3153
    @lewdagone3153 4 роки тому +1

    Надеюсь выйдет 2ая часть урока!👍👍

    • @StandaloneCoder
      @StandaloneCoder  4 роки тому +1

      Да, стал работать над второй частью

  • @erizy4523
    @erizy4523 10 місяців тому

    Большое спасибо за видео. Честно ,удивился , когда узнал что можно делать 3д игры в Python с помощью математики
    Подписка и лайк с меня

  • @БобСмит-ш5м
    @БобСмит-ш5м 4 роки тому +2

    Ты лучший челлл, продолжай дальше

  • @blackfox4035
    @blackfox4035 4 роки тому +3

    Спасибо большое, ты заслуживаешь больше подписчиков!

  • @se3122
    @se3122 4 роки тому +12

    Бля чел, ты лучший
    Реально развивающая тема а не питон за час у Хауди хо

    • @JustRixed
      @JustRixed 2 роки тому

      Типичный Хауди Хо: Ого! Ты умеешь писать команду print()! Теперь напиши 4Д игру с шейдерами и HD персонажами на Python только с модулем pygame!

  • @anikub2738
    @anikub2738 2 роки тому +1

    Я только начал смотреть но уже очень круто, возможно такими темпами на день рождения брата сделаю ему рейкастинг одной игры которую он любит ещё с ps1

  • @faseplay.
    @faseplay. 4 роки тому +5

    Делаю 3д игру на JavaScript + CanvasAPI по вашим урокам)
    Очень интересно, я понял как всё работает, уже до конца. Спасибо

  • @АртурПирожков-э4ы
    @АртурПирожков-э4ы 4 роки тому +2

    лайк и подписка! Продолжай, дружище.

  • @mhdmodocluber9591
    @mhdmodocluber9591 4 роки тому +5

    Ура, спасибо! Ты услышал меня

  • @wizard3374
    @wizard3374 4 роки тому +2

    Топ, хоть и голосом робота но это ничуть не мешат

    • @LainnMapperYou
      @LainnMapperYou 4 роки тому

      У него микрафона нету

    • @Vitaliy-ct2wv
      @Vitaliy-ct2wv 4 роки тому

      голосом робота даже круче

  • @kotenokNew-xyz
    @kotenokNew-xyz Місяць тому

    Крутой гайд. Спасибо!

  • @yanwhite5407
    @yanwhite5407 4 роки тому +2

    Ты очень крутой, спасибо тебе.

  • @МаксимЖелтов-ф8г
    @МаксимЖелтов-ф8г 4 роки тому +2

    Ты молодец продолжай
    Будь здоров

  • @uralfgdhjvc-324
    @uralfgdhjvc-324 3 роки тому +1

    Спасибо! Очень классное видио!

  • @elio27
    @elio27 3 роки тому +3

    Don't understand a word of russian but it's really cool !

  • @cheeseman_93
    @cheeseman_93 Рік тому

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

  • @daniilponomarenko311
    @daniilponomarenko311 3 роки тому +1

    Очень круто спасибо большое)))

  • @aresont9372
    @aresont9372 4 роки тому +3

    Поздравляю с сотней подписчиков!

  • @ThA891
    @ThA891 4 роки тому +9

    Пиздец! Да я бы в жизни сам не разобрался! И Тут даж бутылка бы не помогла... Теперь все понятно! Спасибо тебе огромное! Буду разбираться более конкретно что до как по твоему коду, а то с первого раза не все в голове уложилось. ))) Как сделаю игру обязательно скину тебе ;)
    P.S. Первый!))

    • @кточтотин
      @кточтотин 4 роки тому +2

      Не первый) он первее о моей узнал

  • @tvitit1228
    @tvitit1228 3 роки тому

    это очень хороший урок!!! лайк, подписка, колокольчик этому человеку :-)

  • @ЕгорЗверев-й8к
    @ЕгорЗверев-й8к 4 роки тому +1

    Это магия какая-то!)

  • @JsixjsnHhGsbbe
    @JsixjsnHhGsbbe 3 роки тому

    Просто топ, я всё понял сразу же)))

  • @artempaskevichyan1275
    @artempaskevichyan1275 4 роки тому

    Спасибо огромное, сильно помог, очень интересно

  • @kh6521
    @kh6521 3 роки тому

    Супер!!! Спасибо, дружище!!!

  • @RushCore-css
    @RushCore-css 9 місяців тому +1

    Привет! Как ты сделал луч на 5:25 ? просто сижу минут 20 и не могу понять как ты это сделал. Думаю заметишь

  • @pol3ik525
    @pol3ik525 3 роки тому

    Спасибо огромное помог выручил лайк!!!!

  • @denizdemir9255
    @denizdemir9255 3 роки тому

    hi, i just want to say that I REALLY appreciate the english subtitles!

  • @DenisTrebushnikov
    @DenisTrebushnikov 3 роки тому

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

  • @kid3714
    @kid3714 4 роки тому +1

    Спасибо,продолжай !!

  • @bjj1423
    @bjj1423 2 роки тому

    Учу питон неделю)) но походу зайду сюда позже))))

  • @okoloboga-37
    @okoloboga-37 Рік тому

    Я вот бедолага-аналитик, изучал python для построения нейронных сетей и анализов, но всегда хотелось игры делать. Но не их готовых конструкторов, как юнити и анреал, а что бы самому понимать и прописывать физику и законы мироздания. Везде читаю - нужен только Си. питон - тормоз, игры на нем не лепят. И чо. мне язык что ли переучивать? Причем в ущерб математическим возможностям питона. нееее, я начал верить, что найдется спаситель - и покажет мне всю мощь математики и лучшего для нее языка программирования. ЧУВАК СПАСИБО, ТЫ ТОТ САМЫЙ СПАСИТЕЛЬ!!

  • @aresont9372
    @aresont9372 4 роки тому +2

    Круто!

  • @madnomad6528
    @madnomad6528 2 роки тому +1

    Спасибо автору и конечно Джону Кармаку! Автор где ты этому научился ???? скажи ??? ресурс про математику??

  • @ДмитрийН-э8р
    @ДмитрийН-э8р 4 роки тому +1

    ТОП ТОП ТОП!!!!! Очень круто

  • @Muzaffarkhon
    @Muzaffarkhon 2 роки тому

    Спасибо тебе большое. Помог при вызове других файлов.

  • @lalathealter6513
    @lalathealter6513 3 роки тому

    за такое грех лайк не поставить

  • @Byt3pixe1
    @Byt3pixe1 4 роки тому +3

    годная инцтрукция. спасибо
    сегодня буду пробовать

  • @ghj_bmx
    @ghj_bmx 4 роки тому

    Спасибо папаша за это видео 3 питона хорошого обяснения

  • @frostyk097
    @frostyk097 3 роки тому

    Завтра попробую есле время будет, а так все прикольно

  • @alekseyzaretskiy5757
    @alekseyzaretskiy5757 4 роки тому +6

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

    • @StandaloneCoder
      @StandaloneCoder  4 роки тому +3

      нет, я предложу использование своей версии DDA алгоритма

    • @alekseyzaretskiy5757
      @alekseyzaretskiy5757 4 роки тому +1

      @@StandaloneCoder Интересно

  • @martibeats2119
    @martibeats2119 2 роки тому

    Спасибо за видео!

  • @антонвасиленко-п6ж
    @антонвасиленко-п6ж 4 роки тому +1

    Ты молодец продолжай. молодец

  • @jonnypro1256
    @jonnypro1256 2 роки тому

    13:14 У меня не убрался тот "диапазон" лучей, который у вас пропал, код с кругом и т.д. закомментировал. Как изменить код, чтобы этот диапазон лучей пропал?

  • @autocar4887
    @autocar4887 3 роки тому

    Ты просто гений!

  • @iliiakozhan5163
    @iliiakozhan5163 4 роки тому +2

    Оч круто!!! Расскажи про натягивание текстур на такие стены

  • @DevlogWriter
    @DevlogWriter 4 роки тому

    Классно! Спасибо! ))

  • @pythonIsTroll
    @pythonIsTroll 3 роки тому

    Спасибо огромнейшее

  • @ASW_StormOfficial
    @ASW_StormOfficial Рік тому

    Мужик кайф.
    но делай просто угол направления = direction
    а вперед вбок и назад - это direction+90 direction-90 direction -180
    имея угол - расчитай вектор горизонтальной скорости и вертикальной скорости -
    x += cos(direction)
    y += sin(direction)
    вроде так.
    и так ты и пулю кастовать можешь. не только шаг..
    или ты об этом и сказал я хз)
    * что я имею ввиду -ОДНА формула для всех движений игрока :)
    зависящая от view_direction

  • @bvg129
    @bvg129 4 роки тому +2

    В Pycahrm есть шаблон prop, который автоматически вставляет свойство. И геттеры, и сеттеры, и делетеры тоже. На 4:14 пригодился бы

  • @ASW_StormOfficial
    @ASW_StormOfficial Рік тому

    не ну я подофигел кончено я не думал что в питоне хпхпхахаха это возможно)))
    респект.
    рендеринг конечно я понимаю что это основы основ но СУПЕРСКИ сделан ои подано

    • @bebrozavr228
      @bebrozavr228 Рік тому

      запомни, в любом языке программирования возможно всё, кроме того, что нарушает законы физики

  • @inksans-gl8mt
    @inksans-gl8mt 4 роки тому +2

    Брат ты крут

  • @vladelcapitan
    @vladelcapitan 2 роки тому +1

    Привет. Спасибо за видео, очень подробно. Один момент, я немного переработал принцип формирования карты и часть настроек перенес в json файл, после чего справа появилась черная полоса. От чего так могло произойти?

  • @faseplay.
    @faseplay. 4 роки тому +1

    11:00
    Можно было инициализировать х и у за пределами цикла, который шёл в глубину, и рисовать линии также за его пределами: так в разы быстрее работает програма

  • @scaffus
    @scaffus 3 роки тому

    I don't understand any word but this man is a genius

  • @INR-z6e
    @INR-z6e 2 місяці тому

    по моему бро слишком крут

  • @Pixel_Magic
    @Pixel_Magic 3 роки тому

    Все: Нужна математика, говорили они!
    Я: Не нужна математика, говорили они!

  • @valdankartoshkin9010
    @valdankartoshkin9010 3 роки тому

    Пора делать свой Wolfenstein 3d

  • @thefikus1275
    @thefikus1275 3 роки тому

    Многие моменты не понял. Но узнал много полезного.

  • @blackgame2656
    @blackgame2656 4 роки тому +2

    У меня луч зелёный не так вертится, подскажи что делать. Вроде код чисто такой же как и у тебя

  • @СвятославХренов
    @СвятославХренов 2 роки тому

    David Beats + программирование
    Чел ты гений

  • @minechannelyt2190
    @minechannelyt2190 4 роки тому +2

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

  • @softwet4341
    @softwet4341 3 роки тому

    спасибо за урок

  • @BsLoOdXaY
    @BsLoOdXaY 2 роки тому

    4:35 я не понял как так получилось, но у меня пишет ошибка:line 17, in
    pygame.draw.circle(sc, GREEN, player.pos, 12)
    AttributeError: 'Player' object has no attribute 'pos' что делать?

  • @yofox
    @yofox Рік тому +1

    Привет бро ты куда пропал

  • @gandrew8102
    @gandrew8102 2 роки тому +2

    Можно было бы 2д карту уменьшить и оставить в левом нижнем углу как в гта)) А также вывести fps на экран, но я чтото не понял пока как

  • @aresont9372
    @aresont9372 4 роки тому +38

    Кто лайк зажал? Раскошеливайтесь жмоты!

    • @ronews4723
      @ronews4723 4 роки тому +1

      а што делать есле нехочет поворачивать я все проверил

    • @doctor7628
      @doctor7628 4 роки тому +1

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

    • @ArtamonHelloPython
      @ArtamonHelloPython 3 роки тому

      @@ronews4723 да

    • @lovie_minor
      @lovie_minor 3 роки тому

      @@doctor7628 токсик

  • @VAVANSTR
    @VAVANSTR 3 роки тому

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

  • @int_knight7413
    @int_knight7413 3 роки тому

    EXCELLENT!!!

  • @АнтонПивненко-б4б
    @АнтонПивненко-б4б 4 роки тому +7

    Спасибо! Луди думают что 3д это блендер, 3д макс и т.д. Нет! Это просто работа нашего МОЗГА... Очень наглядно и по русски. Спасибо!

  • @techos3253
    @techos3253 4 роки тому +3

    Все спасибо пошел делать guns of bullshit

  • @crackus4907
    @crackus4907 3 роки тому +2

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

  • @j0r0n
    @j0r0n 2 місяці тому

    Единственное что не понял, что за IDE ты используешь?
    (Да, я пока с ними не особо знаком, так как ранее сначала писал простые скрипты в Notepad++ а потом отдельно файлами, и то в linux (С IDE просто не приходилось сталкиваться), а сейчас изредко использую Visual studio с плагином на питон)

    • @tzn9597
      @tzn9597 2 місяці тому +1

      Это pycharm

    • @Yeeloxxt
      @Yeeloxxt Місяць тому

      в линуксе нет Notepad++

    • @j0r0n
      @j0r0n Місяць тому

      @Yeeloxxt Сначала писал простые скрипты в нотпаде, это было на Винде.
      Потом я переустановил операционку, и работал уже там, не меняя расширение с txt на py. Это уже было на Линуксе через запуск через терминал
      "... А потом отдельно файлами, и то в Linux..."

  • @JumpingRope45
    @JumpingRope45 3 роки тому

    Отличные ролики. Вопрос, как такой голос повествователя генерируется? )

  • @kewtomrao
    @kewtomrao 3 роки тому

    Thanks for the eng subtitles

  • @poli6975
    @poli6975 4 роки тому +1

    УРА Я ПОСТАВИЛ ЛАЙК 1000 ТЫСЯЧА