Icon - Dokąd zmierzają gry komputerowe?

Dokąd zmierzają gry komputerowe?

Kwiecień 17th, 2010 | Tagi: , , | Posted in Gry komputerowe

Gry komputerowe fascynowały mnie od zawsze. Swój pierwszy komputer, Comodore C64, dostałem w wieku 4 lat. Logiczne jest, że jako taki mały brzdąc, komputer ten służył mi głównie do grania. Potem przyszedł pierwszy PC, jeszcze wspanialsze gry, dłuższe, z wciągającą fabułą. Dziś nie pamiętam większości tytułów, choć nadal w pamięci mam wygląd tych gier i opowiedziane w nich historie. Tytuły były wtedy mało ważne. Kilka jednak pozostało w mej pamięci do dziś – gry takie jak Destruction Derby, Command and Conquer, pierwszy Red Alert, Civilization, pierwsze części The Settlers. Wraz z PC przyszła też fascynacja “jak to jest zrobione?” – tak zaczęła się moja przygoda z programowaniem.

Dlaczego o tym piszę, wspominając te lata dzieciństwa? Może dlatego, że przez te wszystkie lata przyglądałem się rozwojowi gier i rynku elektronicznej rozrywki. I to, co się dziś dzieje, wygląda niestety coraż gorzej. Pamiętam, gdy w Polsce pojawił się Baldur’s Gate. Wspaniała gra, rozbudowana, największa (jak na ówczesne czasy) polonizacja. Gra dostarała wielu godzin rozrywki. Nie pamiętam, ilu dokładnie, ale coś mi się kojarzy, że twórcy przewidywali, że do ukończenia głównego wątku fabularnego potrzeba 50 – 60 godzin. Dziś już nikt nie wysila się na stworzenie tak długiej fabuły. Obecne gry mają zapewnić ok 12 – 15 godzin rozrywki. Spójrzmy, jakie gry zdobywają wielką popularność?  Modern Warfare 2 – można ukończyć w ok 8 godzin, Spliter Cell: Conviction – 5 godzin rozgrywki. 5 godzin! A cena wersji PC (na tę platformę gry nadal są najtańsze) – przynajmniej 100 zł. Nie wspominając już o upierdliwych zabezpieczeniach wymagających stałego dostępu do internetu. Przecież taką grę można ukończyć w jeden wieczór. A przy takim Duke Nukem 3D człowiek bawił się kilka tygodni…

Długość rozgrywki to nie jedyny problem współczesnych gier. Sprawą drugą są opłaty. Można zrozumieć abonament za gry MMO, w których utrzymanie tysięcy serwerów, ciągły rozwój świata gry i organizowanie w nim happeningów kosztuje. Obawiam się jednak, że obecne ostatnio zabezpieczenia wymagające stałego dostępu do internetu są przymiarką do wprowadzenia opłat za grę Single Player. W głowię już słyszę te tłumaczenia: “Trzymamy Wasze save-y na serwerze, aby były bezpieczne i byście nigdy ich nie stracili. Niestety, utrzymanie serwerów kosztuje, zapłaćcie więc $9,99 za każdy miesiąc rozrywki”. Dziękuję, ale postoję. Wolę stracić save-a (co mi się jeszcze nigdy nie zdażyło), ale mieć możliwość grać w zakupioną grę beż dodatkowych opłat. Jest jeszcze kwestia DLC, czyli dodatków, możliwych do ściągnięcia w czasie rozrywki. Bardzo często płatnych oczywiście. Zrozumieć można płatne dodatki, typu nowych rodzajów broni, które owszem, umilą rozgrywkę, ale ich brak w żadnym wypadku nie uniemożliwi nam podążania którąś ścieżką rozwoju.  Niestety, także tutaj są już przymiarki do “ukrytych opłat”. Pewnie część już widziała screena z gry Dragon’s Age prezentujący konieczność pogrania DLC, aby ukończyć zadanie. To już chyba lekka przesada. Niedługo ujrzymy napis: “Wejdź do komnaty i stocz ostateczną walkę z głównym przeciwnikiem (pobierz płatną dodatkową zwartość)”.

Cóż, gry komputerowe stały się przemysłem, w którym liczy się zysk. W pogoni za coraz lepszymi efektami graficznymi rosną też koszta, a te niweluje się płatnymi dodatkami i cięciem fabuły. W dzisiejszych czasach nie ma już miejsca dla małej grupli zapaleńców, kórzy tworzą grę – może i ze słabą grafiką 2D, ale z wciągającą i intrygującą fabułą. Większość młodych graczy nawet na nią nie spojrzy, bo co to za gra z taką “denną grafiką”. Jeszcze trzeba będzie pomyśleć przy niej, a nie tylko celować, chować się i naciskać przycisk myszki. Gdzie podziały się klasyczne przygodówki, symulatory rajdów (nie arcade-ówki pokroju Need for Speed), czy ukochane przeze mnie symulatory lotów? Czy spędzenie kilkunastu czy kilkudziesięciu godzin, aby nauczyć się latać Su-27 w Flankerze 2.0 lub F-16 w Falconie 4.0 wykracza poza możliwości młodych graczy?

Na szczęście sytuacja nie jest tragiczna. Nadal wychodzą gry, które nastawione są na zmuszenie gracza do pewnego pomyślunku, a nie tylko na efekty graficzne. Jest ich niestety coraz mniej? A może to ja się starzeję i nie bawią mnie już w takim stopniu? Rozpoczynałem studia z myślą, że będę pracował przy tworzeniu gier komputerowych. Dziś kończę już studia i nie jestem przekonany, czy nadal tego chcę – choć serce mówi, że tak, rozum zaczyna powoli mówić “nie”. W tym przemyśle kończył się czas na indywidualizm, grupka 3 – 4 osób nie stworzy gry, która zainteresuje obecnych odbiorców. A pierwsza część Warcrafta powstała w firmie założonej przez 3 osoby, które same z początku pisały gry. Dopiero większe studia, z odpowiednim zapleczem (czyt. kimś, kto wyłoży kasę), są w stanie stworzyć coś dobrego. Dopchać się do nich nie jest łatwo, utrzymać się też nie. Inna sprawa, że nikt nie uczy, jakie podejście stosować przy tworzeniu gier, nie ma odpowiednich szkół i kierunków studiów, a obecne nie dają żadnej wiedzy odnośnie programowania gier. Większość programistów gier to więc “samouki”. Może otwarta nie tak dawno Europejska Akademia Gier w Krakowie coś zmieni? Miejmy tylko nadzieję, że te dobre, ambitne gry nie znikną w tym czasie z rynku bezpowrotnie.

Icon - Program: Sieci neuronowe 1 – operacja AND

Program: Sieci neuronowe 1 – operacja AND

Listopad 23rd, 2008 | Tagi: , , , | Posted in Studia

Dzisiaj dorzuciłem do zbiorów kolejny program napisany na zajęcia. Tym razem jest to prosta aplikacja napisana na zajęcia z przedmiotu Sieci neuronowe 1.
Program obrazuje sposób działania pojedynczego neuronu, którego zadaniem jest nauczyć się wykonywać logiczną operację AND. Jest to pierwszy program, który napisałem na Sieci neuronowe 1. Dzięki tej prostej aplikacji możemy zaobserwować, jaki wpływ mają niektóre parametry na prędkość i jakość uczenia neuronu. Za pomocą graficznego interfejsu możemy wybrać wartości wag początkowych poszczególnych wejść neuronu (przed rozpocząciem uczenia) oraz funkcję aktywacji (bipolarną lub unipolarną). Wyuczony neuron możemy następnie przeegzaminować – dopuszczalne są wartości ułamkowe (nie tylko idealne 0 i 1), więc po podaniu 0.99, 0.99 na wejście, neuron także powinien udzielić odpowiedzi 1. Dodatkowo wyuczony neuron możemy zapisać do pliku, aby możliwe było szybkie jego wczytanie po ponownym uruchomieniu programu. Zachęcam do pobawienia się tym prostym programem, a zainteresowanych tematyką sieci neuronowych odysłam na tę stronę: Sztuczne Sieci Neuronowe

Icon - Strona zespołu Bethel

Strona zespołu Bethel

Listopad 22nd, 2008 | Tagi: , , | Posted in Strony www
Już jakiś czas temu skontaktowała się ze mną osoba z prośba stworzenia strony dla wrocławskiego zespołu Bethel. Oczywiście zgodziłem się, gdyż oboje będziemy mieć z tego korzyści. Zespołu Bethel będzie miał w końcu swoją własną stronę, ja z kolei będę mógł się pochwalić kolejną wykonaną “pracą” (stronę wykonałem za darmo, w ramach promocji własnej osoby).

I choć strona jest już prawie gotowa (pozostało wprowadzenie kosmetycznych poprawek), to jakoś nie mogę się zebrać i jej dokończyć – ciągle wyskakują jakieś ważniejsze zajęcia. Zamierzam jednak już niedługo zrobić to, co pozostało do zrobienia, aby zespół Bethel mógł się cieszyć swoją stroną. Grafikę dla serwisu wykonał mój znajomy, Kamil Weronicki. Moim zadaniem było stworzenie kompletnego, a zarazem niezbyt rozbudowanego i łatwego w użyciu systemu CMS, który pozwoliłby członkom zespołu na pisanie krótkich informacji, edycję poszczególnych podstron (m.in. z historią zespołu) przez www, dodawanie informacji o koncertach itp. Dlatego postanowiłem taki system napisać samemu, a nie skorzystać z gotowych, rozbudowanych rozwiązań. Jak tylko skończę ten projekt, umieszczę na stronie stosowną informację.

Icon - Nokia Siemens Networks

Nokia Siemens Networks

Październik 15th, 2008 | Tagi: , , | Posted in Studia
W tym oraz w przyszłym semestrze, w ramach przedmiotu Projektowanie Systemów Informatycznych na uczelni, dostaliśmy za zadanie wykonania projektów w małych grupach (zazwyczaj po 4 – 5 osób). Niektóre z tematów wykonywane są na rzecz uczelni, jednak część z nich została zaproponowana przez firmy zewnętrzne i dla nich będzie wykonywana. Postanowiłem podjąć się ambitnego tematu i wraz z kolegami wybraliśmy system dla firmy Nokia Siemens Networks – Data synchronization mechanism for distributed systems.

Zdajemy sobie sprawę, że nie będzie to proste zadanie, jednak sądzimy, że jest to dla nas ogromna możliwość rozwoju. Przede wszystkich będziemy mogli zapoznać się z całym procesem projektowania oraz implementacji większego systemu niż te, które do tej pory pisaliśmy na uczelni. Dodatkowo będzie to możliwość do rozwinięcia naszych zdolności analitycznych oraz przypomnienia sobie języka C++, w którym (przynajmnie ja) dawno nie programowaliśmy. Mnie osobiście czeka jeszcze jedno zadanie. Zostałem wybrany, a właściwie sam się zgłosiłem, na kierownika naszej grupy. Będę więc musiał wykazać się jeszcze zdolnościami przywódczymi – do moich zadań, poza tymi związanymi z projektowaniem, będzie należało organizowanie pracy poszczególnym członkom zespołu (wyznaczanie im zadań), rozliczanie z wykonanych prac, planowanie wykonania kolejnych elementów, pisanie sprawozdań ze spotkań itd. Mam bardzo dużą nadzieję, że dzięki temu będę mógł zyskać chociaż trochę doświadczenia nie tylko w programowaniu, ale także w projektowaniu aplikacji oraz zarządzaniu projektem informatycznym – w końcu nie chciałbym całe życie tylko i wyłącznie pisać kodu, ale także rozwijać się, projektować.

Icon - phpBB 3 i polska wersja

phpBB 3 i polska wersja

Luty 18th, 2008 | Tagi: , , | Posted in PHP

Ostatnio znajomy poprosił mnie, abym zainstalował mu forum. Pomyślałem, że phpBB będzie odpowiednie dla niego. Wszedłem więc na stronę http://www.phpbb2.pl/, a tam informacja o phpBB3 wraz z testową wersją tłumaczenia na język polski. Pomyślałem, że może warto spróbować? Jednak jak się później okazało, tłumaczenie jest naprawdę “testowe” i sprawia trochę problemów. Jeden z nich chciałbym właśnie tutaj opisać. Otóż po zainstalowaniu forum, ustawieniu domyślnego języka na polski i ustawieniu aktywacji konta przez e-mail, podczas rejestracji nowego użytkownika system zaczął wyświetlać błędy, mniej więcej takie:

Parse error: syntax error, unexpected T_STRING in /includes/functions_messenger.php(208) : eval()’d code on line 5
Warning: Cannot modify header information – headers already sent by (output started at /includes/functions_messenger.php(208) : eval()’d code:5) in /includes/functions.php on line 3391
Warning: Cannot modify header information – headers already sent by (output started at /includes/functions_messenger.php(208) : eval()’d code:5) in /includes/functions.php on line 3393
Warning: Cannot modify header information – headers already sent by (output started at /includes/functions_messenger.php(208) : eval()’d code:5) in /includes/functions.php on line 3394
Warning: Cannot modify header information – headers already sent by (output started at /includes/functions_messenger.php(208) : eval()’d code:5) in /includes/functions.php on line 3395

Cóż z tym można zrobić?

Pierwsza moja myśl, to poszukać informacji na ten temat na Googlach. Próbowałem kilku zapytań, jednak żadne nie dawało zadawalającego rezultatu. Na oficjalnej stronie projektu phpBB także na ten temat nic nie pisano. Postanowiłem więc sprawdzić, jak wygląda sprawa na oryginalnej, angielskiej wersji. Ku mojemu zdziwieniu, tutaj wszystko działało dobrze, przy rejestracji nowego użytkownika nie pojawiały się błędy, a maile dochodziły bez problemu. Natomiast przy polskiej wersji, pomimo błędów, mail dochodził, ale z tematem Nie podano tematu wiadomości i treści:

Temat: Witamy na forum “‘ . ((isset($this->vars['SITENAME'])) ?
$this->vars['SITENAME'] : ”) . ‘” – ‘ . ((isset($this->vars['U_BOARD'])) ?
$this->vars['U_BOARD'] : ”) . ‘

‘ . ((isset($this->vars['WELCOME_MSG'])) ? $this->vars['WELCOME_MSG'] : ”)
. ‘

Proszę zachować tego e-mail’a. Oto informacje o Twoim koncie:

—————————-
Nazwa użytkownika: ‘ . ((isset($this->vars['USERNAME'])) ?
$this->vars['USERNAME'] : ”) . ‘
Hasło: ‘ . ((isset($this->vars['PASSWORD'])) ? $this->vars['PASSWORD'] :
”) . ‘

URL forum: ‘ . ((isset($this->vars['U_BOARD'])) ? $this->vars['U_BOARD'] :
”) . ‘
—————————-

Twoje konto jest aktualnie nieaktywne. Nie będziesz mógł go używać póki nie
klikniesz na poniższy link:

‘ . ((isset($this->vars['U_ACTIVATE'])) ? $this->vars['U_ACTIVATE'] : ”) .

Zacząłem więc sprawdzać pliki z tłumaczeniem, szczególnie te, które zawierają treść wysyłaną w wiadomościach e-mail i porównywać angielską i polską wersję. W końcu znalazłem rozwiązanie. Jest bardzo proste, wystarczy zmodyfikować jeden plik – opis modyfikacji podaję poniżej.

Oryginalny plik: \language\polish\email\user_welcome_inactive.txt z polskiej wersji wygląda tak:

Temat: Witamy na forum “{SITENAME}” – {U_BOARD}

{WELCOME_MSG}

Proszę zachować tego e-mail\’a. Oto informacje o Twoim koncie:

—————————-
Nazwa użytkownika: {USERNAME}
Hasło: {PASSWORD}

URL forum: {U_BOARD}
—————————-

Twoje konto jest aktualnie nieaktywne. Nie będziesz mógł go używać póki nie klikniesz na poniższy link:

{U_ACTIVATE}

Proszę nie zapomnij swojego hasła, ponieważ zostało ono zaszyfrowane w naszej bazie danych i nie może zostać odzyskane. Jeśli jednak je zapomnisz to będzie można poprosić o nowe, które będzie trzeba aktywować tak samo jak konto.

Dziękujemy za rejestrację.

{EMAIL_SIG}

Modyfikacje, które należy wykonać:
1. Aby temat maila był poprawnie wyświetlany, należy zmienić pierwszą linijkę z:

Temat: Witamy na forum “{SITENAME}” – {U_BOARD}

na:

Subject: Witamy na forum “{SITENAME}” – {U_BOARD}

Komentarz: Jest to linijka informująca serwer o tym, że w niej będzie podany temat maila (serwer rozpoznaje to właśnie po początku “Subject:”) – ktoś niepotrzebnie się rozpędził i przetłumaczył trochę za dużo.
2. Aby wiadomość została wysłana i nie wyświetlała błędów (u mnie pojawiał się Parse Error przy rejestracji użytkownika), należy w linii nr 3 zmienić:

Proszę zachować tego e-mail\’a. Oto informacje o Twoim koncie:

na np.:

Proszę zachować tę wiadomość e-mail. Oto informacje o Twoim koncie:

Komentarz: wygląda na to, że wszystkiemu winny jest ten apostrof – po jego usunięciu Parse Error zniknął, a maile zaczęły wyglądać tak, jak powinny (czyli zostały wypełnione: nazwa użytkownika, hasło, link aktywacyjny itd.).

U mnie plik: \language\polish\email\user_welcome_inactive.txt wygląda w tej chwili tak (maile przy rejestracji użytkownika działają poprawnie):

Subject: Witamy na forum “{SITENAME}” – {U_BOARD}

{WELCOME_MSG}
Proszę zachować tę wiadomość e-mail. Oto informacje o Twoim koncie:
—————————-
Nazwa użytkownika: {USERNAME}
Hasło: {PASSWORD}

URL forum: {U_BOARD}
—————————-
Twoje konto jest aktualnie nieaktywne. Nie będziesz mógł go używać póki nie klikniesz na poniższy link:
{U_ACTIVATE}
Proszę nie zapomnij swojego hasła, ponieważ zostało ono zaszyfrowane w naszej bazie danych i nie może zostać odzyskane. Jeśli jednak je zapomnisz to będzie można poprosić o nowe, które będzie trzeba aktywować tak samo jak konto.

Dziękujemy za rejestrację.

{EMAIL_SIG}

Należy jeszcze tylko pamiętać o odczytywaniu i zapisywaniu pliku w kodowaniu UTF-8, inaczej polskie znaki zamienią się w “krzaczki”.