3D движок на Паскале
ฝัง
- เผยแพร่เมื่อ 10 ก.พ. 2025
- Разбор кода и демонстрация моего каркасного 3d движка под DOS, написанного на turbo Pascal'е с применением модуля graph и некоторых операций из линейной алгебры. Кому интересен только готовый результат, переходим на 15:35 Видео немного мутное т.к. оно 640x480, а ютуб его как-то криво растянул. Ссылка на версию с dosbox'ом: yadi.sk/d/7OOr... - запустить dosbox.exe и выбрать в Dos Navigator'е 3d7.exe
Как же это ахриненно! Я просто тащусь по подобным темам. Братан, удачи тебе
нихрена никогда в жизни не пойму как так, но нравится такое смотреть.
Теперь я знаю, что сварганить на информатике в свободное время)
Удачи........
юзай opengl для pascal
Уровень юмора зашкаливает))0)
- Ну почти майнкрафт...
ты очень изменился за три года. ты, конечно, извращенец, но я тебя обожаю.
Знал я одного парня, который на паскале игры писал. Говорил: "код простой, удобно".
Правда его потом в дурку увезли...
Пересматриваю который раз... Всё же это очень круто!
Хотел перед информатикой вспомнить while, for, массивы и т.д., я через час дошёл до этого видио и понял, что на этом хватит
матрицы Родрига еще никому не помешали)) Но если ты понял сам алгоритм программы, то все хорошо.
@@cfd_novotroitsk, посоветуйте литературу по 3d, хочу уметь также)
Из 2d движка сделать 3d!! Да ты волшебник!! Удачи в понимании тригонометрии и стереометрии
засовывать иглу под ноготь: нормально
писать 3д движок на паскале: ДА ТЫ МАЗОХИСТ
Мерцание можно победить если сделать два экрана, в одном рисовать, другой показывать, потом менять местами. Благо модуль Graph имеет такие методы.
Ништяк прям, только бы добавить какую-нибудь ретро SynthWave и выложить в шортс. 👍
Офигеть, боюсь представить, сколько это у тебя заняло времени...
Ура наконец-то новый видос
Да Вы гений! 🤯
Эта штука рили крутая но без будущего, сильно долгая отрисовка((( но ты красавчик, лайк и подписка )))))))
Ну как без будущего, она нужна для дальнейшего портирования в C++, ведь создавать код, когда уже есть алгоритм гораздо проще
@@cfd_novotroitsk да.. но не легче бы было сразу на С++ ?)
Было бы легче, но в итоге код не выглядел бы так просто, в нем всего одна функция, а в C++ я бы нагородил несколько классов вроде векторов, матриц, 3d модели и ее подклассов, так еще ведь для них нужно прилично так функций написать.
@@cfd_novotroitsk а будет видео о версии на c++?
@@michailabramov3585 фанат C++
Урра я нашёл средство от торможения-это ассемблер-не простой в изучении, но лёгкий в понимании.
Привет всем, мы в УПК тоже проходили движения и рисовку объектов, машинки, людей прога ли, но ничего не помню НОСТАЛЬГИЯ 90 х
ничего не понятно, но очень научно
Смешной момент: 17:57 , 20:08
2020 год, самое время)
очень круто, но есть OpenGL для паскаль, там это делать легче, и он более оптимизированый **The damaged of coda**
Да, я знаю, есть 3d библиотеки для Паскаля, просто эта штука делалась специально под DOS. В DOS вроде тоже были какие-то библиотеки для 3d на Паскале, но они были под 3dfx видеокарты
@@cfd_novotroitsk кажется, вы хотели создать именно СВОЙ даижок
@@ктото-ч7п5л Ну, движок, это громко сказано, он же только каркасный и даже не содержит ассемблера, зато работает, и довольно быстро для лоуполи объектов, я проверял на 486 dx2-66
@@cfd_novotroitsk я считаю, что это вправе может считаться движком
интересно, эта штука запустится под более современными компиляторами паскаля? ну например freepascal?
Вроде во freepascal есть graph, должен скомпилировать, если там функции graph'a не называются по-другому.
как то в 7 классе я поспорил с одноклассником, что сделаю майнкрафт на паскале...
Так сделал в итоге или нет?)) Это сложно, и оно будет тормозить, но это возможно, я вообще видел как люди прикручивали OpenGl к FreePascal'ю
@@cfd_novotroitsk я занимался этим какоето время, а потом понял что это не мое)
Да крутая шняга вышла) Попробуй лучше сделать рили движок на С++ SFML и OpenGL.
на чем ты компилировал код у паскаля есть несколько компиляторов в том числе и современый и разве компилятор от дэлфи не подходит они вроде универсальны
В Delphi нет вообще такой библиотеки как graph, о какой универсальности идет речь?
Подписка!!!
капец ты гений
Нужно было на PascalABC :)
Хотя я тебя понимаю, недавно сам настальгировал на TP7 :)
За аватару лайк.
есть такой свободный продукт inertia для borland pascal 7.0 (на turbo и ранней версии может не заработать). Так вот, там разрабы ушли от графа и прикрутили юнит для работы с веса 2.0 (я чуть разобрался) : это вывод 32 битного цвета на экраны (макс 1600х1200) переключение старниц (корректно получается только до 16М видеопамяти) и прочие быстрые плюхи (быстрый вывод БМП файла). предлагаю сотрудничество по исходам (тоже делаю 3д движок уровня ВАД - графики, пока что только с цветными полигонами, о наложении текстур пока не мечтаю), но там все быстрее. Кста, работаю на виртуальной машине, на реальном проце должно быстрее все быть. Ну а в дальнейшем и к видяхе можно приучиться, (тот же glide, или S3)
Не слышал про такую библиотеку, возможно как-нибудь гляну, мои исходники можешь использовать, если это будет полезно, но нормально там написана только версия с каркасной графикой, версия с полигонами(там вместо них квадраты) написана довольно криво, ее лучше вообще не видеть, проблема в том, что там нет z-buffer'а как такового и она просто рисует все полигоны от дальних к ближним. Сейчас проверю, все ли исходники в том файле, если нет, то скину остальные на всякий случай. (они там есть все, 3d3 - это с кубами, 3d5 - самолет, 3d7- каркасный 3d движок с полноценной камерой.) На реальном проце я тестил, на 486 dx2-66 оно выдавало что-то навскидку около 10-20 фпс, но это без модельки дирижабля естественно
поставил лайк. мне бы так соображать в модуле crt.
crt это для ascii игр, он же текстовый, а в видео модуль graph, но при желании можно и в crt сделать ascii-3d движок, но нужен будет алгоритм Брезенхема.
@@cfd_novotroitsk я что-то увлёкся текстовыми играми на crt. Можно сказать - добровольный даунгрейд. Нашёл на ютубе реализацию сапера, но автор код не выложил. Пришлось взяться за учебники и реверсить его решение. Очень понравилось, хоть и название файла он выбрал неблагозвучное
Зачем нужен Паскаль? И в каких сферах можно его применить? Что это вообще такое?
Это древний язык программирования, нужен в основном для древних компов на MS-DOS, также используется для обучения языкам программирования, но в наше время его почти полностью вытеснил питон.
мне одному показалось, что в конце получилось похоже на майнкрафт?
Довольно круто. По каким учебникам учишься?
Да Паскаль я уже давно изучил, за исключением type'ов и операций с указателями. Да и вообще не советую его в наше время изучать, он уже устарел, лучше какую-нибудь книгу по плюсам почитать - Стефана Дэвиса или Страуструпа
@@cfd_novotroitsk как ты относишься к python?
Python вообще довольно простой, но при этом тормознутый язык, так как его компилятор написан на C и работа с переменными там основана на ассоциативных массивах, что компилируется в итоге в в довольно медленный ассемблерный код, в отличие от C/C++ где все переменные по сути являются адресами, однако возможностей у python много так как он может использовать как библиотеки, изначально написанные для C/C+ и вроде как даже для Фортрана. Полагаю что он популярен не столько по этой причине, а потому что его навязывают школьникам вместо паскаля, хотя оба языка далеки от совершенства.
Как установить дискетные программы 10 дискет на 10 дисков, всё поставил правильно но незнаю расположение: диск1-A, диск2-B, диск3-D, диск4-E ... nev /(пустая папка)-C. ?
так если это одна программа на 10 дискетах, то дискеты в процессе установки менять надо. Если на эмуляторе, там обычно надо пути к образам дискет указывать
@@cfd_novotroitsk имел в виду одна программа, а как без смены?
@@cfd_novotroitsk на эмуляторе
@@cfd_novotroitsk а тогда как указать путь?
Просто я пробовал вводить и mount C: "...1" -freesize 1000
И imgmount c ...1.img -t hdd -fs fat -size 512,63,16,1
@@cfd_novotroitsk ?
Красавчик конечно, но не понятно зачем(
Кстати, сколько по времени ты разрабатывал этот движок??
Ну основу сделал за день, вышло где-то 200 строк (там были только кубы и камера крутилась только по вертикальной оси, но ходить можно было как и куда угодно), потом в течение недели допиливал до такого состояния с поддержкой 3d моделек .obj и матрицами Родрига для универсального поворота камеры
@@cfd_novotroitsk как ты так быстро всё сделал, я сделал человека, который ходит по миру, ломает и ставит блоки за 2 мать его недели. В общем 236 строк
А ты в чем делал что в 236 строк уместил? На C# в Unity? Или просто OpenGl использовал?
@@cfd_novotroitsk использовал graphABC
Красава, тут дело не в скорости написания, а в качестве конечного продукта, если снимешь видос, скинь ссылку, интересно глянуть, что получается
Блин чтож я сразу не догадался, на андроиде же есть прога паскаль
ну если ты эту штуку собрался тестировать, то вряд ли она там корректно заработает, там должны быть все модули из Borland Turbo Pascal
@@cfd_novotroitsk только что заметил
Вообще сейчас можно на новых версий и это 3д движок в новых версий есть
если на новых версиях паскаля, то там есть свой 3d движок graph3d, под досом есть только graph, который позволяет линии рисовать, но его основе это и сделано
Понятно
Скажи мне как делается так чтоб мир двигался, и лучи как сделать
Я просто теперь на processing 3 программирую, просто он более подходит для программирования анимации
@@Romanychev_Iliy_G7 чтобы мир двигался, нужно двигать радиус-вектор камеры, либо вращать базис камеры, у меня это через матрицы Родрига сделано, можешь поворот базиса камеры запрограммировать в processing'е через эти матрицы Родрига, код примерно такой же, как у меня на Паскале, просто функции математические и синтаксис другой, хотя, там скорее всего есть какие-либо функции для работы с кватернионами, ими тоже можно поворачивать базис камеры
@@cfd_novotroitsk а тогда как ты схему мира сделал, пример 1-объект, а 0-ничего?
@@Romanychev_Iliy_G7 схемы мира у меня нет, у меня просто 3d модели загружаются и у них заданы координаты, и они относительно них рисуются в цикле, вот и вся сцена. Причем каждую новую 3d модель - ее отрисовку, нужно добавлять в основной цикл, загружаются они предварительно из txt
@@cfd_novotroitsk а ты не знаешь как они делаются
Го движок для ASCII игр
на паскпль..........
Нахрена в DOSе? Зачем TurboPascal? Что мешает юзать FreePascal и OpenGL?!!
Показать способность турбо паскаля на досе
@@awwlik Хотя да, согласен. А то многие считают, что паскаль это такой учебный недоязык.
@@DenisShaver не,ну ты актив! Считал ,что на это сообщения ответят через 3 года. Да я хотел сказать это,но минусы паскаля сказал сам автор видео
@@awwlik Всё зависит от серверов ютуба )
Дай пж ссылку на русский командер
там надо keyrus сначала ставить и запускать keyrus .com, коммандер вот:
Norton: old-dos.ru/files/file_1458.html
Dos Navigator: old-dos.ru/files/file_1454.html
Volkov: old-dos.ru/files/file_169.html
Keyrus от Гуртяка: old-dos.ru/index.php?page=files&mode=files&do=show&id=328
Я на телефоне запускал, там главное циклы на полную выставить и клаву настроить и все будет норм работать. Исходники и exe у меня в описании к видео по ссылке
Спасибо большое с меня лайк и подписка. На Magic DosBox лудше т.к. можно делать кнопки.
Дай пж ссылку на фал что ты там писал на 3D7.PAS
Он в этом архиве: yadi.sk/d/7OOrqO7Il_tuiQ, в папке: terpas_v1.0+DOSBOX/Virtual/TP7/BIN ну и там будет этот файл 3D7.PAS в конце списка
@@cfd_novotroitsk спасибо
@@cfd_novotroitsk делаю игру на движке Redguard Dos и на вместе carmageddon и гта размер примерно 100.5гб на сд сделаю примерно 1 г на изучение и 10 г на создание.
По 10мб в день
@@cfd_novotroitsk а вторая твоя игра которая с лагами ну вконце ролика показывал она тоже тут?
да, он там же, файл 3D3.PAS
и потом вот ты говоришь что все так работает по тому что паскаль плохой язык а ты давай переделай на си плюс плюс и продемонстрируй как такой же алгоритм у тебя будет летать я чего то сомневаюсь карл )
Я не переделываю на плюсах, потому что для этого надо разобраться в directx api или opengl, а иначе, если просто использовать только библиотеки для отрисовки линий и не распараллеливать (а если распараллелить, то это будет примерно в число ядер раз быстрее), то это будет также тормознуто как на паскале (проверено моим коллегой). Паскаль и его компилятор для этого не подходят потому что в них нет библиотек для работы с видеокартой (да и под досом это невозможно и ненужно (если только glide как-то прикрутить)). А вот насчет алгоритма это ты зря, абсолютно такие же алгоритмы, только через матрицы проекций на видеокартах реализованы аппаратно, потому оно все и работает быстрее.
Я гуманитарий до мозга костей и не понял главного для себя: а текстуры на это можно натянуть?
На блокноте так можно? 😂😂😂😂😂
И такие есть?
А чё такое матрицы
матрица - тензор второго ранга)) А если серьезно, то это функция двух натуральных аргументов
@@cfd_novotroitsk а а можно для тупого школяра объяснить?)
@@sergkobra Это обычно в вузе на первом-втором семестре проходят, если интересно, то рекомендую почитать краткий курс теории матриц: drive.google.com/file/d/1Ju9SrY3GbVYJyxA97pqJOw_JlozKdL0s/view?usp=sharing
Вау, этот язык совсем не бесполезный
ну, чтобы смотреть 3d модельки в .obj под досом оно полезно, в ABC .net под виндой вроде как прикрутили модуль Graph3D, там побольше возможностей.
нихера не ясно
Кто бы ни читал этот комментарий, знай, что *ГОСПОДЬ ИИСУС ХРИСТОС ЛЮБИТ ТЕБЯ!*
Whoever reads this comment, know that *LORD JESUS CHRIST LOVES YOU!*