Обновить
55
0.2
Алексей @Swamp_Dok

Программист, радиолюбитель.

Отправить сообщение

Да, вы угадали, так и делал :)

Хорошая идея с разбиением расчёта крайних точек. Брезенхем более красивые края даёт, текущий алгоритм из-за округления рвёт некоторые линии. А по скорости надо экспериментировать. Спасибо за идею.

В моих экспериментах получалось редактировать около 22 тайлов видеопамяти в монохромном режиме 60 герц за один межкадровый промежуток, а сцена состоит из 80 тайлов. Это значит около 15 кадров в секунду.

Можно перейти на 50 герц режим и немного оптимизировать загрузку новых тайлов. Это уже будет ближе к 30 тайлам за кадр.

На рендер 10-20 полигонов уходит примерно те же самые 2-4 кадра, но тут тоже ещё есть простор для оптимизации математики.

Итого, я рассчитываю на 10-20 кадров на простых моделях до 20 полигонов.

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

Я специально указал в тексте превью, что в первой части будет работа с 2D.

И приведённого в статье кода уже достаточно для вывода 3D-модели как на превью, пусть и статичной. Так что кликбейта почти нет :)

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

Мой движок позволяет выводить более сложные модельки, можно будет что-то более красивое попробовать вывести. Но на уровне Элит точно оно работать будет.

Вы правы. Но Sweet Home  довольно сильно отличается от современных представлений о survival  horror, поэтому я позволил себе такую формулировку. Такой заголовок выбран для привлечения внимания на ютубе.

Размерность целой и дробной части уже надо от конкретных задач выбирать, тут я согласен. В посте выбрал 8.8 как наиболее стандартный вариант. В конечных проектах с 3D возможно тоже буду играться с размерностью.

В ноябре надеюсь закончить прототип 3D-движка и попробовать повращать модельки. Просто выводить наборы полигонов уже получается, надо сделать матрицу трансформаторы и определение угла наклона полигона (там несложно, как выяснилось). Интересно сколько ФПС получится выжать. И какое количество полигонов даст адекватный ФПС с заливкой и без.

ПС: посмотрел ваши посты, очень круто. У вас сильно круче проекты ретроконсольные :)

Я точно так же делал в своих экспериментах с попиксельным рисованием. Генерировал тайлы с нужными включёнными пикселями находу и грузил в видеопамяти.

Уже даже придумал концепцию 3д игры простой) Может получится сделать освещение модели, но проволочная модель точно получится.

И спасибо за ссылку. Посмотрел как авторы Элит реализовали рисование линий. Я почти к тому же самому пришёл, когда выводил линии тайлами, но они организацию памяти немного подругому сделали. Хорошая тема для статьи.

Ufix24_8 - это обычный uint32_t, т.е. беззнаковая переменая на 4 байта. А стандартных типов на 3 байта нет, поэтому просто так не заменить.

Но можно реализовать свой трехбайтный тип и прописать для него всю математику. Это имеет смысл, так как экономит лишние копирования байтов. И 2 байта хватит на целую часть. Так что идея правильная.

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

Спасибо, надо будет посмотреть как этот порт выглядит. Мне он раньше не попадался.

Проблема с графикой в том, что на денди она вся состоит из тайлов. Отдельно редактировать каждый пикаель нельзя.

Чтоб выводить графику пикселями, нужно генерировать тайлы с расставленными в нужных местах пикселям. И загружать их в видео память. Но одновременно консоль может хранить только 256 уникальных тайлов. А для всего экрана нужно 1024 тайла.

Есть вариант переключать банки видеопамяти во время вывода каждого кадра 4 раза, но все равно с генерировать 1024 тайла это очень долго. Но если ограничить число точек на экране, то можно использовать и весь экран более-менее быстро.

Я делал набросок 2д движка пиксельного. Развернутым циклом получалось вывести на экран максимум 21 тайл за кадр в режиме 60 герц в монохромном режиме, а цветом 15 тайлов. Один тайл занимает 16 байт. Но это замена всех пикселей, отдельные пиксели редактировать быстрее.

Плавное 3д вращение сделать можно, но для очень простых скелетных фигур. Но более сложные модели я буду тожн пробовать выводить.

Ниже пример работы этого движка в монохроме.

Да, я тоже о подобном думал, но для удобной отладки игр на реальной консоли.

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

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

А если будет реализована связь с ПК, можно будет хоть интернет раздавать. А это уже сетевые игры и браузеры.

Спасибо, действительно потерялась дробь.

В серой палитре нет красного, если правильно помню.

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

Я прикидывал, что смог бы делать картриджи себестоимостью до 1000 рублей при малосерийном производстве. А издатель это всегда намного больше людей на ЗП + аренды всякие, а тут я только себе ЗП плачу, поэтому у меня производство дешевле будет скорее всего.

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

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

В моей интерпретации зомби получился с голым торсом и оторванной рукой. Лучше ничего придумать я не смог, опираясь на доступные палитры.

Оно в итоге так и получается, оригинал просто платформер-шутер, а у меня полноценный сурвайвал хоррор. В следующих уровнях даже положение камеры другое будет и другие локации. Первый уровень это больше фансервис для любителей оригинала.

Для Европы скорее всего придется делать версию без прямого копирования вообще.

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

Только где тут грань, когда игра нарушает авторские права, а когда уже нет? Вот по вашему мой вариант спрайтов Дейва стоит перерисовывать? Без юристов не разобраться :)

На западный рынок выйти хотелось бы, конечно, но щас довольно сложно это все. Цифровые копии продавать еще как-то можно, а вот логистика физических копий меня смущает.

Спасибо за полезный комментарий :)

Следующие уровни игры будут уже не так близки к оригиналу. Первый уровень тоже можно переделать, если что.

Но выпустить игру на носителях можно и без официального разрешения издателя (пусть это и не очень красиво), не думаю, что они как-то смогут мне помешать.

Да и от оригинала там не сильно много, графика сильно адаптирована из-за особенностей консоли.

Информация

В рейтинге
2 744-й
Откуда
Воронеж, Воронежская обл., Россия
Дата рождения
Зарегистрирован
Активность

Специализация

Разработчик игр, Инженер встраиваемых систем
От 50 000 ₽
C++
C
Программирование микроконтроллеров
Python
Разработка игр
Разработка электроники