Здесь будут выкладываться свежие версии роботов.
Вложение 59584
ROBOTZ! alpha 0.66, "автомаГическая" 01.08.2023
Вид для печати
Здесь будут выкладываться свежие версии роботов.
Вложение 59584
ROBOTZ! alpha 0.66, "автомаГическая" 01.08.2023
Игра без графики?
Поэтому нет скриншотов?
Вот пожалуйста, парочка скриншотов
Ну закачайте какой-нибудь Векторовский эмуль, скажем VV так как у него интерфейс попроще, и будет Вам счастье. Скачать можно, скажем, отсюда (раздел Эмуляторы слева на страничке кликаните)
http://www.vector06c.narod.ru/
Пасиб, но скорее - к 14му. Тут работы ещё докучи, а времени свободного, к сожалению - нет.
А кстати, Петя Соболев с вами ещё? Привет ему передавайте если что. Просто вспомнилось, как 25 где-то лет назад он мечтал об организации этих компо-демо, забегая к нам в лабу между и после лекций. Удалось. :)
Новый год на носу, и я решил сделать всем небольшой подарок, релизнув вторую альфу.
Визуально уровни пока всё ещё не набиты спрайтами, хоть они у меня и есть, и можно подумать что изменений немного. На самом деле - их тьма. Появился collision detection, перелопачен рендерер, сделана поддержка всех возможных Векторовских процессоров до частоты 12МГц. Выше тоже будет работать, но возможны глюки со звуком.
Появились зачатки Multi-Functional Display (MFD) и отдельный рендерер MFD.
Вся графика, игры - open architecture, ничего не сжато, поэтому, можно, например заскинить собственный MFD и игра его загрузит. Появилось игровое меню, работающее меню опций, переключаемый звук и ещё много вещей о которых я уже и не упомню, но которые добавляют новые тысячи строк в сырцы.
Теперь - по интерфейсу.
Во время проигрывания мелодии перед выходом в главное меню:
<Ctrl> - пропустить музыку
<Shift> - начать играть сначала
В главном меню
<enter> - выбор опции
при запуске новой игры нажатием <ctrl> вместе с <enter> выводится отладочная диагностика загрузки уровня
<AP2> / <esc> - возврат в загруженный уровень
В меню опций
<Tab> и <Shift> + <Tab> - перемещение по опциям меню
Стрелки курсора / пробел - изменение опций
<AP2> / <esc> - возврат в Главное меню с сохранением опций.
Опция Sound Pitch при установке нулевого значения выключает звук в игре, оставляя в меню
В игре
<AP2> / <esc> - выход в главное меню
<TAB> - меняет цветовые палитры из 4х возможных, загруженных из файла уровня
<ПС> и <enter> переключают игру из оконного в полноэкрвнный режим и обратно
<Shift> - управляет движением робота назад в зависимости от опции Auto Heading в меню опций.
стрелки - движение робота. Гравитации в этом билде нет. Дверей и подъёмников в уровне - тоже. Над сим я буду очень скоро работать потому как engine уже в прошлом релизе поддерживал триггеры, events и sprite changing sequences. Просто руки до всего не доходят сразу.
Буду рад вашим комментам/соображениям/пожеланиям.
Круто, нaдо довeти до умa тaкую крaсотeнь!
Класно! особенно понравился процес загрузки и менюхи, показалось как буд-то квэйк 1-й загружается :)
Спасибо, Ramiros. И отдельное спасибо за замечательный эмулятор, без него написание и отладка того что уже сделано была бы вряд-ли возможна. :v2_thumb: Как раз новая версия вышла, пойду закачивать.
Кстати, ROBOTZ! кроме попытки создать Quake - ощущение во время загрузки, использует ещё кое-что из другой очень известной игры Кармака. В частности, эффект мерцания фонтов отблесками красного в момент бутлода - одна из таких вещей. Другая - main menu layout также намеренно повторяет layout из этой супер популярной в 90х игры. ;)
Не рекомендуется использовать градации красного в главном меню. С этим цветом надо быть поаккуратнее. Уж слишком он по глазам бьет, вплоть до ощущения песка в глазах. Хотя смотрится довольно стильно.
"Не рекомендуется" звучит как ссылка на некий нормативный документ.
Возможно, такое main menu и не пройдёт охрану труда, или MS Health CUI, но до красного были последовательно рассмотрены серебристые и голубые тона. Оба варианта были категорично отвергнуты моими потомками с предложением рассмотреть красную палитру, коя была восторженно принята подрастающим поколением.
ЗЫ. Так как игра построена на концепции open architecture, палитры находятся в заголовке файлов .IMG (7 палитр) и могут быть проправлены. Можно также заменить любую картинку на свою.
ivagor, вы абсолютно правы, на С для компилятора SuperSoft. Правда, не написан а налабан за две недельки без всяких мыслей об оптимизации. Цели написать оптимизированный код не стояло, мне нужно было быстро слепить toolkit для конвертации и двигаться дальше, что конечно сказалось на быстродействии.
Выложу-ка я все сырцы, мне не жалко, а кто-нибудь, если захочет, сможет пооптимизировать.
В сущности, всё, что надо оптимизнуть - это тело функции
, находяшееся в файле bmpcvt.c. Эта функция перетолмачивает BMP в 32KiB Векторовской видеопамяти.Код:BPP4Cvt(fdOut,fdIn,_offset,w,h,_rle,_verbose)
FD *fdOut;
FD *fdIn;
unsigned _offset; /* file offset to pixel data */
unsigned w; /* should be less than 0x101 */
unsigned h; /* should be less than 0x101 */
unsigned _rle; /* RLE (for future extension */
Это - основной байтоповорачиватель и битозадвигатель и основной bottleneck при конверсии. Кстати, на 50МГц, по крайней мере у меня, он уже достаточно проворен.
Нет, к сожалению не пробовал. Одно время я с большим интересом следил за тем, как vinxru писал свой С компилятор. Интересно будет попытаться перекомпилить им этот код. Правда, для этого наверное придется как минимум сделать порт стандартной библиотеки для его компилятора потому что Supersoft генерит код с Pascal calling convention и линковать выход с их стандартной библиотекой без перекомпиляции не выйдет.
Это в том случае, если vinxru ещё не прикрутил какой- нибудь stdlib для CP/M к своему компилятору. Интересный проект, но не возьмусь.
Очень сильно погряз в своем. Сейчас с переменным успехом борюсь с дизайном модели повреждений. Если получится, будет стибово, а если не получится, то буду упрощать. В данный момент моделирую изменения температуры электролита в батареях робота от силы тока в моторах ;-). Музон и звуковые эффекты заброшены, хотя мне до боли необходимо переделать хотя-бы STM tracker для проигрывания музыки с квазидиска. Тоже самое предстоит сделать и с движком для звуковых эффектов. Каким он будет, этот движок я ещё даже не решил, но облизываюсь на идеи Сергея Новикова, или попытку их дальнейшего развития.
Я серьёзно. Просто хочется сделать занятную damage model, а не простой декремент счетчика жизни. Получится или нет- другой вопрос, но к 1му апрелю всё станет ясно :-)
Проигрывать сэмплы, к сожалению, не подходит. Только по прерываниям, причём иногда без оных, по вызову.Цитата:
Звуковые эффекты через таймер IMHO будет непросто, если по прерываниям, а не проигрывать сэмплы.
Проигрыватель должен переставить стек, переключить банк, достать следующую музыкальную "команду" из памяти квазидиска, поинтерпретировать её и сыграть.
Если заинтересовало, отпишусь в личку потом. Сейчас надо убегать.
Может тогда наоборот? В смысле эффекты через AY, а простенькую музычку (например через проигрыватель Новикова) через таймер.
Спасибо за доверие, но личку я в текущей реинкарнации отключил. Да и пока не могу предложить ничего конструктивного по данному вопросу. Пробовал выдавить из ВИ53 некое подобие звуковых эффектов по прерываниям - вышло довольно по-детски. Хотя то, что у меня пока не получилось ничего стоящего, не значит, что это невозможно.
А вот если понадобится распаковщик, то в этом направлении есть отдельные успехи. В воскресенье пару часов или даже больше думал над дальнейшей оптимизацией распаковщика MegaLZ b2m. Удалось сбросить больше десятка байт и скорость чуть увеличилась. Для ВМ85 и ВМ1 получается еще лучше.
---------- Post added at 10:23 ---------- Previous post was at 10:20 ----------
Обращение к модераторам - последние сообщения, наверно стоит перенести в тему ROBOTZ.
Очень топорно переделал проигрыватель STM на чтение с квазидиска. Этот вариант можно (и нужно) оптимизировать, но надеюсь, что он будет полезен.
Здорово!
Спасибо, ivagor, вечером погляжу. Я не отвечал не потому, что такой невежливый, а ожидал, что модераторы откликнутся на ваш призыв, и перенесут наше обсуждение из 6128 сюда.
Отвечу на ваш вопрос в той ветке. Всё-таки отчего-то не хочется задействовать AY под звуковые эффекты. Это - несмотря на то, что у меня имеются тулзы под Винду для создания звуковых эффектов для АY на Спектруме.
По поводу музыки: уровень вообше рендерится с запрещёнными прерываниями, вызывая процедуру проигрывания после выполнения определённого количества команд. Так оказалось плавнее с точки зрения рендеринга, и быстрее с точки зрения звука. Иначе рендерер будет вынужден постоянно разрешать и запрещать прерывания при копировании спрайтов стеком в видеобуфер. Как показала практика (критерий истины), при этом возможны потери до 7 процентов быстродействия.
Все спрайты, не только уровень но и оверлеи, и NPC и главный герой сидят в банках квазидиска.
Что можно получить от таймера? Как вы уже сказали - несколько детское звучание. Бипер, к сожалению использовать в помощь в качестве генератора шума видимо не получится, всё очень зажато с точки зрения быстродействия.
Надо-бы экспериментировать с движком С. Новикова на предмет попытки создания им спецэффектов в игре. Сомнения только по поводу, насколько это всё замедлит.
Сейчас в роботах движок звуковых эффектов от ППЦлиба, который я написал триста лет тому назад. Его можно конечно начать оптимизировать, но это не то. Оно играет из основной памяти, без девиаций частоты и вторичных гармоник.
Еще такой (очень специфический) вариант возможен - музыка через Sound Tracker (разъем ВУ), звук через R-Sound 2 (разъем ПУ) или наоборот. В EMU RSound поддерживается и "подключен" в конфиге 6128. По аналогии можно "подключить" и в любом другом конфиге. Можно ли в текущей версии EMU заставить их работать одновременно - не знаю, но отладить можно и по отдельности. Кстати, в stmviewer вывод запараллелен на Sound Tracker и R-Sound.
Забыл написать, что измененные мною места я пометил тремя восклицательными знаками (!!!). При использовании проигрывателя не в stmviwere стоит добавить в начало MusicInit (например после di)
Код:push h
lxi h,FirstTime
shld SetJmp+1
pop h
Примерно неделя-две до альфы
Выкладываю третью альфу.
Всё управление осталось таким-же как в предыдущей версии. По окончании игры, <AР2>/<ESC> возвращает в главное меню.
Введен расчёт рассчёт реакций опор с учётом гравитации в месте нахождения робота в реальном времени. В принципе, возможно иметь уровень с гравитационными градиентами, но в деме такого нету.
Появилась модель повреждений, обсчитываемая также по всем осям в реальном времени и выводимая на Instant Status панель. Выводится 20 параметров одновременно (cool).
Ведётся учёт разряда батарей, силы тока в обмотках, повреждения от ударов и от перегрева обмоток двигателей, вплоть до сгорания последних при длительной нагрузке.
Ходьба/прыжки также нагревают двигатели, так что останавливайтесь, давая движкам охладиться когда значение повреждений, тока в обмотке или температуры начнёт мерцать и робот окрасится багрянцем. Режим перегрева обмоток / превышения допустимой температуры и порога повреждения можно отключить, выставив опцию Instant Damage Rating в 0. Если установить Instant Damage Rating в 1, то проверяться будет только превышение силы тока в обмотках. Если Instant Damage Rating = 2, то проверяются все возможные повреждения: от ударов, роста температуры, максимально допустимой силы тока. Осторожнее с прыжками в районе торчащих из потолка балок, можно разбить роботу голову о косяк.
Появилась поддержка подъёмников, можно ездить по этажам, встав на платформу. Внимание с подъёмниками есть баг: при выходе в главное меню и возврате обратно, робот может свалиться с платформы. Я об этом в курсе (связано с алгоритмом обсчёта сил и реакций опор). Фикса этого явления пока не будет. Также пока не обсчитываются удары дверями / подъёмником по голове роботу. Ну ещё при падении с разных высот, повреждения пока одинаковы.
Появились события. На них в основном повешены 24 одновременно крутящихся вентиляторов, ну и одну дверку сделал для примера. В уровне сейчас 26 событий, управляющих движением двери, вентиляторов и сменой тайлов в "кирпиче" рядом с дверью. Изменяется 102 тайла, причём движок легко тянет изменения в районе 250-400 тайлов, практичечки без просаживания FPS. Количество событий пришлось ограничить не из-за быстродействия, а из-за плавности музыки. Опция "Events Per Frame" управляет количеством событий за кадр. Из-за музыки, поставлена в 0x10 (16 событий за кадр), поэтому вентиляторы крутятся с половинной скоростью. Events Per Frame равное 0 устанавливает обсчет всех принятых событий за один кадр. Визуально это отразится на скорости вентиляторов и дверей, но музыка будет choppy. Впрочем, можете попробовать поиграться с этой опцией. Вентиляторы несколько криволопастные. Я в курсе, и буду это лечить по мере сил.
Опция Complex Thermal Model добавляет дополнительный рост температуры под нагрузкой.
В меню опций появилась бегущая строка-подсказка. Текст выводится из файла options.txt. Размер текста ограничен 2K.
Планы для следующих пары версий:
- Полная переработка воспроизведения музыки (загружаемые драйверы)
- Телепортеры
- Power-Ups (сейчас игра кончается при разряде батарей)
- Триггеры (кнопки, блоки, рычаги)
- Inventory (антиграв и jet pack обещаю точно)
Оружия и врагов в 2х следующих версиях не будет - без них проблем хватает.
- Убиение дверями. Возможно - предметы, которые можно двигать, но пока не обещаю.
А в общем, всё опять удалось удержать в тех же FPS, при этом производя немеряно обсчётов и выводя всё это барахло на экран.
Как всегда, буду рад вашим комментам / предложениям / критике и вааабче :-)
Enjoy!
а сожно это выложить в виде ютубовского ролика? интересно же
Я, к сожалению, на ютубе не зареген, и не до конца представляю пост-процессинг в mp4, или что там ей нужно. Могу попробовать, конечно, если кто-нибудь пояснит мне, что и как нужно сделать с видео чтобы выкладывалось. Я уже в следующей версии, с проправленными, насколько это удалось, вентиляторами. Наверное, стоит выложить её видео, чтобы не так пугало кривыми лопастями.
PPC, я могу выложить — расшарь мне запись на DropBox-е, или чем-нибудь подобном, я залью.
svofski, а каким кодеком лучше писать из VV эмулятора? Я у себя вижу MS RLE, CinePak, MS Video1, Intel IYUV и Uncompressed. На компе седьмая Вынь 64 битная.
Видимо, надо Uncompressed чтобы во что угодно жать можно было, но меня размер пугает.
Или может лучше какой-нибудь хитрый кодек сразу поставить?
Думаю, многим будет интересно узнать как правильно оцифровать видео с эмуля, поэтому не в личку.
Есть неплохой кодек со сжатием без потерь HuffyYUV. Насколько я помню, идет в комплекте полной версии K-Lite Codec Pack (только при установке codec pack нужно убедиться, что он выбран в настройках)
Удобен тем, что потом можно легко сделать "нарезку" в чем-то типа VirtualDub и в нем уже перекодировать финальный результат в mp4
Xvid самое оптимальное, можно установить отдельно.
VV делает видео файл без звука, звук будет в отдельном файле Wav. Если нужно видео со звуком, то надо склеить в VirtualDub-е.
Спасибо всем. Попробую поцифровать на этой недельке. Скорее всего-ближе к выходным. Сейчас роботы безбожно разобраны по винтикам: освобождаю основную память, запихивая всё что можно и нельзя в банки квазидиска. Как только добью, оцифрую видео, сведу дубом в mp4 и дам знать svofski, ну или сам попробую в ютубу залить.
Для ютубов лучше сразу H.264:
http://support.google.com/youtube/bi...answer=1722171
Можно еще CorePNG -- он делает сжатие без потерь, так что я смогу поиграться с параметрами для ютубы локально.
Вижу, посмотрю как только появится минутка.