Использование высокоуровневых инструментов разработки в ботостроении
Привет, ребята.
Спорный вопрос: использование высокоуровневых инструментов разработки при создании ботов и других ковырялок памяти для игр, которые по сути трудно назвать полноценным программным обеспечением. Дело в том, что кто-то придерживается чуть ли не энтерпрайз-подходов со строгим использованием codestyle, особых правил именования переменных и т.д., а кто-то предпочитает совершенно ни о чём не париться и пишет код так, словно смотрит на него первый и последний раз.
Используете ли вы объектно-ориентированное программирование в своих ботах и другом софте, предназначенном для ковыряния в памяти приложений? И насколько активно?
Инструменты рефакторинга и анализа? Помогут упростить исходный код и сделают работу с ним эффективнее. Или они неприменимы ввиду обширного использования ассемблерных вставок?
Что на счёт использования систем контроля версий или репозиториев типа Git? Может, кто-то заморачивался до уровня развёртывания GitLab, чтобы иметь удалённые репозитории, но скрыть исходники от публики?
Автоматизированное тестирование, тест-кейсы? Непрерывная сборка?
В обсуждении хочется послушать аргументы ЗА и ПРОТИВ описанных выше вещей, а также по поводу других подходов и инструментов. Если вы не занимаетесь разработкой подобного софта или ботов, можете указать как поступали бы на месте разработчиков.
________________
Принимаю реквесты на статьи, программы. Всё будет запилено в лучшем виде :3
Последний раз редактировалось BritishColonist; 09.11.2017 в 18:12.
Причина: я глупенький
Re: Использование высокоуровневых инструментов разработки в ботостроении
Все слишком индивидуально что бы давать четкий ответ.
Если ваш проект - это вывод никнейма и хп чисто побаловаться, понятное дело что можно вообще ни о чем не запариваться.
Для больших проектов(скажем свыше 1000 строк кода) ИМХО без ООП будет сложновато в плане реализации нового функционала и поддержки старого, гораздо удобнее работать когда все лежит по полкам и все четко и ясно)
По поводу git-а:
- видно всю историю разработки
- если много где нужно обновлять бота, можно сделать скрипт автообновления
- винт с проектом может сдохнуть, на гите код в сохранности
- хорошая привычка приучать себя к системам контроля версий, если вы начинающий разработчик и в планах пойди работать в приличную компанию
Сам использую сильную среду разработки + ООП + подумываю о git
Re: Использование высокоуровневых инструментов разработки в ботостроении
я очень к этому стремлюсь. однако, другие разработчики по под пв уже даааавно все это используют: и ООП и гитхаб (видел примерно 5-6 разных репозиториев).
один из ярких примеров: FreePVP))) думаю, не зазорно подрочить разок на его код
еще: https://zhyk.ru/forum/showthread.php?t=1104750
Re: Использование высокоуровневых инструментов разработки в ботостроении
Спасибо за ответы.
Гит вроде как платный, если делать приватные репозитории? Не хочется, чтобы любой мог обойти встроенную защиту в случае коммерческих разработок, просто удалив её код из исходников ( = не хочется, чтобы код был просто в паблик репах).
А что скажете на счёт разработки согласно методологий типа agile, RAD, V и т.д.?
Может есть какие-то особенные подходы к разработке подобного ПО? Это же что-то типа модуля или плагина для готового софта: дополняет функционал другого ПО, но разрабатывается отдельно. Как вообще их правильно тестировать? Я, например, по тыще раз перекомпиливаю свои либы при каждом желании что-то посмотреть; это влечёт очередной запуск клиента Perfect World (а он стартует, скажем так, не за секунду), присоединение либ, 'успешный' краш клиента в случае ошибки и дальнейшие попытки что-то исправить.
+Интересно, как вы оборачиваете методы классов игры - просто вызываете ассемблерными вставками или реально описываете typedef для __thiscall? Если второе, то метод-обёртку вроде как уже не выйдет запихнуть в свой класс, и тогда начнёт страдать сторона ООП вашей программы.
________________
Принимаю реквесты на статьи, программы. Всё будет запилено в лучшем виде :3
Последний раз редактировалось BritishColonist; 10.11.2017 в 10:38.
Причина: добавил вопрос
Re: Использование высокоуровневых инструментов разработки в ботостроении
Цитата:
Привет, ребята.
И тебе привет, дружище.
Цитата:
Спорный вопрос: использование высокоуровневых инструментов разработки при создании ботов и других ковырялок памяти для игр, которые по сути трудно назвать полноценным программным обеспечением. Дело в том, что кто-то придерживается чуть ли не энтерпрайз-подходов со строгим использованием codestyle, особых правил именования переменных и т.д., а кто-то предпочитает совершенно ни о чём не париться и пишет код так, словно смотрит на него первый и последний раз.
Фреймворки - наше всё. Перед написанием чего-либо пишу красивые врапперы поверх костылей (инжектов, например). Если проект серьезный, то код должен быть читаемым, расширяемым и понятным. Если же это тулза на 1 использование, то можно не заморачиваться.
Цитата:
Используете ли вы объектно-ориентированное программирование в своих ботах и другом софте, предназначенном для ковыряния в памяти приложений? И насколько активно?
ООП просто создано для использования в ботах. Взять PW - в нём очень активно используются принципы ООП, а бот-то чем хуже? Мой ответ - да, очень активно использую. Не во всех проектах, конечно, но в ботах точно.
Про ковыряние в памяти приложений сложно сказать - посмотри какие-нибудь открытые фреймворки для работы с памятью. [Ссылки могут видеть только зарегистрированные пользователи. ], например. ООП можно притянуть за уши, но это не нужно, имхо.
Цитата:
Инструменты рефакторинга и анализа? Помогут упростить исходный код и сделают работу с ним эффективнее.
Инструмент рефакторинга = IDE. Юзаю VS (win) / Clion (*nix). Удобная IDE - залог успешной работы.
По анализу - периодически прогоняю свои проекты PVS-студией для поиска ошибок. Плюс в фоне работает та же IDE/clang-tidy. Тут опять же привязка к языку идёт.
Цитата:
Или они неприменимы ввиду обширного использования ассемблерных вставок?
Зачем нужны ассемблерные вставки, если можно написать какой-нибудь красивый фреймворк и радоваться? А вообще, сам давным давно использую [Ссылки могут видеть только зарегистрированные пользователи. ] - очень мощная вещь, полностью заменяющая работу с ассемблерными вставками.
Цитата:
Что на счёт использования систем контроля версий или репозиториев типа Git? Может, кто-то заморачивался до уровня развёртывания GitLab, чтобы иметь удалённые репозитории, но скрыть исходники от публики?
Система контроля версий - must have. Юзай бесплатный bitbucket и будет тебе счастье. А у студентов есть халявный GitHub.
Не дорос я ещё до этого, но это точно в плюс пойдёт
Добавлено через 7 минут
Цитата:
+Интересно, как вы оборачиваете методы классов игры - просто вызываете ассемблерными вставками или реально описываете typedef для __thiscall? Если второе, то метод-обёртку вроде как уже не выйдет запихнуть в свой класс, и тогда начнёт страдать сторона ООП вашей программы.
CECGameRun* gamerun = ...; // откуда-то получили
gamerun->GetNameByID(1024); // получили имя объекта c ID = 1024
Добавлено через 12 минут
Цитата:
Может есть какие-то особенные подходы к разработке подобного ПО? Это же что-то типа модуля или плагина для готового софта: дополняет функционал другого ПО, но разрабатывается отдельно. Как вообще их правильно тестировать? Я, например, по тыще раз перекомпиливаю свои либы при каждом желании что-то посмотреть; это влечёт очередной запуск клиента Perfect World (а он стартует, скажем так, не за секунду), присоединение либ, 'успешный' краш клиента в случае ошибки и дальнейшие попытки что-то исправить.
Могу посоветовать только использовать хороший отладчик, чтобы быстрее выяснять причины крашей. Других средств не знаю, тоже ломаю не одно окно клиента во время разработок.
________________
Больше не занимаюсь читами, ушёл в серверную часть. Новый ник - int 3.
P.S. Но я всё такой же добрый модератор раздела PW.
Последний раз редактировалось Smertig; 13.11.2017 в 11:25.
Причина: Добавлено сообщение