Раньше так делали, потому что по-другому было нельзя. Либо ты экономишь каждый байт, либо сосёшь хуй. Сосать хотели не все.
Менеджеры хотели. Чтобы выпустить игру к Рождеству, и её все смели с полок. Разработчик игры Говард Скотт Варшав объективно сделал максимум, что смог.
Во-первых, у него было всего 5 недель времени. Да, за это время можно сделать аркадную игру, на всяких геймджемах времени бывает меньше... но это в наше время.
Сама консоль Atari 2600 была дико ограниченной и тупой, даже по сравнению с конкурентами. 128 байт памяти (и для стека, и для переменных), максимум 4 килобайта ПЗУ в картридже, а ещё крайне сложная, даже можно сказать ебанутая видеосистема. И да, всё писалось на ассемблере, в частности из-за этого самого видео.
Консоль поддерживала три основных разрешения: NTSC 160x192@60Hz с 128 цветами (16 цветов, 8 уровней яркости для каждого), PAL 160x228 104 цвета (13 цветов, 8 уровней), SECAM 160x228 8 цветов. Как-то динамически это определять нельзя, так что выбор стандарта жёстко зашит в код игры изначально.
Для графики было доступно:
- цвет фона;
- 20 бит для отрисовки игрового поля, каждый растягивался на 4 пикселя одного цвета. В целом это давало левую половину экранной строки. Для правой половины эта же картинка либо повторялась, либо отрисовывалась зеркально.
- два 8-битных спрайта "игрока", по 1 пикселю на бит, одного цвете;
- два 1-битных спрайта "снаряда", которые могли быть растянуты на 1, 2, 4 или 8 пикселей и имели тот же цвет, что и игроки;
- один 1-битный "мяч", который можно растянуть на 1, 2, 4 или 8 пикселей и который имел цвет фона.
Уже можно догадаться, что сдедать что-то на таком ограниченном наборе сложно. Да и спрайты - это не спрайты в классическом виде, а скорее битовые маски. Но это ещё не всё. Думаете, для спрайтов можно было задать какую-то позицию, и они там отрисовывались? Ха!
Чтобы отрисовать спрайт, нужно попасть чётко в момент, когда луч ЭЛТ экрана отрисовывает линию в нужном месте. Каждый тик процессора занимает столько же времени, сколько отрисовка 3 пикселей. Одна ассемблерная инструкция выполняется за 2-7 тика, в зависимости от того, что это за инструкция. Благо есть 4-битные регистры, которые смещают спрайт на расстояние от -7 до +7 пикселей. И вот когда ты поймал этот лучик в нужном месте, то говоришь системе, чтобы на следующем ходе луча (то есть на следущей строке) она отрисовала спрайт в этом месте. Благо хоть для каждой строки можно задать свои цвета, чтобы их них получить какую-то картинку, типа мальчика в футболке и джинсах.
А для обновления поля нужно подождать, когда луч закончит рисовать строку и переместится к следующей. Для этого даже специальная инструкция есть, которая заставляет процессор подвиснуть до окончания отрисовки строки. А после есть целых 22 тика, прежде чем новая строка начнёт рисоваться. Круто, да?
А когда считать игровую логику, если нужно точно рассчитывать время выполнения ассемблерных инструкций для отрисовки графики? Тут тоже есть костыль^W хитрость. В развёртках NTSC, PAL и SECAM есть служебные линии, которые присутствуют в сигнале, но по факту не отрисовываются. Из 262 доступных линий NTSC 3 отведено на сигнал обратного хода луча (VSync), 37 на ожидание этого хода, 192 на графику, и ещё 30 тупо пустые. Кабельные операторы придумали слать в этих служебных линиях телетекст, субтитры и т. п., а для разработчиков на Atari 2600 время "отрисовки" этих 67 пустых линий шло на обработку игровой логики. На PAL и SECAM этих линий чуть больше.
И вот на ЭТОМ нужно было за 5 недель состряпать хорошую игру, прикиньте? Да я бы за 5 месяцев с трудом управился!
Низзя. Atari под эту щтуку выпустило больше сотни игр, между прочим. А общее количество игр пол эту консоль превышает пять сотен. Этим людям памятники ставить надо, за упорство и трудолюбие.
Это прикинуто на выпуклый глаз в пересчёте на современные доллары, просто чтобы можно было сравнивать с современными играми и оценить масштаб. В долларах 1982 года сумма была скромнее, где-то 60 миллионов. Около 20 миллионов ушло на покупку прав у Юнивёрсал, примерно 30 на производство картриджей, в районе 10 на маркетинг, а вот всё остальное уже вбухали непосредственно в разработку игры. Ну и получили соответствующий результат. Казалось бы, что могло пойти не так?
Ну как была... это упоротое в хорошем смысле комьюнити до сих пор живёт очень активной жизнью и разрабатывает сотни игр.
Собрать atari самому - вот инструкция и варианты. Купить готовое - без проблем. Поиграть на эмуляторе за компом - вот прямо в стиме и гог коллекции Atari 50: The Anniversary Celebration (2022 год) + Atari 50: Namco Legendary Pack (2025 год). Хотите свежих игр или может даже на носителе, да без проблем оформляйте заказ. Хотите в разработку, во вам куча интузиастов в помощь.
Ага, только сейчас есть нормальные эмуляторы и инструменты разработки, типа https://github.com/kirkjerk/atari-background-builder , который сам генерирует ассемблерный код для отрисовки поля. Не могу сказать точно, но сомневаюсь, что в те времена существовало нечто подобное.
В Стиме есть игра Turing Complete, которая позволяет в некоторой степени прочувствовать вайб тех времён.
Чтобы плавно поиграть в кризис мы задержали пооставку гигабайт i ram в одну госуху на неделю xD. Они тогда пытались экспериментировать с ускорением бд недорогими способами, а мы резались, как не в себя.
Да? А нет объяснения другого? Ну типа отсутствия поддержки PhysX у амуде?
1. Первый кризис вышел в 2007 году, когда видеокарт АМД еще небыло, а были ATI Radeon.
2. Хотя теоретически новые тогда 8800 были с куда ядрами, но поддержку PhisX в драйвера нвидиа добавила только в 2008 году.
3. И самое главное в Crysis нет поддержки PhysX, так что предыдущий комментатор тоже не прав и игра шла +- одинаково на обоих видеокартах одного поколения и ценового диапазона.
Помню первый F.E.A.R. преподносили как нечто невероятно требовательное к железу. Ну и некстген интеллект у врагов тоже
А я застал когда дум3 только вышел.
Собственноручно прошел на 256 оперативки. Уровни по полчаса грузились, успевал кофе заварить и бутеры сделать. Мало у кого из знакомых шел нормально, если шел вообще
Одна из самых «объёмных» по количеству дискет игр для DOS — Leather Goddesses of Phobos 2: Gas Pump Girls Meet the Pulsating Inconvenience from Planet X (1992) — она выпускалась на 17 дискетах.
Если вы говорите что по другому нельзя, а собственно почему? Графика там всё равно спрайтная была, до первых 3д ускорителей 2д спрайты в целом не отжирали ресурсов, в плане размера, ну так никто не говорил что игра должна на 1 дискетку влезать. Никто не запрещал тебе 10 дискет использовать. У меня были большие игры дискет на 12 проблем не возникало на моём IBM 486... Вопрос в том, почему современные разработчики не хотят оптимизировать свои игры что бы они не просто много весили, но ещё и работали корректно... Реально уже цирк абсурда начинается, Выходит форза 6... Скачиваю последний драйвер на свою видеокарточку (у меня 3060 ти) и у меня каждые 20 минут начинает вылетать игра... Оказалось что форзу не оптимизировали для видеокарт старше 40 поколения... Запускаю Directive 8200... Таже история, всё работает отлично а потом хуяк и с руганью ломает в конкретном моменте игру... Говорят что в режиме совместимости с directX11 оно работает нормально, но внезапно directX12 там хуёво поддерживается... Зашибись... Это только 2 последних примера... Тут просто на ровном месте люди спотыкаются.
Потому что не умеют. Человек тянет в проект библиотеку на 50 мегабайт, потому что не может написать функцию обрезания строки.
Есть более редкий вариант - не могут. У меня в игре текла память. То есть примерно 10 минут играешь - и вылетает с ошибкой "не хватает памяти". Разработчик написал "сделать ничего не могу - это косяк юнити, ждите обновления". Через месяц вышло обновление юнити, и память перестала утекать.
Звучит как Тарков, только там из-за разработчиков игра весь свой жизненный цикл страдает утечками памяти.
мои две любимые истории про оптимизацию - это недавний патч Хеллдайверс, который уменьшил вес игры со 150гб до 20гб и фанатский патч, вошедший потом в ГТА 5, который спустя 8 лет с даты выхода игры сократил в три раза скорость загрузки
Вопрос в том, почему современные разработчики не хотят оптимизировать свои игры
Потому что это никому не нужно. Оптимизация это дорого и долго. Продавать говно быстрее и прибыльнее. Разработчики вообще ничего не решают, они делают, что скажут, в указанные сроки.
DOOM 2016 года с вами бы поспорил. охуенно оптимизирован и практически летает на моей 1080
Дум вообще с самого первого релиза - эталон оптимизации, можно в учебники вставлять. Кармак может.
Ну а тогда зачем вы первым комментарием как-то оправдываете таких разработчиков если сами говорите что они лепят говно?
Где я их оправдываю?
Я говорю, что раньше других вариантов не было, либо оптимизируешь, либо не зарабатываешь. Потому что другого железа не было. А сейчас железо всё стерпит. Можно клепать говно и оно худо-бедно, но будет работать, а другого большинству и не надо. Виноваты не разработчики, а покупатели. Не было бы продаж - игры бы оптимизировали лучше.
У меня веселее случай был... Винда у меня лицензионная купленная и захожу я по аккаунту майкрософта. Ну и пользователь винды тоже там криво отображается вроде, ну так вот. Релизается тут Mass effect legendary edition и не работает... Тупо не запускается... Стал копать, оказалось что у меня в имени пользователя недопустимые символы. Создал ради теста локального не сетевого пользователя на английском языке и о чудо... Всё запустилось... Вывод. Разрабы тупо не оптимизировали игру под лицензионную винду...
посмотрите игру
.kkrieger
96KB!!
2004
да, это короткий шутан минут на десять, но он выглядит потрясающе и в 2026 году
Осталось познать суть, почему же оно весит 96 кбайт
Ну и геймплей там был убогий
Потому что процедурные генерации везде. А геймплей убогий, потому что для галочки, максимально упрощенный. В это не планировалось играть, планировалось запустить, уживиться и закрыть.
геймплей, согласен хуёвый, но выглядит на мой взгляд для 2004 и 96кб очень неплохо
Раньше так делали, потому что по-другому было нельзя.
Смотрите шире. В любое время по другому нельзя. В каждый момент времени все делают оптимальные решения. В первом классе ты учишь буквы и черточки. В 11-м дифуры или что там проходят.









IT-юмор
7.5K постов53.3K подписчиков
Правила сообщества
Не публикуем посты:
1) с большим количеством мата
2) с просьбами о помощи
3) не относящиеся к IT-юмору