Autor Wątek:  Pliki poprawek do scenerii (dla instalatora)  (Przeczytany 9064 razy)

0 użytkowników i 1 Gość przegląda ten wątek.

Offline Ra

  • Zasłużony dla Symulatora
  • Wiadomości: 6308
  • Ostatni gasi światło...
    • Zobacz profil
    • Instalator+Starter+Edytor
  • Otrzymane polubienia: 337
Pliki poprawek do scenerii (dla instalatora)
« dnia: 02 Grudnia 2007, 16:49:55 »
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):
#
#-----[ 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

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ć.
¯\_( ͡° ͜ʖ ͡°)_/¯ Ra

Polecam: kręgarz Wojciech Walczak, projekt masarni

Offline uetam

  • Zasłużony dla Symulatora
  • Wiadomości: 2641
    • Zobacz profil
  • Otrzymane polubienia: 6
Odp: Pliki poprawek do scenerii (dla instalatora)
« Odpowiedź #1 dnia: 02 Grudnia 2007, 18:15:10 »
Ja bym widzial cos takiego...
w scenerii mamy wpis
node -1 0 EU07-483 dynamic PKP\eu07 303E-n-483.tga 303E-N 0.0 headdriver 3 0 enddynamicprogram 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
node -1 0 EU07-424 dynamic PKP\EU07 eu07-424 303E 0.0 headdriver 7 1 pantstate enddynamici 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...
« Ostatnia zmiana: 02 Grudnia 2007, 18:21:46 wysłana przez Mateu »

Offline El Mecánico

  • Wiadomości: 1067
  • Dawniej El Driver
    • Zobacz profil
    • Stowarzyszenie POLARIS - OPP
  • Otrzymane polubienia: 2
Odp: Pliki poprawek do scenerii (dla instalatora)
« Odpowiedź #2 dnia: 02 Grudnia 2007, 18:59:17 »
@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źć.
www.polaris.org.pl
www.ciemneniebo.pl
MaSzyna_LD w trakcie tworzenia...

Offline Mariusz1970

  • Zasłużony dla Symulatora
  • Wiadomości: 3926
    • Zobacz profil
  • Otrzymane polubienia: 279
Odp: Pliki poprawek do scenerii (dla instalatora)
« Odpowiedź #3 dnia: 02 Grudnia 2007, 19:13:26 »
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.

Offline El Mecánico

  • Wiadomości: 1067
  • Dawniej El Driver
    • Zobacz profil
    • Stowarzyszenie POLARIS - OPP
  • Otrzymane polubienia: 2
Odp: Pliki poprawek do scenerii (dla instalatora)
« Odpowiedź #4 dnia: 02 Grudnia 2007, 19:47:07 »
@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
www.polaris.org.pl
www.ciemneniebo.pl
MaSzyna_LD w trakcie tworzenia...

Offline Ra

  • Zasłużony dla Symulatora
  • Wiadomości: 6308
  • Ostatni gasi światło...
    • Zobacz profil
    • Instalator+Starter+Edytor
  • Otrzymane polubienia: 337
Odp: Pliki poprawek do scenerii (dla instalatora)
« Odpowiedź #5 dnia: 02 Grudnia 2007, 20:00:36 »
Sprawdzanie, czy pliki od dynamic istnieją, to już jest dawno, tylko że nie były od razu raportowane jako brakujące pliki. Sprawdzanie składów będzie tylko lokalnie, bez angażowania serwera. Podmienianie pojazdów na posiadane jednym przyciskiem jest w planach (nawet przycisk już jest).

Nie pisałem o PHP, tylko o przykładzie phpBB (aplikacji PHP do tworzenia forum), do której są modyfikacje instalowane w sprytny sposób. http://www.phpbb.com/mods/db/

XML w zasadzie nic nie daje, jedynie komplikuje przetwarzanie danych. Jako zwolennik efektywnie działających programów zdecydowanie wolę format oparty na liniach tekstu (które można wygodnie przetwarzać przez TStringList), niż na znacznikach.

Modyfikację torów trzeba będzie zrobić dwukierunkowo - albo modyfikujemy tylko eventy (chyba częściej - zmiana działania), albo tylko długości (poprawa wyglądu i usunięcie nulltrack). Komórki pamięci na ogół są definiowane w plikach .inc, więc z tym problemu nie będzie.

Można by przyjąć tak:
# - umieszczony na początku linii oznacza początek lub koniec treści wpisu
#TITLE.PL - nazwa (wyświetlana w spisie) po polsku
#TITLE.EN - nazwa po angielsku
#VERSION - data modyfikcji i numer wersji
#SCREENS - linki do obrazków modyfikacji
#AUTHOR - informacje o autorze
#DESCR.PL - opis po polsku
#DESCR.EN - opis po angielsku
#OPEN - otwarcie wskazanego dalej pliku
#FIND - wyszukanie wpisu zamieszczonego dalej
#DELETE - usunięcie wyszukanego wpisu
#REPLACE - zastąpienie wyszukanego wpisu następującym dalej
#APPEND - dopisanie wpisu na końcu
#EVENTS - zmiana eventów w znalezionym node...track na podane dalej

Wyszukiwane i zamieniane byłyby całe wpisy. Przy zmianie eventów, jeśli po event0, event1 itd. nie jest podana nazwa, oznacza to usunięcie eventu z toru (w tym przypadku nie będzie możliwe przywrócenie stanu przed zmianą, bo nie będzie tu zapisane, co ma być usunięte).
¯\_( ͡° ͜ʖ ͡°)_/¯ Ra

Polecam: kręgarz Wojciech Walczak, projekt masarni

Offline Mariusz1970

  • Zasłużony dla Symulatora
  • Wiadomości: 3926
    • Zobacz profil
  • Otrzymane polubienia: 279
Odp: Pliki poprawek do scenerii (dla instalatora)
« Odpowiedź #6 dnia: 02 Grudnia 2007, 20:59:58 »
Co do eventów w inc, zdarza się np w linii546.
Ja nie kumam o co chodzi, np. mam trasę Quarka ze zmienionymi eventami. Na serwerze jest też Quark, poprawione tory, dodne domki, ale zupełnie inne eventy, składy itp.
Chciałbym, aby program poprawił mi tylko tory i dodał domki, ale żeby nie ruszał eventów. Zresztą Ty masz pojęcie co robisz, ja tylko sygnalizuję sytuacje mogące się pojawić.

Offline El Mecánico

  • Wiadomości: 1067
  • Dawniej El Driver
    • Zobacz profil
    • Stowarzyszenie POLARIS - OPP
  • Otrzymane polubienia: 2
Odp: Pliki poprawek do scenerii (dla instalatora)
« Odpowiedź #7 dnia: 02 Grudnia 2007, 21:46:54 »
@Ra: ciekawa propozycja, podoba mi się, ale proponuję drobną modernicją:
#keyword1
dane
dane
dane
#end

#keyword2
dane
dane
#end
.
.
.
www.polaris.org.pl
www.ciemneniebo.pl
MaSzyna_LD w trakcie tworzenia...

Offline Ra

  • Zasłużony dla Symulatora
  • Wiadomości: 6308
  • Ostatni gasi światło...
    • Zobacz profil
    • Instalator+Starter+Edytor
  • Otrzymane polubienia: 337
Odp: Pliki poprawek do scenerii (dla instalatora)
« Odpowiedź #8 dnia: 02 Stycznia 2008, 13:08:58 »
Hm, uruchomiłem do testów serwer z poprawkami do scenerii. Aktualnie umie pobrać brakujące pliki lub podmienić błędne.

Jednak przy Quarku natknąłem się na następujący problem. Analizator składni pokazuje brak plików scenery/bud/0dombale03.inc oraz textures\conrete1.tga. Jak się temu przyjrzałem dokładnie, to okazało się, że pierwszy plik jest w innym katalogu - scenery/mc/0dombale03.inc, a drugi ma błędną nazwę - powinno być textures\concrete1.tga (to wynika z innych wpisów o podobnej treści). I teraz możliwe są dwa rozwiązania.

Pierwsze: mogę skopiować odpowiednie pliki w inne miejsca i poinstruować program, aby je pobrał. Załatwi to sprawę na amen, również jeśli powstanie kolejny klon Quarka z tymi samymi błędami. Jest to proste w realizacji, bo wystarczy pobrać krótkie pliki (kilkaset bajtów do kilkudziesięciu kilobajtów) i zapisać je w odpowiednim miejscu. Wadą tego rozwiązania jest redundancja plików i mnożący się bałagan w plikach.

Drugie: poprawić wpisy w scenerii. Dzięki temu robi się porządek, bo wszystkie scenerie mogą korzystać (po poprawkach) z tego samego zbioru plików. Nadmiarowe (powtórzone) pliki można pousuwać. Można np. wymienić błędne modele na poprawione (np. semaforów, mostów, trakcji), a jeśli sceneria wymaga jakiegoś szczególnie nieudanego obiektu do poprawnego działania - można utworzyć specjalny katalog dla niej i tam to wrzucić. Problemem w tym przypadku jest przetwarzanie bardzo dużych plików (kilka do kilkunastu megabajtów). Mogą się pojawić błędy wynikające z poziomu trudności np. wyszukania wpisów, które powinny być zmienione. Bo np. już ktoś wprowadził do nich zmiany, chociażby zmienił widoczność z -1 na 800.

Ponadto jest kwestia: czy modyfikować pliki scenerii w trybie tekstowym, wczytując te megabajty do okna edytora tekstowego, czy też w trybie binarnym, zastępując błędne wpisy spacjami, a dopisując poprawne na końcu (tzn. bez potrzeby zapisywania ponownie całego pliku - tylko zmodyfikowane fragmenty były by zapisywane)?


A może by na początek dać te pliki do pobrania i niech się powtarzają? A dopiero jak już zostanie opanowane to, gdzie w sceneriach są błędy i jak powinny być poprawione - usuwać pliki z nadmiarowych lokacji i modyfikować dobrze rozpoznane błędne wpisy?
« Ostatnia zmiana: 02 Stycznia 2008, 13:13:09 wysłana przez Ra »
¯\_( ͡° ͜ʖ ͡°)_/¯ Ra

Polecam: kręgarz Wojciech Walczak, projekt masarni

Offline Ra

  • Zasłużony dla Symulatora
  • Wiadomości: 6308
  • Ostatni gasi światło...
    • Zobacz profil
    • Instalator+Starter+Edytor
  • Otrzymane polubienia: 337
Odp: Pliki poprawek do scenerii (dla instalatora)
« Odpowiedź #9 dnia: 05 Stycznia 2009, 03:03:04 »
Postanowiłem pójść w kierunku XML. Jednak format plików poprawek będzie miał dodatkowe wymogi w zakresie formatowania, takie jak:
- jeden znacznik w jednej linii tekstu,
- brak obsługi UTF-8 (w zasadzie tylko windows-1250),
- brak obsługi encji,
- znaczniki pisane wielkimi literami.

Przykładowy plik, na którym będę testował program:
<?xml version="1.0" encoding="windows-1250"?>
<FIX>
<INFO>
<REM>
poprawki błędów w sceneriach Quark
wykonywane dla pliku include o nazwie quark*.scm
- usunięcie pustego toru
- usunięcie przerwy w torze
poprawki nie zmieniają działania scenerii
</REM>
<AUTHOR name="Ra" date="2008"/>
</INFO>
<OPEN file="quark*.scm">
<REM>
usunięcie pustego toru, linia 1150
</REM>
<FINDITEM>
node -1 0 none track normal 20.0 1.435 0.15 25.0 20 0 flat vis
 Rail_screw_used1 4 TpBpS-new2.tex 0.2 0.5 1.1
1110.14 0.200012 -19468.7  0.0  //point 1
0.0 0.0 0.00195313  //control vector 1
0.0 0.0 -0.00195313  //control vector 2
1110.14 0.200012 -19468.7  0.0  //point 2
0
endtrack
</FINDITEM>
<IFFOUND>
<DELETE/>
</IFFOUND>
<REM>
usunięcie zdublowanego fragmentu rzeki, linia 8451
(mountain jest źle, powinno być canyon, ale i tak nie ma statków)
</REM>
<FINDITEM>
node -1 0 none track river 100.0 15.0 0.5 100 5 0 mountain vis
 RiverMnt1.bmp 6.0 RiverMnt1bank.bmp 0.5 0.5 2.0
373.355 -4.0 -7961.2  0.0  //point 1
-6.10831 0.0 15.5068  //control vector 1
6.10831 0.0 -15.5068  //control vector 2
355.03 -4.0 -7914.68  0.0  //point 2
0
velocity 1.0
endtrack
</FINDITEM>
<IFFOUND>
<DELETE/>
</IFFOUND>
<REM>
usunięcie przerwy w torze 0.1mm, 24380
</REM>
<FINDTEXT>
-20.9707 0.200012 228.834  0.0  //point 1
0.0 0.0 0.0  //control vector 1
0.0 0.0 0.0  //control vector 2
-20.9718 0.200012 318.834  0.0  //point 2
</FINDTEXT>
<IFFOUND>
<FINDTEXT text="-20.9707">
<IFFOUND>
<REPLACE with="-20.9706"/>
</IFFOUND>
</FINDTEXT>
</IFFOUND>
<SAVE/>
</OPEN>
<SETDATE>
quarkmc28.scm;22C4FD7F;5906225=2008-01-19 14:03:02
</SETDATE>
</FIX>
¯\_( ͡° ͜ʖ ͡°)_/¯ Ra

Polecam: kręgarz Wojciech Walczak, projekt masarni

Offline ShaXbee

  • Administrator
  • Wiadomości: 1984
    • Zobacz profil
  • Otrzymane polubienia: 2
Odp: Pliki poprawek do scenerii (dla instalatora)
« Odpowiedź #10 dnia: 05 Stycznia 2009, 10:59:42 »
@Ra: W XML'u nazwy tagów piszemy z małej litery, więc to już nie jest prawidłowy dokument XML.

Offline Ra

  • Zasłużony dla Symulatora
  • Wiadomości: 6308
  • Ostatni gasi światło...
    • Zobacz profil
    • Instalator+Starter+Edytor
  • Otrzymane polubienia: 337
Odp: Pliki poprawek do scenerii (dla instalatora)
« Odpowiedź #11 dnia: 05 Stycznia 2009, 15:01:37 »
Powiedz to jeszcze tym, co zrobili np. e-Deklaracje:
<?xml version="1.0" encoding="UTF-8"?>
<Deklaracja>
<Naglowek>
<KodFormularza kodSystemowy="VAT-7 (9)" kodPodatku="VAT" rodzajZobowiazania="Z">VAT-7</KodFormularza>
<WariantFormularza>9</WariantFormularza>
<KodUrzedu>1018</KodUrzedu>
</Naglowek>
<Podmiot1>
<OsobaFizyczna>
<NIP>1111111111</NIP>
(...)

i tym od Płatnika:
<WyslijPrzesylke xmlns="naws.zus.pl">
<pbyPrzesylka>
<xop:Include href="cid:1.017197009909124080@naws.zus.pl"/>
</pbyPrzesylka>
<uiPrzesylkaDlugosc>2849</uiPrzesylkaDlugosc>
<strNazwaProducenta>Asseco Poland SA</strNazwaProducenta>
<strNazwaOprogramowania>P&#x0142;atnik</strNazwaOprogramowania>
<strWersjaOprogramowania>703001</strWersjaOprogramowania>
<strB64SkrotPrzesylkiIn>mUNNbikI2hyFKl6d5hUyS/rno7o=</strB64SkrotPrzesylkiIn>
<strTypPrzesylki>SDWI2.CMS.ZIP.CMS.KEDUXML</strTypPrzesylki>
<strB64SkrotPrzesylkiOut></strB64SkrotPrzesylkiOut>
<strIdentyfikator></strIdentyfikator>
</WyslijPrzesylke>
« Ostatnia zmiana: 05 Stycznia 2009, 17:27:57 wysłana przez Ra »
¯\_( ͡° ͜ʖ ͡°)_/¯ Ra

Polecam: kręgarz Wojciech Walczak, projekt masarni

Offline ShaXbee

  • Administrator
  • Wiadomości: 1984
    • Zobacz profil
  • Otrzymane polubienia: 2
Odp: Pliki poprawek do scenerii (dla instalatora)
« Odpowiedź #12 dnia: 05 Stycznia 2009, 15:36:47 »
To nie powtarzajmy ich błędów, OK? :)