Hlavní navigace

StarCraft 1 ve wine moderně

10. 4. 2011 23:03 (aktualizováno) Michal Smrž

Odvážný nadpis že? O čem to tedy bude. O tom že Starcraft funguje ve wine se ví už dlouho. Co býval problém byl battle.net , ale o tom psát nebudu. Budu to o mých poznatcích s jeho chodem pod wine a hlavně HiRes hacku.

Začalo to objevením Wargus. Warcraft 2 ve vysokém rozlišení vypadal naprosto kouzelně (ta hra by ze s fleku mohla prodávat znova) a uvědomil jsem si, co mi na těch starých strategiích nejvíce vadí. To rozlišení. Nejde o kostičky ale o silně omezený rozhled. Člověk v té hře viděl tak maximálně 4 budovy a pár jednotek. Zbytek musela obstarávat minimapka a zběsilé posouvání obrazovky.
Z toho jsem již vyrostl a byl jsem překvapen, že po odstranění tohoto problému jsou tyto staré strategie stále velmi prudce hratelné.

Inu začal jsem něco podobné hledat i pro StarCraft, ale Stargus je míle od dokončení. Úprava alternativním enginem tedy nepřichází v uvahu.
Plán b) či spíše g) ukázal, že jistými způsoby je možné i originální engine dohnat do vyššího rozlišení.
Prográmků na to je několik. Trochu zestručním, z toho co jsem našel mi ve wine fungoval jen jeden jediný a to Resolution Expander 5.1 (ne 6.0, ten mi padal).

Takže k postupu.

Instalace

Nainstalovat StarCraft (a Brood War) klasickým způsobem a ihned po té aktualizovat na poslední verzi 1.16.1.
To přináší několik výhod.

  • Možnost CPU throttle – hra nevytěžuje CPU naplno, ale dle potřeby (což oceňuji hlavně na notebooku regulovanýma otáčkama ventilátoru)
  • Integrovaný NO-CD: Už není třeba pokoutně shánět cracky. Blizzard vyslyšel prosby a pokud skopírujete z CD install.exe a pojmenujete jej jako Starcraft.mpq (a adekvátně to samé z Brood War – Broodwar.mpq), hra nebude CD vyžadovat.

Po těchto úpravách můžete Starcraft spustit. Bude fungovat a bude fungovat bez CD.

HiRes

Stáhnout Resolution Expander 5.1 a rozbalit do složky s hrou. Konkrétně soubory InsectLoader.exe ResolutionHack.dll a Resolution.ini.
Právě v tom ini najde sekci width a hight jež nastavte. V ini je pravopisná chyba u height ale funguje to s ní, tak nevím zda to opravovat, já to nechal.
Pak jen spouštět InsectLoader.exe a kochat se ;-)

Řešení problémů s výkonem

Popravdě, sám jsem s ním nikdy neměl problém, přitom na appdb se řeší.
Oprava: nikdy jsem s ním neměl problém, dokud jsem měl 640×480. Možná za to může ResExp, možná za to může wine.. zkrátka ve vyšším rozlišení mi chodil starcraft dost pomalu. Řídil jsem se radami na appdb, konkrétně:

V registru vytvořit klíč HKEY_CURRENT_USER/Software/Wi­ne/Direct3D

  • DirectDrawRenderer (value data: opengl)
  • OffScreenRenderingMode (value data: fbo)
  • RenderTargetLockMode (value data: readtex)
  • VideoMemorySize (value data: put your graphic card video memory size) p.s. For example mine is 256

a nakonec v nastavení wine odškrtnout „allow window manager to decorate the windows“.

Tyto úpravy už nejsou univerzální. Jsou grafické karty, kde to neudělalo nic, nebo to nešlo potom spustit. Na mé mobilní nvidii naštěstí fungovaly a výkon se vrátil téměř na normal.

Odlišnosti proti originálu:

Ač to zní velmi dobře, pár nevýhod to má.

  • První a hlavní je, že se jedná o cheat. InsectLoader zvládá závest i další dll které různě ovlivňují hru. Proto když s tím vezete na battle.net je velké nebezpečí banu. Na druhou stranu, pokud, stejně jako já, plánujete hrát po n2n, pak vás to trápit nemusí.
  • Zpomalení hry. Jež jde kompenzovat, ale i tak se občas potkávám s jemným lagem, nejčastěji při přehrávání zvuku co nebyl ještě načten. Prakticky: jednotka vznikne a “ohlásí se” to první ohlášení prostě lagne, ty ostatní jsou už ok, rozhodně to jde přetrpět.
  • Grafické glitche. Přeci jen je to “silové řešení”. To přináší i různé efekty. Jako například že kontextová nápověda de krom nad tlačítkem objevuje i uprostřed obrazovky (±) a občas je kontextová nápověda nad tlačítkem useklá, ale v obrazovce je vždy celá. Rozhodně nic co by se nedalo překousnout, navíc ryzí Starcraftista to stejnak zná nazpaměť. A občas něco někde problikne.
  • Pomalejší posouvání obrazovky. Ale já se sunu zásadně minimapkou, navíc to nedělám tak často díky vyššímu rozlišení.
  • Zatuhávající single player. Při single playeru se stává, že obrazovka se přesune nad jednotku, která má hovořit. Obrazovka se přesune (a je zamknutá) ale jednotka nehovoří. Pomůže jednoduchý trik save/load.
  • Posílání jednotek na minimapku nefunguje. Jednotky jdou na místo „pod“ minimapkou. Ale už jsem chytil grif, že se přesunu (s pomocí minimapky, to jde) na místo, potvrdím že jednotky mají útočit sem a rychle se přesunu zpět.

Ale to vše je víc než překousnutelné vzhledem k přínosu jaké to má a silně doporučuji.

Všechny screenshoty, co jsou zde k vidění, jsou z mého notebooku s rozlišením 1280×800. Ještě mohu mít výhradu k menu dole vpravo, u Warcraftu na boku je mnohem přístupnější, ale člověk většinu dělá klávesama.
Omluvte gnomí kurzor v obraze, vsunul mi ho tam gnome-screenshot. Ve hře je samozřejmě klasický.

[gallery link=„file“]

n2n

viz místní článek

Hned z kraje řeknu, že se mi hra na UDP protokolu (IPX ani už nemám) nepovedla spojit.

Trocha cviku s Wiresharkem ukázala, že hra operuje na portu 6111 (i když všechny manuály píšou 6112) a hlavně: server je pasivní – vyšle informaci jen o spuštění a ukončení; klient je aktivní – každou ±vteřinu se se dotazuje na existenci serverů.

Ukázalo se, že jak klient, tak server posílají data na adresu 255.255.255.255 a ta mi vždy končila ve fyzické síti, ne vpn.
Na Windows ten samý případ.
Přiznám se, nenašel jsem způsob jak to vyřešit elegantně. Místo toho jsou si to naroutoval:

route add -net 255.255.255.255 netmask 255.255.255.255 dev gamevpn

gamevpn mám pojmenované zařízení, vy si budete muset dosadit edge0, n2n0 či co máte.

na Windows (už nějaké route ohledně 255.255.255.255 jsou):

route delete 255.255.255.255 * route add 255.255.255.255 mask 255.255.255.255 ip_v_n2n

za ip_vn2n dosadit vaši IP.

Není to zrovna čisté řešení, ale čert to vem, funguje to. Má-li někdo lepší, rád se nechám poučit.