Pull to refresh

Comments 72

Танчики! Детство моё сопливое)) Прям столько воспоминаний нахлынуло… Спасибо Вам.
Это же колоссальное мастерство — уложиться в ограничения аппаратной части, и в то же время создать хорошую игру.

Флешеры игроделы как раз именно этим и занимаются…
Спасибо огромное за статью!
Если вспомнить на какие ухищрения шли разработчики игр на ZX Spectrum, то флешеры просто как сыр в масле катаются.

А ведь ещё игры на электроника МК 62/61 были
Помните стеб во времена дисков типа «1000 лучших игр» когда выходила какая-нибудь тяжелая игра говорили с сарказмом, что «теперь компактная игра — это игра, с трудом влезающая на компакт!» Тогда казалось, что игры под 600 -700 метров это дикость какая-то.

А сейчас выгоднее заниматься не оптимизациями, а кроссплатформенностью, чтоб и на PC и на приставках играть можно было, над пиаром, чтобы игра в первые дни разошлась как можно большим тиражом, т.к. очень быстро появляются пиратки. Время разработки становится гораздо важнее оптимизаций, т.к. пока конкурент усиленно вылизывает свою игру, можно уже 2-3 своих выпустить. Иногда выпускают такое, что не верится, что у разработчиков вообще был отдел тестирования.
Вы знаете. Я играл в Арканум. И несмотря на то, что она тормозила на мощных для того времени машинах, имела кучу багов и занимала два диска это была прекрасная игра.
Полностью согласен. Отличная RPG была (ну и есть :)).
То, что значительное количество плюсов позволяет смириться с минусами, не означает, что минусы — это хорошо.

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

Особенно «весело» когда подгрузки практически не завясят от железа — это явный признак косяка в архитектуре.
Я к тому, что ни микрооптимизации, ни ограниченное железо, ни мощнейший отдел тестирования не сделают бездушную игру душевной, а остутствие всего этого не заберёт душу у хорошей игры.
Душа — это хорошо, но Квазимодо всё же не самый приятный объект.
Душа — хорошо, а крайности — плохо.
Забить на оптимизацию ради души — и есть крайность :)

Я готов простить примитивную графику, но когда игра по десятку секунд грузит маленький спрайтовый уровень на мощном процессоре и сверхбыстром SSD — это, извините, никуда не годится. Когда на этом же железе в реальном времени и идеально гладко рендерится сложнейшая 3Д графика с уймой объектов, полигонов и источников света, а убогая плоская картинка дергается в конвульсиях — это рукожопие программиста.

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


Опять вы в крайности. Где «забить на оптимизацию»? Почему если оно не работает на 1.76 МГц, то это уже «забили на оптимизацию»? Почему нельзя «оптимизировать в меру»? Выше я приводил в пример Арканум. Да, графа так себе. Да, на слабых машинах тормозит. Но играли с упоением. А если бы писали свои имлементации типа ArrayList ради выиграша в скорости, то мы бы могли вообще игры не увидеть.

когда игра по десятку секунд грузит маленький спрайтовый уровень на мощном процессоре и сверхбыстром SSD

и снова крайности. покажите пример игры, которая «по десятку секунд грузит маленький спрайтовый уровень на мощном процессоре и сверхбыстром SSD»? Хотя бы одной? Только не случай, когда человек вообще не разбирается в основах игростроения, а нормальный продукт, рассчитанный на людей.
Sonic 2 HD Remake
Грузится у меня по несколько минут. А разработчики в ридми так и говорят, мол «Ждите или апгрейдите комп»
и снова крайности. покажите пример игры, которая «по десятку секунд грузит маленький спрайтовый уровень на мощном процессоре и сверхбыстром SSD»? Хотя бы одной? Только не случай, когда человек вообще не разбирается в основах игростроения, а нормальный продукт, рассчитанный на людей.


Пожалуйста. Вот вам на выбор разные масштабы.

Eador — через 3 года после выхода автор таки немного занялся скоростью, после чего ход компьютера ускорился на 2 порядка, и почти исправлены дикие тормоза анимаци на более-менее мощных компьютерах. Раньше приходилось извращаться с замедлением процессора.

Mass Effect 2 — если заменить ролики во время загрузки уровней на заглушки то грузится всё практически моментально вместо десятков секунд.

Magic the Gathering 2012 — в момент перевода хода часто игра заметно подвисает на пустом месте, с явной зависимостью от мощности компьютера. Откровенный и бросающийся в глаза косяк.

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

Опять вы в крайности. Где «забить на оптимизацию»? Почему если оно не работает на 1.76 МГц, то это уже «забили на оптимизацию»? Почему нельзя «оптимизировать в меру»?
Оптимизация в меру — это когда на актуальном железе всё работает с вменяемой производительностью. А если имеются очевидные косяки с явным несоответствием производительности и результата — это рукожопие. И оно ну никак не связано с качеством сюжетной линии и проработанностью игровой механики.
Ок, согласен, такие игры есть.
Но моя мысль в том, что не оптимизации определяют наличие души в игре. И привёл в пример Арканум, которая подтормаживала на современном железе, но, при этом, была с душой.
А моя в том, что душа — не оправдание для рукожопия. Хотя и порой заставляет его терпеть.
Не оправдание. Но это не значит, что оптимизации==душа.
Ну значит сойдемся на том, что душа у игры это хорошо, но профайлер забывать не надо, ему одиноко в этом жестоком и холодном мире.
Сделал человек (люди) как мог. Как говорится, не нравится — не кушайте. Он может не кладёт на профайлер, а просто о нём не знает. Или видит, что узкое местор сортировка, но кроме пузырька ничему его не учили. Как может такой факт раздражать?
Так это ведь коммерческие продукты. Я конечно знаю, что по традиции к софту не применяются никакие критерии качества, но сам с этим не согласен. И не нравится тут не катит — возврат некачественного продукта не предусмотрен.

Не умеешь — поищи в интернете, там всё есть.
И к чему я вообще упомянул. Можно делать так — признать наличие необходимости и исправлять проблему. А можно как обычно — послать игроков в жопу и сказать «это релиз, мы уже продали игру и нам невыгодно заниматься дальнейшей поддержкой, покупайте следующую из серии».
Очень интересно. Много нового узнал для себя.

P.S. А про пасхалку даже не знал. К сожалению, по ссылке информации не так много. Вообще нашли этих влюбленных или нет? :)
Увы, о судьбе влюблённых история умалчивает :)
Сразу два детства напомнило: детство, когда играл в них, и детство программистское, когда была задача написать их клон.
UFO just landed and posted this here
Когда играли в «танчики» в детстве, то кто бы мог подумать, что когда нибудь буду изучать их внутреннее устройства с програмерской точки зрения.
Спасибо, очень интересно было. А поставленная задача решена? Точный клон создан?

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

Бог с ними с ограничениями. Придумать хорошую игру (без учёта ограничений) само по себе искусство. Втиснуть её в аппаратные ограничения — скорее инженерная задача.
А поставленная задача решена? Точный клон создан?
К сожалению, из-за особенностей генерации случайных чисел эта задача оказалась мне непосильной. Целью было не просто написать клон, а ещё и получить точно такое же детерминированное поведение.
Странно, вы же полностью описали алгоритм, дальше осталось только добавить «прокладку» в виде искусственного таймера, не привязанного к FPS. Можно даже оставить «длинные» секунды.

Я понимаю, что это проще сказать, чем написать, но вы с такой любовью описали все это, что захотелось чтоб хоть у этой истории был счастливый финал )
Там же в качестве некоторых переменных выступают состояния элементов аппаратной части, поэтому воссоздать абсолютно идентичный геймплей можно только точной эмуляцией :)
Интересно. Я бы ещё добавил в качестве введения об устройстве видеопамяти устройств от Nintendo. Конкретно вот это описание я делал про Gameboy, в NES оно тоже близкое к этому:

Довольно интересная организация экрана. Как таковой сплошной экранной памяти (как в БК или хотя бы как в ZX Spectrum) вообще нету. Отдельно лежат тайлы 8x8 в количестве до 192 штук. На экран выводится проекция аж трёх планов, снизу вверх: фона, окна и объектов (т.е. спрайтов). И фон и окно — это матрицы 32x32 индексов тайлов. И для фона и для окна можно задать координаты от угла, с точностью до пиксела — тем самым, полноэкранный скроллинг не стоит буквально ничего, значение в регистр занести! Объекты (они же спрайты) — это те же тайлы, но для каждого спрайта задано положение с точностью до пиксела, и цвет 00 считается прозрачным. При этом можно создать до 40-ка спрайтов размером 8x8 либо 8x16 (размер одинаков для всех спрайтов). Каждому спрайту можно задать отражение по вертикали и/или горизонтали — тоже даром, один битик взвести. Но в одной строке может быть не более 10-ти спрайтов.

В общем, получается вещь довольно удобная для разного рода платформеров и скроллеров — загружаем кучу тайлов, набираем из них игровую сцену, сверху плюхаем подвижные спрайты. С другой стороны, работать с экраном как со сплошным полем — довольно тяжело.
А NES от PC-Engine сильно отличается в этом плане кроме поддержки большего объемы цветов?
Вы имеете в виду организацию режимов графики на PC того времени? Да сильно. Судя по тому, что тут описано, получается, что на NES графика сильно походила на продвинутый текстовый режим.
Нет, я про это ru.wikipedia.org/wiki/PC_Engine. Процессоры то там одинаковые моторолловские, а цвет PC-Engine выдает как SNES, вот и хотелось узнать — внутри игры то отличаются и как сильно.
Да, восхищаюсь игроделами того времени. Полностью согласен с эпилогом
из пиратских бонусов еще был Корабль позволяющий преодолевать воду)
один из любимых бонусов
Спасибо автору за пост! Еще бы такой разбор по Elite был. Всегда хотел узнать как на Z80-м делали почти 3D
Мне лично более интересен был бы разбор генерации миров, планет и прочего :)
Автору спасибо за отличный пост!
В заключение хочу сказать, что раньше создание игр было в некотором смысле всё же большим искусством, чем сейчас
Да сейсас программисты уже так не ограничены в своих возможностях и игру в большинстве случаев оценивают по работе дизайнеров, аниматоров и модельеров.
P.S. Пользуясь случае покажу свои варианты танчиков и марио в акаде на основе его примитивов:
www.youtube.com/watch?v=946fmxv5cC8
www.youtube.com/watch?v=p20zAhB3mjU
Только у меня в голове заиграла фоновая музыка? :)
У меня еще пронеслись все основные звуки игрового процесса, особенно звук взятия бонуса и звук двигателей :)
У меня неповторимы «Пыхххх» когда штабу капут =)
А я покосился на приставку Денди, которую получил от Анонимного Деда Мороза… Там и эти танчики, и марио и контра и многое другое. Вот же она, рядом лежит )
image
Эта маленькая коробочка под ёлкой нового 1994 года перевернула жизнь 6 летнего ребёнка (меня) на всегда. До сих пор сохранилась… надо бы её починить и сыну показать.

PS правда, на моей мотоциклист был другого цвета и я ни когда не мог понять, что значит слово «турбо» в турбо джойстиках.
Что ж тут непонятного? Турбо — это круто!
У классического контроллера по одной кнопке A и B, у «турбо» — дополнительные «rapid fire» A и B, которые, будучи зажатыми, имитируют быстрые повторные нажатия на обычные A и B. Полезно в шутерах )
Все. Пропал смысл жизни) У меня всегда было как выше — если турбо — значит круто! =)
UFO just landed and posted this here
Псп? Смотрю понять никак не могу
UFO just landed and posted this here
А есть ли современный римейк этой игры? Например новая графика, уровни, но старый геймплей.
Не совсем ответ на вопрос, но всё же:

Tank Force — сиквел, выпущенный Namco на аркадных автоматах в 1991 году. (Вот тут есть скрины.)
Согласно википедии, в 2009 году в Японии его ещё на Virtual Console (читай Nintendo Wii) выпустили.

Кстати, был, оказывается, и приквел — Tank Batallion.
Где можно взять дизассемблер, для копания в ром'ах?
Помню была у меня Sega :) Каждую неделю было такое: «Мам, дай денег на новый джойстик».
Джои низкого качества и Мортал Комбат с Врестлманией плохо сочетались это да
Эх, эти знания бы тогда, когда писал свои «улучшенные танчики» на паскале, но что-то шло не так, и ресурсов почему-то не хватало даже с ассемблерными вставками :) Спасибо за замечательную статью, побольше бы таких.
Вот автор пишет: Расчёт коллизий всегда был довольно ресурсоёмкой задачей, что может быть критично для такого процессора, как у NES.

Ресурсоёмкой? Ой да ну ладно. Тот же ZX-SPECTRUM (да, там 4 МГц процессор, но зато нет дендивского видеопроцессора со спрайтами который на порядок ускорял работу с графикой на экране) — сделал вот один маньяк там игру BlackRaven — RTS(!), поддержка мыши етц. А вы говорите коллизии для десятка танчиков посчитать дорогая операция. Фуффф
Вы сравниваете разные вещи — в RTS работают несколько другие алгоритмы. Да и по видео на ютубе невооруженным глазом видно, что у Black Raven на рассчёты часто уходит более одного кадра. Для игры вроде Battle City это было бы абсолютно нежелательно.

Если вы пожелаете доказать обратное, руководствуясь более объективными доводами, с удовольствием почитаю ваше доказательство :)
Я не сравниваю, я говорю о том, что ресурсы даже такого хиленького процессора, как у NES, в рамках рассматриваемой игры — просто огромны и задача по типу (опять возвращаюсь к предыдущей формулировке) «найти коллизии между танками» не может быть сколько-нибудь дорогой в контексте задержек игрового процесса.

Собственно, суть предыдущего комментария и сводилась к тому что автор явно переоценил «дороговизну» данной операции для процессора
Откуда у вас такая уверенность в своих словах? Пока что она не сопровождается ни одним объективным доводом.
Прям чувствую как Вам хочется похоливарить, поэтому это мой последний комментарий — дальше пишите что хотите.

8bit CPU, 64Kb Ram — это одинаково и в NES и в ZX-Spectrum

Z80@4MHz успевал (не нравится Black Raven — посмотрите первую UFO — она тоже realtime была) заниматься расчетами и (очень важный фактор) отрисовывать всю графику (а экран на спектруме был не особо удобно с точки зрения «что нибудь на нём нарисовать» устроен).

В NES есть спрайтовый процессор, т.е. CPU отрисовкой графики не занимается, только расчёты. Конкретно в Battle city расчетов этих — около нуля, т.к. вычислительная мощность этой игрушки никакая. «Задача недорогая для процессора» — означает что он её овер9к раз успеет посчитать без задержек в игре.

Объективные доводы? Ну я не знаю. Вытащите кусок кода который занимается «обработкой коллизий», сделайте бесконечный цикл и посмотрите, сколько раз он их за время одного кадра успеет посчитать, прежде чем считать это «дорогой» задачей.

Спасибо за оказанное внимание :)
Мне хотелось лишь услышать что-нибудь более объективное, чем ваше личное мнение. Всё-таки перед написанием статьи я проводил кое-какие исследования, и если я где-то допустил ошибку — то будьте добры, укажите на неё. Иначе холивар затеваю не я :)

А вам советую просто взять ручку, бумагу и прикинуть «на глаз»: при частоте 1.76 МГц мы получаем простор примерно в 30 000 тактов в кадр. Допустим, на обработку коллизии одной пули надо 50 инструкций, максимум на экране может находиться 10 пуль (6 вражеских и 4 пули танков игроков). В среднем на инструкцию приходится 4 такта, т.е. получаем 200 тактов на обработку одной пули.

Пусть мы проверяем пули только на столкновение друг с другом. Чтобы попарно сравнить 10 пар, понадобится 45 сравнений. 45 * 200 = 9 000 тактов, и это не учитывая других проверок и излишней оптимистичности исходных данных. Могу где-нибудь ошибаться, но это не важно — даже при грубых подсчётах очевидна дороговизна данной операции.
Вот он какой… World of Tanks моего детства! =)
страшно представить как реализовывались такие игры как battle toads. Вообще заметен огромный прогресс в играх сравнении 87 года и 93 (battle toads, kirby`s adventure) И музыка инетреснее стала, и оформление, прямо таки выжимание всех соков из железа.
Где можно качнуть полную коллекцию спрайтов?
В сети полно ресурсов с подобными архивами. Погуглите «Battle City Sprites NES».
Плохо, что все они в низком разрешении — под оригинальную NES
Sign up to leave a comment.

Articles