Kingdom Rush – fajna gra typu tower defense.

Urwanie głowy urwaniem głowy, ale trochę czasu na relaks człowiek musi znaleźć. Zawsze lubiłem gry typu tower defense, a ostatnio natknąłem się w czytniku RSS na ten wpis. Autor zachwala Plants vs. Zombies, których trailer widziałem i mi się podobał (na pełną wersję jakoś się nie zdecydowałem, IIRC kwestia ceny), a następnie tytułowe Kingdom Rush, więc postanowiłem dać grze szansę.

Kingdom Rush - screenshot

Screenshot z gry, źródło: http://www.kingdomrush.com/media.php

Wersja darmowa zrobiła na mnie bardzo dobre wrażenie – dopracowana grafika, dźwięk, i co – ważne gra nie ma kosmicznych wymagań i wygląda na napisaną dość porządnie – bez problemu daje się grać na moim starym sprzęcie, czego o niektórych produkcjach flashowych powiedzieć nie mogę (ba, nawet zwykłe bannery we flash potrafią przymulić kompa). Ciekawe etapy, rozbudowany system jednostek, dobry balans, przy tym – co ważne – TIMTOWTDI – można wygrać stosując zupełnie różne taktyki. No i demo jest bardzo rozbudowane, spokojnie można je uznać za pełną grę.

Dodatkowo, jakby się ktoś wciągnął, to poza samą grą (campaign), są dodatkowe tryby (heroic challenge oraz iron challenge) oraz osiągnięcia (część prosta i oczywista, część zdecydowanie trudna). No i oczywiście system upgrade’ów czyli rozwoju jednostek. Więcej o ficzerach. W każdym razie mnóstwo przedniej zabawy.

Niedługo później, głównie z uwagi na możliwość save’ów online (bez nich, z uwagi na czyszczenie super cookies każdy restart przeglądarki powodował utratę save’ów), kupiłem pełną wersję, czyli dostęp do dodatkowych etapów i broni. Zdecydowanie polecam przejście etapów w wersji darmowej przed zakupem – wersja pełna oznacza więcej zasobów na początku etapu, co trochę psuje balans (robi się za łatwo[1]). W dodatkowych etapach i trybach gry nie ma to IMO znaczenia, ale w wersji zwykłej – owszem, ma, będzie IMO zbyt łatwo.

Znalazłem póki co jedną wadę – nie wiem czego to kwestia, ale czasami zdarza się grze zawiesić na twardo – muszę zamknąć okno w przeglądarce, killnąć flash playera i uruchomić ponownie. Na szczęście dzieje się to stosunkowo rzadko. Tak czy inaczej – zdecydowanie warto zerknąć na tę grę, jeśli ktoś ma ochotę na tego typu rozrywkę.

Zagrać online można tutaj, uprzedzam, że choć po każdym etapie można zapisać i przerwać grę, to jest niezłym pożeraczem czasu. I – jak dla mnie – niezłym relaksem.

[1] Na szczęście po kliknięciu w „premium content” można to dostosować, tj. wyłączyć bonusy. Trochę późno na to zauważyłem.

3 rzeczy w Debianie, których nie aktualizujesz.

Jeśli korzystasz z systemu Debian, to zapewne przywykłeś do wygodnej sytuacji, że aktualizacje zwykle przychodzą w repozytorium security. Jest to wygodne, bo proste apt-get update; apt-get upgrade teoretycznie zapewnia aktualne wersje wszystkich pakietów w systemie, z aktualizacjami bezpieczeństwa. Prawda?

Niestety, nie do końca. Po pierwsze, sama instalacja aktualnych wersji pakietów nie zawsze oznacza, że automatycznie zaczynają być one używane. Pomijając kernel, którego faktyczna aktualizacja wiąże się z rebootem, także inne programy niekoniecznie zaczynają być używane automatycznie w aktualnej wersji po ich instalacji. W określeniu programów do restartu przydatne bywa polecenie checkrestart z pakietu debian-goodies, o którym pisałem w ściągawce z przydatnymi poleceniami dla Linuksa. Ogólnie: próbuje ono podać procesy, których restart jest wymagany ze względu np. na aktualizację bibliotek.

Ale i to nie wszystko. Jest kilka innych rzeczy, które nie aktualizują się, mimo zainstalowanych paczek, które spowodowały ich obecność w systemie:

  1. Flash od Adobe. Popularny na desktopach, spaczkowany – w specyficzny sposób – w Debianie w pakiecie flashplugin-nonfree, przy okazji podobno popularny wektor ataku. Aktualność swojej wersji Flasha można sprawdzić na stronie Flash Player check. Jakoś wolę ten sposób od strony Adobe. Aby zaktualizować wersję w systemie należy wydać polecenie:
    update-flashplugin-nonfree --install --verbose

    Oczywiście po powyższym trzeba zrestartować przeglądarki, żeby zmiana była efektywna.

  2. Java od Sun. Ze względu na zmianę polityki, niedawno Java od Sun przestała być aktualizowana, również w zakresie aktualizacji bezpieczeństwa w Debianie i Ubuntu. Jeśli nadal korzystasz z niej w systemie, jest spora szansa, że masz starą wersję, o której aktualizację musisz zadbać samodzielnie. Można też zmienić wersję na którąś z wolnych alternatyw.
  3. Mikrokod procesora. Jeśli posiadasz procesor Intela, to dostępne są aktualizacje mikrokodu od producenta. Co prawda bez tego też będzie działać, ale może udało się poprawić coś, co zwiększy wydajność? Sama instalacja pakietu microcode.ctlnie wystarczy, by zawsze mieć aktualną wersję zainstalowaną i wykorzystywaną w systemie. Aktualizację obecnego w systemie mikrokodu można wywołać ręcznie poprzez polecenie:
    update-intel-microcode

    Potem można przeładować mikrokod przy pomocy:

    /etc/init.d/microcode.ctl restart

    Począwszy od wersji Wheezy niestety jest to nieco bardziej skomplikowane i aktualizację mikrokodu w Debianie opisałem w osobnym wpisie.

Powyższe aktualne dla Debiana (głównie na desktopie, stąd nic o bazach wirusów, filtrach antyspamowych itp.), zapewne także dla pochodnych typu Ubuntu. Chyba, że tam jest to lepiej rozwiązane?

UPDATE: Przeładować owszem, można, ale jeśli dokonywana jest aktualizacja, to przeładowanie jest automatyczne.

UPDATE: Wzmianka o nowym sposobie aktualizacji mikrokodu we Wheezy.

Flashowanie BIOS spod Linuksa – flashrom.

Dla jasności: poniższy wpis nie ma charakteru poradnika, bardziej jest opisem geekowej zabawy i jako taki należy go traktować, chociaż parę porad też się znajdzie.

Przeczytałem wpis o flashowaniu BIOS bez użycia Windowsa i stwierdziłem, że brakuje tam opisu natywnego linuksowego rozwiązania, czyli programu flashrom. Przy okazji wyszło też na jaw, że grzejnik korzysta z BIOSu w wersji 1.90, jak go fabryka wypuściła, a na stronie producenta dostępna jest wersja 2.80. Co prawda don’t fix it, if it ain’t broken, ale ponieważ flashrom chwali się wsparciem dla płyty ASRock K7S41 a u mnie jest ASRock K7S41GX, to pomyślałem, że spróbować trzeba, bo nazwa podobna, a GX kojarzy się z grafiką. 😉 Do sprawdzania wersji BIOS, płyty itd. korzystamy oczywiście z programu dmidecode.

Na początek rozczarowanie – wersja flashrom ze Squeeze nie wspiera tej płyty. Ale na stronie projektu flashrom podany jest namiar na kanał IRC, gdzie w razie problemów można uzyskać pomoc. Od razu zaznaczę, że kanał jest bardzo pomocny, ale techniczny. Czyli chłopaki (znaczy: developerzy) chcą dużo paste’ów z verbose mode. 😉 Opisałem problem, dostałem sugestię, by skorzystać z wersji SVN, co uczyniłem.

Jest nieco lepiej, ale nadal nie działa, bo nie rozpoznaje płyty, ale jakiś postęp jest. Dostaję pytania o wersję chipa z BIOSem (wymaga otwarcia puszki, zdarcia nalepki i odczytania napisów z chipa), prośbę o użycie programu superiotool, zaczynam pomału orientować się w temacie, z grubsza kojarzyć co tam się przy tym flashowaniu tak naprawdę odbywa, jak wyglądają płyty (taaak, chipy z BIOSem drastycznie się zmieniły odkąd ostatnio grzebałem w sprzęcie, choć i ten nie jest najnowszy)…

Okazuje się, że super I/O chip jest obsługiwany, chip BIOSu też… Dłuższe przejrzenie stron z opisem płyt K7S41 i K7S41X oraz źródełek flashrom ujawnia, że to bardzo podobne konstrukcje, z tym samym super I/O chipem i tym samym chipem BIOS. Okazuje się też, że udaje się odczytać aktualny BIOS do pliku:

flashrom -c W49F002U/N -m Asrock:K7S41 -VV -r test.dmp -f

Co prawda wymuszając wszystko na sztywno i z wymuszeniem operacji, ale działa. Co prawda niewiele to daje – chłopaki twierdzą, że musi wykrywać automatycznie, inaczej o flashowaniu można zapomnieć.

W przypływie dobrego humoru i odwagi, postanawiam wziąć sprawy w swoje ręce, skoro już tyle wiem o sprzęcie. Lekka zabawa z linią odpowiedzialną za dopasowanie (skopiuj linię dla K7S41, zmień na K7S41GX, skompiluj, spaczkuj checkinstall, przerzuć na docelową maszynę, zainstaluj, uruchom) i… wykrywa bez błędów.

Calibrating delay loop... OK.
No coreboot table found.
Found chipset "SiS 741", enabling flash write... OK.
This chipset supports the following protocols: Non-SPI.
Disabling flash write protection for board "ASRock K7S41GX"... OK.
Found chip "Winbond W49F002U/N" (256 KB, Parallel) at physical address 0xfffc0000.

Szybki test – odczyt działa, md5sum identyczna jak poprzednio. Weryfikacja zawartości BIOS z plikiem – passed. No to zaryzykujmy i wrzućmy to, co wyciągnęliśmy z chipa:

Flash image seems to be a legacy BIOS. Disabling checks.
Erasing and writing flash chip... Done.
Verifying flash... VERIFIED.

Wygląda, że działa. Na koniec wrzuciłem najnowszą wersję BIOSu. Ponownie bez problemu. Odczyt dmidecode – nadal widzi starą wersję, ale może restart jest wymagany? No to jazda z restartem… Chwila prawdy czyli reboot.

No i tu dobre wiadomości się kończą – po reboocie maszynka nie wstała i piszczy nietypowo. Chłopaki z IRCa mówią, że powinno być niekrytycznie, skoro weryfikacja się powiodła, być może wymagane wyłączenie zasilania lub reset CMOS. Niestety, żadne z nich nie pomogło. Trzeba skołować monitor i klawiaturę i zobaczyć, co też on tam wyświetla (rada: nie polecam zabawy z flashowaniem bez dostępu do monitora i klawiatury). Może jakiś błąd typu No keyboard. Press F1 to continue?

Zobaczymy niebawem. Dramatu nie ma, bo od biedy mam dostęp do identycznej płyty, więc przy odrobinie zabawy przełoży się kość BIOSu i przeflashuje się tam. Wkrótce dam znać, co ostatecznie wynikło (mam nadzieję, że uruchomię sprzęt, a flashrom zyska obsługę nowej płyty).

Tak czy inaczej, zabawa przednia (stąd kategoria Rozrywka), a flashowanie z użyciem flashrom bardzo przyjemne, proste i wygodne. Oczywiście jeśli sprzęt jest wspierany. 😉

UPDATE: Wiele się nie pomyliłem. Faktycznie trzeba było nacisnąć F1, tyle, że dwa razy. Raz, aby przywrócić wartości domyślne BIOSu (nie wiem, czy reset zworką nie zadziałał, czy po prostu trzeba), drugi, aby ominąć błąd związany z MAC. Ten drugi jest poważniejszy i objawia się komunikatem Mac address are invalid in both APC and DMI Press F1 to Resume i raczej zasługuje na oddzielny wpis. W każdym razie grzejnik znów grzeje (na razie na starym BIOSie).