Как стать автором
Обновить

Комментарии 57

Сделайте скорее отполированную версию на андроид, у меня слюни текут, а с управлением ужс. В настройках что только не менял.
В разделе Releases выложил сборку для андроида последней ревизии, у меня, к сожаления, нет сейчас возможности протестировать на реальном железе, только на эмуляторе. Если не трудно, отпишитесь о найденных ошибках в багтрекере.
Честно признаюсь, мне с андроидом довольно тяжело работать, нынешние планшетные игры далеко ушли от обычных пк-шных, и в плане интерфейса, и тем более в плане управления. Я добавил несколько кнопок, которые должны упростить игру на планшетах… да только, сколько не меняй спойлер на «девятке», феррари она не станет )))
Ну не скажите. Не «далеко ушли», а «заточены под другое управление», крупные контролы и прочие мультитачи.
Ну а если про сами игры говорить, то без слез это делать невозможно — все сплошь несложные платформеры, портированные с флеша казуалки, вагон тауэр дефенсов и т.д.
Спасибо вам за работу и описани. Тоже жду отпалированой версии, а пока купил оригинал на gog.com :) ностальгирую.
Скажите, а вот картинка, которая похожа на текстуру, это ведь не реальная текстура? Просто иллюстрация?
Все изображения взяты из ресурсов игры, и ворота и «покоцанные» ворота, которые накладываются поверх нормальных. Оригинальный размер текстур меньше, поэтому привел к размерам, удобным для отображения статье, иллюстрация с воротами и колесницей в игре работает, так как описано.
Отвечайте, пожалуйста, в подветках, а то тяжело определить к чему этот комментарий)
Да, я вроде нажал «ответить», а он почему то в корень сообщение поставил )))
Я вот про эту «текстуру» спросил: вижу, что кое-где прямоугольники тайлов накладываются на соседние, и даже изображения (деревья). Если это текстура, то как выбирается нужная область для тайла?
Это текстура, распарсенная на тайлы… через хекс редактор можно поиграться с параметрами движка( поставлена высота тайла 60 пикселей, изза этого вся картинка поплыла ), играть при этом невозможно, зато при разборке механики очень помогает. Тайлы рисуются слева направо, сверху внизу.
У меня такой вопрос. Вот мы имеем на экран 1000*500, на котором помещается 500 тайлов. Вы каждый кадр перерисовываете все тайлы?
Нет конечно, именно «отрисовка» происходит для тайлов, которые попадают в viewport камеры, а обновление данных да, происходит для всех тайлов. Думаете стоит добавить описание этого алгоритма в статью???
попадают в viewport камеры,

Ну это само собой, я потому и написал про «экран 1000*500». Вся карта, думаю, не 500 тайлов, а все 10000
Да, мне была интересно именно оптимизация изометрических игр.
хм… попытаюсь попроще ответить, есть игровой «tick», событие, которое доставляется каждому объекту в игре, таких тиков в одной секунде реального должно быть около 30, чтобы игрок не заметил детерминированности игрового времени.
1. Большая нагрузка приходилась на алгоритм поиска пути, сначала использовал Беллмана, но он зацикливался на перекрестах и петлях, позже был введен A* для расчета перемещения по всей карте, Беллман остался для расчета путей обслуживающего персонала, так как из него можно вытащить информацию о всех проверенных машрутах. Предполагается, что позже он будет вынесен в отдельный поток — задержку в несколько мс на поиске игрок не заметит, но общая картинка будет более плавной.
2. Потом проседания начались при поиске подвижных объектов вокруг, они все были свалены в одном массиве и его перебор обходился дорого, это я обошел введением доп. карты, в которую перед каждым кадром записываются подвижные объекты по тайлам. Это требует времени при старте кадре, но практически убирает фризы при поиске.
3. Основная же нагрузка приходилась на загрузку и поиск текстур, каждый тик что-нибудь да меняется, это победили предварительной загрузкой и введением класса Picture, который реализует своеобразный shared surface, храня указатель на конкретный surface. Еще большего увеличения производительности удастся добиться введением текстурных атласов и сведением текстур анимации в одну.

Пока решено сделать упор на восстановление функционала. Вот, надеюсь я ответил на Ваш вопрос, если есть еще задавайте, постараюсь ответить.
Очень интересный ответ, спасибо. А сама отрисовка, вы отрисовываете все тайлы каждый кадр? И в оригинальной игре так делалось?
Для примера, SpriteKit в iOS легко отрисовывает на 60 FPS ~1000 тайлов.
А линк на исходники не подкинете, чтобы посмотреть как они это реализовали???
Говорят, что оно как в Cocos2d, но исходников нет — это внутренний проект Apple.
легко отрисовывает на 60 FPS ~1000 тайлов.

GPU?
iPad Air.
Ну там отрисовка на видяхе, а мне интересно, как они добивались высокой скорости, отрисовывая эти тайлы на проце.
используется ли Quad-дерево для отображения карты?
Нет не использую, а как он тут может помочь???
Я предполагаю, что оно может решить две проблемы:
1) сортировка тайлов. Если всю карту загнать в квад-дерево, то потом меняя порядок отрисовки детишек изменится сортировка тайлов.

Поясню на примере. Возьмём картинку из статьи
image

Пусть на глазок дерево будет построено так, как прочерчены красные линии (для корневого элемента), и для top-left ребёнка — как зелёные.

Тогда следующий псевдокод отрисовки:
void QuadTree::render()
{
    mTopLeft->render();
    // порядок следующих двух строк не важен
    mTopRight->render();
    mBottomLeft->render();
    mBottomRight->render();
}


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

Если перетасовать строки — то можно получить изометрию под другим углом (при этом и тайлы для отрисовки должны быть соответствующими).

2) эффективное удаление скрытых объектов. Думаю, тут и так понятно.

Кстати, в связи с этим вспомнил одну вещь. В меню справа есть же стрелочки под картой? Они ведь поворачивают карту? Реализована ли подобная функциональность в римейке? Если да — то каким образом?
карта в оригинале вертелась поворотом матрицы, у меня пока это не сделано…
А тайлы? Они ведь тоже должны меняться.

Я спрашиваю потому, что в статье не нашёл упоминания о том, что текстуры объектов есть для разных ракурсов. Возможно пропустил.
Угу, текстуры для всех ракурсов одинаковые, исключение соствляют некоторые тайлы, например берег, подъев в гору… для них меняются ID изображений на ID +-1, поэтому так странно расположены в ресурсах...
Вот уже вторую статью подряд меня мучает вопроос: почему «back», почему не «reverse»?
Back — с использованием отладчика, декомпилятора, в общем исследование кода (будь то асмовский или приведенный с-шный)
Reverse — повторение логики игры на основе наблюдений, сажусь я играть в цезаря, строю фермы и вижу что тайлы пшеницы меняются в соответсвие с прогрессом производства и вношу это в ремейк.
В проекте в полной мере присутствуют оба направления, но конкретно в этих статьях 90% все таки back-инжиниринга, я сейчас практически не касаюсь логики, до которой не удалось добраться через IDA.
Чаще всего под reverse engineering понимают именно исследование «с использованием отладчика, декомпилятора», а термина «back engineering» до вашей предыдущей статьи я и вовсе не встречал.
Википедия со мной солидарна:
Reverse engineering is the process of discovering the technological principles of a device, object, or system through analysis of its structure, function, and operation.[1] It often involves disassembling something (… computer program ...)
Google тоже не особо знаком с «back engineering», по запросу «reverse engineering» — около 2 000 000 результатов, «back engineering» — чуть больше 48 000.
― Я пришел извиниться.
― Так извиняйся.
― Это было извинение. К нему прилагается шампанское.

___________*______*____.___*____.
________________..__*____o
______________o___*__.____*
________________________
_______________(________)
_______________|____o___|
_______________|_o____o_|
_______________|___o____|
_______________|_o____o_|
_______________|_o__o___|
_______________|______o_|
_______________(_o______)
________________\___o__/
_________________\____/
__________________\__/
___________________||
___________________||
___________________||
___________________||
___________________||
___________________||___
_______________/___||___\
_______________\________/
Название первой статьи пусть уж останется как было )))
Было бы круто сделать в ремейке возможность поворачивать здания. Можно будет строить красивые кварталы, поворачивать домики входом к дороге.
Да, идея очень неплоха, еще на багтрекер писали, что можно разные по виду дома строить. Здесь есть несколько НО:
1. для объекта доступна только одна текстура
2. здания не имеют параметра вход
Использование похожих текстур подходит не только для домов, а для большинства объектов в игре, проблема в их создании )))
Я так понимаю, lightsgoout хочет по возможности «зеркалить» любое здание по горизонтали (FlipX), чтобы (исключительно визуально) поворачивать здания входом к дороге.
Понял.
да сделать такое действительно просто ( в качестве эксперимента добавлю в билд ), город при этом будет смотреться менее однообразно.
Вай… Молодцы. Но мне больше Фараон нравился.
Спасибо, может кто-то подхватит идею ))) Больше половины уже сделано, редактор ресурсов Pharaoh'a тоже практически дописан.
А у них разве не один и тот же движок? Думал они только самими спрайтами различаются
Теоретически один(скорее эволюция), в Pharaoh'е и последующих играх серии стал использоваться другой формат текстур(была добавлена прозрачность ) + появилась высота тайлов. На мой взгляд была еще существенно переписана экономическая часть.
Спасибо, а то у меня некоторые сомнения были по поводу запуска на реальном железе, все таки эмулятор не все особенности учитывает
Баг или нет, но у меня не появляется экранная клавиатура, когда требуется написать своё имя. Я всегда там «Новый правитель».
По поводу FPS. Новая игра, чистая карта. FPS (его, кстати, можно отследить в левом верхнем углу) — от 18 до 20.
habrastorage.org/files/c5d/10f/453/c5d10f4535364d75ab3e8a9c30cd5213.png
«Да, на андроиде с клавой проблема есть, как починить пока не понял. На маках не работает мышь в оконном режиме» — понял.

Дополняю, что на Galaxy Tab 2 10.1 игра также работает. FPS 12-14.

Есть предложение. Например, чтобы избежать многократных повторений и сделать этот список более компактным:
Было: habrastorage.org/files/b9b/545/a09/b9b545a092b6404e8aa767b6d5d6d658.png
Стало: habrastorage.org/files/436/8bd/8e9/4368bd8e90884e319d85fc84c752ee35.png
Да, на андроиде с клавой проблема есть, как починить пока не понял. На маках не работает мышь в оконном режиме
На телефоне Самсунг Ноте 3
Build (b1941, v0.4 SDL2) и
Build (b1852, v0.3 SDL1.2) не запустился. Настройки можно поизменять — потом загорается логотип Сaesaria на черном фоне и вылетает.

В вин версию поиграл даже вторую миссию помучал — понастальгировал )
При постройке колодцы только каждый раз разные и в стиль не попадают.

А так по идее бы развить игру на пол шага вперёд от оригинала — перерисовать всю графику и сменить название на:
Царь
Дюк
Емперор
Князь

и продавать за 499 руб в стиме.
Да, колодцы это доработка, чем то надо было заполнить возможность рисовать разные текстуры для одного здания (это нужно было для разных ракурсов камеры)
Да я так и понял что просто потестить что то надо было.
Кстати фонтан еще во второй итерации какойто бледносерый и дергается вправо влево на один пиксель.
Это первая версия замены стандартному фонтану, прислал @weereew, конечную не успел еще добавить в сборку, она более детализирована и стилизована
Как думаете если убрать упоминание про Цезаря и сделать сеттинг просто нейтральный, про управителя далеких волшебных(?) земель, перерисовать графику — то можно продавать игру как самостоятельную не боясь преследований от Активижн?

А если кто найдет геймплейные похожести и проведет параллели, то назвать это — духом старой школы к которому изначально стремились при разработке игры.
собственно сейчас такая цель и стоит, игр про рим достаточно, появление еще одной не сделает когото беднее, проблема в том что в «цивилизованном» мире не принято использовать чужие идеи вроде как ))) а геймплей никто не патентовал, названия исторические, история тоже общая (кампания на индигого собрала порядка 1000$ уже сейчас, т.е. гдето процентов 20 текстур я уже смогу переделать, а там может еще народ подтянется.
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

Публикации

Истории