Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Работа для программиста > Фриланс
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.04.2020, 19:57   #1
Navlib_lib
Новичок
Джуниор
 
Регистрация: 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
Вложения
Тип файла: zip Kingpin_SDK_121 (2).zip (1.54 Мб, 3 просмотров)
Navlib_lib вне форума Ответить с цитированием
Старый 26.04.2020, 08:33   #2
Алексей1153
фрилансер
Форумчанин
 
Регистрация: 11.10.2019
Сообщений: 966
По умолчанию

Navlib_lib, чистый Си - совершенно не подходит для больших проектов. Их (проекты) невозможно модифицировать. Для начала нужно собраться с духом и перевести проект на C++14, тогда половина всего починится сама по себе, а объём кода сократится раз в 20. Появится возможность комфортной модификации

Естественно, бесплатно возиться никто не будет, а энтузиастов с опытом найти трудно

Графикой напомнило DeusEx

"бой" по данному ролику напомнил Doom2 - мужик бьёт качка свёрнутой в трубку газетой, пока тот гасит из дробовика (и побеждает) :D
Алексей1153 вне форума Ответить с цитированием
Старый 26.04.2020, 21:06   #3
Navlib_lib
Новичок
Джуниор
 
Регистрация: 02.02.2020
Сообщений: 0
По умолчанию

Алексей1153, Ну, по крайней мере, у одного получилось расширить разработчиковский предел до 10000. Значит, задача не такая железобетонная. Переводить всё на С++14 не нужно, ибо я делаю мод не только для себя, но и для своего сообщества, где тоже есть люди, которых вполне устраивает текущий вид игры с С.

Бесплатно и не прошу. Вы попробуете повозиться именно с С? Все файлы предоставлю.
Navlib_lib вне форума Ответить с цитированием
Старый 26.04.2020, 21:32   #4
Алексей1153
фрилансер
Форумчанин
 
Регистрация: 11.10.2019
Сообщений: 966
По умолчанию

Цитата:
Сообщение от Navlib_lib Посмотреть сообщение
Значит, задача не такая железобетонная
я и не говорю, что это невозможно. Были бы время и мотивация

Цитата:
Сообщение от Navlib_lib Посмотреть сообщение
Вы попробуете повозиться именно с С
нет, спасибо, у меня нет столько свободного времени и мазохизма

Кстати, прямо сидеть и переводить с Си на C++ нет нужды - текущая программа на Си должна скомпилироваться под C++14, совместимость осталась.

И вот когда требуется решить подобную задачу по починке чужого кода (в котором сторонний человек, понятно, вообще нечего не знает), в C++ возможен следующий подход: переделываемый объект инкапсулируется. Делается попытка компиляции. Это действие тянет наружу все-все зависимости. Далее эти зависимости чинятся. После чего настройка объекта становится намного проще
Алексей1153 вне форума Ответить с цитированием
Старый 26.04.2020, 22:12   #5
m0rg0t
Пользователь
 
Регистрация: 19.07.2011
Сообщений: 14
По умолчанию

Цитата:
Сообщение от Алексей1153 Посмотреть сообщение
Для начала нужно собраться с духом и перевести проект на C++14, тогда половина всего починится сама по себе
Каким интересно образом , волшебством чтоли? Или плюсы панацея? Более запутанного языка сложно найти во всей вселенной. Си прост и лаконичен.
m0rg0t вне форума Ответить с цитированием
Старый 26.04.2020, 22:37   #6
Desc
Участник клуба
 
Аватар для Desc
 
Регистрация: 21.11.2007
Сообщений: 1,063
По умолчанию

Проект опенсорц, или краденая фишка?
I am not a wizard, I am just learning.
Desc вне форума Ответить с цитированием
Старый 26.04.2020, 22:41   #7
Алексей1153
фрилансер
Форумчанин
 
Регистрация: 11.10.2019
Сообщений: 966
По умолчанию

Цитата:
Сообщение от m0rg0t Посмотреть сообщение
Более запутанного языка сложно найти во всей вселенной. Си прост и лаконичен.
не нужно чушь говорить. Не используй ту часть языка, которая тебя запутывает и всё. Либо наконец-то прочитай, как эта часть работает и обрети новые возможности
Алексей1153 вне форума Ответить с цитированием
Старый 26.04.2020, 22:53   #8
Navlib_lib
Новичок
Джуниор
 
Регистрация: 02.02.2020
Сообщений: 0
По умолчанию

Цитата:
Сообщение от Desc Посмотреть сообщение
Проект опенсорц, или краденая фишка?
Не совсем понял, о чём речь, но если под "опенсорц" подразумевается открытый исходный код, то от игры имеется SDK, выпущенный самими разработчиками. Если решение моей задачи находится в ковырянии тех .c и .o файлах, то никаких нарушений, думаю, нет. Если же придётся раскапывать тот .lib, от которого разработчики исходники не выложили, то, наверное, это уже не очень "опен"...
Navlib_lib вне форума Ответить с цитированием
Старый 26.04.2020, 22:55   #9
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,551
По умолчанию

А о чем тут обсуждение? Раздел Фриланс - связывайтесь с автором темы или оставляйте свои контакты. Далее уже обсуждайте ТЗ и размер оплаты в личной переписке...
Arigato вне форума Ответить с цитированием
Старый 26.04.2020, 23:10   #10
Desc
Участник клуба
 
Аватар для Desc
 
Регистрация: 21.11.2007
Сообщений: 1,063
По умолчанию

Цитата:
Сообщение от Navlib_lib Посмотреть сообщение
о чём речь, но если под "опенсорц" подразумевается открытый исходный код
Верно, вопрос стоял именно в открытости проекта.

P. S.
Arigato, если проект не опен, какой смысл обмениваться контактами?
I am not a wizard, I am just learning.

Последний раз редактировалось Desc; 26.04.2020 в 23:13. Причина: Добавил P. S.
Desc вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Загружает файл, грузит 200-300 байт, бросает и идёт к след. файлу. почему? Человек_Борща Работа с сетью в Delphi 4 10.08.2010 11:06