Symulator EU07 (i nie tylko) > Na warsztacie
Pliki poprawek do scenerii (dla instalatora)
Ra:
Zacząłem robić testy komunikacji z serwerem plików dla mojego programu. W prostych przypadkach braku plików w scenerii będą one pobierane z serwera. (Wyszukiwanie w innych katalogach będzie dla zaawansowanych.)
I tu mnie naszedł taki pomysł, że na serwerze można by zamieszczać pliki poprawek do scenerii. W swojej krótkiej karierze MaSzynowej sam opracowałem już kilka poprawek. Problem z tymi poprawkami jest taki, że teraz każdy musiałby ode mnie ściągnąć całe poprawione pliki. Wprowadzenie ręcznie tych poprawek fragmentami jest uciążliwe i może prowadzić do powstania błędów. A jeśli jeszcze ktoś inny wymyśli inne poprawki, to robi się coraz więcej plików, i coraz mniej wiadomo, co jest w których zmienione.
Moja propozycja jest taka, żeby opracować format pliku z poprawkami, i aby były one dostępne wraz z programem do poprawiania scenerii. Pozwoliło by to różnym ludziom opracowywać poprawki, niezależnie od autorów scenerii i wprowadzać je na różnych wersjach scenerii (np. Quark-Testowo, Quark_MCE, Quark2007, QuarkPlus2007). Z mojej strony była by już następująca lista:
* Poprawka toru przy machajce w Quarku,
* Poprawka torów w Linia546 (misja SM42).
* Poprawka zdublowanych jezdni w Manewrowie.
* Poprawka zdublowanej rzeki i usunięcie zerowego toru w Quarku.
* Usunięcie "undefined" z toru w Krzyżowej.
* Uruchomienie linii wąskotorowej w Całkowie.I każdy, kto by chciał, mógłby sobie te poprawki ściągnąć i zainstalować w prosty sposób. W podobny sposób można by wypuścić np. poprawki przechyłek, dodanie trakcji elektrycznej lub jej korektę, zmiany eventów (np. dodanie zatrzymywania na przystankach osobowych dla AI).
Kwestią do ustalenia jest format pliku korygującego. Na pierwszy ogień sprawdziłem .diff. Po wielu trudach z instalacją na Windows doszedłem do wniosku, że się to nie nadaje. Opiera się na numerach zmienianych linii w pliku, a te się mogą być różne, jeśli instaluje się kilka łatek niezależnie.
Innym formatem jaki znam, jest instalacja modyfikacji do phpBB. W tym przypadku jest to jeden plik tekstowy, w którym jest opis modyfikowania innych plików, w sposób czytelny dla człowieka i dla maszyny. Wygląda to mniej więcej tak (przykład pierwszy lepszy):
--- Kod: ---#
#-----[ OPEN ]-----
#
admin/admin_users.php
#
#-----[ FIND ]------------------------------------------
#
$user_allowavatar = ( !empty($HTTP_POST_VARS['user_allowavatar']) ) ? intval( $HTTP_POST_VARS['user_allowavatar'] ) : 0;
#
#-----[ AFTER, ADD ]-----
#
//MOD-BEGIN: Remove Users Signature ----------------------------------------
$user_allowsig = ( !empty($HTTP_POST_VARS['user_allowsig']) ) ? intval( $HTTP_POST_VARS['user_allowsig'] ) : 0;
//MOD-END: Remove Users Signature ------------------------------------------
#
#-----[ FIND ]------------------------------------------
#
$sql = "UPDATE " . USERS_TABLE . "
#
#-----[ BEFORE, ADD ]-----
#
//MOD-REPLACE: Remove Users Signature --------------------------------------
//added: , user_allowsig = $user_allowsig
#
#-----[ FIND ]------------------------------------------
#
#Note: full line longer
SET " . $username_sql . $passwd_sql . "user_email
#
#-----[ IN-LINE FIND ]----------------------------------
#
. $avatar_sql . "
#
#-----[ IN-LINE AFTER, ADD ]-----
#
, user_allowsig = $user_allowsig
--- Koniec kodu ---
Jest to zorientowane na wprowadzanie poprawek do programu, gdzie bardzo ważne jest miejsce wprowadzenia poprawki. W przypadku scenerii miejsce jest na ogół nieistotne, więc można by to zrobić prościej. Potrzebne byłyby komendy typu "otwórz plik", "znajdź wpis", "zastąp go następującym", "usuń znaleziony", "dodaj na końcu pliku". Idealnie by było, gdyby taki opis poprawki pozwalał na przywrócenie stanu poprzedniego. (Nie mówiąc o rozpoznaniu innej wykluczającej poprawki, np. gdyby powstały 2 wersje wąskotorówki do Całkowa: jedna powracająca pod gruntem, a druga ze zwrotnicami i pętlami na końcach).
Piszę "Na warsztacie", ponieważ tak czy inaczej będę usiłował to uruchomić. Kolejna wersja mojego programu będzie już łączyć się z serwerem, ale na razie jeszcze nie umie ściągać.
uetam:
Ja bym widzial cos takiego...
w scenerii mamy wpis
--- Kod: ---node -1 0 EU07-483 dynamic PKP\eu07 303E-n-483.tga 303E-N 0.0 headdriver 3 0 enddynamic
--- Koniec kodu ---
program sprawdza czy w katalogu EU07 istnieje plik 303E-n (nowy model Barta)[sprawdza jakies sumy kontrolne czy cus]
jezeli go nie ma podmienia nam wpis na przykladowo
--- Kod: --- node -1 0 EU07-424 dynamic PKP\EU07 eu07-424 303E 0.0 headdriver 7 1 pantstate enddynamic
--- Koniec kodu ---
i wstawia nam stara siodemke ktora wczesniej sprawdza czy mamy na dysku itd...
Jakis wybor tekstury (moze okienko z podgladem) ?
Teraz aby uruchomic jakas trase musze spedzic godzinke podmieniajac sklady...
El Mecánico:
@Ra: zapomnij o PHP. Moja propozycja to XML (+kompresja), język bardziej elastyczny, choć brakuje wolnego oprogramowania do niego (docelowo i tak będzie programik do modów).
Co do samego definiowania poprawek. Po pierwsze, nie modyfikujemy w ten sposób taboru, bo ten i tak jest u kazdego inny. Tylko sama sceneria w sensie teren, tory, obiekty, trakcja.
W pliku moda umieszczony będzie fragment który programik ma znaleźć, oznaczenie co ma z tym fragmentem zrobić (wyciąć w pień lub zmienić). Jeśli zmieniamy, to dodajemy fragment który ma się w nowym pliku znaleźć.
Mariusz1970:
Ja jakoś sobie tego nie wyobrażam. Ja praktycznie w dużej części scnów zmieniałem eventy, tym samym eventy przypisane do torów. Nie wiem jakby program miał poprawić np. coś z torem, a jednocześnie miałby zachować funkcjonalność eventów nie mówiąc już o jakiś komórkach pamięci czy coś.
Można przyjąć, iż takich jak ja jest mało, więc i problem marginalny.
El Mecánico:
@Mariusz: bynajmniej, nie marginalny. Z eventami, komórkami pamięci robimy tak samo jak z resztą. Za prawidłowe działanie zmodyfikowanej scenerii odpowiedzialny jest twórca moda, musi więc takie rzeczy uwzględnić i zawrzeć w modzie. XML właśnie tutaj się sprawdzi w 100%. Z resztą, sprawdza się w SETI/BOINC:D
Nawigacja
[#] Następna strona
Idź do wersji pełnej