czwartek, 24 września 2009

Jak "pozamieniać klawisze", czyli nasz własny układ klawiatury

Niezłym numerem, który możemy "wywinąć" innym użytkownikom komputera jest wirtualna zmiana rozmieszczenia klawiszy. Oczywiście zastosowanie predefiniowanego układu byłoby zbyt łatwe...

Poniżej instrukcja dla GNU/Linuksa, z naciskiem na Ubuntu.
Uwaga! Można sobie nieźle namieszać w systemie. Zastanów się dobrze czy chcesz to zrobić!

Instalujemy pakiet (np. Synapticiem) XKeyCaps
Wpisujemy w konsoli
sudo xkeycaps

I powinniśmy zobaczyć takie okno:


Teraz wystarczy kliknąć prawym przyciskiem myszy na prostokąt reprezentujący dany klawisz i wybrać:
  • Exchange Keys - jeśli chcemy zamienić klawisze
  • Edit KeySyms of Key - jeśli chcemy całkiem przekonfigurować klawisz
  • Disable Key - jeśli chcemy go wyłączyć
Zmiany powinny być widoczne od razu, przy czym grafika (w programie) klawiatury nie ulega modyfikacji.

Powrót starego układu
Wchodzimy, w przypadku GNOME i Ubuntu, w System->Preferencje->Klawiatura->Układy i klikamy
Przywróć domyślne
oraz
Zastosuj w całym systemie


Ambitniejsi mogą powydłubywać klawisze i poustawiać je np. w układzie alfabetycznym. Nie polecam śrubokrętu jako narzędzia, lepsza będzie łyżeczka:)

środa, 16 września 2009

Blood Frontier - doskonała darmowa (i wolna) rozwałka...

Blood Frontier jest grą FPP opracowaną na silniku Sauerbraten. Można ją ściągnąć z www.bloodfrontier.com, paczka ważąca 270 MiB posiada BF w wersji zarówno dla Linuksa jak i Windows. Rozpakowujemy ją i odpalamy plik bloodfrontier.sh.



Rozgrywka to na pozór tradycyjne multi (lub gra z botami) w trybach:
  • Deathmatch
  • Capture The Flag
  • Secure The Flag
oraz możliwość wieloosobowej edycji map (w czasie gry). Do tego dochodzi, w postaci mutatorów, m.in.:
  • InstaGib
  • Last Man Standing
  • Teamplay
  • Paintball (sami sprawdźcie o co chodzi:)



Jest jednak coś co odróżnia BF od innych "szybkich" FPP - sposób posługiwania się bronią. Po pierwsze nie zbierzemy jej po prostu zbliżając się do niej, trzeba wcisnąć E lub F. Dlaczego? Bo ilość noszonej przez nas broni jest ograniczona. By wziąć karabin trzeba odłożyć np. miotacz ognia.
Za to ilość pocisków jest nieskończenie duża (nie występują paczki z amunicją). Wokół celownika mamy tylko wskaźnik pokazujący nam pozostałe, do chwili przeładowania, naboje. Nie zauważyłem także apteczek, zdrówko podlega powolnej autoregeneracji...
Do tego dochodzi "niska grawitacja", czyli dalekie skoki.



Mało jest gier FLOSS, które oferują więcej graficznych bajerów (mi na myśl przychodzi tylko Nexuiz na silniku Darkplaces), a mających fizykę ragdoll jeszcze mniej... Gdyby nie to, że lokacje są trochę "kanciate" powiedziałbym, że grafika jest wyśmienita:)
Zresztą silnik Sauerbraten zbiera bardzo dobre oceny:
The game is stable, and it preforms on even the smallest machine. With F.E.A.R/Doom 3 quality graphics, this game requires a Quake III-quality computer. And for those who's computers can't handle the F.E.A.R/Doom 3 quality graphics, the game lets you tweak the graphics like any other new game.
Has plenty of features, many you would never expect from a free engine or even a low-budget engine. There are even addons which allow things like Ragdoll physics as in Blood Frontier.
The scripting engine is great, the graphics are great.

sobota, 12 września 2009

Instalacja darmowych gier pod Ubuntu - instrukcja obrazkowa

W Internecie jest pełno biadolenia wg którego:
  • instalacja gier pod Linuksem jest skomplikowana,
  • trzeba coś kompilować,
  • wpisywać tajemnicze komendy w konsoli,
  • a i tak to wszystko bez sensu, bo "gry pod Linuksa nie istnieją"...
Oczywiście to wszystko bzdury - dlatego wrzucam tu obrazkową instrukcję instalacji gier z PlayDeb. I nie będzie ani jednego słowa komentarza, wystarczy klikać jak na obrazkach:




PS Fajnym bajerem jest prezentacja wideo każdej z gier:)
PS2 Warto też zajrzeć na GetDeb

Mały benchmark: Catalyst 9.9 vs 9.8

Niedawno ukazała się nowa wersja "Katalizatorów" dla Linuksa. Oznaczono ją numerem 9.9 - jest do ściągnięcia z http://support.amd.com/us/gpudownload/Pages/index.aspx

Zatrudniłem swój sprzęt (Radeon HD 3300) do wykonania kilku benchmarków. Wszystkie próby zostały wykonane bez antialiasingu.



Silnik przedpotopowy - Unreal Tournament 2004 demo
Rozdzielczość 800x600, ustawienia maksymalne, polecenie:
ut2004 ons-torlan?spectatoronly=1?numbots=14?quickstart=1?attractcam=1 -benchmark -seconds=60

Wyniki:
9.8
19.547787 / 66.136841 / 128.802887 fps rand[1743960491]
Score = 63.482250
9.9
19.814941 / 64.366478 / 133.656708 fps rand[1743960491]
Score = 62.170876

Silnik lekko podstarzały - Doom 3
800x600, standardowe High Quality
Wyniki:
9.8 54,3 kl./s
9.9 52,1 kl./s

Silnik nowoczesny - Unigine
Demo Sanctuary 2.2, 1024x768, wszystko na maks.
9.8
4,2 kl.s 177 pkt
9.9 4,1 kl./s 172 pkt

Wniosek jest prosty, nowe sterowniki są wolniejsze.

piątek, 11 września 2009

Co potrafią zrobić PC-fanatycy:D

Oto mapa dla silnika/gry Sauerbraten zrobiona przez zwolenników sprzętu Nvidii i Intela (odmienne poglądy od moich:)


Cóż, do tej gry trzeba mieć tylko talent - edycja (w czasie gry) jest banalnie prosta.
W maju ukazała się nowa wersja: Trooper Edition. Wprowadza ona to na co długo czekałem: zaawansowaną "fizykę", czyli ragdoll i modele z animacją szkieletową (MD5 jak w Doomie 3).
Grę można ściągnąć za darmo w wersji dla Linuksa, Mac OS X i Windows z tego adresu http://www.cubeengine.com/files.php4 (ok. 350 MiB).

Sama gra działa bardzo płynnie, u mnie 1024x768, wszystko na maks. przy zintegrowanej grafice (790GX, oczywiście pod Linuksem) pracuje z prędkością 80-100 kl./s. Przy podejściu do wody (refrakcje i refleksy świetlne) zwalnia do 50.
Wraz z grą mamy kilkaset map i kilkanaście trybów rozgrywki, ale i tak naprawdę liczy się tylko InstaGib:) Tempo gry przypomina Q1.

A tak wygląda grafika i rozgrywka:

sobota, 5 września 2009

Sterowanie samochodem przy pomocy myszy?! - gra Racer

Jedną z nielicznych otwartych "ścigałek" (obok TORCS i VDrift), na Linuksa, jest Racer. To stosunkowo młody projekt, który ma być porządnym symulatorem wyścigów samochodowych*.
Grę w postaci instalatora *.run można pobrać z racer.nl Standardowo mamy jeden samochód (Murcielago) i jeden tor - więcej można ściągnąć z www.racer-xtreme.com

Sterowanie
W teorii można sterować klawiaturą... Jednak to jest prawdziwy symulator, a nie arcade, więc trudno przejechać nawet choćby zakręt:-/ Z drugiej strony rozsądny człowiek nie wyda kilkuset złotych na kierownicę.
I tu przydatny okazuje się pomysł twórców Racera - sterowanie myszą:
  • kursor na środku - samochód stoi,
  • przesunięcie przód-tył - gaz-hamulec,
  • przesunięcie lewo-prawo - skręcanie,
  • przyciski myszy: zmiana biegów i sprzęgło.
Wrażenia? Każdy powinien spróbować sam pokierować myszą... Wspomnę tylko, że sterowanie myszą też dobrze się sprawdzało w symulatorze lotu GL-117.



Konfiguracja
Warto zajrzeć do pliku racer.ini i ustawić fullscreen=1, oraz zamienić język locale=racer_polish.txt

W katalogu racer/data/cars/lambomurcielago mamy pliki naszego podstawowego samochodu. Wskaźniki to zwykłe obrazki *.tga, dźwięk silnika to 2000.wav, 3000.wav itd. (dla kolejnych prędkości obrotowych), a krzywa momentu obrotowego znajduje się w pliku torque.crv w postaci:
...
point18
{
x=3950.000000
y=642.000000
type=0
}
point19
{
x=4250.000000
y=646.000000
type=0
}
...
Model opony
Smaczkiem Racera jest model zachowania się opony opisany za pomocą Magicznej Formuły Hansa Pacejki. Określa ona, z tego co pamiętam, siły poprzeczne i podłużne przenoszone przez oponę, moment stabilizacyjny i uwzględnia kąt znoszenia**. To czysto matematyczny opis. Więcej na stronach Racera.

*są też próby z modelami motocykli.
**puryści pewnie powiedzieli by "przez koło ogumione":)

czwartek, 3 września 2009

Asrock M3A790GXH/128M i Athlon II pod Linuksem

Właśnie złożyłem sobie budżetowego blaszaka ze zintegrowaną grafiką. Zgodnie z moimi odwiecznymi pragnieniami i marzeniami procesor musiał mieć zintegrowany kontroler pamięci i obsługę HyperTransport, a płyta masę różnych niepotrzebnych slotów:)

Wybór
Wybór padł na dwujajecznego Athlona II X2 240, który w przeciwieństwie do Phenoma II X2, ma fizycznie tylko dwa rdzenie (nie da się nic odblokować). Przez to żre mniejsze ilości prądu. Częstotliwość pracy obu jąder zmienia się niezależnie, w zakresie 800-2800 MHz.

Płyta to całkiem wypasiony Asrock M3A790GXH/128M, który różni się od starszej, nieposiadającej przedrostka M3, wersji, współpracą z pamięciami DDR3. Na 2GiB pamięci wykorzystałem na razie tylko jeden z czterech slotów (więc pracuje niestety jednokanałowo:-/)
Pomimo, że ten model posiada trzy sloty "długiego" PCIE i umożliwią pracę wszystkiego co ma w nazwie "Crossfire" (3Way Crossfire, Hybrid Crossfire itp.), to dla mnie ważna była zintegrowana grafika schowana w chipsecie AMD 790GX. Najszybsza zintegrowana, dla AMD, jaką można dostać...
Wbudowany Radeon 3300 posiada 128 MiB własnej, wlutowanej w płytę, pamięci DDR3. Obsługuje Shader Model 4. Wyjścia obrazu to D-Sub, DVI-D i HDMI. Przydałoby mi się S-Video, ale nie ma już płyt (kart graficznych praktycznie też nie), które są w nie wyposażone...

Za zasilanie płyty odpowiada 24-pinowe złącze (można 20-pinowe podłączyć) i dodatkowe ośmio (można cztery). Ja podłączyłem odpowiednio 24 i 4 piny.

Uwaga: Do współpracy z Athlonem II ta płyta potrzebuje BIOSu w wersji 1.10 lub nowszej.

Pingwin wędruje na dysk...
Najpierw wybór padł na 64-bitowe Ubuntu 9.04. Dziesięciominutowa* instalacja i... okazuje się, że nie ma sterownika do modemu** ADSL, dla 64-bitowego systemu! Musiałem stracić kolejne 10 minut na instalację 32-bitowego Ubuntu.

Stery do grafiki
Zapragnąłem akceleracji, więc musiałem zainstalować binarne sterowniki ATI. Te z repozytoriów Ubuntu zawiodły, X-y nie startowały. Ściągnąłem Catalyst 9.8 ze stron AMD/ATI i wydałem tajemne:
sudo sh ./ati-driver-installer-9-8-x86.x86_64.run
Teraz poszło jak po maśle i po restarcie cieszyłem się już bezbłędnie pracującym Compizem i panelem sterowania ATI (podobnym do windowsowego, ale trochę ubogim).

Wydajność
Utarło się twierdzenie, że układy ATI mają mizerną wydajność pod Linuksem, a sterowniki pełne są bugów. To zintegrowane ATI powinno być dramatem...
Chyba muszę zaprzeczyć, do tej pory nie zauważyłem błędów w wyświetlaniu, wydajność też nie jest fatalna. Compiz Fusion (przy 1024x768x32, praktycznie niezależnie od ilości efektów) trzyma ok. 120 kl./s. W ramach wstępnych testów pomęczyłem też "natywne linuksowe" dema dwóch klasycznych gier Dooma 3 i Quake 4. W standardowym ustawieniu "High Quality" oscylują wokół 50 kl./s. Z ciekawości też odpaliłem OpenArenę (natywna), przy 1024x768x32 i wszystko na max było 200-300 kl./s. Przy takich samych ustawieniach, windowsowy Unreal Tournament 2000 pracujący pod Wine miał ok. 100 kl./s - tu zapewne bardzo dławiła "translacja" Direct3D-OpenGL...
UPDATE 4.09: Także linuksowy Quake Live (pod Firefoksem) działa płynnie i bezbłędnie. Również na pełnym ekranie.

Warto zauważyć, że włączenie Compiza nie zwiększa obciązenia procesora. Oba rdzenie, przez większość czasu, leniwie leża na 800 MHz. Włączenie stardardowego filmu w XviDzie (w Totemie), powoduje obciążenie obu jąder po ok. 20%, pomimo iż dalej pracują na 800 MHz.
Można jedno jądro obciążyć w 100%, a responsywność systemu nie zostanie w żaden sposób zaburzona.
Każdy z rdzeni można ustawić, niezależnie, na 800, 1600, 2100 lub 2800 MHz albo na jeden z trybów: Powersave, Performance, Ondemand, Conservative.

Werdykt
Na razie nie mogę narzekać...

*taki wynik udaje się gdy nośnikiem obrazu CD jest DVD, a nie CD...
**kitajski ZXDSL

Lista rozszerzeń OGL obsługiwanych przez 790GX:
adi@adi-desktop:~$ glxinfo
name of display: :0.0
display: :0 screen: 0
direct rendering: Yes
server glx vendor string: ATI
server glx version string: 1.4
server glx extensions:
GLX_ARB_multisample, GLX_EXT_import_context, GLX_EXT_texture_from_pixmap,
GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_OML_swap_method,
GLX_SGI_make_current_read, GLX_SGI_swap_control, GLX_SGIS_multisample,
GLX_SGIX_fbconfig, GLX_SGIX_pbuffer, GLX_SGIX_visual_select_group
client glx vendor string: ATI
client glx version string: 1.4
client glx extensions:
GLX_ARB_create_context, GLX_ARB_get_proc_address, GLX_ARB_multisample,
GLX_EXT_import_context, GLX_EXT_visual_info, GLX_EXT_visual_rating,
GLX_MESA_allocate_memory, GLX_MESA_swap_control,
GLX_MESA_swap_frame_usage, GLX_NV_swap_group, GLX_OML_swap_method,
GLX_SGI_make_current_read, GLX_SGI_swap_control, GLX_SGI_video_sync,
GLX_SGIS_multisample, GLX_SGIX_fbconfig, GLX_SGIX_pbuffer,
GLX_SGIX_swap_barrier, GLX_SGIX_swap_group, GLX_SGIX_visual_select_group,
GLX_EXT_texture_from_pixmap, GLX_EXT_framebuffer_sRGB
GLX version: 1.4
GLX extensions:
GLX_ARB_create_context, GLX_ARB_get_proc_address, GLX_ARB_multisample,
GLX_EXT_import_context, GLX_EXT_visual_info, GLX_EXT_visual_rating,
GLX_MESA_swap_control, GLX_NV_swap_group, GLX_OML_swap_method,
GLX_SGI_make_current_read, GLX_SGI_swap_control, GLX_SGI_video_sync,
GLX_SGIS_multisample, GLX_SGIX_fbconfig, GLX_SGIX_pbuffer,
GLX_SGIX_swap_barrier, GLX_SGIX_swap_group, GLX_SGIX_visual_select_group
OpenGL vendor string: ATI Technologies Inc.
OpenGL renderer string: ATI Radeon HD 3300 Graphics
OpenGL version string: 2.1.8870
OpenGL shading language version string: 1.40
OpenGL extensions:
GL_AMD_draw_buffers_blend, GL_AMD_performance_monitor,
GL_ARB_color_buffer_float, GL_ARB_copy_buffer, GL_ARB_depth_buffer_float,
GL_ARB_depth_texture, GL_ARB_draw_buffers, GL_ARB_draw_instanced,
GL_ARB_fragment_program, GL_ARB_fragment_program_shadow,
GL_ARB_fragment_shader, GL_ARB_framebuffer_object,
GL_ARB_framebuffer_sRGB, GL_ARB_geometry_shader4, GL_ARB_half_float_pixel,
GL_ARB_half_float_vertex, GL_ARB_instanced_arrays,
GL_ARB_map_buffer_range, GL_ARB_multisample, GL_ARB_multitexture,
GL_ARB_occlusion_query, GL_ARB_pixel_buffer_object,
GL_ARB_point_parameters, GL_ARB_point_sprite, GL_ARB_shader_objects,
GL_ARB_shader_texture_lod, GL_ARB_shading_language_100, GL_ARB_shadow,
GL_ARB_shadow_ambient, GL_ARB_texture_border_clamp,
GL_ARB_texture_buffer_object, GL_ARB_texture_compression,
GL_ARB_texture_compression_rgtc, GL_ARB_texture_cube_map,
GL_ARB_texture_env_add, GL_ARB_texture_env_combine,
GL_ARB_texture_env_crossbar, GL_ARB_texture_env_dot3,
GL_ARB_texture_float, GL_ARB_texture_mirrored_repeat,
GL_ARB_texture_non_power_of_two, GL_ARB_texture_rectangle,
GL_ARB_texture_rg, GL_ARB_texture_snorm, GL_ARB_transpose_matrix,
GL_ARB_uniform_buffer_object, GL_ARB_vertex_array_object,
GL_ARB_vertex_buffer_object, GL_ARB_vertex_program, GL_ARB_vertex_shader,
GL_ARB_window_pos, GL_ATI_draw_buffers, GL_ATI_envmap_bumpmap,
GL_ATI_fragment_shader, GL_ATI_meminfo, GL_ATI_separate_stencil,
GL_ATI_texture_compression_3dc, GL_ATI_texture_env_combine3,
GL_ATI_texture_float, GL_ATI_texture_mirror_once, GL_EXT_abgr,
GL_EXT_bgra, GL_EXT_bindable_uniform, GL_EXT_blend_color,
GL_EXT_blend_equation_separate, GL_EXT_blend_func_separate,
GL_EXT_blend_minmax, GL_EXT_blend_subtract, GL_EXT_compiled_vertex_array,
GL_EXT_copy_buffer, GL_EXT_copy_texture, GL_EXT_draw_buffers2,
GL_EXT_draw_instanced, GL_EXT_draw_range_elements, GL_EXT_fog_coord,
GL_EXT_framebuffer_blit, GL_EXT_framebuffer_multisample,
GL_EXT_framebuffer_object, GL_EXT_framebuffer_sRGB,
GL_EXT_geometry_shader4, GL_EXT_gpu_program_parameters,
GL_EXT_gpu_shader4, GL_EXT_multi_draw_arrays, GL_EXT_packed_depth_stencil,
GL_EXT_packed_float, GL_EXT_packed_pixels, GL_EXT_pixel_buffer_object,
GL_EXT_point_parameters, GL_EXT_provoking_vertex, GL_EXT_rescale_normal,
GL_EXT_secondary_color, GL_EXT_separate_specular_color,
GL_EXT_shadow_funcs, GL_EXT_stencil_wrap, GL_EXT_subtexture,
GL_EXT_texgen_reflection, GL_EXT_texture3D, GL_EXT_texture_array,
GL_EXT_texture_buffer_object, GL_EXT_texture_compression_latc,
GL_EXT_texture_compression_rgtc, GL_EXT_texture_compression_s3tc,
GL_EXT_texture_cube_map, GL_EXT_texture_edge_clamp,
GL_EXT_texture_env_add, GL_EXT_texture_env_combine,
GL_EXT_texture_env_dot3, GL_EXT_texture_filter_anisotropic,
GL_EXT_texture_integer, GL_EXT_texture_lod, GL_EXT_texture_lod_bias,
GL_EXT_texture_mirror_clamp, GL_EXT_texture_object,
GL_EXT_texture_rectangle, GL_EXT_texture_sRGB,
GL_EXT_texture_shared_exponent, GL_EXT_texture_snorm,
GL_EXT_texture_swizzle, GL_EXT_transform_feedback, GL_EXT_vertex_array,
GL_EXT_vertex_array_bgra, GL_IBM_texture_mirrored_repeat,
GL_KTX_buffer_region, GL_NV_blend_square, GL_NV_conditional_render,
GL_NV_copy_depth_to_color, GL_NV_explicit_multisample,
GL_NV_primitive_restart, GL_NV_texgen_reflection, GL_SGIS_generate_mipmap,
GL_SGIS_texture_edge_clamp, GL_SGIS_texture_lod, GL_SUN_multi_draw_arrays,
GL_WIN_swap_hint, WGL_EXT_swap_control