Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - sadhedg

Страницы: [1] 2 Далее
1
v 1.19
Логика экрана дипломатии переписана максимально близко к оригиналу. Лицевых анимаций и советников по-прежнему нет. Логика дипломатии ИИ/ИИ тоже переписана максимально близко к оригиналу.

2
Узнал о этом наикрутейшем проекте из ролика Майка. Сразу же скачал ром и залип на несколько часов. Обажал эту игру в детстве, именно первую часть. Второй так и не проникся а третья сильно тормозила на моём компе.

Единственное не могу понять, сохранятся то как (запускаю на новодельной сеге через флешкардридж).
Привет! В конце хода в левом нижнем углу экрана появляется иконка сохранения. Если перевести курсор на неё и нажать A, по идее должно произойти сохранение. Сначала там проверка - в save ram байт пишется/читается, и если не получилось, будет написано что-то вроде "сохранение невозможно". Почему сохранение только в конце хода - я пытался миниминизовать размер сейва, там нет запаса хода юнитов и вроде ещё чего-то. Хотя вроде бы сейчас думаю, что не было в таком ограничении необходимости.
EDIT: забыл добавить - если "конец хода" выключен в меню, надо его сначала включить, чтобы иметь возможность сохраниться - иначе это будет возможно только тогда, когда не было юнитов, которые ходили, или они все были в GoTo.

Мне приятно, что Вы считаете проект наикрутейшим:3 Там, конечно, свои проблемы, медленная и "грязная" отрисовка, дубовый ИИ и до сих пор не сделанный экран города (боюсь, что даже если я сумею его сделать, рисоваться он будет несколько секунд).

Я тоже почему-то больше всего люблю первую часть. Вторая как-то не зашла, а в третью не поиграл и до сих пор. А вот четвёртая понравилась, и играл в неё довольно много.

3
Как оказалось, начиная с версии 1.17.0.0 (1 февраля этого года), игра крэшилась во время генерации мира на BlastEm и некоторых других эмуляторах - и вероятно, на железе. Даже на карте Земли. А на fusion'е всё хорошо. Сегодня исправил. Причём на каком-то андроидном эмуляторе я эту проблему давно заметил, но не придал этому значения - подумал, проблема эмулятора. А blastem запустил только сегодня.

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

По поводу выкладывания сорцов было сделано 2 вещи: 1) где-то в прошлом году наконец-то игра разбита на отдельные .c модули (когда-то был единственный .c файл и куча .h с кодом к нему) и 2) потихоньку русские комментарии переводятся (в стиле from my heart). Но не уверен, что когда-нибудь в обозримом будущем это будет, только если заброшу - тогда отдам, чтобы хоть какой-то толк был. Я не жадный, просто я не программист и пишу криво.

4
Разработка игр / Игры от PSCD Games на Evercade!!!
« : 16 Ноябрь 2020, 16:10:44 »
Поздравляю. Мне нравится Evercade по своей задумке, но реализация не очень удачна, пусть и не очень плоха. Короче, я пока не решился это покупать.

Мне казалось, что на Evercade как раз хоть какой-то реальный выхлоп должен быть, в то время как MD карики - скорее баловство и хобби. А получается наоборот?

Там довольно забавный сборник, кстати. Одну хоумбрюшку там папа с дочкой делали, другую какой-то ребятёнок. Занятно.

5
К настоящему моменту (если я ничего не забыл) я могу сказать, что вся логика ИИ из оригинала разобрана. Поэтому я принял принципиальное решение в будущем отказаться от всего самописного кода для ИИ и заменить его на оригинальную логику. Причины:
1) чтобы это чувствовалось как настоящая оригинальная игра, а не что-то по мотивам
2) чтобы челлендж был выше

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

Кроме того, если заменять на оригинал только некоторые части поведения ИИ, они не стыкуются с остальными, поэтому надо заменять либо всё, либо ничего. Например, при оригинальной логике смены гос. строя ИИ у меня практически никогда не слезает с деспотизма, т.к. штампует слишком много юнитов по сравнению с оригиналом.

Так что скоро со строящимися в городах ИИ чудесами света, свободно разгуливающими  по карте караванами ИИ и прочими прелестями придётся распрощаться.

Приятным бонусом будет оригинальная логика GoTo, которая хоть и не очень умная, но всё-таки куда лучше, чем моя.

6
Про версию 1.10.6.3: не надо было менять fission на fusion. Это не опечатка.
Да это мной же придуманное из головы правило, так что скорее я хотел написать fusion, но уж не помню. Смысл такой - если ИИ знает термояд, он может купить АЭС, если у него много денег, т.к. в Civilizaiton 1 после исследования термояда  аварий на АЭС больше не бывает. Иметь АЭС без термояда чревато - может рвануть, поэтому ИИ покупать их в этом случае запрещено. Впрочем, в оригинале АЭС взрывается вообще только у человека.

Я всякую мелкую ерунду в changelog пишу, потому что он нужен прежде всего для меня - искать, где напортачил, если что.

Что касается новостей - экран военной победы технически готов, т.е. через него можно пройти и получить реплей/рейтинг/Зал Славы. Сегодня выложу новую версию. Однако на этом экране пока нет фона ("галереи") и портретов на ней, а также выражения лиц многих лидеров не готовы.

EDIT: 10 апреля выкладываю версию 1.11. Изменения:
1) логика наземных варваров приближена к оригинальной
2) максимальное число городов увеличено с 99 до 110
3) багфиксы и оптимизации, незначительные изменения правил

EDIT 2: 30 апреля наконец-то добавлен поиск города. 5-7 мая добавлен функционал Цивилопедии в меню (кроме пункта "Разное")

7
Выложил новую версию. Изменения:

1) Декомпилировал алгоритм спавна наземных варваров из оригинала, спавн наземных варваров добавлен в игру. Также по мелочи исправлены некоторые другие правила, если они расходились с оригиналом.

2) военные юниты ИИ снова более активно отплывают к другим континентам

3) некоторые другие правки поведения ИИ

4) багфиксы, оптимизации

EDIT: также по декомпилированному оригиналу исправлен алгоритм выбора города-цели для кораблей варваров. В дальнейшем предполагается разобрать всю рутину поведения варварских юнитов из оригинала и заменить самописное поведение варваров на оригинальное.

EDIT 2: 1) исправил сломанную в 1.10.0.0 из-за опечатки в коде анимацию лампочек на экране космич. победы. 2) декомпилировал логику юнитов варваров из оригинала (ссылку на пастебин найти можно на civfanatics). Когда будет возможность, перепишу самописную рутину варваров на близкую к оригинальному поведению.  Кроме того, теперь мне гораздо легче будет заняться оригинальной логикой юнитов полноценных цивилилизаций - имея перед глазами и оригинал, и разбор от darkpanda, я буду лучше понимать, что к чему. Мне почему-то казалось, что darkpanda многие вещи не идентифицировал, поэтому раньше не хотелось связываться с оригинальной логикой юнитов. Но теперь будет легче.

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

8
Команда "Go To" больше не работает?
Сломал, починил.

9
Всякие мелкие изменения.
1) Поправил диагональное перемещение курсора - больше не нужно строго одновременное нажатие для перемещения по диагонали, и больше нет бага с перемещением "ходом коня" вместо перемещения по диагонали.
2) При перемещении курсор больше не мигает. Мигает только если неподвижен.
3) ИИ при строительстве чего-либо в городе теперь не "сжигает" излишки щитов. Это читерское поведение из оригинала, я всё же добавил его, чтобы хоть как-то помочь моему ущербному ИИ.
4) поселенцы ИИ могут строить крепости (теоретически...) - играет роль кол-во защитных юнитов в клетке, защита местности и особенно что это перешеек (2 выхода к океану и более). При окончании строительства создаётся точка защиты.
5) Атомная бомба ИИ теперь гораздо менее склонна атаковать вражеский город на пути полёта, если этот город - не её цель.
6) юниты ИИ с бОльшим шансом идут в стратегические точки. Кроме того, если раньше некоторые юниты также могли идти к ближайшей вражеской столице на континенте - то теперь в половине этих случаев они пойдут к любому ближайшему вражескому городу, а не столице.
7) Багфиксы, мелкие оптимизации.

10
В книге Game Engine Black Book: Wolfenstein 3D написано. Используется Регистр сдвига с линейной обратной связью. Классная штука, в NES шум генерируется также. Прелесть в том, что все значения обходятся, как раз подходит для заполнения экрана, только нужно подобрать значения под размер экрана.
--------
Вот книга, страница 239.
--------
Конечно, нужен не обычный LFSR, а maximal-length Galois LFSR. Релизация в Wolf4SDL для больших разрешений.
Готовый пример на основе англ. википедии с заполнением массива 320x200:
Ноль там не заполнился, кажется его нужно специально обрабатывать.
Вах, ну это царский подгон. Надеюсь, когда-нибудь я с этим разберусь.

11
sadhedg, cлушой. А как ты сделал проявление картинки из рандом пикселей?
Это получается поверх плейна с уже готовой пикчей рисуется массив точек в векторном виде (put-pixel) ?
Если вы имеете в виду рисование заставки, то просто в оперативной памяти хранится, какие пиксели уже нарисованы, и с учётом этого формируется текущий тайл из того тайла, который в РОМе. При каждом добавлении пикселя весь тайл в видеопамяти обновляется. Скажу ещё более страшную вещь - в ROMе хранится последовательность рисования этих пикселей. Рандома нет, точки всегда в одних и тех же местах, не считая смещения. Сначала я запустил рандомное рисование и результат сохранил в sram. Затем добавил содержимое sram-файла в ROM. Быдлокод же. Уж очень мне хотелось сделать такое рисование, т.к. на snes оно есть (но там картинка поменьше). Как такой эффект был реализован на досе (а ведь там весь экран, а не какая-то часть) - для меня вообще загадка. Я попытался посмотреть исходники Вульфенштайна, где вроде тоже такое есть, да плюнул.

Вот рисуется эта загогулина почти 7 секунд (и у меня вряд ли может быть быстрее), но уж очень мне хочется, чтобы она была.

Сейчас мне пришло в голову, что правильней НЕ хранить в ОЗУ матрицу "где уже нарисовано", а вместо этого хранить всю картинку целиком. Тогда при рисовании каждого нового пикселя нужно будет добавить в тайл только его. Так и сделаю. UPD: Готово. Время рисования сократилось до ~5 секунд.

12
Понятно. Ну в принципе тоже верно.
От себя пожелания можно озвучить? (Их не обязательно реализовывать:)  )  Они связаны с адаптацией под консольное управление с джойстика в первую очередь.
1) Нужно залочивать курсор в пределах всплывающих менюшек юнитов/городов  до момента выбора или выхода из них.
2) Нужно залочивать курсор в пределах полей меню/карты  внутри города с возможностью переключения между ними.
3) Нужны экраны с анимацией (например основание города)
4) Нужно сгладить границы "тумана войны".
5) Не хватает "лестницы открытий"
6)  Нужно залочивать курсор в пределах мира/карты мира/игровых меню. Переключение между которыми осуществляеться кнопкой С.
7) Ну и вид города, адекватный ИИ и музыка конечно :)

Спасибо, про лок курсора интересный совет. С другой стороны, как сейчас - можно продолжать туда-сюда бегать по карте, чтобы лучше оценить ситуацию. Я подумаю.
Экраны с анимацией города - это и есть то, что я называю "вид города". На плане A планируется показ жителей/беспорядков/входящей армии/парада/поселенцев. Соответственно, план A будет скроллиться, если надо. На плане Б будет сам город. Сначала матрицу зданий надо просто создать, а потом уже нарисовать - а это-то самое трудное. Многослойность будет чисто софтварная. Ну и все здания, а также травка и небо будут в 16 цветов.
Дерева открытий в наглядном виде и в оригинале не было. Оно в мануале шло. А на СНЕС даже нельзя заранее посмотреть, что даст та или иная технология. Но цивилопедия как в оригинале будет - не деревом, но просто списком всех тех, зданий и т.п.. Это не в приоритете просто. Криво нарисованная книжка в меню - это оно и будет.

С туманом войны сложно. Всё-таки Сега не СНЕС, слоя всего 2. А запас спрайтов я бездарно потратил на цифры населения - без этого можно было обойтись, но так красивее (или надо было делать тайлы с пополам разрезанными цифрами). На стороне "черноты" закруглить ещё можно без особых проблем, а вот на стороне известной земли - только стирая дороги и т.п..

В 1.10.1:
1) исправлен баг - при спавне первого поселенца размер континента считался неправильно, и поселенцы спавнились в том числе на микро-островах. Теперь спавнятся как в оригинале.
2) изменены правила уплывания на другие континенты - теперь оно идёт более активно, даже если на текущем континенте у ИИ есть враги.
3) предположительно исправлен редкий баг при сохранении игры, который приводил к записи за границы массива юнитов (внешне могло проявляться в коррапте графики и исчезновении юнитов)
4) проценты для Civilization Rating теперь точно такие, как в оригинале

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

13
Заценил игру. Выглядит интересно и очень перспективно. Но слишком много работы еще предстоит проделать до играбельного состояния. А вообще цивилизация - очень непростая игра. И как по мне, нужно очень много знать и хоро уметь программировать под сегу, что бы поднять такой сложный проект.
Ну возможно те, кто много знает и хорошо программирует, вряд ли захочет заниматься таким? Имейте в виду, что как оно есть сейчас - так оно в сущности и останется. Тут уже много проделано. Из особо толстого остался вид города, адекватный ИИ и музыка.
Я согласен, что качественно мне эту игру не сделать. Однако я люблю Сегу и люблю Цивилизацию.

Обновил до 1.10. Старый sram сейв несовместим. Добавлен бит положения мирового океана на карте (только в синглплеере). Т.е. ИИ различает, где океан, а где озеро. Правило саботажа исправлено на оригинальное (50% саботаж, 50% уничтожение случайного здания или тоже саботаж, если зданий нет). Багфиксы и всякое по мелочи.

Сейчас планируется 1) изменить отображение юнитов ИИ так, чтобы оно происходило после фактического действия, а не до - чтобы не показывать юниты, скипающие ход 2) определять новую позицию юнита ИИ до начала анимации перемещения на новую клетку - чтобы при выходе из неизвестности юнит показывался 3) сделать более адекватное перемещение на другие континенты, особенно если на текущем есть враги 4) сделать экран военной победы.

14
Ogr, ага, не только при статичной, этот raster effect и в Сонике эффект воды добавляет. По нему он и известен.
--------
Прочитал, что там есть артефакты на железе в виде CRAM dots, так что если так делать, придётся на железе проверять и устранять.
Blastem эмулирует cram dots, не знаю, насколько точно. Я уже переносил обновление палитр "под экран", когда заметил такое дело. В Сонике, кстати, этот мусор спрятан анимацией воды. Да, всякие хитрости с hblank, hightlight/shadow и т.п. - явно выше моих умений и желания.

Поменял графику курсора и сделал мигание более частым.

15
Обычно, чтобы всегда было хорошо видно, нужно либо цвета инвертировать (редко), либо использовать чёрный с белым как в субтитрах у фильмов. Для примера возьмём экспертов в виде SimCity для NES:
(Ссылка на вложение) (Ссылка на вложение)
Чёрная тень и переливающаяся 4 цветами основная рамка - очень красиво получилось. UPD: Обновил гифки, там ещё есть размером 3x3 тайла, различие только в расстоянии.
--------
Но без анимации тоже будет хорошо видно. В SimCity это реализовано как 4 спрайта по 1 тайлу, а основной цвет постоянно меняется в палитре, так что если есть свободный цвет для мигания, будет легко реализовать.
--------
Посмотрел, у вас цветов впритык. Вы можете также использовать смену между двумя тайлами как сейчас, но уже для 4 спрайтов, дополнительной VRAM не понадобится. Вот для примера без анимации и с двумя оттенками серого:
(Ссылка на вложение)
--------
Обновил гифку выше, добавил анимацию "сжатия", она также влезает в тайл и нужно только во втором кадре нарисовать со смещением или просто менять координаты спрайтов через код, тогда вместо 8 тайлов будет использовано 4 в VRAM.
Надеюсь вы не решите делать мигание через полное убирание выделения как сейчас. Мне кажется это плохой идеей.

Вах, большое спасибо. Попробую реализовать что-то такое.

А я зачем зашёл-то. Наконец-то дошли руки до картинки открытия. В 16 цветах Сид выглядит печально, конечно, но ничего другого, кроме оригинальной картинки, мне в голову так и не пришло.

16
(Ссылка на вложение)

А, спасибо за идеи. Шириной в один пиксель рамка когда-то и была, но потом я увеличил до 2, чтобы лучше было видно. Эти крутящиеся штуки не очень хорошо видны же, но идея мне нравится. Пока я подумал, что возможно стоит попробовать сделать мигание более частым. Белый цвет хотя и плохо кое-где виден, но в большинстве случаев виден хорошо и всё-таки это лучший вариант (если оставлять его одноцветным и без анимации). Если без мигания - то возможно, стоит сделать с крутящейся анимацией, как на картинке, но шириной в 2 пикселя, как сейчас.

Ещё я подумал по поводу неудобной стартовой позиции 0,0 в боковой панели - я попробовал оставлять позицию боковой панели там же, где она была, а не обнулять - но мне так не понравилось, только путает.

Сейчас меня больше интересует ИИ, экран военной победы, лицевая анимация лидеров (может быть, и советников им добавлю - но максимум 2, а не 4), нормальный GoTo. Снова сижу с shift+56 в оригинале. Значительно поднял приоритет строительства амбара (а также и водопровода при населении 10), и ИИ установил новый рекорд на карте Земли (emperor diff.) - открыл ж/д в 440 году и одержал космическую победу в 1856.

17
А пусть курсор не мигает. Иначе часто трудно понять где он находится. Вертикально выставленные кнопки регуляции расходов на науку и прочее лучше расставить горизонтально, с их цифрами прямо под ними (а эти числа могут стать трёхзначными?). При переключении на боковую панель курсор появляется слишком высоко- там, где он почти никогда не нужен (пусть будет хотя бы на один квадрат ниже). Мигающая надпись "конец хода" рядом с кнопкой сохранения не объясняет игроку что тот должен сделать. Лучше пусть будет немигающая "press A or Start for next Turn" если поместится. А кнопку сохранения лучше вообще переместить с самого низа ну например поближе к опциям.

Спасибо за отзыв. Мне полезно поглядеть на всю эту штуку со стороны, у меня-то глаз замылился. Но интерфейс - это то, что было сделано первым делом и я совсем не хочу его менять. И я не нашёл в описанном достаточно серьёзных проблем, чтобы мне что-то делать. Когда я помру и открою исходник, будете делать как хотите, но пока ничем помочь не могу.

Курсор мигает как раз потому, чтобы было видно, где он находится. То, что он плохо заметен - проблема сама по себе, но вряд ли она будет исправлена. Я не великий геймдизайнер, а лишь разраб-любитель. Вертикальные кнопки регуляции имхо находятся в общей гармонии с вертикальным расположением панели. Эти числа могут быть от 0 до 10 (10 в сумме) - шаг в 10%. Курсор появляется на мини-карте - я решил, что она наиболее востребована. К тому же мотание позиции туда-сюда происходит имхо довольно быстро и у меня у самого не вызывает раздражения. Распределение налогов и отчёты нужны по-моему реже. Тем более распределение налогов дублируется на X, Y, Z. Не совсем интуитивное управление не только в мигающей надписи, и я не думаю, что такой мелочью можно поправить дело. Это игра с довольно разнообразными механиками, управление никак не может быть 100% интуитивным. К таким вещам прилагался мануал. Да даже к Марио прилагался мануал. Тем не менее, я считаю, что управление достаточно хорошее, чтобы его можно было освоить методом тыка, если игрок раньше играл в Цив. Ну - сколько кнопок на контроллере? Ну наверно игрок поняв, что A - это подтверждение, попробует тыкнуть в мигающую надпись. Либо попробует нажать START, как на особо важную кнопку, так сказать. Сохранение по-моему - наименее востребованная функция. Я сам сохраняюсь только когда заканчиваю сессию, и ты так делай.

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

Ещё раз спасибо за отзыв, мне полезно знать, как эта штуковина воспринимается со стороны. Ко многим вещам я так привык, что уже не замечаю, плохи они или хороши.

18
Запустил игру на железе и был приятно удивлен проделанной работе. Очень хорошо смотрится и играется. Жаль что пока без музыки.
Спасибо за тест на железе!

EDIT: добавлен показ топа-7 цивилизаций время от времени.

На правах оффтопа: мегадрайв это фигня, когда есть Excel: https://www.youtube.com/watch?v=PzETBRcr_i8

19
Не смотрите на название, там версия 1.9 от 25.11.2019. Автор просто не хочет переименовывать файл, но это можно сделать и ссылка не испортится.
Спасибо, переименовал. Не обращал на это внимания.

Изменения к 1.9.4:
1) ИИ теперь может совершать внезапное нападение (на юнит или на пустой город - но никогда на чужую пустую территорию)
2) исправлен баг с исчезновением юнитов при загрузке
3) исправлены баги с отрисовкой видимых юнитов врага (возможно не все)
4) исправлен баг - неправильный подсчёт агрессии при переговорах ИИ и человека (не обновлялся номер цивилизации, с которой говорит ИИ)
5)  исправлен графический баг на экране переговоров после получения технологии, если включена цивилопедия
6) при атаке на город у города устанавливается специальный флаг, который влияет на смену производства в автостроительстве. В частности, если защитников 0 или 1, город с этим флагом может выбрать только строительство юнитов.
7) при атаке бомбардировщика на город устанавливается спец. флаг, в города с этим флагом может передислоцироваться истребитель, и вероятность производства истребителя в таком городе выше. Флаг снимается,  когда в городе появляется истребитель.
8) если у города нет защитников и он строит что-то кроме юнита, дворца или казарм - автостроительство меняется
9) бомбардировщики ИИ могут передислоцироваться в другой город
10) ИИ худо-бедно может пользоваться авианосцами
11) передвижение атомных бомб ИИ стало невидимым (без вкл. читов) - чтобы соответствовать описанию цивилопедии
12) различные изменения для более адекватной экспансии ИИ на другие континенты и вообще более адекватного поведения.
Изменения в 1.9.5:
1) сделан Зал Славы, график развития (в общих чертах), экран рейтинга. Игру можно продолжать после конца истории/прибытия космического корабля.
Изменения к 1.9.7:
1) в общих чертах сделан реплей
2) ещё изменения в ИИ для более адекватной экспансии и поведения

Полагаю, мой подопечный изменился от "полного идиота" до "просто идиота". В частности, наверное, GoTo так и останется в печальном положении - не представляю, как его улучшить: нужно либо каждый раз пересчитывать путь (что долго), либо хранить для каждого юнита путь (а это очень много памяти). Так и будет жадный алго по 1 клеточке. Но это для ИИ, а вот для человека обязательно надо будет заменить на A*, время хода человека не критично.

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

20
Игры на различных компьютерах / NEC PC-98x1
« : 22 Октябрь 2019, 02:23:08 »
Однако спасибо, Гугл с Яндексом измучил, искал pc-98 версию первой цивилизации.  Уж и каной писал, и торренты искал - всё впустую. Наконец поисковик выдал мне эту страничку. И на https://archive.org/download/pc-98_compilation искомое нашлось.

Интересуют меня там советники в японском стиле и дворец в нём же. Очевидно, эта версия - неизвестное мне ранее промежуточное звено между dos версией и snes версией. Но на snes дворца нет, а советники-японцы хоть и есть, но графика там совсем не как у дос-версии - так что это не особо интересно. А тут эти советники в той же манере нарисованы, что в оригинале, надо бы потом сделать графический мод для civdos. Хотя сама по себе pc-98 версия кривая и косая.

21
EDIT: обновил версию до 1.9, основная особенность 1.9 по сравнению с 1.8 - комп. игрок теперь может перевозить юниты на другие континенты. Есть много багов с отрисовкой юнитов врага, потому что я тестирую в основном с включённой открытой картой и без игрока-человека. Но как только попробовал поиграть нормально - выявились разные мелкие проблемы с отображением юнитов противника.

5-6 ноября добавлено управление ИИ истребителями, бомбардировщиками и атомн. бомбами. Истребители и бомберы (пока?) не умеют передислоцироваться в другой город. Бомба работает как у игрока-человека - т.е. без читерства оригинала (где она вылетает из любого города и сразу телепортируется к цели). Если бомба не может долететь до цели - она передислоцируется в город, который ближе к цели. Тем не менее, условия для применения атомного оружия взяты из кода darkpanda, который в свою очередь основан на дизассемблере оригинала - таким образом атомная бомба у меня - это единственный юнит, поведение которого основано на оригинальном коде.

13 ноября: доделан функционал переговоров с ИИ. Нет графики некоторых лидеров и совсем нет анимации, но можно пользоваться.

Первоначальный пост:
Обновил файл с описанием управления. Добавки две: 1) если нажать B на городе, будут скрыты/показаны названия городов. 2) если нажать C после прочтения сообщения - управление цивилизацией игрока-человека вернётся игроку-человеку, если было отключено для автоигры.

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

ИИ к настоящему моменту уже не такой тугой, на высшей сложности более-менее регулярно может запустить корабль на Альфу в 20 веке. Но войска морем по-прежнему не перевозит (если только случайно) и живёт окукленно на стартовом континенте. [EDIT: в 1.9 ИИ наконец-то научился перевозить войска морем и колонизировать/захватывать другие острова, правда, пока у него не очень хорошо получается.] Вообще рекомендую выбирать высшую сложность - так ИИ представляет хоть какой-то интерес. Вероятно, на настоящий момент она соответствует где-то warlord'у оригинала.

22
В 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 это лучше в разы.

23
К 1.7 добавлены:
примитивная атака от ИИ
ИИ захватывает пустые города
основание городов ИИ (без стратегических точек - просто если поселенец оказался в хорошем месте)
улучшение земли поселенцами ИИ работает более-менее
примитивные правила изменения ставки налога-науки-роскоши для ИИ, и даже (очень примитивные) правила работы со "специалистами"
юниты ИИ двигаются - случайным GoTo по континенту, или могут идти в стратегические точки (сам GoTo тоже надо исправлять, он очень примитивен)
защитные юниты могут укрепляться, но пока почти никогда не снимают эту команду
создаются стратегические точки атаки и защиты для юнитов в некоторых случаях, а также точка сбора караванов в город со строящимся чудом
дипломат ИИ, придя в город, может покупать города, красть технологии и делать саботаж
написан пока очень примитивный код для определения стратегий ИИ на континенты

Пока даже на высшей сложности ИИ совершенно немощен - к веку 19 даже до железных дорог не добрался, дальше мне лень стало тестить тот ран. С добавлением стратегических точек друг с другом рубятся они уже довольно бодро. Думаю, пора добавлять дипломатию между ИИ (потом на основе этого кода будет и дипломатия с игроком). Для скипа хода компа пользуюсь ускорением в эмуляторе. Когда хочется посмотреть, что творится - отключаю ускорение. Есть ещё особый вид веселья - включить дебаг (X на первом экране), затем на своём ходе нажать MODE Z MODE - переключив свою цивилизацию под управление компьютера. Получаем автоигру (помню такую фичу в оригинальной Колонизации). Правда, отключить никак нельзя - надо бы это поправить.

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

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

Ход ИИ по-прежнему "от его лица", добавлять нормальный вид я не спешу, т.к. для отладки удобно так, как есть.

Далее планирую улучшить поведение юнитов, ещё добавлять стратегические точки, затем надо научить ИИ пользоваться транспортными и военными кораблями. И надо улучшить GoTo. Ещё планируется затирать при сообщениях только ту часть карты, где было сообщение. И не обновлять мини-карту в большинстве случаев при обновлении экрана. А при полном обновлении экрана, возможно, стоит сделать его затемнение, чтобы не было видно отрисовку.

EDIT: добавил быстрое движение юнитов врага. Для этого нужно отключить enemy moves в настройках. Так даже без ускорения можно более-менее играть (с текущим немощным ИИ).

24
откуда цифра "раза в 2" ?
на сколько я помню из сеговских док - там что-то около аж в 10 раз разница
Из моих крайне смутных воспоминаний того, что я читал на http://gendev.spritesmind.net. Я сегодня попытался погуглить, но что-то неудачно. Возможно, раз в 5?

Как бы там ни было, удалось добиться обновления полностью открытой карты без дорог за 14-15 фреймов (ранее было 20-22), а полностью неизвестной карты - за 8 фреймов (ранее было где-то 18). Выложил обновлённый ром.

25
Я потыкал отрисовку и осознал, что она медленная из-за вычислений, а не из-за того, что она происходит в процессе обновления экрана. Я не помню точных цифр, но возьмём скорость загрузки тайлов в процессе обновления экрана где-то в 100 тайлов/кадр. А у меня она около 50 тайлов/кадр, т.е. в 2 раза ниже. Отсюда вывод, что приблизительно 50% времени занимают вычисления - определение того, какие тайлы рисовать, а не сама загрузка тайлов, и даже если бы удалось поместить рисование в период, когда экран не обновляется, выигрыш был бы ничтожен. Если взять скорость не при обновлении экрана в 200 тайлов/кадр (опять же, я не помню точных цифр и не могу сейчас найти), то если половина времени уходит не на загрузку тайлов, а на вычисления, то выигрыш был бы не 50%, а только около 8%, кажется.

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

Так что я сегодня по возможности оптимизировал код определения того, какие тайлы рисовать на  отображаемом куске карты, и если раньше карта рисовалась за 20-22 кадра, то сейчас за 15-17 кадров. Если бы ничего не вычислялось, это цифра должна была бы быть около 8-10 кадров даже при обновлении экрана. Сега рисует не настолько мееедлееено, это я такой. Новую версию пока не выкладываю, надо потестить.

26
Какие новости по проекту? О нём хорошо отзываются забугорные ретрогеймеры - http://www.indieretronews.com/2019/08/civgen-ambitious-project-to-bring.html
Нежданчик. С одной стороны приятно, а с другой стыдно за сырость этого дела. Я нашёл и новость, на которую ссылается англоязычная новость, и там пишут, что я исходник выложу. Я такого не писал же. Хотя сейчас подумал - когда-нибудь выложу, как бы там всё плохо ни было. Потому что самому мне до ума не довести это. Но сколько смогу - сам сделаю. Я даже музон хочу из краденых vgm для теста добавить, но это очень сильно не в приоритете.

Медленную отрисовку менюшек/графики я вообще вряд ли исправлю, например - я же плохо понимаю, как там железо работает. Читал, что что-то там около 90 тайлов в кадр отрисовка при обновлении экрана. Сначала я утешал себя тем, что та же Дюна только скроллит экран, хотя и быстро, а не телепортирует вид с места на место (как её же ПК-версия или warcraft какой-нибудь), поэтому ей не надо рисовать много тайлов сразу. Кстати, и Цива на snes тоже не умеет показывать произвольное место на карте, а только скроллит туда-сюда - возможно, тоже потому, что не может сразу всё нарисовать. Но потом я увидел какую-то фентези-стратегическую японщину от koei на Сеге, и там менюшки, скажем, рисуются/стираются сразу, хотя они в треть экрана где-то. То есть это я криворук.

А какие новости? Несколько багов исправил и всё. Ещё немного посмотрел с shift+56, чем ИИ в оригинале занимается. Мне не то чтобы даже некогда, но я обнаружил, что занимаясь цивкой, я не занимаюсь более нужными вещами и мне очень трудно оторваться от неё. Надеюсь, выйду в отпуск и тогда немножко развернусь. Но и тогда скорее всего буду делать топ 7 цивилизаций, графики и реплей, постгейм, да прописать компу искать первую клетку для города, если он сразу не основал город, и вообще поведение сеттлеров компа. Но до полноценного ИИ всё равно будет далеко. Я рад, что хотсит всё-таки вполне рабочий (тем более, что эмуляторы Сеги поддерживают сетевую игру), вот не далее как сегодня сидя в задумчивости в чертогах занялся шизофренией (одна моя личность - Мао Цзэдун, а другая - Сталин) и немного потестировал, и выявил баг, но это правится за 10 секунд, а что-то новое писать - не отлипнуть потом. Да, хотсит ок, варвары занимаются своим варварским делом - ищут первого попавшегося врага. Правда, видно, как они ходят. Но правильное отображение ходов юнитов компа или полное отключение  их показа далеко не в приоритете, так как и сейчас и в будущем мне будет полезно посмотреть, что юниты компа делают, а для этого достаточно нынешнего положения.

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

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, которые можно обойти, но я решил, что пришла пора заняться сжатием.

28
Так, вести с полей.
Я попытался запихнуть анимацию волн из основного цикла в вертикальное прерывание и обычно всё ок, но при определённых обстоятельствах иногда происходит очень странный баг, ещё и разный на разных эмуляторах, так что я от этой идеи (пока?) отказался. Я предпочитаю понимать, что происходит. А с тем багом я не понимаю. Может быть, запихну в обработчик прерывания только изменение таймера для смены палитры, а саму смену палитры по-прежнему буду делать в основном цикле.

Во-вторых, для меня большим сюрпризом стало то, что BlastEm эмулирует cram bug. Наверное, после той демки от GameHut. Я был уверен, что ни один эмулятор его не эмулирует. Ну и оказалось, что мусор от cram bug у меня весьма сильный. Надо будет с этим разбираться. Как-то поместить мусор в низ экрана.

29
Обновил ромик.
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 клеток от города игрока-человека, все юниты варваров в этой клетке становятся известны игроку-человеку, а если не отключены ходы врагов - показывается сообщение о высадке варваров и карта центрируется на них. Этот пункт не тестирован.

30
ОП-пост обновлён. Оставил ссылку на старую версию и добавил ссылку на новую.
Изменения в 1.5.
1) добавлена кнопка просмотра гарнизона на экране города (кнопка BUY стала меньше). Можно снимать команды с юнитов из этого меню.
2) отключено управление человеком для всех цивилизаций, кроме выбранной в сингле или двух выбранных в хотсите. Пока ход комп. игрока происходит "от его лица". Юниты комп. игрока пока практически ничего не делают. Отключены и изменены на правильные многие сообщения на ходе компа (но далеко не все). Например, если у игрока есть посольство, он будет получать сообщения при открытии компом технологии и т.п.. В городах компа всегда auto build. Комп устанавливает работников вокруг своих городов по умолчанию каждый ход (а также снимает специалистов и ставит их на поля, если недостаточно пищи). Комп каждый ход подсчитывает своё желание основать новый город (эта переменная учитывается и для человека, если он поставит auto build в городе).
3) комп. игрок сам выбирает технологию на изучение, а также технологию при захвате города (меню не появляется)
4) кнопка Z в режиме редактора теперь меняет управление текущей цивилизацией с компьютера на человека и обратно. Нажатие Y на самом первом экране позволяет управлять крестовиной юнитами компьютера, которые не выбрали команду (скипали ход)
5) старые сейвы теперь не совместимы с игрой (хотя нового добавлено мало, но весь сейв смещён на 10 байт - Зал Славы находится в начале, и он не влезет в 100 байт, нужно 110 - я неправильно подсчитал, когда оставил под него место).
6) многочисленные багфиксы, улучшения и изменения, немного изменён алгоритм auto build
7) в rom добавлены некоторые тексты, в основном подсказки. Пока подсказки не используются. Некоторая графика в rom'е  сжата.

Страницы: [1] 2 Далее