Тёмный

Сделал 3D Игру на Python без движка [#1] | Ray Casting | Pygame 

Maynix
Подписаться 441
Просмотров 14 тыс.
50% 1

В это видео я покажу вам как сделать простенькую 3D Игру на Python за 20 минут без движка. Если вы хотите продолжения, то покажите это своей активностью, всем удачи :)
Код: github.com/MaynixX/RayCasting...

Наука

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

 

30 июл 2021

Поделиться:

Ссылка:

Скачать:

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

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 46   
@Logicatube
@Logicatube 2 года назад
DOOM НЕ RAYCAST ИГРА, А BSP!!! Так и взял часть видео с 3DSage, без явно его согласие
@pmak6074
@pmak6074 2 года назад
Нет, Doom - это не рейкастинг, а сканлайн (растеризация) из 2d-BSP. Технологии очень разные. Raycasting осуществляет растеризацию за счёт того, что обходит лучом поверхности, Doom осуществляет "растеризацию" обходя сегменты из bsp дерева, и выполняя прямую растеризацию (scanline), без использования лучей!!! В ratcasting лучи используются для определения того, что попало в зону видимости, при использовании прямой растеризации, нам надо думать как отсечь невидимое пространство - для этого Кармак использовал двоичное двумерное дерево. Сильверман, напротив, определял видимость методом порталов, но точно так-же использовал прямую растеризацию (без лучей). Тут аналогия с растеризацией в полигоны и лучевой трассировкой в современных играх (технологии одни и те-же, только уже на аппаратно-шейдерном уровне).
@Desiop
@Desiop Год назад
На C# (System.Drawing библеотка) создавал по твоему туториалу. Было увлекательно. Только я сразу сделал List единственное у меня Y, ещё есть допустим если у обьета Y - 100, при приблежении к нему он будет спускаться в низ, но думаю разберусь как пофиксить
@TeiMaVi
@TeiMaVi 2 года назад
ля я думал чо у тя Где-то 48к но у тя 55 сабов... хах
@user-tl6xf6cc6o
@user-tl6xf6cc6o 2 года назад
Xaйль. Наверное, не первый вопрос подобного рода, но: Не имеет ли автор канала что-то общее со StandaloneCoder? Скажем так, очень похожи) Но это ни в коей мере не упрёк P.S. а можно увидеть ролик по языку Cython и его интеграции с Python?
@maynix7685
@maynix7685 2 года назад
Ага, я им вдохновился) очень крутой чел
@user-us7tk1jg7q
@user-us7tk1jg7q 2 года назад
You the best.
@underwater5555
@underwater5555 2 года назад
сделай ещё прыжки и стены разной высоты в следующих роликах
@maynix7685
@maynix7685 2 года назад
понимаешь, там нет просмотра сверху. я, так сказать, начал делать без третей оси. но невысокий фейк прыжок можно сделать, почему бы нет. жди)
@underwater5555
@underwater5555 2 года назад
@@maynix7685 то есть третью ось уже нельзя сделать? изменено: а как она вообще будет работать?
@maynix7685
@maynix7685 2 года назад
@@underwater5555 тут нужно делать уже матрицы нампая, но можно сделать псевдо 3d, чтоб просто блоки перемещались вверх-вниз относительно позици игрока по третей оси
@underwater5555
@underwater5555 2 года назад
@@maynix7685 ок, а как насчёт стен разной высоты. И можно будет на них запрыгивать с фейк прыжком?
@maynix7685
@maynix7685 2 года назад
@@underwater5555 Запрыгивать нельзя будет, тупо прыгать :)
@underwater5555
@underwater5555 2 года назад
1. я первый 2. как можешь подсказать как сделать повороты вверх и вниз у меня проекция 3d вот так сделана: depth, offset, texture = (depth_v, yv, texture_v) if depth_v < depth_h else (depth_h, xh, texture_h) offset = int(offset) % TILE depth *= math.cos(player_angle - cur_angle) depth = max(depth, 0.00001) proj_height = int(PROJ_COEFF / depth) casted_walls.append((depth, offset, proj_height, texture)) cur_angle += DELTA_ANGLE return casted_walls заранее спасибо Изменено: TILE это размер стены(100х100) с остальным я думаю разберёшся и ещё раз заранее спасибо
@maynix7685
@maynix7685 2 года назад
привет) ну это 2.5 3d, там уже повороты вниз вверх делать если не фейковые, то нужно добавлять z ось - вверх-вниз. можно сделать фейк перемещение камеры вверх-вниз. то есть когда допустим игрок нажимает стрелку вверх, текстуры/стены чуть поднимаются наверх. могу это показать в следующих сериях, но это будет выглядеть немного нереалистично
@underwater5555
@underwater5555 2 года назад
@@maynix7685 ну тогда по z оси
@anikub2738
@anikub2738 2 года назад
Хотелось бы сделать игру в похожей манере но чуть круче она называется Power slave выходила на ps1 любимая игрушка детства моего брата так что хотел бы её сделать (но мне кажется там рейкастинга будет недостаточно)
@anikub2738
@anikub2738 Год назад
@RailHumster2010 Раб Силы
@Klair_
@Klair_ 7 месяцев назад
Как ты запускаешь проэкт? Я пытаюсь запустить через цмд и там чето с конфигом. Он говорит что нет переменной ширины. Как это исправить?
@hwik7488
@hwik7488 2 года назад
Где можно скачать проект? На гитхабе кнопки "Download" не нашёл..
@user-ly3is9gz2y
@user-ly3is9gz2y 2 года назад
Афигеть!ну прям как я,убигаешь от закона програмиста и ищешь развлечения на python,я охренительно много веселых возможностей нашел в этом языке,если хочешь мы можем объеденится,только я не снимаю видео!
@yuliyaparamonova5596
@yuliyaparamonova5596 Год назад
Привет, примерно тоже самое, не хочешь объединиться?
@tony-ci7gu
@tony-ci7gu 2 года назад
Привет, хорошее видео, понравилось, но решил написать на ascii графике(отрисовке) Не могу решить проблему с рыбий глаз, можешь подробнее рассказать что сделать да бы его убрать? Заранее спасибо
@tony-ci7gu
@tony-ci7gu 2 года назад
#импорты import math import curses import locale from math import pi, cos, sin #Положение и направление(поворот игрока, координаты) POS_X, POS_Y, POS_A = 2, 2, 0 player_angle = POS_X,POS_Y,POS_A # Ширина угла (радианы) так же угол обзора от первого лица FOV = pi / 2 # разрешение шага луча(дальность полета отображения) RESOLUTION = 0.1 # Максимальная глубина прорисовки DEPTH = 36 # Скорость игрока вперед назад за одно нажатие SPEED = 0.3 # скорость повотора игрока в радианах ROTATION_SPEED = 0.1 # Наша карта строчкой MAP = """ ×××××××××××××××××× ×................................× ×................................× ×................................× ×××××××××××××××××× """ """ Форматирует карту в одну строку без переносов для лучшего поиска(будет читать как одна строка для оптимизации прорисовки) :param string_map: MAP :return: форматированная карта, ширина, высота в блоках""" def make_map(string_map): rows = string_map.strip().split(' ') h = len(rows) w = len(rows[0]) return string_map.replace(' ', ''), w, h def main_3dwalk(screen): # оптимизация отображения юникода locale.setlocale(locale.LC_ALL, '') # кнопки не печатаются на экране при нажатии(управление) curses.noecho() #убирает курсор с экрана curses.curs_set(0) #цвет режим, палитра curses.start_color() curses.use_default_colors() # форматируем карту и получаем ее размеры(обьединение параметров для удобства в один метод создания карты) level_map, map_width, map_height = make_map(MAP) def get_block(x, y): """По координатам на карте возращает символ блока(прорисовка , для понимания отртсовки) × - это стена, все остальное свободное пространство x: колонка y: строка return: сивмвол блока грубо говоря цыкл прорисовки и возвращение при обратном перемещении""" x, y = int(x), int(y) if 0
@maynix7685
@maynix7685 2 года назад
@@tony-ci7gu надо домножить расстояние на cos(player.angle - cur_angle)
@momris_alex
@momris_alex 2 года назад
@@maynix7685 а в каком файле, и на каком линии
@user-qr5yz8nl4o
@user-qr5yz8nl4o 2 года назад
а можно спросить можешь ссылку кинуть на приложение в которым ты прогграмируешь (просто я искал и не нашёл)
@maynix7685
@maynix7685 2 года назад
www.jetbrains.com/ru-ru/pycharm/download/
@user-qr5yz8nl4o
@user-qr5yz8nl4o 2 года назад
Огромное спасибо
@nthaccacuh
@nthaccacuh 2 года назад
Какая у вас версия Python? Попробовал запустить ваш код, но идут ошибки за ошибками: AttributeError: module 'pygame' has no attribute 'display' NameError: name 'pygame' is not defined AttributeError: module 'time' has no attribute 'time_ns' Как это исправить?
@momris_alex
@momris_alex 2 года назад
Нужна версия python 3.7.3
@yuliyaparamonova5596
@yuliyaparamonova5596 Год назад
Какая у тебя?
@nthaccacuh
@nthaccacuh Год назад
@@yuliyaparamonova5596 3.6
@kirixoto
@kirixoto Год назад
standlone code не ты ли это? )
@pechenka2238
@pechenka2238 Год назад
Привет! У меня тут странная ошибка вышла И я не могу понять в чем дело Не поможешь?
@pechenka2238
@pechenka2238 Год назад
Уже исправил
@furious9162
@furious9162 2 года назад
Перезалив с другого канала
@maynix7685
@maynix7685 2 года назад
какой перезалив дружище)))
@Elena14380
@Elena14380 2 года назад
@@maynix7685 помоги пж! Проблема с pygame. Я его скачал а python его не видит
@rasrabotchik
@rasrabotchik Год назад
@@Elena14380 у тебя наверно 2 питона скачано у меня было такое пришлось искать кучу файлов связанных с пайтон и удалять
Далее
Задержали в аэропорту
00:56
Просмотров 656 тыс.
Crazy Girl destroy RC CARS 👩🤪🚘🚨
00:20
Просмотров 2,7 млн
Пощупал эти ваши ОС
15:48
Просмотров 7 тыс.
Raycasting Game in Python and Pygame
9:07
Просмотров 6 тыс.
Пишем свой движок 3D-графики
19:25
Делаю 3D Игру на Python [ Pygame ]
6:30
Просмотров 54 тыс.
Asus  VivoBook Винда за 8 часов!
1:00
Просмотров 1,1 млн
Gizli Apple Watch Özelliği😱
0:14
Просмотров 4,3 млн
🛑 STOP! SAMSUNG НЕ ПОКУПАТЬ!
1:00
Просмотров 45 тыс.