| Разработка и ромхакинг > Разработка игр |
| Civgen - Цивилизация 1 на Sega Mega Drive |
| << < (2/5) > >> |
| Globotronik:
SeregaZ, программировать и так не легкое занятие, а ты автора еще этим нагружаешь Пусть лучше игра как можно качественнее получится. Чай не дота 2 какая-нибудь, чтобы годами обновляться, потом обновляльщик все равно не нужен станет |
| SeregaZ:
:cool: потому и был задуман RHTEAM, но в процессе стимы, сволочи, украли у меня идею и начали сами сега-игры раздавать. я правда планировал что раздаваться будут ромхаки, вместо оригиналов. впрочем сцена мыслю не оценила и проект канул в лету. но больше из-за самого стима, нежели что сцена не оценила. |
| sadhedg:
Обновил ромик. 1) добавлены многие действия для юнитов комп. игрока за варваров. Но ходят они по-прежнему "от своего лица" 2) сделано несколько улучшений GoTo. В связи с этим в сейве теперь дополнит. хранятся 256 байт (2 бита x 1024 юнита). 3) в сейв добавлена информация о текущем ходе игры. Сейв сместился на 2 байта, старый несовместим. 4) теперь при уничтожении одной из цивилизаций по неизвестной причине в хот-сите (например, если распустить первого сеттлера) будет сообщение о победе другого игрока 5) теперь, если в городе включено авто-строительство, то при начале беспорядков происходит новая проверка на то, что строить 6) теперь при уничтожении города в клетке уничтожаются все корабли в этой клетке 7) исправлен баг: если корабль с пассажирами атаковал юнит на суше и проиграл, его пассажиры не погибали вместе с ним 8) при завершении строительства в городе теперь всегда идёт пересчёт переменных для города, даже если не произошёл вход на экран города. Без этого, например, могли начаться беспорядки на том же ходе, когда построен юнит, который их должен был подавить. 9) исправлен баг: при строительстве чуда не было захода в другие города, строившие его (что должно было быть реализовано в 1.4). Кроме того, теперь при автостроительстве проверка на то, что чудо уже построено, происходит вообще всегда, а не только первый ход после постройки. 10) исправлен баг: у корабля при движении стрелочками обнулялись очки хода, если он рядом со своим городом 11) теперь, если юнит не смог пройти на след. клетку (шанс был меньше 100%), позиция курсора устанавливается на юните 12) исправлен баг: при загрузке игры не пересчитывалось количество необходимых лампочек для следующего открытия в зависимости от количества уже совершённых открытий 13) исправлен баг: неактивные цивилизации в начале игры всё равно получали бонус за плохой старт, в том числе могли получить сеттлера (он спавнился в координатах 0,0) 14) теперь при высадке варваров, если их корабль в исследованной человеком-игроком клетке и на расстоянии не более 5 клеток от города игрока-человека, все юниты варваров в этой клетке становятся известны игроку-человеку, а если не отключены ходы врагов - показывается сообщение о высадке варваров и карта центрируется на них. Этот пункт не тестирован. |
| sadhedg:
Так, вести с полей. Я попытался запихнуть анимацию волн из основного цикла в вертикальное прерывание и обычно всё ок, но при определённых обстоятельствах иногда происходит очень странный баг, ещё и разный на разных эмуляторах, так что я от этой идеи (пока?) отказался. Я предпочитаю понимать, что происходит. А с тем багом я не понимаю. Может быть, запихну в обработчик прерывания только изменение таймера для смены палитры, а саму смену палитры по-прежнему буду делать в основном цикле. Во-вторых, для меня большим сюрпризом стало то, что BlastEm эмулирует cram bug. Наверное, после той демки от GameHut. Я был уверен, что ни один эмулятор его не эмулирует. Ну и оказалось, что мусор от cram bug у меня весьма сильный. Надо будет с этим разбираться. Как-то поместить мусор в низ экрана. |
| MetalliC:
--- Цитата: sadhedg от 21 Июль 2019, 15:53:49 ---Во-вторых, для меня большим сюрпризом стало то, что BlastEm эмулирует cram bug. Наверное, после той демки от GameHut. Я был уверен, что ни один эмулятор его не эмулирует. --- Конец цитаты --- что такое GameHunt ? демки использующие эффект "direct color DMA" появились еще лет 7 назад, а чуть позже и поддержка этого дела в "живых" эмуляторах. первым емнип был Exodus, потом и другие. |
| sadhedg:
--- Цитата: MetalliC от 21 Июль 2019, 16:55:27 ---демки использующие эффект "direct color DMA" появились еще лет 7 назад --- Конец цитаты --- Скорее лет 25 назад. https://www.youtube.com/watch?v=l6KRVmX4FuM Это и есть тот самый канал, о котором я говорил. Однако Бертон в этом видео утверждал, что он не нашёл эмулятора, который корректно воспроизводит его демку. Ну я этому и поверил и не стал проверять. Обновил ромик до 1.6. Изменения: 1) мусор от обновления палитр вынесен по возможности за экран 2) таймер анимации волн теперь в vsync, но сама анимация по-прежнему в основном цикле. Также теперь анимация волн включена почти всегда. 3) убрано сообщение о захвате города варварами в хот-сите (т.к. я стремлюсь к тому, чтобы ход варваров был в хот-сите полностью "невидимым") 4) теперь при посадке юнита на корабль с командой Sentry эта команда с корабля снимается (как в оригинале) 5) теперь при мигании активного юнита у него подложка "много юнитов", если он на клетке не один (как в оригинале) 6) в заголовок рома добавлен флаг поддержки save ram и информация о размере save ram - 64 кб (фактически 32 кб, т.к. используются только чётные адреса). Сохранения теперь работают на blastem и некоторых других эмуляторах, а не только на fusion и gens. Но на exodus сохранение по-прежнему не работает. 7) Улучшено сжатие карты для save ram (например, на карте Земли на старте сейв теперь приблизительно на 500 байт меньше). Старый сейв несовместим. 8) варвары теперь разбойничают в т.ч. и в состоянии GoTo 9) варвары теперь перемещают свою авиацию, а не только атакуют ей (хотя в нормальной игре у них никогда нет авиации) 10) флот/авиация с GoTo теперь может идти в свой город (а также на авианосец для авиации), если этот город/авианосец - финальное назначение GoTo. Раньше корабль или авиация не могли в режиме GoTo войти в свой город (а также на авианосец для авиации) ни при каких обстоятельствах. 11) повышена точность подсчёта грамотности и болезней на экране демографии 12) почти вся графика сжата, немного уменьшено использование ram, цивилопедия и некоторые другие массивы текстов теперь используют строки переменной длины 13) исправление ошибок Что касается сжатия графики. rescomp требует весьма много оперативной памяти, что меня удивляет, ведь на Сеге ram ничуть не больше, чем видеопамяти. И если память есть, её надо использовать с пользой, а не оставлять на сжатие/разжатие графики. А тут для сжатия нужно приблизительно 1 к 1 свободной памяти, вроде бы даже немного больше. Я сжал почти все маленькие картинки, хотя кое-какие пришлось разделить пополам. Но разрезать большие картинки на множество маленьких - это маразм. Так что я воспользовался утилиткой bmp2tile, чтобы получить готовые тайлсеты больших картинок, а затем сжал их RLE с нарезанием на блоки одинакового размера (одновременно в оп. память загружается один кусок). В итоге размер РОМа усох до 9 мегабит с первоначальных 12. Я сильно озаботился этим вопросом, т.к. узнал, что при рубеже в 2 мбайта могут начаться проблемы с save ram, которые можно обойти, но я решил, что пришла пора заняться сжатием. |
| TiberiyLTim:
Какие новости по проекту? О нём хорошо отзываются забугорные ретрогеймеры - http://www.indieretronews.com/2019/08/civgen-ambitious-project-to-bring.html |
| varezhkin:
и все-таки каких хороших людей объединил эмулэнд... :hi: |
| SeregaZ:
а разъединил еще больше :) из-за срачей поливало народу тьма. искай их потом по форумам, скайпам и дискордам... эх. печаль. |
| Ti_:
--- Цитата: sadhedg от 22 Июль 2019, 23:24:47 ---А тут для сжатия нужно приблизительно 1 к 1 свободной памяти, вроде бы даже немного больше. Я сжал почти все маленькие картинки, хотя кое-какие пришлось разделить пополам. Но разрезать большие картинки на множество маленьких - это маразм. --- Конец цитаты --- Можно использовать lzss c кодом распаковки в vram, стандартный вариант требует не более 4кб, независимо от размера архива. Есть вариации и с меньшим 'окном', ну и сжатие соответственно слабее будет. Есть алгоритм сжатия nemesis , созданный специально для тайлов сеги, тот кажется совсем мало требует байтов 500, используется в сонике и других играх. Добавлено позже: --- Цитата: sadhedg от 22 Июль 2019, 23:24:47 ---Я сильно озаботился этим вопросом, т.к. узнал, что при рубеже в 2 мбайта могут начаться проблемы с save ram, которые можно обойти, но я решил, что пришла пора заняться сжатием. --- Конец цитаты --- Если использовать эту память только для сохранений, проблемы особой нет. move.b #1,($A130F1).l переключает область $200000-$20FFFF на sram, а #0 обратно на rom - работает на всех эмуляторах и картриджах евердрайв. |
| sadhedg:
--- Цитата: TiberiyLTim от 13 Август 2019, 23:00:28 ---Какие новости по проекту? О нём хорошо отзываются забугорные ретрогеймеры - http://www.indieretronews.com/2019/08/civgen-ambitious-project-to-bring.html --- Конец цитаты --- Нежданчик. С одной стороны приятно, а с другой стыдно за сырость этого дела. Я нашёл и новость, на которую ссылается англоязычная новость, и там пишут, что я исходник выложу. Я такого не писал же. Хотя сейчас подумал - когда-нибудь выложу, как бы там всё плохо ни было. Потому что самому мне до ума не довести это. Но сколько смогу - сам сделаю. Я даже музон хочу из краденых vgm для теста добавить, но это очень сильно не в приоритете. Медленную отрисовку менюшек/графики я вообще вряд ли исправлю, например - я же плохо понимаю, как там железо работает. Читал, что что-то там около 90 тайлов в кадр отрисовка при обновлении экрана. Сначала я утешал себя тем, что та же Дюна только скроллит экран, хотя и быстро, а не телепортирует вид с места на место (как её же ПК-версия или warcraft какой-нибудь), поэтому ей не надо рисовать много тайлов сразу. Кстати, и Цива на snes тоже не умеет показывать произвольное место на карте, а только скроллит туда-сюда - возможно, тоже потому, что не может сразу всё нарисовать. Но потом я увидел какую-то фентези-стратегическую японщину от koei на Сеге, и там менюшки, скажем, рисуются/стираются сразу, хотя они в треть экрана где-то. То есть это я криворук. А какие новости? Несколько багов исправил и всё. Ещё немного посмотрел с shift+56, чем ИИ в оригинале занимается. Мне не то чтобы даже некогда, но я обнаружил, что занимаясь цивкой, я не занимаюсь более нужными вещами и мне очень трудно оторваться от неё. Надеюсь, выйду в отпуск и тогда немножко развернусь. Но и тогда скорее всего буду делать топ 7 цивилизаций, графики и реплей, постгейм, да прописать компу искать первую клетку для города, если он сразу не основал город, и вообще поведение сеттлеров компа. Но до полноценного ИИ всё равно будет далеко. Я рад, что хотсит всё-таки вполне рабочий (тем более, что эмуляторы Сеги поддерживают сетевую игру), вот не далее как сегодня сидя в задумчивости в чертогах занялся шизофренией (одна моя личность - Мао Цзэдун, а другая - Сталин) и немного потестировал, и выявил баг, но это правится за 10 секунд, а что-то новое писать - не отлипнуть потом. Да, хотсит ок, варвары занимаются своим варварским делом - ищут первого попавшегося врага. Правда, видно, как они ходят. Но правильное отображение ходов юнитов компа или полное отключение их показа далеко не в приоритете, так как и сейчас и в будущем мне будет полезно посмотреть, что юниты компа делают, а для этого достаточно нынешнего положения. Я вспоминаю, что сначала хотел выложить вообще когда ещё только юнитов научил ходить и драться. Даже городов не было. Думал, что и это будет забавно. И несколько месяцев прошло с такого состояния до публикации. Хорошо, что я до этого не додумался. |
| sadhedg:
Я потыкал отрисовку и осознал, что она медленная из-за вычислений, а не из-за того, что она происходит в процессе обновления экрана. Я не помню точных цифр, но возьмём скорость загрузки тайлов в процессе обновления экрана где-то в 100 тайлов/кадр. А у меня она около 50 тайлов/кадр, т.е. в 2 раза ниже. Отсюда вывод, что приблизительно 50% времени занимают вычисления - определение того, какие тайлы рисовать, а не сама загрузка тайлов, и даже если бы удалось поместить рисование в период, когда экран не обновляется, выигрыш был бы ничтожен. Если взять скорость не при обновлении экрана в 200 тайлов/кадр (опять же, я не помню точных цифр и не могу сейчас найти), то если половина времени уходит не на загрузку тайлов, а на вычисления, то выигрыш был бы не 50%, а только около 8%, кажется. Если бы картинка рисовалась бы с полной скоростью даже в период обновления экрана - всё равно это было бы раза в 2 быстрее, чем есть у меня сейчас и это было бы уже прилично. Так что я сегодня по возможности оптимизировал код определения того, какие тайлы рисовать на отображаемом куске карты, и если раньше карта рисовалась за 20-22 кадра, то сейчас за 15-17 кадров. Если бы ничего не вычислялось, это цифра должна была бы быть около 8-10 кадров даже при обновлении экрана. Сега рисует не настолько мееедлееено, это я такой. Новую версию пока не выкладываю, надо потестить. |
| MetalliC:
--- Цитата: sadhedg от 21 Август 2019, 18:37:08 ---Если бы картинка рисовалась бы с полной скоростью даже в период обновления экрана - всё равно это было бы раза в 2 быстрее, чем есть у меня сейчас и это было бы уже прилично. --- Конец цитаты --- откуда цифра "раза в 2" ? на сколько я помню из сеговских док - там что-то около аж в 10 раз разница |
| sadhedg:
--- Цитата: MetalliC от 21 Август 2019, 19:33:53 ---откуда цифра "раза в 2" ? на сколько я помню из сеговских док - там что-то около аж в 10 раз разница --- Конец цитаты --- Из моих крайне смутных воспоминаний того, что я читал на http://gendev.spritesmind.net. Я сегодня попытался погуглить, но что-то неудачно. Возможно, раз в 5? Как бы там ни было, удалось добиться обновления полностью открытой карты без дорог за 14-15 фреймов (ранее было 20-22), а полностью неизвестной карты - за 8 фреймов (ранее было где-то 18). Выложил обновлённый ром. |
| MetalliC:
--- Цитата: sadhedg от 21 Август 2019, 23:04:50 ---Из моих крайне смутных воспоминаний того, что я читал на http://gendev.spritesmind.net. Я сегодня попытался погуглить, но что-то неудачно. Возможно, раз в 5? --- Конец цитаты --- на-вскидку гуглится вот это https://wiki.megadrive.org/index.php?title=VDP_DMA#DMA_Transfer_capacity Memory to VRAM - Bytes per lines: During active scan : 16, During VBLANK : 167 то есть, доступ к VRAM не "несколько более тормозной" а "трындец какой тормозной" во время активного вывода изображения. |
| sadhedg:
К 1.7 добавлены: примитивная атака от ИИ ИИ захватывает пустые города основание городов ИИ (без стратегических точек - просто если поселенец оказался в хорошем месте) улучшение земли поселенцами ИИ работает более-менее примитивные правила изменения ставки налога-науки-роскоши для ИИ, и даже (очень примитивные) правила работы со "специалистами" юниты ИИ двигаются - случайным GoTo по континенту, или могут идти в стратегические точки (сам GoTo тоже надо исправлять, он очень примитивен) защитные юниты могут укрепляться, но пока почти никогда не снимают эту команду создаются стратегические точки атаки и защиты для юнитов в некоторых случаях, а также точка сбора караванов в город со строящимся чудом дипломат ИИ, придя в город, может покупать города, красть технологии и делать саботаж написан пока очень примитивный код для определения стратегий ИИ на континенты Пока даже на высшей сложности ИИ совершенно немощен - к веку 19 даже до железных дорог не добрался, дальше мне лень стало тестить тот ран. С добавлением стратегических точек друг с другом рубятся они уже довольно бодро. Думаю, пора добавлять дипломатию между ИИ (потом на основе этого кода будет и дипломатия с игроком). Для скипа хода компа пользуюсь ускорением в эмуляторе. Когда хочется посмотреть, что творится - отключаю ускорение. Есть ещё особый вид веселья - включить дебаг (X на первом экране), затем на своём ходе нажать MODE Z MODE - переключив свою цивилизацию под управление компьютера. Получаем автоигру (помню такую фичу в оригинальной Колонизации). Правда, отключить никак нельзя - надо бы это поправить. также (уже довольно давно, но раз уж я решил пост написать) несколько уменьшено время генерации карты. Ну и скорость рисования несколько получше, но всё равно весьма грязно это смотрится. А также багфиксы и поправки в приоритеты автоматического строительства в городах (они по-прежнему странные, но уже лучше, чем было). Ход ИИ по-прежнему "от его лица", добавлять нормальный вид я не спешу, т.к. для отладки удобно так, как есть. Далее планирую улучшить поведение юнитов, ещё добавлять стратегические точки, затем надо научить ИИ пользоваться транспортными и военными кораблями. И надо улучшить GoTo. Ещё планируется затирать при сообщениях только ту часть карты, где было сообщение. И не обновлять мини-карту в большинстве случаев при обновлении экрана. А при полном обновлении экрана, возможно, стоит сделать его затемнение, чтобы не было видно отрисовку. EDIT: добавил быстрое движение юнитов врага. Для этого нужно отключить enemy moves в настройках. Так даже без ускорения можно более-менее играть (с текущим немощным ИИ). |
| sadhedg:
В 1.8 реализована невидимость юнитов. Т.к. без отрисовки юнитов стало понятно, сколько на самом деле времени идёт сам расчёт хода компьютерного игрока - то было оптимизировано время раздумий комп. игрока: сокращено приблизительно в 2-2,5 раза, но всё равно идёт очень медленно. Попутно я сломал всю игру, но сейчас починил и выложил стабильную версию. EDIT: 1.8.3.0: только сейчас заметил, что формула подсчёта требуемой пищи для роста города была совершенно неверной - для человека (модификатор 10) было 10,30,60,100... вместо 20,30,40,50... Это исправлено. Правда, многие параметры ИИ уже подгонялись под медленный рост - надо смотреть, что получится теперь. Кроме того, добавлен модификатор -2 к полоске щитов и к количеству рядов пищи для ИИ после начала н.э. (так в оригинале). Что касается хода ИИ, то он пока занимает при обилии железных дорог и приличном количестве юнитов (пара сотен из возможного максимума 896 - без человека) более минуты (и это было с маленькими городами!). И это с тупым ИИ, у которого пока мало правил и который даже не умеет отправлять войска морем. Однако по сравнению с 1.8.0.0 это лучше в разы. |
| sadhedg:
EDIT: обновил версию до 1.9, основная особенность 1.9 по сравнению с 1.8 - комп. игрок теперь может перевозить юниты на другие континенты. Есть много багов с отрисовкой юнитов врага, потому что я тестирую в основном с включённой открытой картой и без игрока-человека. Но как только попробовал поиграть нормально - выявились разные мелкие проблемы с отображением юнитов противника. 5-6 ноября добавлено управление ИИ истребителями, бомбардировщиками и атомн. бомбами. Истребители и бомберы (пока?) не умеют передислоцироваться в другой город. Бомба работает как у игрока-человека - т.е. без читерства оригинала (где она вылетает из любого города и сразу телепортируется к цели). Если бомба не может долететь до цели - она передислоцируется в город, который ближе к цели. Тем не менее, условия для применения атомного оружия взяты из кода darkpanda, который в свою очередь основан на дизассемблере оригинала - таким образом атомная бомба у меня - это единственный юнит, поведение которого основано на оригинальном коде. 13 ноября: доделан функционал переговоров с ИИ. Нет графики некоторых лидеров и совсем нет анимации, но можно пользоваться. Первоначальный пост: Обновил файл с описанием управления. Добавки две: 1) если нажать B на городе, будут скрыты/показаны названия городов. 2) если нажать C после прочтения сообщения - управление цивилизацией игрока-человека вернётся игроку-человеку, если было отключено для автоигры. В хотсите теперь у игроков индивидуальные настройки. Например, если один из них предпочитает двигать юниты крестовиной, а другой - с подтверждением, это теперь легко устроить. ИИ к настоящему моменту уже не такой тугой, на высшей сложности более-менее регулярно может запустить корабль на Альфу в 20 веке. Но войска морем по-прежнему не перевозит (если только случайно) и живёт окукленно на стартовом континенте. [EDIT: в 1.9 ИИ наконец-то научился перевозить войска морем и колонизировать/захватывать другие острова, правда, пока у него не очень хорошо получается.] Вообще рекомендую выбирать высшую сложность - так ИИ представляет хоть какой-то интерес. Вероятно, на настоящий момент она соответствует где-то warlord'у оригинала. |
| TiberiyLTim:
Где свежую версию скачать? А то только 1.5 доступна. |
| Sharpnull:
--- Цитата: TiberiyLTim от 28 Ноябрь 2019, 16:32:12 ---Где свежую версию скачать? А то только 1.5 доступна. --- Конец цитаты --- Не смотрите на название, там версия 1.9 от 25.11.2019. Автор просто не хочет переименовывать файл, но это можно сделать и ссылка не испортится. |
| Навигация |
| Главная страница сообщений |
| Следующая страница |
| Предыдущая страница |