Тёмный

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

Standalone Coder
Подписаться 31 тыс.
Просмотров 265 тыс.
50% 1

🔥 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.

Опубликовано:

 

26 сен 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 660   
@TGrod
@TGrod 4 года назад
Очень круто, но я немного не допёр по какому принципу ты определил пересечение со стенами)))
@StandaloneCoder
@StandaloneCoder 4 года назад
Все несложно. У нас стена, это квадрат на карте, у которого есть только координаты левого верхнего угла, допустим (100, 100) и размер стороны квадрата 100. И, например, у нашего луча сейчас координаты (113, 159). Так вот, чтобы определить в каком квадрате наш луч, необходимо целочисленно поделить координаты луча и затем умножить их на размер квадрата. ( (113 // 100) * 100, (159 // 100) * 100 ) = (100, 100). То есть, мы попали в квадрат, и проверку на этом завершаем.
@TGrod
@TGrod 4 года назад
@@StandaloneCoder спасибо! Теперь всё ясно. Я просто упустил тот момент, что мы как бы рисуем луч не сразу целиком, а постепенно, и на каждом шаге проверяем находится ли он в квадрате. Я просто думал, что мы сразу целиком рисуем луч) И ещё раз прошу продолжать делать видео. Не забрасывайте это дело))
@geeksamurai9852
@geeksamurai9852 4 года назад
@@StandaloneCoder Здравствуйте, спасибо за урок, отлично объясняете, но у меня проблема такая вот,у меня все получилось отлично только вот лучи на экране остаются и когда я двигаюсь они тоже показывают направление, я про лучи которые показывают обзор, когда вы сделали графику от 2д до 3д то у вас они исчезли а у меня нет:(
@guitaresstv6777
@guitaresstv6777 3 года назад
@@StandaloneCoder привет, а какую среду программирования ты используешь?
@StandaloneCoder
@StandaloneCoder 3 года назад
@@guitaresstv6777 PyCharm
@emily-jv9xx
@emily-jv9xx 4 года назад
Вот спасибо, ну хоть один нормальный человек!!!
@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 печально, но все равно спасибо.
@thzeroucken
@thzeroucken 4 года назад
Ну, теперь у меня есть стимул учить математику с синусами и косинусами. Ты лучший)
@ronews4723
@ronews4723 3 года назад
а што делать есле нехочет поворачивать я все проверил
@Yan_Yagellon
@Yan_Yagellon 3 года назад
@@ronews4723 учить русский язык
@ronews4723
@ronews4723 3 года назад
@@Yan_Yagellon и зач он мне
@frostyk097
@frostyk097 3 года назад
@@ronews4723 ахвхахх логично))
@tahirsalihov4458
@tahirsalihov4458 3 года назад
Тригонометрия называется
@Jackson-yr9ih
@Jackson-yr9ih 3 года назад
Спасибо ОГРОМЕЙНЕШЕЕ за столь изложенный гайд! Не ожидал от себя, что разберусь полностью в такой проекции. Функция 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
@vrabosh
@vrabosh 4 года назад
афигеть, в 15мин пояснить как делать 3д лабирин с ходьбой, это круто.
@flane2188
@flane2188 3 года назад
Ага, был бы другой автор, растянул бы видео на час
@ronews4723
@ronews4723 3 года назад
а што делать есле нехочет поворачивать я все проверил
@ohnocoder
@ohnocoder 2 года назад
@@ronews4723 Решил?
@kozlik992
@kozlik992 2 года назад
16 минут 14 секунд)
@HibikiKanta1
@HibikiKanta1 2 года назад
@@ronews4723 решил?
@МихаилИсаков-о5б
@МихаилИсаков-о5б 4 года назад
Ля, видео новое, всё понятно объясняется, как же я рад что нашёл это видео
@aparrot4254
@aparrot4254 3 года назад
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 года назад
Офигеть вы крутой программист-математик! Вот зря я науки не учил... Вообще крутой специалист! Удачи и хорошего вам будущего и побольше такие видео выкладывайте!!! Вам бы профессором в университете быть + науки преподавать разные, помимо программирования!
@laifodes2805
@laifodes2805 3 года назад
лучшее видео что я видел по играм, столько новой и полезной информации, а главное - кратко и понятно.
@brawaga
@brawaga 3 года назад
Не везло вам, видать, с рекоммендациями от ютуба.
@se3122
@se3122 4 года назад
Бля чел, ты лучший Реально развивающая тема а не питон за час у Хауди хо
@JustRixed
@JustRixed 2 года назад
Типичный Хауди Хо: Ого! Ты умеешь писать команду print()! Теперь напиши 4Д игру с шейдерами и HD персонажами на Python только с модулем pygame!
@Несмешнонесмеемся
огромное спасибо за ваш труд! единственная серия роликов в которой подробно и понято рассказано про ray casting, по вашим видео сделал шутер на C++ и библиотеке sfml
@chessprogramming591
@chessprogramming591 3 года назад
Enjoyed reading through the code! Very didactic! Thanks man!
@АлександрЛынник-з4ь
Вы лучший! было бы не плохо, если вы посвятите несколько видео уроков, нейронным сетям, с нуля естественно)
@iprepperGames
@iprepperGames 2 года назад
Несколько раз пересматривал видосик, очень помогло написать свою игру. Эта озвучка такая клёвая, жаль новые видео не с ней. Спасибо за контент.
@КостяЕжов-я3б
@КостяЕжов-я3б Год назад
Я никогда раньше не думал, что математика может когда-то пригодиться в таком масштабе. Я просто охренел от твоих знаний. Лайк и подписка однозначно!
@mynameisArseny
@mynameisArseny 2 года назад
Ваууууууууууууууууу, никогда не думал что 3d игру создавать очень просто, а то создавал раньше только 2d, думал другое сложно
@user-wx7ji9jv3j
@user-wx7ji9jv3j 4 года назад
Лучший .Очень и очень интересно, а главное круто.
@LifelessAl
@LifelessAl 3 года назад
Это же Hovertank 3D! Просто история жанра FPS перед глазами) Просто нереальное спасибо!
@ВладИщук-ь6л
@ВладИщук-ь6л 10 месяцев назад
Чувствую себя тупым посмотрев это видео)
@gargyorpiest6047
@gargyorpiest6047 4 года назад
Почему я никогда не знал об этом канале! Вау!
@lewdagone3153
@lewdagone3153 4 года назад
Надеюсь выйдет 2ая часть урока!👍👍
@StandaloneCoder
@StandaloneCoder 4 года назад
Да, стал работать над второй частью
@LiVViN-t7z
@LiVViN-t7z 10 месяцев назад
Бро ты легенда только благодаря тебе смог понять принцип работы "простых" Игр и делать их зная базу питона
@Владимир-з9ь6н
@Владимир-з9ь6н 13 дней назад
молоца ❤ 😊
@ThA891
@ThA891 4 года назад
Пиздец! Да я бы в жизни сам не разобрался! И Тут даж бутылка бы не помогла... Теперь все понятно! Спасибо тебе огромное! Буду разбираться более конкретно что до как по твоему коду, а то с первого раза не все в голове уложилось. ))) Как сделаю игру обязательно скину тебе ;) P.S. Первый!))
@кточтотин
@кточтотин 4 года назад
Не первый) он первее о моей узнал
@faseplay.
@faseplay. 4 года назад
Делаю 3д игру на JavaScript + CanvasAPI по вашим урокам) Очень интересно, я понял как всё работает, уже до конца. Спасибо
@StandaloneCoder
@StandaloneCoder 4 года назад
Рад слышать!
@anikub2738
@anikub2738 2 года назад
Я только начал смотреть но уже очень круто, возможно такими темпами на день рождения брата сделаю ему рейкастинг одной игры которую он любит ещё с ps1
@okoloboga-37
@okoloboga-37 Год назад
Я вот бедолага-аналитик, изучал python для построения нейронных сетей и анализов, но всегда хотелось игры делать. Но не их готовых конструкторов, как юнити и анреал, а что бы самому понимать и прописывать физику и законы мироздания. Везде читаю - нужен только Си. питон - тормоз, игры на нем не лепят. И чо. мне язык что ли переучивать? Причем в ущерб математическим возможностям питона. нееее, я начал верить, что найдется спаситель - и покажет мне всю мощь математики и лучшего для нее языка программирования. ЧУВАК СПАСИБО, ТЫ ТОТ САМЫЙ СПАСИТЕЛЬ!!
@uralfgdhjvc-324
@uralfgdhjvc-324 3 года назад
Я также смотрел ваш урок по деланью змейки. Тоже классно!
@СергейКоновалов-ф4ы
Добрый день и спасибо большое за видео, недавно начал изучать питон и сделал 1 игру в виде галаги. На основе данных уроков сделаю 2 проект. Большое спасибо за ваш труд.
@mhdmodocluber9591
@mhdmodocluber9591 4 года назад
Ура, спасибо! Ты услышал меня
@wizard3374
@wizard3374 4 года назад
Топ, хоть и голосом робота но это ничуть не мешат
@LainnMapperYou
@LainnMapperYou 4 года назад
У него микрафона нету
@Vitaliy-ct2wv
@Vitaliy-ct2wv 4 года назад
голосом робота даже круче
@евгенартемьев-н8у
Дядя ты гений. Так все быстро сделал. Браво.
@blackfox4035
@blackfox4035 4 года назад
Спасибо большое, ты заслуживаешь больше подписчиков!
@БобСмит-ш5м
@БобСмит-ш5м 4 года назад
Ты лучший челлл, продолжай дальше
@Lifad7
@Lifad7 2 года назад
По поводу момента поворота линии в 5:35 Перемещение точки осуществляется путём нажатия W, A. S, D. И у многих затем появляются вопросы на подобии: "У меня линия постоянно смотрит вправо". Изменение поворота линии осуществляется путём нажатия кнопок со стрелочками .
@SteelNoodles29
@SteelNoodles29 Год назад
У меня линия постоянно смотрит вправо, при этом не реагирует на стрелочки или еще что то что могло их напоминать. что делать?
@fastwalker3551
@fastwalker3551 Год назад
@@SteelNoodles29 тоже самое, я хз что делать
@maxdimosca1106
@maxdimosca1106 10 месяцев назад
Что делать если вообще не двигается? В 3D не работает, а в 2D спокойно?
@Coldaser
@Coldaser 4 месяца назад
Что делать если линия не ходит за игроком
@elio27
@elio27 3 года назад
Don't understand a word of russian but it's really cool !
@DenisTrebushnikov
@DenisTrebushnikov 3 года назад
как человеку, с бухты барахты поставленному на должность техартиста, удивительно было узнать, что под капотом.
@PwnUrBadCock
@PwnUrBadCock 4 года назад
Вот это уникальный контент. Лови подписку. Спасибо большое! Изи 10-100к подписчиков через полгода, если будешь такой контент заливать. Пайгейм модуль очень годный, однако по нему нет сложных туторов. Все туторы для новичков модуля. Если еще будешь делать серию, давай какой-нибудь РПГ, Тавер дефенс или что-нибудь в таком роде.
@cheeseman_93
@cheeseman_93 Год назад
Интересно и прикольно, конечно много вещей тут мне пока не понятны но многое от сюда тоже можно взять
@alekseyzaretskiy5757
@alekseyzaretskiy5757 4 года назад
И наложение текстур интересно, и оптимизационная часть, сам бы 100 лайков поставил, если бы мог) Оптимизация, часом, не использованием формул нахождения персечения двух отрезков?
@StandaloneCoder
@StandaloneCoder 4 года назад
нет, я предложу использование своей версии DDA алгоритма
@alekseyzaretskiy5757
@alekseyzaretskiy5757 4 года назад
@@StandaloneCoder Интересно
@bjj1423
@bjj1423 Год назад
Учу питон неделю)) но походу зайду сюда позже))))
@yanwhite5407
@yanwhite5407 4 года назад
Ты очень крутой, спасибо тебе.
@МаксимЖелтов-ф8г
@МаксимЖелтов-ф8г 4 года назад
Ты молодец продолжай Будь здоров
@ЕгорЗверев-й8к
@ЕгорЗверев-й8к 3 года назад
Это магия какая-то!)
@uralfgdhjvc-324
@uralfgdhjvc-324 3 года назад
Спасибо! Очень классное видио!
@daniilponomarenko311
@daniilponomarenko311 3 года назад
Очень круто спасибо большое)))
@tvitit1228
@tvitit1228 3 года назад
это очень хороший урок!!! лайк, подписка, колокольчик этому человеку :-)
@Muzaffarkhon
@Muzaffarkhon 2 года назад
Спасибо тебе большое. Помог при вызове других файлов.
@valdankartoshkin9010
@valdankartoshkin9010 2 года назад
Пора делать свой Wolfenstein 3d
@aresont9372
@aresont9372 4 года назад
Поздравляю с сотней подписчиков!
@StandaloneCoder
@StandaloneCoder 4 года назад
Спасибо!
@ASW_StormOfficial
@ASW_StormOfficial Год назад
Мужик кайф. но делай просто угол направления = direction а вперед вбок и назад - это direction+90 direction-90 direction -180 имея угол - расчитай вектор горизонтальной скорости и вертикальной скорости - x += cos(direction) y += sin(direction) вроде так. и так ты и пулю кастовать можешь. не только шаг.. или ты об этом и сказал я хз) * что я имею ввиду -ОДНА формула для всех движений игрока :) зависящая от view_direction
@ASW_StormOfficial
@ASW_StormOfficial Год назад
не ну я подофигел кончено я не думал что в питоне хпхпхахаха это возможно))) респект. рендеринг конечно я понимаю что это основы основ но СУПЕРСКИ сделан ои подано
@bebrozavr228
@bebrozavr228 Год назад
запомни, в любом языке программирования возможно всё, кроме того, что нарушает законы физики
@davidgameboy8736
@davidgameboy8736 2 года назад
Не уходи пж НЕЕЕЕЕЕЕЕЕЕЕТ!
@inksans-gl8mt
@inksans-gl8mt 4 года назад
Брат ты крут
@denizdemir9255
@denizdemir9255 3 года назад
hi, i just want to say that I REALLY appreciate the english subtitles!
@pol3ik525
@pol3ik525 3 года назад
Спасибо огромное помог выручил лайк!!!!
@Byt3pixe1
@Byt3pixe1 4 года назад
годная инцтрукция. спасибо сегодня буду пробовать
@Neyneym
@Neyneym 3 года назад
Просто топ, я всё понял сразу же)))
@kh6521
@kh6521 3 года назад
Супер!!! Спасибо, дружище!!!
@artempaskevichyan1275
@artempaskevichyan1275 3 года назад
Спасибо огромное, сильно помог, очень интересно
@techos3253
@techos3253 4 года назад
Все спасибо пошел делать guns of bullshit
@nandreyk
@nandreyk 4 года назад
на моменте отрисовки лучей начинает сильно лагать, не могу понять с чем это связано, ноутбук далеко не кирпич. А уроки в целом отличные, узнал очень много нового p. s. посмотрел следующий ролик про оптимизацию и все понял, спасибо)
@isn81
@isn81 2 года назад
@SEMKI TV у меня сильно лагает, как решить?
@kid3714
@kid3714 4 года назад
Спасибо,продолжай !!
@ghj_bmx
@ghj_bmx 4 года назад
Спасибо папаша за это видео 3 питона хорошого обяснения
@justpret981
@justpret981 Год назад
Отличный туториал, сам по нему делал игру, но я тут понял, что рейкастинг немного тупая технология, я хочу сказать что мы знает координаты игрока и его угол поворота и мы знаем всю карту, более того, карта состоит из квадратов, значит мы можем провести вектор от точки игрока до вершины и получить сразу ее координаты, так делать для каждого элемента карты, что в поле зрения и что виден. Затем получив лишь нижнюю точку вершины уже на экране можно получить верхнюю просто отразив её относительно горизонта, затем получить второе ребро точно также, затем залить это полигоном.
@justpret981
@justpret981 Год назад
Я реализовал это, но ещё карта - это набор вершин. Это было чуточку труднее рейкастинга, но оно того стоит! Суть такова: Перемещаем систему координат к камере, поворачиваем систему координат на угол поворота камеры. находим проекции векторов от вершин к камере с экраном. На основе расстояния вычитываем размер. там где была проекция - строим отрезок заданного размера. добавляем вершины в стек и рисуем полигон. Вуаля! У меня на карте с +-300 вершинами 400 фпс. Это получается какой-то полигональный рейкастинг, но без рейкастинга.
@СвятославХренов
@СвятославХренов 2 года назад
David Beats + программирование Чел ты гений
@aresont9372
@aresont9372 4 года назад
Круто!
@aresont9372
@aresont9372 4 года назад
Кто лайк зажал? Раскошеливайтесь жмоты!
@ronews4723
@ronews4723 3 года назад
а што делать есле нехочет поворачивать я все проверил
@doctor7628
@doctor7628 3 года назад
да ты просто рукожоп, у меня лично все работает
@ArtamonHelloPython
@ArtamonHelloPython 3 года назад
@@ronews4723 да
@lovie_minor
@lovie_minor 3 года назад
@@doctor7628 токсик
@frostyk097
@frostyk097 3 года назад
Завтра попробую есле время будет, а так все прикольно
@Hanovski14
@Hanovski14 2 года назад
Автор : все мы прекрасно знаем * какая-то формула из тригонометрии* Я тот который не понимает триганометрию : :/
@blackgame2656
@blackgame2656 3 года назад
У меня луч зелёный не так вертится, подскажи что делать. Вроде код чисто такой же как и у тебя
@scaffus
@scaffus 3 года назад
I don't understand any word but this man is a genius
@umbrellaeducation5993
@umbrellaeducation5993 3 года назад
Yeah but as far as understood
@iliiakozhan5163
@iliiakozhan5163 4 года назад
Оч круто!!! Расскажи про натягивание текстур на такие стены
@thefikus1275
@thefikus1275 3 года назад
Многие моменты не понял. Но узнал много полезного.
@Pixel_Magic
@Pixel_Magic 3 года назад
Все: Нужна математика, говорили они! Я: Не нужна математика, говорили они!
@lalathealter6513
@lalathealter6513 3 года назад
за такое грех лайк не поставить
@антонвасиленко-п6ж
Ты молодец продолжай. молодец
@veng1500
@veng1500 2 года назад
Храни тебя господь
@ДмитрийН-э8р
@ДмитрийН-э8р 4 года назад
ТОП ТОП ТОП!!!!! Очень круто
@DevlogWriter
@DevlogWriter 4 года назад
Классно! Спасибо! ))
@bvg129
@bvg129 3 года назад
В Pycahrm есть шаблон prop, который автоматически вставляет свойство. И геттеры, и сеттеры, и делетеры тоже. На 4:14 пригодился бы
@denishaleckiy8303
@denishaleckiy8303 2 года назад
Если бы такую математику преподавали в вузе, я бы ее учил
@andro-coder
@andro-coder 2 года назад
Ты крутой, а сколько лет занимаешься программированием?
@madnomad6528
@madnomad6528 2 года назад
Спасибо автору и конечно Джону Кармаку! Автор где ты этому научился ???? скажи ??? ресурс про математику??
@faseplay.
@faseplay. 4 года назад
11:00 Можно было инициализировать х и у за пределами цикла, который шёл в глубину, и рисовать линии также за его пределами: так в разы быстрее работает програма
@pythonIsTroll
@pythonIsTroll 2 года назад
Спасибо огромнейшее
@alexru4288
@alexru4288 3 года назад
подписался классно
@kewtomrao
@kewtomrao 3 года назад
Thanks for the eng subtitles
@Maine__Coon__1
@Maine__Coon__1 2 года назад
Я 0 в питоне, но уже хочу игру такую, хоть повторить...
@truenickname2015
@truenickname2015 4 года назад
Хорош чувак, пришлось правда на 0,75 смотреть, ибо кодишь быстро, я не успевал. А так, мути еще уроки (: P.S. Я бы посоветовал начать с саааамого начала с установки python, где качать и как, совсем для нубов (для меня) Ы
@Vitaliy-ct2wv
@Vitaliy-ct2wv 4 года назад
с самого начала поройся на ютубе и в гугле, контента хватает, зачем человеку время тратить на совсем уж простые вещи!?
@truenickname2015
@truenickname2015 4 года назад
@@Vitaliy-ct2wv ты не представляешь на сколько люди могут быть тупыми..
@tablenkov4993
@tablenkov4993 3 года назад
@@truenickname2015 если хочешь сделать игру с нуля - ИЗУЧИ ЯЗЫК хотя-бы не полностью, но ИЗУЧИ
@softwet4341
@softwet4341 3 года назад
спасибо за урок
@poli6975
@poli6975 4 года назад
УРА Я ПОСТАВИЛ ЛАЙК 1000 ТЫСЯЧА
@autocar4887
@autocar4887 3 года назад
Ты просто гений!
@moviken_5213
@moviken_5213 4 года назад
lol, лишнюю скобку дописал и полчаса мучался с типами данных, урок отличный
@РобинзонКрузо-ч4к
@РобинзонКрузо-ч4к 4 года назад
Ура ты сделал урок! Интересно будет узнать про текстурирование))) И у меня есть проблема. Что бы повернуть игрока мне каждый раз приходится тыкать на кнопку. Как сделать, что бы поворачивался если зажать, а не каждый раз тыкать?
@StandaloneCoder
@StandaloneCoder 4 года назад
Возьми принцип управления из этого видео и тыкать больше не придется
@VitaliyZhdanov
@VitaliyZhdanov 10 месяцев назад
Бля, этот голос просто топчик😂😂
@mickey5995
@mickey5995 3 года назад
Респект
@VAVANSTR
@VAVANSTR 3 года назад
В следующий раз если делаете серию видосов, размещайте плиз на главной картинке номер серии (части), а то когда репостишь ваши видосы например в вк, то там приходится помучиться, чтобы понять где какая час обучающего ролика.
@strimerpocketants9359
@strimerpocketants9359 2 года назад
Это наверное учитель математик решил сделать мативацию учить его урок)))
@int_knight7413
@int_knight7413 3 года назад
EXCELLENT!!!
@harden2018
@harden2018 Год назад
я делал всё как ты делал, перевел в 3D а игрок не ходит вообще... только может влево и вправо поворачиваться, помоги
Далее
Можно Ли Делать ИГРЫ на Python?
8:52