Просмотр полной версии : Как делали игры\демо тогда и сейчас?
Привет! Интересует такой вопрос.
Поглядел несколько старых книг по написанию игр на ZX. Тогда, в 80-90е, я так понял писали все на ассемблере? Неужели всё писали с нуля? Или были какие-то заготовки(хаки) - "пазлы","кирпичи" готовые кусочки которые собирали, чтобы не писать с нуля? Ассемблер же язык жутко сложен!?
Сколько в среднем занимала разработка игры и сколько людей делало игру?
Чем процесс разработки игр\приложений\демо отличается от "тогда" и "сейчас"?
зы Еще такой вопрос по варезу. Как "ломали" игры тогда(общий механизм)? И зачем?
Spectramine
07.03.2018, 02:38
Не все писали на ассемблере, часть игрушек писалась (и пишется) на Бейсике и его диалектах, а из них часть проходила через компилятор ради ускорения. Ещё часть пишется в игровых дизайнерах. Но большинство на ассемблере, да. С нуля на ассемблере авторы писали самые первые игры, а потом постепенно нарабатывали свои библиотеки кода. Ассемблер не так сложен, как муторен, всё приходится подробно расписывать в процессорных командах, это долго и нудно, и часто довольно сложно (не сам язык сложен, а программировать на нем сложно, более-менее крупные вещи, по крайней мере).
Игру мог сделать и один человек - есть переведенная в ZX-Ревю книга Стива Тёрнера "Профессиональный подход", как раз про это. Но часто работа делилась по профилю - графику делал один, код другой, музыку третий, звуковые эффекты четвертый. Код тоже могли писать несколько программистов. Стив Тёрнер писал, что на игру у него уходило в районе полугода, при том, что он всё делал сам.
Сейчас шире используются средства кросс-разработки - кросс-ассемблеры, графические редакторы и конвертеры, и эмуляторы. А тогда это было меньше распространено, вроде как. Плюс сейчас есть несколько довольно мощных игровых редакторов, в которых люди клепают игры, не особо парясь с программированием.
Общий механизм взлома игр - в основном с использованием периферийных устройств типа мультифейса, позволяющих сбросить состояние памяти/процессора на внешний носитель после отработки всех защит, а далее написать свой загрузчик и добавить гордую надпись "крэкед бай кулхацкер". Зачем - чтобы убрать защиты от копирования игр - нестандартные загрузчики, ленз-локи и прочие.
GOG, писалось в основном все с ноля , так как интернета не было то идеи и эффекты драли друг у друга , но не один к одному ,а подглядывая код на его основе изобретали свой эффект , времени для написания уходило много и всем этим двигала юность и любовь научится чему то новому и этим поделится / удивить других , на мегадемо которое пишет 3-4 человека с перерывами уходило иногда до года , на небольшую демку месяц два , время выкраивалось между работой/ учебой , а главное мы все тогда часто встречались ездили друг к другу в гости.
Первые ассемблеры были очень убогие , у нас настоящий прорыв произошел с выходом TASM от RST7 , это был новый уровень софта.
Игры "ломали" просматривая их код в дебаггерах , - зачем ? странный вопрос , жизней накрутить что бы можно было пройти что то быстрее )
ASM не так уж и сложен , главное понимать как правильно его использовать для поставленных задач.
weiv, JV-Soft, Спасибо большое!
Сейчас шире используются средства кросс-разработки - кросс-ассемблеры, графические редакторы и конвертеры, и эмуляторы. А тогда это было меньше распространено, вроде как. Плюс сейчас есть несколько довольно мощных игровых редакторов, в которых люди клепают игры, не особо парясь с программированием.
А результат, производительности\качест а\времени кодирования, такой же как и тогда или лучше\хуже?
писалось в основном все с ноля , так как интернета не было то идеи и эффекты драли друг у друга , но не один к одному ,а подглядывая код на его основе изобретали свой эффект , времени для написания уходило много и всем этим двигала юность и любовь научится чему то новому и этим поделится / удивить других , на мегадемо которое пишет 3-4 человека с перерывами уходило иногда до года , на небольшую демку месяц два , время выкраивалось между работой/ учебой , а главное мы все тогда часто встречались ездили друг к другу в гости.
А дебаггер это и есть дизассемблер? Я пару лет назад в Вконтакте нашел RST7, и задал вопрос про то как они работали? Он ответил, что подглядывая у других, путем просмотра их работ. Еще говорил, что работали на MSX. Но почему именно на MSX, а не скажем ПК? Просто круче?
Игры "ломали" просматривая их код в дебаггерах , - зачем ? странный вопрос , жизней накрутить что бы можно было пройти что то быстрее )
Нет про POKE я в курсе. Я про то, что игры имели защиту? Что делали крякеры типа BILL GILBERT?
А что RST7 автор TASM? Ух-ты, не знал!
А дебаггер это и есть дизассемблер?
В общем ,да.
Но почему именно на MSX, а не скажем ПК? Просто круче?
Тогда писали на тех платформах которые были нам доступны , а PC в начеле 90-х стоили как пол квартиры в Харькове.
Я про то, что игры имели защиту? Что делали крякеры типа BILL GILBERT?
Да ,многие игры имели защиту , еще большой бум пошел когда стали доступны дискеты и дисководы ,не всегда просто получалось из кассетной сделать дисковую версию.
А что RST7 автор TASM? Ух-ты, не знал!
Да ,TASM Дима написал.
Spectramine
07.03.2018, 05:57
А результат, производительности\качест а\времени кодирования, такой же как и тогда или лучше\хуже?Производительно сть выше, конечно. Чем более удобные и мощные инструменты используются, тем производительность выше. А качество кодирования больше от опыта зависит.
А дебаггер это и есть дизассемблер? Дизассемблер это часть дебаггера - процедура, переводящая машинные коды в листинг мнемоник ассемблера. Но дебаггер дизассемблером обычно не ограничивается, включая в себя и другие инструменты - трейсер, точки останова, просмотр дампа, поиск последовательностей и т.п.
Нет про POKE я в курсе. Я про то, что игры имели защиту? Что делали крякеры типа BILL GILBERT? Я выше написал - дампили игру на ленту мультифейсом, потом цепляли свой загрузчик, и пускали в свободное плавание. Чуть позже, с распространением дисковых интерфейсов, ещё перегоняли игру на диск, хотя технология особо не менялась, разве что на ленте кулхацкеры часто защищали свой загрузчик коверканьем бейсика (нулевые строки и т.п.), мультиксорками и мусорным кодом, а на диске обычно этим уже не страдали.
а на диске обычно этим уже не страдали.
И на дискете страдали)
А так же использовали нестандартные форматы дискеты, механические повреждения дискеты и т.д.
с защитами особо не парились, просто сбрасывали мультифейсом, из чего собирали полурабочую игру
https://zxaaa.net/view_demo.php?id=2010
В старые времена, я копировал "Спектрофоны" и некоторые диски, повторяя защиту, из-за чего любители халявы обломались.
для исследования помогал STS 2.6
для исследования помогал STS 2.6
В те времена STS не все защиты брал.
Например, защиту от кладовской Элиты-3 он не брал.
И я ее ломал своим дебаггером.
дада, в оригинальном 1Ddkit защита ориентирована на STS (:
Ассемблер же язык жутко сложен!?
Как раз наоборот - жутко прост! Особенно по части синтаксиса и разнообразия команд (сужу по i8080, на Z80 этого добра побольше).
Spectramine
07.03.2018, 14:45
И на дискете страдали)
А так же использовали нестандартные форматы дискеты, механические повреждения дискеты и т.д.
Этим на дискете страдали обычно авторы ПО, опять же с целью защиты от копирования. А кулхацкеры эти защиты опять же взламывали) Не знаю, занимались ли они после этого резащитой своих загрузчиков, но вроде как не особенно (в отличие от ленточных загрузчиков, где мультиксорки были довольно обычны). Ну по крайней мере большинство задискованных игр, которые прошли через мои руки, были с простыми бейсик-загрузчиками, без особых изысков. Ну, разве что, помню, у ASC использовался собственный юнилоадер для ленты/диска, не совсем обычный, но без ксорок, емнип.
Не знаю, занимались ли они после этого резащитой своих загрузчиков
Иногда занимались)
ram_scan
07.03.2018, 17:35
На реале без дисковода накодить большую программу было невероятно тяжело, особенно на 48к. Во первых исходный текст и ассемблер плохо лезли в память. Вместе с отладчиком - еще хуже. Подобные ограничения конечно дисциплинируют грамотно писать код, чтобы граблями по лбу било пореже, но тем не менее.
Во вторых приходилось бесконечно и достаточно долго на ленту отгружаться и потом загружаться, потому-что даже несмотря на всю аккуратность подвис на тестовом запуске - регулярное дело.
Самая моя тяжелая программа которую я когда-то на реале написал - обычный ленточный копировщик. Без компрессии. Навроде COPY86M или TF-COPY. Был помню еще полноэкранный текстовый редактор. Но он весил меньше копировщика.
Что касается "защищали ли хакеры взломаные программы" ? Да. Помню зло понравилась мне игрушка Pinball. Заломаная s.s. captain. так в ней вложенных ксорок было больше сотни, причем со спидлоковской плюшкой и выходом из середины цикла по ret pe и переходом на начало по ret po (или наоборот ли не суть важно, родионов в своих загрузчиках со счетчиком такую крорку использовал, а элите и фредди хардесте точно). Я его из-за невозможности бряк поставить часа за четыре в монсе пошагово прошагать затыкая в клавиатуру пинцет ухитрился =) в принципе потом можно было бы и написать раскодировщик. Но это надо было заранее знать что там все циклы одинаковые.
Blob The Cop от билла гилберта тоже помню был со спидлоковским бейсиковским куском. Очень долго немог одуплить как эта вереница peek и poke вызывает запуск программы в машинном коде. Ситуация осложнялась еще тем что аргументами были нецелые значения, и с разбегу на калькуляторе два байта прикинуть не выходило. А на самом деле там пиками и поками устанавливался обработчик ошибки, после чего пограмма спотыкалась на nonsence in basic но вместо печати сообщения запускался лоадер.
Кстати в спидлоке ровно такая-же порнография. Только еще и ксорки разные.
Я необычный запуск в своих загрузчиках тоже делал, но стартовал кодовый "с заголовка". Менял из бейсика информацию о каналах, а дальше был просто load "" code. Кодовый блок начинался с подставного заголовка, процедура печати которого была переопределена на кастомный загрузчик со спецэффектами.
Еще кодовый загрузчик очень удобно было класть не после REM, а определив вне текста загрузчика здоровый массив как переменную и сложив его туда. Если не знать имени и размерности то в листинге его просто не видно от слова вообще. Но вместе с программой содержимое переменных и выгружается и загружается. После run и clear загрузчик уничтожается. И c merge боролись через то же место. Кстати такого приема я не встречал нигде, пока уже в эпоху ПЦ не увидел в эмуляторах спидлоки пятой версии.
уже в 1987 была доступна платка для обмена данными с PC
http://www.worldofspectrum.org/infoseekid.cgi?id=1000532
в некоторых играх можно встретить драйвер для неё
Был дефицит литературы, особенно по Ассемблеру. После того как достал и прочитал одну книгу занялся дизассамблированием игры которая была похожа на мою задумку. Опыта не было вообще никакого. Разбирая чужой код много раз восхищался людьми которые это сделали. Написание своей игры заняло от месяца до двух (не помню). Был Пентагон 128 с дисководом и знаменитый Gens который меня устраивал во всем.
первая часть НЛО написана в Gens`e,
огромный проект разбит на кучу маленьких кусочков
Lethargeek
07.03.2018, 20:53
Как раз наоборот - жутко прост! Особенно по части синтаксиса и разнообразия команд (сужу по i8080, на Z80 этого добра побольше).
на z80 как бы не поменьше, хотя бы без кучи разных мнемоник на одно действие, выдуманных ради экономии символов
по ассемблерам. Мне понравился Zeus, он был более популярным и распространенным.
в ZX ревю уже были статьи об адаптации ассемблера к TR-DOS.
У меня уже был Пентагон, я дизассемблировал Zeus и внес изменения - каталог, запись, загрузка, калькулятор и поддержка INCBIN. Тут же работать стало веселее.
Жаль, что тетрадка с дизассемблером не сохранилась.
по ассемблерам. Мне понравился Zeus, он был более популярным и распространенным.
Я тоже до TASM'a сидел на ZEUZ'е. А всякими GENS'ами и MONS'ами не пользовался никогда.
Spectramine
08.03.2018, 12:08
Я тоже на Zeus сидел. Даже написал к нему текстовый редактор, это была моя самая большая программа на ассемблере. Формат исходного текста чутка поменял, убрал номера строк.
А монитор у меня был, переделанный мной из небольшого удобного монитора, загружаемого в экранную область, а после переделки он сидел в теневом ОЗУ в нижнем окне памяти.
Dr.Potapov
08.03.2018, 12:15
Я тоже на Zeus сидел. Даже написал к нему текстовый редактор, это была моя самая большая программа на ассемблере.
До сих пор изучаю и вашу интерпретацию зевса и текстовый редактор ))) Сорцы при конвертации в plain text немного побились.
Где-то валялся на дисках импорт текстового файла в исходный текст. Все реализовалось методом Zeus.
Spectramine
08.03.2018, 14:23
До сих пор изучаю и вашу интерпретацию зевса и текстовый редактор ))) Сорцы при конвертации в plain text немного побились.
Сейчас глянул - исходники моей оболочки к Zeus вроде целые, а вот текст дизассемблированного кода собственно ассемблера Zeus с моими редакциями убился при чтении с диска наглухо. У меня осталась распечатка на матричнике, если хотите, могу отсканить.
Hacker VBI
08.03.2018, 14:42
weiv интересно конечно
Alk/SoK переделывал Зеус под 128 и чтото добавлял\улучшал.
Dr.Potapov
08.03.2018, 15:49
Сейчас глянул - исходники моей оболочки к Zeus вроде целые, а вот текст дизассемблированного кода собственно ассемблера Zeus с моими редакциями убился при чтении с диска наглухо. У меня осталась распечатка на матричнике, если хотите, могу отсканить.
Если не сложно - буду благодарен, наберу в тексте и отправлю вам )
Spectramine
08.03.2018, 16:10
Если не сложно - буду благодарен, наберу в тексте и отправлю вам )
Отсканил, а потом увидел, что есть же неиспорченный исходник Zeros в формате Zeros :) Всё, что нужно с ним сделать, чтобы получить обычный текст - распаковать в нём ассемблерные токены и после символов #0D поставить #0A. В общем, вот ссылка на архив со всеми файлами и сканами: https://ru.files.fm/f/tgutdshe
upd. Память меня подвела, символ конца строки в zeros-формате - #00, а #0A - символ табуляции. Их надо поменять на #0D/#0A и #08 соответственно.
Dr.Potapov
08.03.2018, 18:27
Отсканил, а потом увидел, что есть же неиспорченный исходник Zeros в формате Zeros :) Всё, что нужно с ним сделать, чтобы получить обычный текст - распаковать в нём ассемблерные токены
Он у меня есть, вы мне его высылали ранее, на распаковке токенов я как раз и споткнулся. Не все распаковались правильно и местами получилось что то типа “LD A” ) Но лежит (вместе с редактором) рядом с проектом, подсматриваю туда ))
Мне бы подучиться в разработке игр для Z80. Для нового компьютера никто кроме меня не напишет. Что посоветуете почитать ?
Для нового компьютера никто кроме меня не напишет.
Напишет, если будет писать удобно, и главное, если будет эмулятор. С эмулятором делать программы на порядок проще, а без эмулятора в наше время точно никто писать не станет. Так что упрощайте конструкцию до оптимального минимума и заводите дружбу с авторами эмуляторов.
Мне бы подучиться в разработке игр для Z80.
а чем закончилось начинание игры про танки ?
а чем закончилось начинание игры про танки ?
Больше времени изучал и оптимизировал способы вывода спрайтов на экран. Сделано движение танка по первому экрану и открывание с помощью кнопки выхода на второй. Ни заставки, ни звуков и т.п. Нужна современная методика написания игр на ассемблере чтобы делать более качественные программы. Демо тут (http://www.zxkot.ru/software/s01). Можно запустить образ SNA. Управление танком кнопками WASD.
- - - Добавлено - - -
Напишет, если будет писать удобно, и главное, если будет эмулятор. С эмулятором делать программы на порядок проще, а без эмулятора в наше время точно никто писать не станет. Так что упрощайте конструкцию до оптимального минимума и заводите дружбу с авторами эмуляторов.
Я подумываю пока писать без эмулятора так. Откомпилировать на ноутбуке и создать образ SNA. Образ SNA загрузить с ноутбука через USB-UART в память компьютера. Запустить на выполнение программу на компьютере. Оценить результат, внести изменения и т.д.
оу если бы я подходил также к делу я бы еще Аббатство недописал
У некста сейчас та же проблема - отсутствие нормального эмулятора.
мой вариант
тоже zeus перелапачивал, вот мой экзешник. А твой готовый можно глянуть - интересно сравнить!
А твой готовый можно глянуть - интересно сравнить!
http://scepticalinq.blogspot.ru/2018/03/zeus.html
Skurikhin
16.06.2018, 11:05
Привет! Интересует такой вопрос.
Поглядел несколько старых книг по написанию игр на ZX. Тогда, в 80-90е, я так понял писали все на ассемблере? Неужели всё писали с нуля? Или были какие-то заготовки(хаки) - "пазлы","кирпичи" готовые кусочки которые собирали, чтобы не писать с нуля? Ассемблер же язык жутко сложен!?
Сколько в среднем занимала разработка игры и сколько людей делало игру?
Чем процесс разработки игр\приложений\демо отличается от "тогда" и "сейчас"?
зы Еще такой вопрос по варезу. Как "ломали" игры тогда(общий механизм)? И зачем?
Интересная тема! Спасибо!
Интересная тема! Спасибо!
Интересная то понятно. Но за что спасибо? Ответа в сущности я так и не получил...
Интересная то понятно. Но за что спасибо? Ответа в сущности я так и не получил...
Почему не получил-то? Рассказали все как было - писали на ассемблере, никаких руководств по написанию игр не было. Разве что в чужой игре можно было что-то посмотреть как сделано.
Почему не получил-то? Рассказали все как было - писали на ассемблере, никаких руководств по написанию игр не было. Разве что в чужой игре можно было что-то посмотреть как сделано.
да собственно так и учились писать. или не?
да собственно так и учились писать. или не?
Да, чтобы научиться писать, надо что-то писать.
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot