|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
25.04.2020, 19:57 | #1 |
Новичок
Джуниор
Регистрация: 02.02.2020
Сообщений: 0
|
Kingpin: Life of Crime бросает вызов всем!
Делаю своеобразный перезалив, но уже с более полной информацией и новыми данными с целью найти новый поток специалистов и сдвинуться с мёртвого пункта прогресса, до которого я уже добрался.
Прошлые темы: https://www.cyberforum.ru/low-level/thread2578541.html https://www.programmersforum.ru/show...74#post1808574 Есть одна древняя убер-игра, написанная на С, - https://www.youtube.com/watch?v=5OqYD40TflY&t=6s Я делаю для неё карты, моддинг, в общем. Все NPC, которые есть в одиночной игре перемещаются по карте по определённым навигационным меткам. Такая метка называется "node". Если ты их по карте не расставишь, боты не смогут ориентироваться в пространстве и будут жёстко тупить. Поэтому лучше покрыть ими всю поверхность, по которой можешь ходить сам. Делается это через консольные команды. Просто вводишь и бегаешь, а игра делит пространство на определённые клетки, где 4 клетки = 1 node. Ты бегаешь, создаётся .nav file в корне игры и всё - после этого NPC тебя достанут, где хочешь. Инструкцию, как их расставлять, я нашёл здесь - https://www.kingpin.info/?p=setting-...ion-in-kingpin Проблема в том, что разработчики сделали для nodes лимит - 695, не больше. Мне нужно расширить это число, ибо карта у меня большая, а резать её абсолютно не вариант. Расширить, например, до 10000, исключая при этом дальнейшие вылеты, баги, тормоза и т.д., что может сказаться по факту влезания в игровой код. Так сказать, заставить игру работать так же чётко и ровно, как она это делает в своей изначальной сборке разработчиками. Что имеем: SDK в виде .c и .h файлов, где эти 695 есть, но их изменение ни на что не влияет. Там, кстати, строка "#define max_nodes 700", а не 695 почему-то, но да ладно. Navlib.lib - статическая(как я понимаю) библиотека в самом SDK, которая используется при его компиляции. Скорее всего, в нём тоже есть какая-то константа, которая и ставит ограничения на количество nodes, но исходников от неё нет. Всю папку исходников прикрепляю к этому сообщению. Я уже пробовал открывать его через Hex Editor и мудрить с константами, удавалось число меток можно увеличить до 730, но игра постоянно вылетает тогда. Также открывал через IDA, там в коде есть конкретная строчка с "> 694" и ниже printf с сообщением о "max_nodes reached", если достигаются те 695. Была идея всё декомпилировать\реверсировать, исправить 695 на нечто большее не через Hex, где непонятно, то ли это вообще место в коде правится, а через сам код и компилировать обратно, проверив, получится ли расширить число nodes без каких-либо проблем. В итоге нашёлся человек, который сумел, экспериментируя с .lib файлом, расширить число nodes до 10000. Это хорошие новости. Плохие же в том, что при обычных определённых консольных командах(постоянно) и обычной беготне (изредка) игра рушится, чего не происходит при этих же командах и самом игровом процессе с оригинальными файлами. Это наводит на то что, может, и реверс не нужен, может есть какой-то обходной путь для моей задачи. Нэо, который это сделал, пока решает технические вопросы со своей техникой, поэтому прогресс пока зашёл в тупик и неизвестно выйдет ли он из него. Поэтому, если кому-то это интересно, можем договориться о цене и наконец добить эту игрушку. На самом деле, вещей, которые, я бы в ней исправил, хватает, но этот момент - основной, поэтому в перспективе можно работать с игрой долгое время. Моя почта - fpfhtyrj@mail.ru |
26.04.2020, 08:33 | #2 |
фрилансер
Участник клуба
Регистрация: 11.10.2019
Сообщений: 1,010
|
Navlib_lib, чистый Си - совершенно не подходит для больших проектов. Их (проекты) невозможно модифицировать. Для начала нужно собраться с духом и перевести проект на C++14, тогда половина всего починится сама по себе, а объём кода сократится раз в 20. Появится возможность комфортной модификации
Естественно, бесплатно возиться никто не будет, а энтузиастов с опытом найти трудно Графикой напомнило DeusEx "бой" по данному ролику напомнил Doom2 - мужик бьёт качка свёрнутой в трубку газетой, пока тот гасит из дробовика (и побеждает) :D |
26.04.2020, 21:06 | #3 |
Новичок
Джуниор
Регистрация: 02.02.2020
Сообщений: 0
|
Алексей1153, Ну, по крайней мере, у одного получилось расширить разработчиковский предел до 10000. Значит, задача не такая железобетонная. Переводить всё на С++14 не нужно, ибо я делаю мод не только для себя, но и для своего сообщества, где тоже есть люди, которых вполне устраивает текущий вид игры с С.
Бесплатно и не прошу. Вы попробуете повозиться именно с С? Все файлы предоставлю. |
26.04.2020, 21:32 | #4 |
фрилансер
Участник клуба
Регистрация: 11.10.2019
Сообщений: 1,010
|
я и не говорю, что это невозможно. Были бы время и мотивация
нет, спасибо, у меня нет столько свободного времени и мазохизма Кстати, прямо сидеть и переводить с Си на C++ нет нужды - текущая программа на Си должна скомпилироваться под C++14, совместимость осталась. И вот когда требуется решить подобную задачу по починке чужого кода (в котором сторонний человек, понятно, вообще нечего не знает), в C++ возможен следующий подход: переделываемый объект инкапсулируется. Делается попытка компиляции. Это действие тянет наружу все-все зависимости. Далее эти зависимости чинятся. После чего настройка объекта становится намного проще |
26.04.2020, 22:12 | #5 |
Пользователь
Регистрация: 19.07.2011
Сообщений: 14
|
|
26.04.2020, 22:37 | #6 |
Участник клуба
Регистрация: 21.11.2007
Сообщений: 1,063
|
Проект опенсорц, или краденая фишка?
I am not a wizard, I am just learning.
|
26.04.2020, 22:41 | #7 |
фрилансер
Участник клуба
Регистрация: 11.10.2019
Сообщений: 1,010
|
не нужно чушь говорить. Не используй ту часть языка, которая тебя запутывает и всё. Либо наконец-то прочитай, как эта часть работает и обрети новые возможности
|
26.04.2020, 22:53 | #8 |
Новичок
Джуниор
Регистрация: 02.02.2020
Сообщений: 0
|
Не совсем понял, о чём речь, но если под "опенсорц" подразумевается открытый исходный код, то от игры имеется SDK, выпущенный самими разработчиками. Если решение моей задачи находится в ковырянии тех .c и .o файлах, то никаких нарушений, думаю, нет. Если же придётся раскапывать тот .lib, от которого разработчики исходники не выложили, то, наверное, это уже не очень "опен"...
|
26.04.2020, 22:55 | #9 |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,648
|
А о чем тут обсуждение? Раздел Фриланс - связывайтесь с автором темы или оставляйте свои контакты. Далее уже обсуждайте ТЗ и размер оплаты в личной переписке...
E-Mail: arigato.freelance@gmail.com
|
26.04.2020, 23:10 | #10 | |
Участник клуба
Регистрация: 21.11.2007
Сообщений: 1,063
|
Цитата:
P. S. Arigato, если проект не опен, какой смысл обмениваться контактами?
I am not a wizard, I am just learning.
Последний раз редактировалось Desc; 26.04.2020 в 23:13. Причина: Добавил P. S. |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Загружает файл, грузит 200-300 байт, бросает и идёт к след. файлу. почему? | Человек_Борща | Работа с сетью в Delphi | 4 | 10.08.2010 11:06 |