Manwe, а я между прочим сразу предложил такой масштаб.
можно еще по вертикали смасштабировать чтобы глаже было
Manwe, а я между прочим сразу предложил такой масштаб.
можно еще по вертикали смасштабировать чтобы глаже было
С уважением,
Jerri / Red Triangle.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Ну, отлично, мы пробуем разные варианты!
Будет не глаже, а лишние ступеньки. Я тоже такое сперва предлагал, а потом подумал, что это ещё и в ущерб быстродействию.
Вот что получатся: квадраты, наконец, стали более квадратными
Пушка растянулась, но её как раз можно сплюснуть обратно.
Если рисовать в таких пропорциях, то на БК-0010 уже не хватит памяти на внутренний буфер. Придётся выводить новую комнату сразу на экран, поверх старой. Это приводит к одной проблеме: сначала целую секунду рисуется лабиринт, а потом уже поверх него появятся враги и начнут двигаться. Видел такое во многих играх, но не знаю, приемлемо ли это. С другой стороны, на БК-0010 можно сделать так, а на БК-0011м по-нормальному.
P.S. зачем форум пережимает 9-килобайтные gif в 22-килобайтные jpg низкого качества - непонятно...
Последний раз редактировалось Manwe; 24.09.2018 в 20:04.
manwe.pdp-11.ru
/* Я правильно понимаю, что в игре объекты не пересекаются и не накладываются, */
Да действительно и поэтому у меня в голове крутится назойливая мысль сделать другой алгоритм вывода.. без поворота.
Также прорисовывать каждый бит, при этом можно пропускать 7-8 бит.. потом проворачивать слово на нужное кол-во бит и накладывать ORом.. в теневой экран, потом переключать.
Не нужен будет буфер, нет лишних действий по повороту.. может и быстрее будет или хотя бы памяти больше останется.
/*Вот что получатся: квадраты, наконец, стали более квадратным*/
Картинка действительно лучше стала. Или это JPEG сгладил...
/*Видел такое во многих играх, но не знаю, приемлемо ли это. */
Когда я в нее играл на ЕС-1840 так и было и никто не возмущался
P.S.
Если танк не трогать он на лифт поместится?
Последний раз редактировалось S_V_B; 25.09.2018 в 06:18.
Теневой экран - это, по сути, и есть буфер. Действия по повороту и проворачивание слова - это примерно одно и то же. Если под спрайты шириной 6 точек отводить место в памяти как для 8 точек, памяти останется меньше.
Я почему предложил такой хитрый алгоритм-то? Потому что проверил все варианты когда работал над процедурами вывода шрифтов. Итог: хранение спрайтов повёрнутыми на 90 градусов - самый эффективный вариант (речь о спрайтах, ширина которых не кратна 8). По скорости проигрыш незначительный.
manwe.pdp-11.ru
Ну значит так тому и быть![]()
Интересно какая будет скорость с живыми спрайтами.. не у всех врагов поведение "пинг-понг" есть самонаводящиеся.. танк+башня, башня без танка, нужно что бы под математику место осталось.. и учитывать что она тоже будет тормозить.
Готово, образ диска БК: http://thesands.ru/bk0010/temp/lastmis2.zip
Здесь комнаты перерисовываются без буфера, сразу на экран. Специально чтобы работало на БК-0010. В случае БК-0011м можно делать это во второй странице видеопамяти, как обсуждали выше.
С другой стороны, эффект прикольный. Можно сделать 4 разных процедуры, обновляющих экран в разные стороны, и использовать их в зависимости от того, с какой стороны игрок вошёл в комнату. Может быть так даже лучше, чем с буфером, а то игроку покажется, что всё подвисло на секунду.
Самонаведение - это, по сути, лиейная интерполяция координат с субпиксельной точностью. Не должно особо тормозить. Накидаю завтра пример, пока без проверки коллизий с содержимым комнаты.
P.S. ах, да - кажется, в образе диска не самый последний исходник. Поэтому приложу к сообщению. Расширение .asm лучше переименовать в .mac
Исходник: lastmis.asm
Последний раз редактировалось Manwe; 24.09.2018 в 22:53.
manwe.pdp-11.ru
я не знаю чем вы пользуетесь, сверх быстрая компиляция в родной среде ОС RT-11
Эмулятор RT-11 для консоли Windows
Посмотрел как в исходнике под винду как делается самонаведение, точно так же как я и предлагал, без интерполяций:
if(i->x > Ships[0].x)
{ i->dx = -1;}
else
{if(i->x < Ships[0].x) i->dx = 1;
else
i->dx = 0;}
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)