News:

Simutrans Chat Room
Where cool people of Simutrans can meet up.

Malý návod na editaci již hotové hry.

Started by jk271, January 25, 2013, 11:18:49 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

jk271

Představte si, že máte již hotovou hru, úpravám terénu, umisťování měst a tratí jste věnovali spoustu času a najednou zjistíte, že máte špatně nastavené bits_per_month nebo se semafory zobrazují na levé straně místo na pravé. Teď co s tím? Můžete hru zahodit a začít od začátku se správným nastavením. Ale jde to i jinak.

Existují dva způsoby, jak editovat již hotovou hru.
1) Pomocí hexeditu
   
2) Pomocí textového editoru.

Pozn.: Návod jsem rozdělil jsem to do více příspěvků pro snažší editaci.

část 1 z 4

jk271

Editace uložené hry pomocí hexeditu.

Editace pomocí hexeditu je rychlejší a méně náročná na volné místo na disku a výkon počítače.
Mezi nevýhody patří: nutnost instalace hexeditu a nutné jsou vyšší znalosti práce s počítačem.

Postup
1) Nainstalujte si (pokud již na svém počítači nemáte):
    hexedit
    bzip2 (pokud ukládáte hry komprimované)
    file (program)
Pozn: Na linuxu by měly byt oba dva programy nainstalovány. Pro Windows doporučuji použít Cygwin.

2) Vytvoříme kopii souboru s uloženou hrou. Veškeré úpravy provádíme na kopii, nikoliv na původním souboru! Co kdyby se něco nepovedlo.

cp simutrans/save/hra_k_editaci.sve kopie_hry.sve

3) Zjistím v jakém formátu je hra uložena.

file kopie_hry.sve

Pokud program file hlásí:
bzip2 compressed data, block size = 900k

je třeba soubor dekomprimovat:

bzip2 -d kopie_hry.sve

Program bzip2 nejpíš zobrazí chybovou hlášku, protože očekává název souboru jako neco.bz2. Na výsledek to nemá vliv.

4) Otevřete rozbalený soubor v hexeditu.

5) Upravte data v souboru. Pozor na to co měníte. Úpravy provádějte jen pokud víte co měníte.
Formát souboru se dá vyčíst ze zdrojových kódů. Nastavení najdete v souboru dataobj/einstellungen.cc ve funkci rdwr.

Čísla jsou ukládána jako "little-endian" - tj. začínají nejméně významným bytem a končí nejvíce významným.

Hexedit zobrazí čísla v šesnáctkové soustavě. Zde může pomoci kalkulačka.
Například volbu bits_per_month nastavenou na 18 uvidíte jako 12 (vlastně 1200 protože tato konfigurační proměnná zabírá 2 byty)

K orientaci poslouží některé známé nastavení (bits_per_month, station_coverage, ...)

Částečný popis formátu najdete v 4. příspěvku.

6) Nahrajte změněný soubor do adresáře s uloženými hrami.

7) Otevřete změněnou hru a zkontrolujte, zda-li se změna projevila (Jestli jste náhodou nezměnili něco jiného)

část 2 z 4

jk271

#2
Editace hry pomocí textového editoru

K tomuto postupu nepotřebujete hexedit ani další programy (file, cygwin, bzip2 apod.). Stačí vám pouze textový editor schopný otevřít a editovat VELKÝ soubor.
Na druhou stranu potřebujete spoustu místa na disku a taky operační paměti.

Jen pro srovnání:
    Komprimovaná hra    -       12 751 571B (~13MiB)
    Rozbalená hra            -       97 111 362B (~97MiB)
    Hra uložená jako xml - 1 171 048 588B (1171MiB)

1) Upravte nastavení v souboru config/simuconf.tab:
Změňte volbu saveformat na xml.
Původní zastavení si zazálohujte (např. zakomentováním)

2) Pomocí simutrans načtěte uloženou hru.

3) Hru uložte pod JINÝM názvem. Hra se uloží ve formátu xml.

4) Otevřte soubor v textové editoru. Ne každý textový editor toto zvládne! Otevírání souboru bude chvíli trvat.
Pozn.: Poznámkový blok ve Windows toto nezvládne.

5) Upravte nastavení.

6) Uložte provedené změny.

7) Obnovte zpět nastavení měněné v kroku 1)

8 ) Načtěte změněnou hru.

9) Hru uložte (nyní už ne jako xml).

10) Odstraňte přebytečný velký soubor s uloženou hrou ve formátu xml.

část 3 z 4

jk271

Soubor s uloženou hrou - vnitřní struktura

Nastavení hry je na začátku souboru, není však na úplném začátku
Soubor s uloženou hrou obsahuje z nastavení následující položky. Jsou seřazené, tak jak jsou za sebou. Je však možné, že mi některá položka unikla.


4B šířka
4B číslo mapy
4B factory_count (asi počet továren)
4B electric_promile
4B tourist_attractions
4B mittlere_einwohnerzahl
4B anzahl_staedte
4B verkehr_level
4B show_pax
2B grunwasser
8B (double) mountain height
8B map roughness
4B station_coverage
4B groesse_y (rozměr sever-jih)
1B allow_player_change
1B use_timeline
2B startinig_year
2B bits_per_month
?B (bool) first_beginner
(bool) just_in_time
1B rotation
8x2B climate_borders
2B winte_snowline
2B diagonal_multiplier
2B origin_x
2B origin_y
4B passenger_factor
4B passenger_multiplier
4B mail_multiplier
4B goods_multiplier
4B electricity_multiplier
4B growth_factor_small
4B growth_factor_medium
4B growth_factor_large
4B factory_worker_percentage
4B tourist_percentage
4B factory_worker_radius
4B electric_promile (?? proc je to tam podruhé??)
2B min_factory_spacing
(bool) crossconnect_factories
2B crossconnect_factor
(bool) fusgaenger
4B stadtauto_duration
(bool) numbered_stations
2B num_city_roads

cast 4 z 5

jk271

N krat:
     ?B text
     2B
     2B
2B num_intercity_roads
     ?B text
     2B
     2B
4B max_route_steps
4B max_transfers
4B max_hops
4B beginner_price_factor
?B text
16x: AI
     (bool)
     1B
4B starting_money
...

Zbytek bude (možná ) doplněn někdy později.
Proto je tento poslední pátý příspěvek kratší, abych měl kam vkládat zbytek popisu. Komentáře pište normálně pod tento příspěvek.

část 5 z 5

Leif

Chtěl bych se zeptat, můj Táta má rozehranou hru, měl tam cca 70-tý léta a nějakým spůsobem se dostal do roku 2040, a chtěl by rozehranou hru nastavit spátky na rok cca 1975. Lze to nějak u již rozehrané hry?

Vladki

Zkus si v konfiguraku zmenit format ukladani hry na xml. Pak ten save muzes editovat. Me se tak podarilo napr. zrusit contrakt mezi fabrikama, takze drzim palce ;)