No video

ASCII игра на Паскале (пародия на Terraria)

  Рет қаралды 39,182

Роман Балабанов

Роман Балабанов

Күн бұрын

Попытка создать вменяемый 2d ascii движок на Паскале.
Итог: провал из-за недостаточной производительности Паскаля.
PS: позже выяснилось, что тормознутость была связана с тем, что в Dosbox`e циклы стояли на авто, после выставления циклов на 15000 игра стала динамичной и стала быстро рендерить кадры, но глаза от нее все равно вытекают.
Ссылка на исходный код(exe-шник только для доса, pas файл компилируется всеми компиляторами):
yadi.sk/d/vwDe...
Update: Благодаря совету Александра Луценко было пофикшено мерцание (выпилено clrscr и заменено на gotoXY(1,1)),
теперь глаза не вытекают, вот ссылка на исправленную версию:
yadi.sk/d/GM_k...
Версия с "вшитым" Досбоксом:
yadi.sk/d/lt_l...

Пікірлер: 135
@KENISEG
@KENISEG 7 жыл бұрын
вот это я понимаю люди занимаются настоящим bdsm....
@maldecur1901
@maldecur1901 4 жыл бұрын
зазахах
@skinl3993
@skinl3993 5 жыл бұрын
Дайте ему java или c# ждите игру конкурирующую с ведьмаком
@TheShaehl
@TheShaehl 4 жыл бұрын
c++
@prodbyqenloou
@prodbyqenloou 3 жыл бұрын
Дайте ему UE4 ждите игру всех времëн
@DanielLenskiy
@DanielLenskiy Жыл бұрын
java и C# будут работать так же, только памяти жрать в 10 раз больше :)
@user-wr3zv7mr1t
@user-wr3zv7mr1t 4 жыл бұрын
всего-лишь раз я видел такую силу...
@captainobvious2928
@captainobvious2928 3 жыл бұрын
У бездомного больше таланта, чем у топовых программеров.
@darkflame2001
@darkflame2001 6 жыл бұрын
А-а-а! Dos Navigator в 2016 году! Аж прослезился от ностальгии.
@dh36267
@dh36267 6 жыл бұрын
а тут можно грабить корованы???
@cfd_novotroitsk
@cfd_novotroitsk 6 жыл бұрын
Я джва года ждал этого вопроса)) Сейчас работаю над добавлением песка, рекурсивного взрыва динамита, и еще есть идеи по поводу добавления физики воды. После этого займусь корованами))
@user-ch4df1qe7o
@user-ch4df1qe7o 5 жыл бұрын
Роман Балабанов, еще лутбоксы и Battle Royale осталось прихуярить
@plplllpl
@plplllpl 5 жыл бұрын
@@user-ch4df1qe7o и еще графику, как в батле,и физику,соответствующую реальной 100%
@alexandersigma2291
@alexandersigma2291 5 жыл бұрын
@@cfd_novotroitsk будущее игровой индустрии за тобой!
@czak_zaorak
@czak_zaorak 4 жыл бұрын
@@cfd_novotroitsk и как прогресс?
@adarius5533
@adarius5533 7 жыл бұрын
респект тебе,иди с разрабами dwarf fortress работай
@user-ko9nl5qd5i
@user-ko9nl5qd5i 7 жыл бұрын
конечно, робота огромная, но зачем перерисовывать весь экран? можно ведь только движущиеся объекты перерисовывать
@immortaldev690
@immortaldev690 6 жыл бұрын
дарова
@Stabidi2024
@Stabidi2024 4 жыл бұрын
Потому что если прорисовывать только двигующиется объекты, то нельзя будет разрушать блоки
@erxzi2
@erxzi2 3 жыл бұрын
@@Stabidi2024 +
@niyazleushkin
@niyazleushkin 3 жыл бұрын
Как я понимаю он все это выводит на экран, т.е скорее всего подобием print() Думаю он не может не вывести все изображение полностью
@Noname-qj2pl
@Noname-qj2pl 5 жыл бұрын
В маленькой версии как будто на нокиа
@Helling_Out
@Helling_Out 4 жыл бұрын
А это идея... 🙃
@zion1246
@zion1246 4 жыл бұрын
@@Helling_Out да!
@электро-лис
@электро-лис 5 жыл бұрын
Пошаговая Террария))
@abdenal-247
@abdenal-247 5 жыл бұрын
Просто напиши в конце sleep (50); такое случается потому что прорисовка карты ведётся за каждый такт процессора (примерно 1200 раз в секунду) и команда sleep отвечает за задержку времени в 50 миллисекунд
@cfd_novotroitsk
@cfd_novotroitsk 5 жыл бұрын
да кстати, delay(50) более плавно смотрится(щас проверил), у меня до этого было delay(100) а 50мс кадр это как раз примерно 20 fps
@drdoxser5127
@drdoxser5127 3 жыл бұрын
Ещё один вид экстрималов
@kyriyaka3492
@kyriyaka3492 3 жыл бұрын
Очень хорошо получилось!
@atlasua2021
@atlasua2021 5 жыл бұрын
Крепкие нервы, молодец))
@user-pb5ko5xu7o
@user-pb5ko5xu7o 4 жыл бұрын
Ну ты Монстр!!!👏👍☝️
@nikkm7669
@nikkm7669 2 жыл бұрын
а ведь родители говорили что много играть в детстве в игры на приставке не давали, либо зрение садилось... а я не верил, за 3минуты зрение потерял после просмотра етого видердигамаи
@dmitriyzh5251
@dmitriyzh5251 6 жыл бұрын
Как у тебя прорисовка кадра идёт ? Ты очищаешь весь экран в чёрный и построчно прорисовываешь? Сделай буферизацию изображения. Т.е. отрендери сцену в массиве, а затем этот массив отдай на прорисовку. И рисовать надо не write, а прямо в видеопямять, через port (но могу ошибаться)
@Anton27433
@Anton27433 2 жыл бұрын
Вау, ты наверное очень постарался. Крутая игра прям очень
@iDDMZ
@iDDMZ Жыл бұрын
получи адрес видео буфера, он 4кб в текстовом режиме, и пиши туда напрямую. скорость будет отличной
@user-pm2ru6ir6n
@user-pm2ru6ir6n 5 жыл бұрын
надо писать прям в память видюхи, а не write. $B800 вроде адрес. то есть mem[$b800:0] = 'a' будет в углу в 1й позиции a(0й байт), 1й байт буфера - цвет. 2й байт - 2й символ. 3й байт - цвет... и т.д. Для перевода координат x,y в адрес - нужно (y*screenWidth+x)*2 (*2 потому что 2 байта на позициию на экране - символ и цвет).
@cfd_novotroitsk
@cfd_novotroitsk 5 жыл бұрын
Спасибо за совет, надо будет попробовать, теоретически это должно увеличить скорость чуть ли не в число, равное числу символов на экране. Только там насколько я понимаю еще надо с прерываниями разобраться в Паскале, видимо можно и через векторы прерывания и через ассемблерные вставки делать
@user-pm2ru6ir6n
@user-pm2ru6ir6n 5 жыл бұрын
Нет, для записи в видеопамять есть 2 способа (мб и больше). 1й - через прерывания биоса. 2й - через прямой доступ к памяти, что быстрее прерываний. а write вообще лаг, т.к. меняет позицию курсора, что в данном случае не нужно совсем )
@lock8804
@lock8804 5 жыл бұрын
Красавчик !
@softwet4341
@softwet4341 2 жыл бұрын
представьте что будет если этот человек возьмется за юнити, или анреал энджен?
@gidrogames1546
@gidrogames1546 2 жыл бұрын
Емае, ты кто такой... Я рукожоп рукожопов... (
@user-ht4om7sj2u
@user-ht4om7sj2u 7 жыл бұрын
Все-равно ты-молодец! Колосальная работа!
@Franc_Net
@Franc_Net 2 жыл бұрын
В DosBox по умолчанию у вас 486 33Mhz :) Там Ctrl +F12 поднимает кол-во циклов с 3000 до....... Или сразу в настройках ставить другую машину. А так, да, в те года такие тормоза и были.
@cfd_novotroitsk
@cfd_novotroitsk 2 жыл бұрын
на видео вроде Pentium I на 90мгц выставлен, точно не помню, но побыстрее 486
@Franc_Net
@Franc_Net 2 жыл бұрын
@@cfd_novotroitsk Я не посмотрел на дату ролика ;)
@atlasua2021
@atlasua2021 5 жыл бұрын
Мне больше нравиться версия с фрагментным шейдером, текстурным атласом и на плюсах😉
@game-jv7xw
@game-jv7xw 6 жыл бұрын
Молодец
@langoost9905
@langoost9905 5 жыл бұрын
Талантливо, но зачем столько матюков? Программисты - это интеллектуальная элита, а не маргиналы. Считай, что мат - это как глобальные переменные, пользоваться можно, но лишь когда другого выхода просто НЕТ.
@cfd_novotroitsk
@cfd_novotroitsk 5 жыл бұрын
А в Паскале нет локальных переменных - только глобальные, потому и матюков столько))
@user-me1zh9oi3v
@user-me1zh9oi3v 7 жыл бұрын
Спасибо тебе очень понравилось видио. Ты молодец. Я так понял что ты сам всю игру создал было бы классно если ты видио уроки создал про паскаль как скачать как простейшую прогу написать, как отобразить графику на экране какой паскаль лучше установить. Я не чего из того что ты знаешь и умеешь не умею был бы признателен (думою да и многие ) тебе так как очень хочется самому научиться делать игры.
@TinTaBraSS777
@TinTaBraSS777 7 жыл бұрын
вбей в поиске авторов Рапаков Ржеуцкая и найдешь шикарную и простую как лом книжку самоучитель по паскаль )
@czak_zaorak
@czak_zaorak 4 жыл бұрын
Найс
@jupexa7189
@jupexa7189 4 жыл бұрын
Ето просто охрененно
@Yourturnmoon
@Yourturnmoon 4 жыл бұрын
Та, что в маленьком окошке)
@user-yj5st7db2m
@user-yj5st7db2m 5 жыл бұрын
В маленьком окошке
@ilisonko6557
@ilisonko6557 3 жыл бұрын
У меня оказывается есть эпилепсия
@asuka7767
@asuka7767 3 жыл бұрын
Блять у меня эпилепсия чуть не случилась
@nikitagamer604
@nikitagamer604 3 жыл бұрын
програмисты прошу к вашему вниманию король паскаль
@ygteam5702
@ygteam5702 7 жыл бұрын
Начало видео на 00:00. Можете не благодарить:)
@Zahadoom
@Zahadoom 7 жыл бұрын
для отрисовки надо использовать прерывание
@noenglishname5902
@noenglishname5902 5 жыл бұрын
01:00
@Rapsodiaast
@Rapsodiaast 3 жыл бұрын
понятно. у кого-то вырос из сына индус. горе семье, позор родителям. как такое могло получиться что у родителей-программистов советской школы могло вырасти чадо практикующее индусский код?
@bogiplan1990
@bogiplan1990 7 жыл бұрын
Аааа . . . зачем, мои глаза . . . ))) вопрос в этот паскаль ведь можно делать вставки asm кода?
@cfd_novotroitsk
@cfd_novotroitsk 7 жыл бұрын
Да, в турбо Паскале есть такая возможность: asm end; Но сомневаюсь, что там это будет также быстро работать как в каком-нибудь TASM`е
@kovesik
@kovesik 7 жыл бұрын
Вообще то ты себя обманываешь!!! Разницы нет никакой, что модуль отдельно будет написан на ассемблере, что ты встроишь его в паскаль код. И вообще, нужно работать с видео страницами, реализуй функцию скажем BeginScene, которая будет рисовать в бэкбуффер всю твою сцену, и EndScene, которая будет менять фронт и бэк буффуры местами и будет тебе счастье!)
@SashaLuchik
@SashaLuchik 7 жыл бұрын
когда нормальную версию игры посмотрим?
@cfd_novotroitsk
@cfd_novotroitsk 7 жыл бұрын
Когда я найду свободное время (в четверг возможно) и вспомню, как записывать Досбокс фрапсом. Но думаю, что это не имеет смысла, тк в описании есть ссылка на нормальную версию, + добавил ссыль на сборку со встроенным Досбоксом чтобы можно было запустить из-под винды.
@SashaLuchik
@SashaLuchik 7 жыл бұрын
у меня пока не получилось скачать, такие ресурсы как янекс оказывается проблемные. когда получится - отпишусь.
@kirgear7575
@kirgear7575 6 жыл бұрын
Можешь ответить нубу на вопрос? Каким способом ты смог осуществить ввод информации(нажатие клавиш)?
@cfd_novotroitsk
@cfd_novotroitsk 6 жыл бұрын
Самое важное - оператор readkey; к примеру, пишешь c:=readkey; и у тебя считается клавиша, которую нажмешь на клавиатуре (c переменная типа типа char), если хочешь ввод с клавиатуры символов в реальном времени, то можно делать это в цикле типа while True do begin c:=0; {значение по умолчанию} if keypressed then c:=readkey; {keypressed возвращает 1 если кнопка нажата, и 0 если не нажата} { И дальше в цикле с помощью case или if пишешь действия в зависимости от нажатой клавиши c} end;
@kirgear7575
@kirgear7575 6 жыл бұрын
Роман Балабанов спасибо, буду знать :)
@user-si7ep1lz7z
@user-si7ep1lz7z 6 жыл бұрын
Это с помощью двумерного массива сделано?
@cfd_novotroitsk
@cfd_novotroitsk 6 жыл бұрын
Да, вся карта это двумерный массив, который считывается из текстового файла, цвет при выводе зависит от символа, отдельно массивов под фон и передний план нет.
@ran4erep
@ran4erep 5 жыл бұрын
я, конечно, не эксперт в Паскале, но почему всё моргает как CRT телевизор на камере? У меня бы на Бейсике не моргало. И карты бы генерировались рандомно
@cfd_novotroitsk
@cfd_novotroitsk 5 жыл бұрын
моргает потому что clrscr надо убрать было, да и вообще лучше было бы записывать сразу в видеопамять. Я избавился от всех этих косяков в версии на C++, но и на Паскале их убрать легко.
@zeredantech2966
@zeredantech2966 6 жыл бұрын
мигания изза того что у тебя заполняется матрица пока и меньше 1000 и пока джи меньше 1000 и это много времени занимает
@cfd_novotroitsk
@cfd_novotroitsk 6 жыл бұрын
Ну это да, а еще мигания были из-за очистки экрана, я это устранил, а вообще лучше не перерисовывать весь экран, а просто менять только те символы, которые меняются в матрице, в версии на C++ все эти недочеты были устранены.
@yns4412
@yns4412 6 жыл бұрын
Прочитай про графические режимы. В ТурбоПаскале есть возможность обновления отдельных символов (использовал это в своём курсаче. Если интересно - можешь сюда глянуть yadi.sk/d/gyCAmieq54udcA . Было бы время свободное, написал бы сейчас 3D игру на этом самом Турбо Паскале для примера и залил сюда код)
@oleglitoshenko
@oleglitoshenko 5 жыл бұрын
фиии... блик какие идут чтоб перерисовать экран. я в те времена такую "графику" кидал через dos прерывание на прямую в видеопамять. прорисовка была моментальная. а тут ....
@cfd_novotroitsk
@cfd_novotroitsk 5 жыл бұрын
Ну естественно через ассемблерные вставки быстрее будет... Блики я уже давно убрал (в видео старая версия) прорисовка практически моментальная, что под DOS, что в версии для C++
@oleglitoshenko
@oleglitoshenko 5 жыл бұрын
@@cfd_novotroitsk ок. эх... ностальгия :)
@sergshutk2757
@sergshutk2757 4 жыл бұрын
посмеялся. Текстом хочет игру сделать. ))) Надо было в досе тогда и делать. ))) А вообще, записываешь всё в буфер и из буфера выкидываешь на экран. Ну и ... фпс подгонять, чтоб буфер успевал заполняться.
@cfd_novotroitsk
@cfd_novotroitsk 4 жыл бұрын
по-хорошему там надо было действительно через буфер экрана и ассемблерные команды делать, в версии под Дос я в итоге пофиксил мерцания и потом перенес эту игру на C++ под винду, там она быстро работает
@sergshutk2757
@sergshutk2757 4 жыл бұрын
@@cfd_novotroitsk частоту кадров как держит?
@cfd_novotroitsk
@cfd_novotroitsk 4 жыл бұрын
@@sergshutk2757 в версии на плюсах фпс 20 есть, можно и больше сделать, но тогда искусственный интеллект врагов придется переписывать. Под досом вроде что-то около 5-10фпс было, больше 10фпс уже мерцало вроде
@sergshutk2757
@sergshutk2757 4 жыл бұрын
@@cfd_novotroitsk в одном случае уже неплохо! Текст всегда плохо выводился.
@user-fi8oi2fz7m
@user-fi8oi2fz7m 2 жыл бұрын
чел ты....
@электро-лис
@электро-лис 5 жыл бұрын
Эт чё за редактор такой крутой?
@Romanychev_Iliy_G7
@Romanychev_Iliy_G7 4 жыл бұрын
Как перейти из 16 битного досбокса в 32 битный
@Romanychev_Iliy_G7
@Romanychev_Iliy_G7 4 жыл бұрын
?
@cfd_novotroitsk
@cfd_novotroitsk 4 жыл бұрын
@@Romanychev_Iliy_G7 Если туда поставить windows 98, то он сможет запускать некоторые 32х-битные программы, я так играл в half-life с телефона, правда сейчас уже не помню, как это ставится, помню что там нужен вроде как img образ жесткого диска, больше ничего не помню, очень давно это делал
@Romanychev_Iliy_G7
@Romanychev_Iliy_G7 4 жыл бұрын
Это случайно не lite версия
@cfd_novotroitsk
@cfd_novotroitsk 4 жыл бұрын
​если про Windows 98, то можно любую ставить, она там весит полгига.
@Romanychev_Iliy_G7
@Romanychev_Iliy_G7 4 жыл бұрын
@@cfd_novotroitsk просто не lite версия идёт, но с ошибками: типо не может запустить run32
@Anumator_Anton
@Anumator_Anton 2 жыл бұрын
ПОЧЕМУ Я ВЕЗДЕ ВИЖУ ДВАРФОВ
@cfd_novotroitsk
@cfd_novotroitsk 2 жыл бұрын
Может, ты переиграл в dwarf fortress?)) Эти маленькие зеленые человечки задумывались как взрывающиеся враги
@Anumator_Anton
@Anumator_Anton 2 жыл бұрын
@@cfd_novotroitsk возможно и переиграл в дварф фортресс
@blood_1242
@blood_1242 7 жыл бұрын
Пропиши в коде команду Redraw
@nikkyhika3694
@nikkyhika3694 Жыл бұрын
От вам смешно а чел скачал запись екрана на FreeDos
@katana7505
@katana7505 4 жыл бұрын
лучше окошко
@LoL-we6dd
@LoL-we6dd 7 жыл бұрын
можно программу саму
@cfd_novotroitsk
@cfd_novotroitsk 7 жыл бұрын
Наконец-то хоть кто-то попросил, ссылку добавил в описание(yadi.sk/d/vwDeErbe3GFvoi), там pas файл (можно скомпилировать в паскале турбо или abc, но в abc почти ничего не работает) и exeшник для доса(можно тупо запустить из-под dosbox`а если все три файла положить в одну папку), а ground1.txt - карта уровня.
@leonelp9593
@leonelp9593 7 жыл бұрын
can u give us the code pls?
@cfd_novotroitsk
@cfd_novotroitsk 7 жыл бұрын
There`s link in the description: yadi.sk/d/vwDeErbe3GFvoi
@leonelp9593
@leonelp9593 7 жыл бұрын
Роман Балабанов oh cool, thanks dude
@MegaKillBot.
@MegaKillBot. 6 жыл бұрын
Эх ( Мне выдало ошибку, что представленный .exe файл не совместим с моей системой (ОС - Win.7 х64, IDE или просто компилятор для Паскаля - отсутствует).
@cfd_novotroitsk
@cfd_novotroitsk 6 жыл бұрын
Загляни в описание и глянь 3 ссылку внизу - версия с Досбоксом - там эмулятор доса и компилятор Паскаля вшит уже, просто запускаешь Dosbox.exe. Если хочешь, чтобы из под винды работало, глянь мое последнее видео - там версия на C++ под винду
@MegaKillBot.
@MegaKillBot. 6 жыл бұрын
Большое спасибо! ) (надо будет мне в следующий раз внимательней быть -.- )
@czak_zaorak
@czak_zaorak 6 жыл бұрын
Лайков 222, дизлайков 22
@Intars5d
@Intars5d 7 жыл бұрын
Shto ta bilo v toj versiji s malenkim okoshkom :l
@YaroslavH
@YaroslavH 7 жыл бұрын
лучше в маленьком окошке но увелич его
@KVXMIR
@KVXMIR 4 жыл бұрын
Бля я не понимаю захуя писать что то на вымершём языке лучше на Python или C++
3D движок на Паскале
21:47
Роман Балабанов
Рет қаралды 18 М.
Cute kitty gadgets 💛
00:24
TheSoul Music Family
Рет қаралды 10 МЛН
Pool Bed Prank By My Grandpa 😂 #funny
00:47
SKITS
Рет қаралды 20 МЛН
Кадр сыртындағы қызықтар | Келінжан
00:16
КАКУЮ ДВЕРЬ ВЫБРАТЬ? 😂 #Shorts
00:45
НУБАСТЕР
Рет қаралды 3,4 МЛН
Игра выносящая любую логику - Baba is You
16:50
Obsidian Time
Рет қаралды 1,3 МЛН
Изучай Cascadeur ПРЯМО СЕЙЧАС!
7:01
Gribkov Animation
Рет қаралды 4,6 М.
Windows 11 and 10K Year: why is it the end of the world for the system?
8:31
Пишем свой движок 3D-графики
19:25
Onigiri
Рет қаралды 536 М.
Cute kitty gadgets 💛
00:24
TheSoul Music Family
Рет қаралды 10 МЛН