ja to myślę tak - większe mody funkcjonowałyby jako tak zwane pak-i (zestaw danych, skryptów i konfiguracji zapisane w jednym archiwum np. wysoka kompresja 7z [format niezbyt standardowy ale nowa technologia kompresji - LZMA]) każdy pak miałby własny metatekstowy plik konfiguracyjny plus konfiguracja modułów do wł/wył (w głównym pliku konfiguracyjnym pak-u byłyby wypisane m.in nazwy plików konfiguracyjnych modułów), oczywiście byłaby kontrola md5 pliku już spakowanego
serwer gry by wybierał z których paków korzystać i przesyłałby prosty ini z zaznaczonymi opcjami wybranymi w menu na serwerze(w tym wartości które są zaznaczone jako liczba do wyboru), gdy klient ma paka, lub najpierw by go wysłała gdy klient nie ma [byłaby też opcja blokowania przesyłania paków, wtedy klient niezgodny nie mógłby się podłączyć], a grafiki można by było wybierać na poziomie plików konfiguracyjnych paka (a nie ‘twarde’ ścieżki)
każdy pak byłby oznakowany w następujący sposób “data-twórca-dodatkowy_tekst.pak” (np. “20080930-majaczek-miasto_elvenville.pak”) , a rodzaj kompresji sprawdzałby moduł pakera (może jako polecenie zewnętrzne)
w ten sposób do dogadania się, w najmniej konfliktowym przypadku, wystarczyłoby podać identyfikator paka, sumę md5, i prosty ini z opcjami co w większości przypadków oznaczyłaby transmisje kilku kilobajtów lub kilkuset bajtów.
Zauważcie że w ten sposób można w jendym dodatku zamieścić kilkadziesiąt opcji do wyboru i parenaście do tuningu (np. czy czary/jednostki mają być dostrojone do homm3sod czy na przykład na 75% czy 120%), a na dodatek możnaby mieć zainstalowane różne dodatki modyfikujące te same dane i w czasie rozgrywki wybrać z którego się korzysta, bez ciągłego nadpisywania np. defów w tym samym katalogu
w odróżnieniu od “twardych” ścieżek można by było ustawić identyfikatory danych, z których każdemu można by przypisać w pliku konfiguracyjnym inną twardą ścieżkę
np. mon123=data\smoki\majaczek\turkusowy*
można by też zrobić wielowarstwowe tłumaczenie symboli np. smokdia=gamepath("\jakas_sciezka*") a gdzie indziej mon238=gamepath("\smokdia")
w skryptach najlepiej dane opisywać przez identyfikatory, tak by można było zmienić jurysdykcję skryptu w odpowiednim pliku konfiguracyjnym lub innym skrypcie
rozwiązanie paka jest o tyle dobre że wystarczy policzyć sumę kontrolną jednego średniego pliku i tylko raz na grę, a nie sprawdzać za każdym razem setki małych plików
można by przez symbole dokonywać łączenie elementów jednego obiektu z listą zmian w drugim np. mon238=gamepath.merge("\smokdia","\inna_sciezka\stat*")
pomysł by taki można poszerzać i poszerzać, ale chyba poruszyłem kilka z najważniejszych jego cech