Comments 55
Сделайте скорее отполированную версию на андроид, у меня слюни текут, а с управлением ужс. В настройках что только не менял.
-3
Честно признаюсь, мне с андроидом довольно тяжело работать, нынешние планшетные игры далеко ушли от обычных пк-шных, и в плане интерфейса, и тем более в плане управления. Я добавил несколько кнопок, которые должны упростить игру на планшетах… да только, сколько не меняй спойлер на «девятке», феррари она не станет )))
+1
Спасибо вам за работу и описани. Тоже жду отпалированой версии, а пока купил оригинал на gog.com :) ностальгирую.
0
Ну вот придется скачать сегодня и поиграть
0
Скажите, а вот картинка, которая похожа на текстуру, это ведь не реальная текстура? Просто иллюстрация?
0
Все изображения взяты из ресурсов игры, и ворота и «покоцанные» ворота, которые накладываются поверх нормальных. Оригинальный размер текстур меньше, поэтому привел к размерам, удобным для отображения статье, иллюстрация с воротами и колесницей в игре работает, так как описано.
0
Отвечайте, пожалуйста, в подветках, а то тяжело определить к чему этот комментарий)
0
Да, я вроде нажал «ответить», а он почему то в корень сообщение поставил )))
0
Я вот про эту «текстуру» спросил: вижу, что кое-где прямоугольники тайлов накладываются на соседние, и даже изображения (деревья). Если это текстура, то как выбирается нужная область для тайла?
0
У меня такой вопрос. Вот мы имеем на экран 1000*500, на котором помещается 500 тайлов. Вы каждый кадр перерисовываете все тайлы?
+2
Нет конечно, именно «отрисовка» происходит для тайлов, которые попадают в viewport камеры, а обновление данных да, происходит для всех тайлов. Думаете стоит добавить описание этого алгоритма в статью???
+1
попадают в viewport камеры,
Ну это само собой, я потому и написал про «экран 1000*500». Вся карта, думаю, не 500 тайлов, а все 10000
Да, мне была интересно именно оптимизация изометрических игр.
+1
хм… попытаюсь попроще ответить, есть игровой «tick», событие, которое доставляется каждому объекту в игре, таких тиков в одной секунде реального должно быть около 30, чтобы игрок не заметил детерминированности игрового времени.
1. Большая нагрузка приходилась на алгоритм поиска пути, сначала использовал Беллмана, но он зацикливался на перекрестах и петлях, позже был введен A* для расчета перемещения по всей карте, Беллман остался для расчета путей обслуживающего персонала, так как из него можно вытащить информацию о всех проверенных машрутах. Предполагается, что позже он будет вынесен в отдельный поток — задержку в несколько мс на поиске игрок не заметит, но общая картинка будет более плавной.
2. Потом проседания начались при поиске подвижных объектов вокруг, они все были свалены в одном массиве и его перебор обходился дорого, это я обошел введением доп. карты, в которую перед каждым кадром записываются подвижные объекты по тайлам. Это требует времени при старте кадре, но практически убирает фризы при поиске.
3. Основная же нагрузка приходилась на загрузку и поиск текстур, каждый тик что-нибудь да меняется, это победили предварительной загрузкой и введением класса Picture, который реализует своеобразный shared surface, храня указатель на конкретный surface. Еще большего увеличения производительности удастся добиться введением текстурных атласов и сведением текстур анимации в одну.
Пока решено сделать упор на восстановление функционала. Вот, надеюсь я ответил на Ваш вопрос, если есть еще задавайте, постараюсь ответить.
1. Большая нагрузка приходилась на алгоритм поиска пути, сначала использовал Беллмана, но он зацикливался на перекрестах и петлях, позже был введен A* для расчета перемещения по всей карте, Беллман остался для расчета путей обслуживающего персонала, так как из него можно вытащить информацию о всех проверенных машрутах. Предполагается, что позже он будет вынесен в отдельный поток — задержку в несколько мс на поиске игрок не заметит, но общая картинка будет более плавной.
2. Потом проседания начались при поиске подвижных объектов вокруг, они все были свалены в одном массиве и его перебор обходился дорого, это я обошел введением доп. карты, в которую перед каждым кадром записываются подвижные объекты по тайлам. Это требует времени при старте кадре, но практически убирает фризы при поиске.
3. Основная же нагрузка приходилась на загрузку и поиск текстур, каждый тик что-нибудь да меняется, это победили предварительной загрузкой и введением класса Picture, который реализует своеобразный shared surface, храня указатель на конкретный surface. Еще большего увеличения производительности удастся добиться введением текстурных атласов и сведением текстур анимации в одну.
Пока решено сделать упор на восстановление функционала. Вот, надеюсь я ответил на Ваш вопрос, если есть еще задавайте, постараюсь ответить.
+2
Для примера, SpriteKit в iOS легко отрисовывает на 60 FPS ~1000 тайлов.
0
А линк на исходники не подкинете, чтобы посмотреть как они это реализовали???
0
легко отрисовывает на 60 FPS ~1000 тайлов.
GPU?
0
используется ли Quad-дерево для отображения карты?
0
Нет не использую, а как он тут может помочь???
0
Я предполагаю, что оно может решить две проблемы:
1) сортировка тайлов. Если всю карту загнать в квад-дерево, то потом меняя порядок отрисовки детишек изменится сортировка тайлов.
Поясню на примере. Возьмём картинку из статьи
Пусть на глазок дерево будет построено так, как прочерчены красные линии (для корневого элемента), и для top-left ребёнка — как зелёные.
Тогда следующий псевдокод отрисовки:
гарантирует, что первым отрисуется самый верхний тайл ромба, затем следующие два (порядок не важен). И так далее.
Если перетасовать строки — то можно получить изометрию под другим углом (при этом и тайлы для отрисовки должны быть соответствующими).
2) эффективное удаление скрытых объектов. Думаю, тут и так понятно.
Кстати, в связи с этим вспомнил одну вещь. В меню справа есть же стрелочки под картой? Они ведь поворачивают карту? Реализована ли подобная функциональность в римейке? Если да — то каким образом?
1) сортировка тайлов. Если всю карту загнать в квад-дерево, то потом меняя порядок отрисовки детишек изменится сортировка тайлов.
Поясню на примере. Возьмём картинку из статьи
Пусть на глазок дерево будет построено так, как прочерчены красные линии (для корневого элемента), и для top-left ребёнка — как зелёные.
Тогда следующий псевдокод отрисовки:
void QuadTree::render()
{
mTopLeft->render();
// порядок следующих двух строк не важен
mTopRight->render();
mBottomLeft->render();
mBottomRight->render();
}
гарантирует, что первым отрисуется самый верхний тайл ромба, затем следующие два (порядок не важен). И так далее.
Если перетасовать строки — то можно получить изометрию под другим углом (при этом и тайлы для отрисовки должны быть соответствующими).
2) эффективное удаление скрытых объектов. Думаю, тут и так понятно.
Кстати, в связи с этим вспомнил одну вещь. В меню справа есть же стрелочки под картой? Они ведь поворачивают карту? Реализована ли подобная функциональность в римейке? Если да — то каким образом?
0
карта в оригинале вертелась поворотом матрицы, у меня пока это не сделано…
0
А тайлы? Они ведь тоже должны меняться.
Я спрашиваю потому, что в статье не нашёл упоминания о том, что текстуры объектов есть для разных ракурсов. Возможно пропустил.
Я спрашиваю потому, что в статье не нашёл упоминания о том, что текстуры объектов есть для разных ракурсов. Возможно пропустил.
0
Вот уже вторую статью подряд меня мучает вопроос: почему «back», почему не «reverse»?
+3
Back — с использованием отладчика, декомпилятора, в общем исследование кода (будь то асмовский или приведенный с-шный)
Reverse — повторение логики игры на основе наблюдений, сажусь я играть в цезаря, строю фермы и вижу что тайлы пшеницы меняются в соответсвие с прогрессом производства и вношу это в ремейк.
В проекте в полной мере присутствуют оба направления, но конкретно в этих статьях 90% все таки back-инжиниринга, я сейчас практически не касаюсь логики, до которой не удалось добраться через IDA.
Reverse — повторение логики игры на основе наблюдений, сажусь я играть в цезаря, строю фермы и вижу что тайлы пшеницы меняются в соответсвие с прогрессом производства и вношу это в ремейк.
В проекте в полной мере присутствуют оба направления, но конкретно в этих статьях 90% все таки back-инжиниринга, я сейчас практически не касаюсь логики, до которой не удалось добраться через IDA.
+1
Чаще всего под 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.
0
― Я пришел извиниться.
― Так извиняйся.
― Это было извинение. К нему прилагается шампанское.
___________*______*____.___*____.
________________..__*____o
______________o___*__.____*
________________________
_______________(________)
_______________|____o___|
_______________|_o____o_|
_______________|___o____|
_______________|_o____o_|
_______________|_o__o___|
_______________|______o_|
_______________(_o______)
________________\___o__/
_________________\____/
__________________\__/
___________________||
___________________||
___________________||
___________________||
___________________||
___________________||___
_______________/___||___\
_______________\________/
-1
Было бы круто сделать в ремейке возможность поворачивать здания. Можно будет строить красивые кварталы, поворачивать домики входом к дороге.
0
Да, идея очень неплоха, еще на багтрекер писали, что можно разные по виду дома строить. Здесь есть несколько НО:
1. для объекта доступна только одна текстура
2. здания не имеют параметра вход
Использование похожих текстур подходит не только для домов, а для большинства объектов в игре, проблема в их создании )))
1. для объекта доступна только одна текстура
2. здания не имеют параметра вход
Использование похожих текстур подходит не только для домов, а для большинства объектов в игре, проблема в их создании )))
0
Я так понимаю, lightsgoout хочет по возможности «зеркалить» любое здание по горизонтали (FlipX), чтобы (исключительно визуально) поворачивать здания входом к дороге.
0
Попробовал завести. Вроде все взлетело, но фуллскрин упорно не применяется.
Заводил на Win7 на Intel HD.
Заводил на Win7 на Intel HD.
0
Вай… Молодцы. Но мне больше Фараон нравился.
0
Спасибо, может кто-то подхватит идею ))) Больше половины уже сделано, редактор ресурсов Pharaoh'a тоже практически дописан.
0
А у них разве не один и тот же движок? Думал они только самими спрайтами различаются
0
Сборка 1487. Nexus 4.
habrastorage.org/files/832/74e/1b6/83274e1b66214db69bb1cb91925e59a0.png
habrastorage.org/files/832/74e/1b6/83274e1b66214db69bb1cb91925e59a0.png
0
Спасибо, а то у меня некоторые сомнения были по поводу запуска на реальном железе, все таки эмулятор не все особенности учитывает
0
Баг или нет, но у меня не появляется экранная клавиатура, когда требуется написать своё имя. Я всегда там «Новый правитель».
По поводу FPS. Новая игра, чистая карта. FPS (его, кстати, можно отследить в левом верхнем углу) — от 18 до 20.
habrastorage.org/files/c5d/10f/453/c5d10f4535364d75ab3e8a9c30cd5213.png
По поводу FPS. Новая игра, чистая карта. FPS (его, кстати, можно отследить в левом верхнем углу) — от 18 до 20.
habrastorage.org/files/c5d/10f/453/c5d10f4535364d75ab3e8a9c30cd5213.png
0
«Да, на андроиде с клавой проблема есть, как починить пока не понял. На маках не работает мышь в оконном режиме» — понял.
Дополняю, что на Galaxy Tab 2 10.1 игра также работает. FPS 12-14.
Есть предложение. Например, чтобы избежать многократных повторений и сделать этот список более компактным:
Было: habrastorage.org/files/b9b/545/a09/b9b545a092b6404e8aa767b6d5d6d658.png
Стало: habrastorage.org/files/436/8bd/8e9/4368bd8e90884e319d85fc84c752ee35.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
0
Да, на андроиде с клавой проблема есть, как починить пока не понял. На маках не работает мышь в оконном режиме
0
На телефоне Самсунг Ноте 3
Build (b1941, v0.4 SDL2) и
Build (b1852, v0.3 SDL1.2) не запустился. Настройки можно поизменять — потом загорается логотип Сaesaria на черном фоне и вылетает.
В вин версию поиграл даже вторую миссию помучал — понастальгировал )
При постройке колодцы только каждый раз разные и в стиль не попадают.
А так по идее бы развить игру на пол шага вперёд от оригинала — перерисовать всю графику и сменить название на:
Царь
Дюк
Емперор
Князь
…
и продавать за 499 руб в стиме.
Build (b1941, v0.4 SDL2) и
Build (b1852, v0.3 SDL1.2) не запустился. Настройки можно поизменять — потом загорается логотип Сaesaria на черном фоне и вылетает.
В вин версию поиграл даже вторую миссию помучал — понастальгировал )
При постройке колодцы только каждый раз разные и в стиль не попадают.
А так по идее бы развить игру на пол шага вперёд от оригинала — перерисовать всю графику и сменить название на:
Царь
Дюк
Емперор
Князь
…
и продавать за 499 руб в стиме.
0
Да, колодцы это доработка, чем то надо было заполнить возможность рисовать разные текстуры для одного здания (это нужно было для разных ракурсов камеры)
0
Да я так и понял что просто потестить что то надо было.
Кстати фонтан еще во второй итерации какойто бледносерый и дергается вправо влево на один пиксель.
Кстати фонтан еще во второй итерации какойто бледносерый и дергается вправо влево на один пиксель.
0
Это первая версия замены стандартному фонтану, прислал @weereew, конечную не успел еще добавить в сборку, она более детализирована и стилизована
0
Как думаете если убрать упоминание про Цезаря и сделать сеттинг просто нейтральный, про управителя далеких волшебных(?) земель, перерисовать графику — то можно продавать игру как самостоятельную не боясь преследований от Активижн?
А если кто найдет геймплейные похожести и проведет параллели, то назвать это — духом старой школы к которому изначально стремились при разработке игры.
А если кто найдет геймплейные похожести и проведет параллели, то назвать это — духом старой школы к которому изначально стремились при разработке игры.
0
собственно сейчас такая цель и стоит, игр про рим достаточно, появление еще одной не сделает когото беднее, проблема в том что в «цивилизованном» мире не принято использовать чужие идеи вроде как ))) а геймплей никто не патентовал, названия исторические, история тоже общая (кампания на индигого собрала порядка 1000$ уже сейчас, т.е. гдето процентов 20 текстур я уже смогу переделать, а там может еще народ подтянется.
0
Sign up to leave a comment.
Reverse-инжиниринг Caesar III (часть 2, Рисование города)