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

Поделиться
HTML-код
  • Опубликовано: 24 май 2020
  • 🔥 English Version:
    • Creating a DOOM (Wolfe...
    A detailed tutorial on creating from scratch a simple pseudo 3d game based on Ray casting technique. Especially for beginners to be interested in and create games in Python and Pygame.

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

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

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

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

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

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

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

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

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

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

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

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

      @@guitaresstv6777 PyCharm

  • @user-ve9pq4nw8o
    @user-ve9pq4nw8o 3 года назад +7

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

  • @user-td5qw7zi3z
    @user-td5qw7zi3z 4 года назад +15

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

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

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

  • @thzeroucken
    @thzeroucken 4 года назад +183

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

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

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

    • @Yan_Yagellon
      @Yan_Yagellon 3 года назад +20

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

    • @ronews4723
      @ronews4723 3 года назад +3

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

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

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

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

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

  • @emily-jv9xx
    @emily-jv9xx 4 года назад +64

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

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

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

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

      @@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 печально, но все равно спасибо.

  • @mr.den4ik968
    @mr.den4ik968 3 года назад +5

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

  • @chessprogramming591
    @chessprogramming591 3 года назад +10

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

  • @Jackson-yr9ih
    @Jackson-yr9ih 3 года назад +20

    Спасибо ОГРОМЕЙНЕШЕЕ за столь изложенный гайд! Не ожидал от себя, что разберусь полностью в такой проекции.
    Функция 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

  • @snowdaledwarf3929
    @snowdaledwarf3929 Год назад +3

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

  • @user-gb6mf9bq8t
    @user-gb6mf9bq8t 2 года назад +12

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

  • @laifodes2805
    @laifodes2805 3 года назад +6

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

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

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

  • @vrabosh
    @vrabosh 3 года назад +146

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

    • @flane2188
      @flane2188 3 года назад +8

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

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

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

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

      @@ronews4723 Решил?

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

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

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

      @@ronews4723 решил?

  • @user-wx7ji9jv3j
    @user-wx7ji9jv3j 3 года назад +4

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

  • @user-xi4it2lq5f
    @user-xi4it2lq5f Год назад

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

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

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

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

    Офигеть, просто супер, не ожидал, что такое возможно)

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

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

  • @user-nk8mq2bj1v
    @user-nk8mq2bj1v 11 месяцев назад

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

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

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

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

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

  • @uralfgdhjvc-324
    @uralfgdhjvc-324 3 года назад +1

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

  • @user-xp4ml6xe7z
    @user-xp4ml6xe7z 8 месяцев назад

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

  • @aparrot4254
    @aparrot4254 3 года назад +12

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

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

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

  • @PwnUrBadCock
    @PwnUrBadCock 4 года назад +16

    Вот это уникальный контент. Лови подписку. Спасибо большое!
    Изи 10-100к подписчиков через полгода, если будешь такой контент заливать.
    Пайгейм модуль очень годный, однако по нему нет сложных туторов. Все туторы для новичков модуля. Если еще будешь делать серию, давай какой-нибудь РПГ, Тавер дефенс или что-нибудь в таком роде.

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

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

  • @user-ih5jt2jm5y
    @user-ih5jt2jm5y 3 года назад +2

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

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

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

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

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

  • @uralfgdhjvc-324
    @uralfgdhjvc-324 3 года назад +1

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

  • @erizy4523
    @erizy4523 4 месяца назад

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

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

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

  • @user-vu3fb2xq5d
    @user-vu3fb2xq5d 9 месяцев назад

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

  • @user-br6xb4zn9n
    @user-br6xb4zn9n 4 года назад +2

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

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

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

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

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

  • @anikub2738
    @anikub2738 2 года назад +1

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

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

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

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

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

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

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

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

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

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

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

  • @user-xw6po5oz3g
    @user-xw6po5oz3g 4 года назад +2

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

  • @user-dz1uq5sd5b
    @user-dz1uq5sd5b 3 года назад +1

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

  • @mynameisArseny
    @mynameisArseny 2 года назад +1

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

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

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

  • @faseplay.
    @faseplay. 3 года назад +5

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

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

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

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

    Круто!

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

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

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

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

  • @user-wo1wm4ql1g
    @user-wo1wm4ql1g 4 года назад +1

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

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

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

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

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

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

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

  • @se3122
    @se3122 4 года назад +11

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

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

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

  • @user-zw3zg9gh8s
    @user-zw3zg9gh8s Год назад

    Очень круто

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

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

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

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

  • @ThA891
    @ThA891 4 года назад +9

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

    • @user-hc3ke1wy1j
      @user-hc3ke1wy1j 4 года назад +2

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

  • @inksans-gl8mt
    @inksans-gl8mt 4 года назад +2

    Брат ты крут

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

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

  • @user-xk4tj7jd2b
    @user-xk4tj7jd2b 2 года назад

    Очень зашло

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

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

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

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

    • @Vitaliy-ct2wv
      @Vitaliy-ct2wv 4 года назад

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

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

    EXCELLENT!!!

  • @user-bu8ju3rw6s
    @user-bu8ju3rw6s 4 года назад +1

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

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

    подписался классно

  • @elio27
    @elio27 3 года назад +3

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

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

    Great video!!!!

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

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

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

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

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

    Thanks for the eng subtitles

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

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

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

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

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

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

  • @user-rb1zv6yg3v
    @user-rb1zv6yg3v 3 года назад

    отличное видео

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

    Респект

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

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

  • @user-kz6lo9qv1o
    @user-kz6lo9qv1o 3 года назад

    вау крутяк

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

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

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

    Спасибо за урок! Как раз 3д игру делаю )

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

    Бл* ты пипец крутой!Большое спасибо

  • @user-jf5bn1jw3b
    @user-jf5bn1jw3b 4 года назад +2

    Ля, круто

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

    Вау, спасибо

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

    Finally someone did it!

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

    чел ты крут

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

    you're cool😀😀😀💯

  • @user-sf5jc4ju8e
    @user-sf5jc4ju8e 4 года назад +2

    Ура ты сделал урок! Интересно будет узнать про текстурирование))) И у меня есть проблема. Что бы повернуть игрока мне каждый раз приходится тыкать на кнопку. Как сделать, что бы поворачивался если зажать, а не каждый раз тыкать?

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

      Возьми принцип управления из этого видео и тыкать больше не придется

  • @gamedev-9135
    @gamedev-9135 2 года назад

    подпишусь

  • @vladislav8860
    @vladislav8860 2 года назад +1

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

  • @user-cd9jf9io6w
    @user-cd9jf9io6w 2 года назад

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

  • @user-iw6kq5ly3h
    @user-iw6kq5ly3h 3 года назад

    респект

  • @faseplay.
    @faseplay. 3 года назад +1

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

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

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

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

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

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

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

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

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

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

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

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

    Не уходи пж НЕЕЕЕЕЕЕЕЕЕЕТ!

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

    This guy is a saviour

  • @okoloboga-37
    @okoloboga-37 11 месяцев назад

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

  • @user-qh9ok1el5x
    @user-qh9ok1el5x 2 года назад

    ну прикольно