LINUX.ORG.RU

FPS.cob - первый шутер написанный на COBOL

 , , ,

FPS.cob - первый шутер написанный на COBOL

0

1

Вышел 2.5D шутер, написанный полностью на языке COBOL. Хотя данный язык обычно используется для написания и поддержки бизнес-приложений в финансовой сфере, энтузиаст под ником icitry решил проверить пригодность языка для написания трёхмерных игр. Как и в случае классического Doom, этот шутер опирается на технологию рейкастинга. Разумеется, написание трёхмерного приложения на столь старом языке было сопряжено с определёнными трудностями, так как у COBOL нет своего графического стека или библиотек для операций с пикселями, поэтому FPS.cob выводит каждый кадр игры в формате необработанного растрового изображения в STDOUT. Похожим способом реализован ввод команд, по тем же причинам, но уже относящихся к библиотекам по обработке ввода команд с клавиатуры. Игра доступна под лицензией Apache 2.0 в репозитории проекта на Github.

>>> Репозиторий и подробная информация о проекте



Проверено: dataman ()
Последнее исправление: dataman (всего исправлений: 3)

Вижу там очень интересный способ организации гуи: клавиатурный ввод (и мышиный? не знаю) считается из stdin, а вывод графики - видеопотоком в stdout на ffplay, который уже всё и рисует.

firkax ★★★★★
()
Ответ на: комментарий от firkax

Ну, IMHO, круто. Можно к выводу IBM/360 подключать ffplay и на печатной машинке играть.

Shadow ★★★★★
()

COBOL нет своего графического стека

А у Си будто бы есть?

библиотек для операций с пикселями

Неужели нельзя дёргать сишные функции?

luke ★★★★★
()
Ответ на: комментарий от recei

но он ведь в итоге дёргает стдлиб и системные вызовы

Logopeft ★★★
()
Ответ на: комментарий от PerdunJamesBond

что такое 2.5d? нечто среднее между 2д и 3д? ни нашим, ни вашим?

Имитация 3D средствами начала 1990-х. 2D с видом из глаз и переменной высотой. Doom 1-2, Heretic, Hexen, Duke Nukem 3D, UFO Aftermath. Ключевое отличие от истинного 3D — невозможно сделать мост, чтобы ходить и по мосту, и под мостом. Хотя летать можно.

Настоящими 3D были Descent, Quake, Daggerfall…

question4 ★★★★★
()
Ответ на: комментарий от etwrq
#!/usr/bin/env bash
set -e

MAP_PATH="${1:-./map/doom_sectors.map}"

cobc -x -free -O2 fps.cob -o fps

if [ -r /dev/tty ]; then
  ./fps "$MAP_PATH" </dev/tty | ffplay -autoexit -f image2pipe -framerate 60 -probesize 32 -vf "scale=800:600:flags=neighbor" -i -
else
  ./fps "$MAP_PATH" | ffplay -autoexit -f image2pipe -framerate 60 -probesize 32 -vf "scale=800:600:flags=neighbor" -i -
fi
madcore ★★★★★
()

Вау! Вспомнил аж молодость.

DrRulez ★★★★★
()
Ответ на: комментарий от GAMer

От ща ему джоб офферов привалит! До могилы кода разгребать хватит!

Ну смех, смехом, а у америкосов в финансовой и биржевой сферах все еще активно используется. А специалистов уже не так чтоб много осталось. Вымирают в прямом смысле слова.

DrRulez ★★★★★
()
Ответ на: комментарий от madcore

так cobc -x -free -O2 fps.cob -o fps зохватит терм или оно само в фон уходит и потом через сокеты?
вроде понятно и вроде вопросы.
можно ж для ясности & добавить, стандартное.

всё понял, почитав что такое cobc

etwrq ★★★★★
()
Последнее исправление: etwrq (всего исправлений: 3)

Ну хоть не убил ни кого в реальной жизни. Уже хорошо.

seiken ★★★★★
()
Ответ на: комментарий от recei

Идея автора в том, чтобы всё написать на чистом COBOL.

И в чём проблема реализовать фреймбуффер на коболе?

luke ★★★★★
()
Ответ на: комментарий от recei

ну и рендерил бы псеводграфикой без сторонних костылей, там разрешение всё равно не ахти какое

madcore ★★★★★
()

Ну всё, пора соревнования устраивать.

А ещё ведь можно и на Алгол-69 и на Фортран 4 игры написать. Ух, расчехлимся. :)

zbarassky
()

С ходу не компилируется. Наверное, cobl нет у меня…

AnonymUser
()

Выглядит как Doom.) Интересно, можно ли это будет запустить на каком-то S/370 и сыграть?)

Dorif ★★★
()
Ответ на: комментарий от Gukl

Мост-то можно. В Дюке полно многоуровневых уровней

В Дюке многоэтажные здания реализованы через телепортацию.

question4 ★★★★★
()
Ответ на: комментарий от PerdunJamesBond

Это когда над 2д картой выглдящей как 3д-сцена летают пули с симуляцией высоты и наклона траектории. Данный термин зизвестен каждому кто слышал слово Doom.

kirill_rrr ★★★★★
()
Последнее исправление: kirill_rrr (всего исправлений: 1)
Ответ на: комментарий от PerdunJamesBond

Это когда картинка у тебя двумерная, но персонаж может подпрыгивать.

LongLiveUbuntu ★★★★★
()

Как и в случае классического Doom, этот шутер опирается на технологию рейкастинга

Нету там такого! Рэйкаст был в wolf3d, в думе bsp дерево

xDShot ★★★★★
()
Ответ на: комментарий от madcore

чуть сложнее всё

Можно подробнее?

Просто мост — самый простой критерий. В MM7 на первом острове есть мост — такое ощущение, что единственно для этой цели сделан. Потому что несмотря на полноценный 3-мерный движок все уровни в играх 6-8 плоские.

question4 ★★★★★
()
Ответ на: комментарий от question4

кроме мостов наклонные полы, винтовые лестницы, комнаты с окнами, расположенными прямо друг над другом итп
но по сути да, карта всё ещё 2д с трюкачествами

madcore ★★★★★
()

Ага, только вот doom не является представителем классического райкастинга ~_~

daniyal
()
Ответ на: комментарий от question4

Разве нельзя присобачить переменную высоты к игроку и сделать наслоение моста на землю? Чтобы сверять высоту игрока и относительно этого решать может ли он залазить на мост.

daniyal
()

Непривычный синтексис COBOL`а

enep ★★★★★
()
Ответ на: комментарий от madcore

не было, только ступеньками
там пол и стены строго 90°

Была какая-то игра с пандусами, в которую я играл на 486-м, загружая Windows 95 в режиме DOS. До «Квейка». Вероятно, «Heretic». Погуглил. Пишут, что в оригинальном «Еретике» пандусы представляли собой оптический обман поверх ступенек, настоящих пандусов движок 1-го «Дума» не умел.

question4 ★★★★★
()
Ответ на: комментарий от daniyal

Разве нельзя присобачить переменную высоты к игроку и сделать наслоение моста на землю? Чтобы сверять высоту игрока и относительно этого решать может ли он залазить на мост.

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

А переменную высоты приделывали. В некоторых играх можно было летать.

question4 ★★★★★
()
Ответ на: комментарий от question4

боролись за каждый байт и за каждый такт

именно поэтому, конечно же
там даже на угле обзора схалтурили

А переменную высоты приделывали. В некоторых играх можно было летать.

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

madcore ★★★★★
()
Ответ на: комментарий от question4

3д-игр на разных движках в тот период было больше, чем вошло в историю
из известных честных 3д до кваки - descent

madcore ★★★★★
()

О ещё одну некрофилию оживили) Одобряем)

SprainBrains
()
                                          END-IF
                                       END-IF
                                   END-PERFORM
                               END-IF
                           END-PERFORM
                       END-IF
                   END-IF
               END-IF
           END-PERFORM.

Портянка знатная получилась.

apt_install_lrzsz ★★★★
()
Ответ на: комментарий от madcore

3д-игр на разных движках в тот период было больше, чем вошло в историю

Нет, мои воспоминания про пандус относились к игре на движке 1-го Дума. Скорее всего, «Heretic». Сам не летал — играл совсем немного — но видел описание, что можно.

из известных честных 3д до кваки - descent

Выше его упомянул.

А ещё в 1980-х был движок FPS Freescape и ~6 игр на нём: https://ru.wikipedia.org/wiki/Freescape https://en.wikipedia.org/wiki/Freescape Работали даже на Спектруме, но размеры были сильно ограничены.

question4 ★★★★★
()
Ответ на: комментарий от question4

Не совсем понял про «средствами начала 1990-х». Star Wars: Dark Forces и Duke Nukem 3D вышли во второй половине 90-х. А игры на движках id Tech 1 и Build выходили и в нулевых.

Descent, Quake, Daggerfall

Почему Daggerfall, а не The Terminator: Future Shock? Один движок, но Future Shock был первым.

mky ★★★★★
()
Ответ на: комментарий от mky

Не совсем понял про «средствами начала 1990-х».

Движок Doom был не единственным 2,5-мерным в первой половине 1990-х. (Например, Lethal Tender на Pie in the Sky.) В 1995 появились 3-мерные, но 2,5-мерными пользовались ещё долго. В 2000-х это было скорее делом привычки, но изначально «2.5D» пришлось изобретать потому, что доступные компьютеры не потянули бы настоящий 3D. Это и имел в виду под средствами начала 1990-х.

Почему Daggerfall, а не The Terminator: Future Shock?

Потому что не играл в него и не вспомнил.

Один движок, но Future Shock был первым.

Спасибо за информацию. Получается, все 3 движка вышли в один год.

question4 ★★★★★
()
Ответ на: комментарий от daniyal

Разве нельзя присобачить переменную высоты к игроку и сделать наслоение моста на землю? Чтобы сверять высоту игрока и относительно этого решать может ли он залазить на мост.

Погуглил. Движок Wolfenstein в игре Thunderscape допилили до вполне убедительной 3-мерности — некоторые уровни имели по 4 этажа, например. Правда, глюки бывали интересные. Например, вред от падения был пропорционален тактовой частоте компьютера. Был пандус, где у меня партия намертво застревала — лечилось только загрузкой сохранения, но для прохождения требовалось проскользить по нему до самого низа.

question4 ★★★★★
()

Пост хороший, но Вай, как разметка скачает.
Жаль я не модерирую, я бы сделал красиво!

IIIypuk ★★★★★
()
Ответ на: комментарий от IIIypuk
pacman -S cobol
error: target not found: cobol

pacman -S gnucobol
error: target not found: gnucobol

pacman -S opencobol
error: target not found: opencobol

Вай, что делать?!

IIIypuk ★★★★★
()
Ответ на: комментарий от IIIypuk

AUR: gnucobol

P.S.

==> Verifying source file signatures with gpg...
    gnucobol-3.2.tar.xz ... FAILED (unknown public key 13E96B53C005604E)
==> ERROR: One or more PGP signatures could not be verified!
IIIypuk ★★★★★
()
Последнее исправление: IIIypuk (всего исправлений: 1)
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.