Суть заключается в том, что с помощью программы игрок подключается к серверу созданным игроком (мультиплеер) и качает с сервера все его установленные моды (проверку осуществляем с помощью проверки хеш-сумм всех файлов)
Реализация
В общем, программа будет работать примерно так:
Самый лучший вариант мне кажется работа при помощи гамеспу (а не WinAPI) Сама по себе программа вынесена в отдельное приложение со своим интерфейсом и со своим лаунчером, с возможностью работы с протоколом гамеспу, программа может работать как сервер, так и как клиент
Сервер работает следующим образом: При создание сервера, сканируется папка воромса - проверяется все файлы на модификацию (с помощью мд5), после чего создает архив, в который записывается, все модифицированные файлы и создается список со всеми измененными файлами. Так же программа в ник (имя сервера после создании игры) вписывает специальный символ (например, символ табуляции, это делается для более простого поиска сервера в программе) И еще программа отсылает на сервер в пхп скрипт - ip адрес и ник И еще программа открывает порт на компьютере
Клиент работает следующим образом: При создание сервера, сканируется папка воромса - проверяется все файлы на модификацию (с помощью мд5), после чего создает архив, в который записывается, все модифицированные файлы и создается список со всеми измененными файлами. Потом в таблице предоставляются все сервера со списком модифицированных файлов После выбора сервера посылается запрос пхп скрипту с именем сервера, пхп скрипт возвращает ай пи адрес На этот ip адрес посылается запрос на скачку файла мода, и пока скачивается мод, ставится все стандартные файлы (для более быстрого процесса восстанавливаем файлы, которые находятся в списке, полученное при запуске программа) После того как будет скачен архив, он «устанавливается» и запускается игра с параметром для подключения к серверу
Предлагаю еще добавить в программу наборы избранных модов, которые качаются не с игрока а с самого сервера. Их также можно закачать себе не подключаясь к чужой игре а просто через встроенное меню.. и еще можно добавить систему автоматического обновления избранных модов до последней версии.
Смысл жизни в том, чтобы жизнь имела смысл... (firsacho 2005) Рай придуман, чтобы не страшно было умирать. Ад придуман, чтобы не страшно было жить. (firsacho 2007) Мир делиться на два типа людей: Бездарные трудоголики и Талантливые лентяи. (firsacho 2008)
охохо, это было бы реально круто, но возникнет проблема: что если моды стоят не у создателя серва?
------------------------------------------------------------- And when the sun is shining, there is justice for all... And all the people will remember that funny "war". War, which was so dark in the beginning and so shiny in the end. But now it's over. Over for all. ------------------------------------------------------------- Я сюда захожу только из-за Game Project. И да, я больше не модер, поэтому не надо писать мне тонны лс с просьбами кого-либо забанить. И еще: черви меня не интересуют. Совсем. Поэтому, даже не напоминайте мне про них - вызовете большой БУГУРТ.
охохо, это было бы реально круто, но возникнет проблема: что если моды стоят не у создателя серва?
прога является менеджером модов - отключает и подключает те которые нужны для игры на сервере. Но надо чтоб моды устанавливались через прогу. Видимо так.
Смысл жизни в том, чтобы жизнь имела смысл... (firsacho 2005) Рай придуман, чтобы не страшно было умирать. Ад придуман, чтобы не страшно было жить. (firsacho 2007) Мир делиться на два типа людей: Бездарные трудоголики и Талантливые лентяи. (firsacho 2008)
Зачем тебе нужен перехват захода на сервер? Оптимально отдельный загрузчик перед стартом игры.
Юзверь запускает загрузчик, видит список модов, видит текущий выбранный мод. При этом он может переключиться на другой мод.
При этом есть некий глобальный сервер, к примеру example.com, на нём находтся php скрипт, который возвращает xml-ку со списком модов и где их можно загрузить + краткое описание + md5 + возможно, список зеркал. Ещё можно возвращать список подобных ему сайтов, где можно раздобыть такой вот список.
md5 логично использовать для каждого файла и папки, ибо большинство модов затрагивают пару-тройку файлов и нет смысла лопатить всю папку.
На чём собираешься писать? Если на C#, плюсах или java - могу немного помочь, если будет желание. Сразу делай хранилище либо в SVN, либо в git, или не буду помогать ;)
уж извени, я ужасно выражаю свои мысли) хотя твоя идея тоже красива)
Quote
md5 логично использовать для каждого файла и папки
я так и хотел)
что бы кодить на си ++ надо его сначало выучить более нормально, а я его только начал изучать, ты мне можешь помогать с помощью длл библиотеки, которую можно очень просто подключить если конечно знать какие у нее есть функции и параметры к этим функциям
а зачем что-то проверять? программа будет знать какой мод сейчас установлен и какие файлы она заменила, это быстрей, чем какой-то там md5 из файлов считывать.
md5 не считывается из файла, а считается по файлу - это контрольная сумма. Это позволит контролировать, не изменён ли файл пользователем. Если у двух файлов совпадают md5, то с огромной вероятностью совпадает и их содержимое.
Мои идеи:
Для загрузчика модов важно будет иметь начальный список файлов (от начльной установки червей) с их md5. При запуске мода все файлы не в этом моде должны вернуться в начальное состояние, для этого надо сравнить их md5 суммы с начальными. Затем все md5 файлов мода надо сравнить с установленными файлами и заменить, если надо.
В архиве должны лежать изменённые файлы в нужных папочках, а также отдельный текстовый файл с их списком и с md5 для каждого файла + информация для показа пользователю.
К тому же можно, чтобы мод имел список зависимостей (то есть список других модов, которые должны быть установлены). У этих модов не должно быть общих файлов.
Создавать только пакеты модов не очень будет хорошо) Пример: на сервере пользователь поставил множество своих модов, которые некуда не выкладывал, но эти моды весьма интересны
Я хотел сделать так что бы программа сверяла все файлы со списком с мд5 полученные из стандартных файлов, если хотя бы один файл он его запаковывает в архив вместе с "конфигурационным" файлом и когда игрок подключается к его серверу он скачивает его мод и "устанавливает" его
Один минус придется каждый раз восстанавливать стандартный набор файлов
Ты хочешь, чтобы игроки автоматом обменивались файлами для совместной игры?
Типа такой сценарий: игрок запускает ланчер, видит список игроков + возможно чат дальше 3 варианта: Запуск стандартной игры (стандартный набор файлов). Запуск своего мода (то есть свой набор файлов). Скачать мод какого-либо игрока из списка игроков.
Название игры, комнату, количество игроков, версию игры и IP адрес хостера.
Вот это как раз то, что нужно. Мы можем определить хостера, а прога поможет определить какие у него стоят моды (если у него тоже будет запущена эта прога). Остается скачать эти моды с хостера или с сервера.
Смысл жизни в том, чтобы жизнь имела смысл... (firsacho 2005) Рай придуман, чтобы не страшно было умирать. Ад придуман, чтобы не страшно было жить. (firsacho 2007) Мир делиться на два типа людей: Бездарные трудоголики и Талантливые лентяи. (firsacho 2008)
Самый лучший вариант мне кажется работа при помощи гамеспу (а не WinAPI) Сама по себе программа вынесена в отдельное приложение со своим интерфейсом и со своим лаунчером, с возможностью работы с протоколом гамеспу, программа может работать как сервер, так и как клиент
Сервер работает следующим образом: При создание сервера, сканируется папка воромса - проверяется все файлы на модификацию (с помощью мд5), после чего создает архив, в который записывается, все модифицированные файлы и создается список со всеми измененными файлами. Так же программа в ник (имя сервера после создании игры) вписывает специальный символ (например, символ табуляции, это делается для более простого поиска сервера в программе) И еще программа отсылает на сервер в пхп скрипт - ip адрес и ник И еще программа открывает порт на компьютере
Клиент работает следующим образом: При создание сервера, сканируется папка воромса - проверяется все файлы на модификацию (с помощью мд5), после чего создает архив, в который записывается, все модифицированные файлы и создается список со всеми измененными файлами. Потом в таблице предоставляются все сервера со списком модифицированных файлов После выбора сервера посылается запрос пхп скрипту с именем сервера, пхп скрипт возвращает ай пи адрес На этот ip адрес посылается запрос на скачку файла мода, и пока скачивается мод, ставится все стандартные файлы (для более быстрого процесса восстанавливаем файлы, которые находятся в списке, полученное при запуске программа) После того как будет скачен архив, он «устанавливается» и запускается игра с параметром для подключения к серверу