Monthly archive for September, 2007

Rzut okiem na Second Life

2007-09-05 20:51

Podobno dzisiejszy świat cierpi na ogromny deficyt prawdziwej rzeczywistości, a zdecydowany nadmiar tej wirtualnej – i to już od kilkudziesięciu lat. Tak przynajmniej twierdził zmarły kilka miesięcy temu francuski socjolog Jean Baudrillard. Co więcej, odróżnienie owej prawdziwej rzeczywistości od symulacji już dawno przestało być możliwe. Cóż, filozofowie nigdy nie byli zbytnimi optymistami :)
Osobiście nie mam na przykład najmniejszego problemu z rozdzieleniem przynajmniej jednego rodzaju wirtualnej rzeczywistości od ‘prawdziwego’ świata (cokolwiek to znaczy). A niektórzy, jak ostatnio lubią donosić media, mają z tym pewien problem…

Logo Second LifeNietrudno się domyślić, co mam na myśli. Zgadza się, chodzi o to.. coś (chwilowo nie mam dobrego określenia) o nazwie Second Life. Usłyszeć można o tym dość często, zwłaszcza wtedy gdy jakaś mniej lub bardziej znana firma tudzież instytucja poszerza swoją działalność o obecność w tym wirtualnym świecie. W nazywaniu SL światem nie ma zresztą żadnej przesady, skoro jego twórcy podają, że obecnie gości on już ponad 9 milionów użytkowników (choć tylko półtora miliona aktywnych, tj. takich, którzy zalogowali się w ciągu ostatnich dwóch miesięcy).
Pomyślałem więc, że warto chociaż sprawdzić, co w trawie piszczy… Bezpośrednim powodem był aczkolwiek ten wątek na forum Warsztatu. Tym aspektem, który został w nim poruszony, zajmę się jednak nieco później.

Zacznijmy więc od początku. Dołączenie do społeczności Second Life nie jest trudne i przypomina tworzenie konta w każdej typowej grze MMO. Pewnym odstępstwem od standardu jest jedynie konieczność podania imienia dla swojej postaci i wyboru jednego z kilkudziesięciu dostępnych nazwisk. Potem zabieramy się oczywiście za ściąganie klienta – i tu spotkała mnie pierwsza niespodzianka.
Screen z Second Life: tworzenie obiektówSłyszałem oczywiście o tak zachwalanej dowolności w kreowaniu świata SL przez jego mieszkańców. Sądziłem jednak, że jest ona albo ograniczona do pewnego zestawu elementów (modele, tekstury), albo że przynajmniej istnieje jakiś “zestaw podstawowy”. Nic z tych rzeczy: sam klient zajmuje tylko trochę ponad 30MB, więc wszystko jest po prostu na bieżąco ściągane w czasie rzeczywistym. Sprawia to, że klient zużywa każdy wolny megabit łącza, jaki dostanie do dyspozycji. I mówienie o megabitach bynajmniej nie jest przypadkiem.
A skoro zacząłem do spraw technicznych, to wypada też wspomnieć o tym, co widać z wierzchu i trochę głębiej. Jakość grafiki w Second Life wydaje się być rachunkiem płaconym za tę dowolność tworzenia wszystkiego przez wszystkich. Plasuje się ona mniej więcej na poziomie trzeciej części Grand Theft Auto i straszy zarówno klockowatymi modelami, jak i niską rozdzielczością tekstur – że o jakości oświetlenia nie wspomnę.
Muszę jednak pochwalić interfejs programu, i to zarówno jeśli chodzi o jego wygląd (prosty ale bardzo przyjemny), jak i funkcjonalność. Okna zachowują się dokładnie tak, jak w każdym porządnym systemie operacyjnym, a intuicyjne dodatki w rodzaju przeciągania i opuszczania są solidnie zaimplementowane. Może całość nie ma on uroku zakładek z Office 2007, ale dobrze spełnia swoją funkcję.

Screen z Second LifeNowi użytkownicy SL zaczynają w rejonie zwanym Orientation Island i ich pierwszym zadaniem jest… ukończenie kilku tutoriali. Większość z nich dotyczy poruszania się – służą do tego strzałki lub klasyczny WSAD, można też prowadzić pojazdy (w dość prymitywny sposób), a nawet swobodnie latać. Można też nauczyć się interakcji z obiektami w świecie, działania czata oraz gestów, a także zmiany wyglądu swojej postaci (czyli tzw. awatara). Te ostatnie są bardzo szerokie i możliwe do wykonania w każdej chwili.
Po ukończeniu samouczków otrzymujemy klucz i możemy teleportować się na drugą z wysp dla początkujących, czyli Help Island. Tam z kolei możemy dowiedzieć się co nieco o sposobach na tworzenie własnego kawałka wirtualnego świata, co obejmuje na przykład kreację nowych obiektów i sterowanie ich zachowaniem za pomocą skryptów. Można też zrobić “zakupy” w specjalnym sklepie, gdzie wszystko jest za darmo, co pozwala chociażby na zmianę domyślnego stroju. Walutą w Second Life są linden dolary (L$), które można wymieniać na te amerykańskie w jedną i drugą stronę. Obecny kurs to około 270 wirtualnych dolarów za jeden prawdziwy. Taka możliwość jest bardzo zachęcająca, jako że nie dostajemy nic na start – nasze konto z początku świeci pustkami.

Screen z Second Life: przeuroczy koń ;]Po zakończeniu zabawy na Help Island możemy wreszcie dostać się do właściwego świata SL. Trudno powiedzieć o nim cokolwiek konkretnego w jednym zdaniu. Na pierwszy rzut oka wygląda on trochę jak sen wykreowany przez nie do końca normalny umysł. Brakuje tu jakiegokolwiek śladu zorganizowania; można by go określić jako jedną wielką samowolkę “budowlaną”. Jest to zapewne skutkiem faktu, że większość parceli gruntu ma tu właścicieli, a prawo własności jest święte i oznacza wolność postawienia właściwie czegokolwiek gdziekolwiek. Zwłaszcza, że nie trzeba się przejmować takimi błahostkami jak np. prawa fizyki :) Własność pozwala też na ograniczenie innym dostępu do swojej działki, lecz na szczęście większość właścicieli nie korzysta z tego prawa.
W ten sposób, dzięki zbiorowej wyobraźni swoich mieszkańców (zasilanej wirtualnymi i prawdziwymi dolarami), powstaje i funkcjonuje świat tej… tego…

No właśnie – czym w zasadzie jest Second Life? Widać w nim pewne podobieństwa do gier MMORPG, zwłaszcza gdy rozwiniemy ostatnie trzy litery skrótu – Role Playing Game. Nie bardzo jednak pasuje do rzeczywistego punktu nacisku tych gier, czyli rozwoju postaci. W SL nie zdobywa się przecież doświadczenia ani nie wykonuje ustalonych z góry zadań. Tutaj świat tworzą sami “gracze”, którzy wchodzą ze sobą w interakcje, więc to raczej pierwsze trzy litery (Massive Multiplayer Online) mają tutaj większe znaczenie. Można przyjąć, że to coś w rodzaju wieloosobowej, sieciowej wersji The Sims. Albo po prostu gra, w której aspekt społeczny i ekonomiczny został tak rozbudowany, że nie zostało już miejsca na nic innego.
Ostatecznie wyszedł z tego po prostu niewyobrażalnie rozbudowany czat. Nic więc dziwnego, że Second Life okazał się dla wielu bardzo uzależniający. W końcu to właśnie komunikacja z innymi graczami połączona z rywalizacją i stawianiem czoła kolejnym wyzwaniom jest tym, co najsilniej utrzymuje przy klasycznych MMORPGach. Dodatkowo w SL żaden z tych elementów nie jest narzucony z góry, a określenie iż “ten świat żyje” nabiera tam zupełnie nowego znaczenia.

Przynajmniej teoretycznie. W praktyce Second Life wydało mi się śmiertelnie nudne i jednocześnie trochę niepoważne. Jest naturalnie prawie pewne, że zdołałem tylko liznąć powierzchnię tego cukierka, nie mając większego pojęcia o tym, co mógłbym znaleźć w środku.
Lecz prawdę mówiąc, wcale nie mam ochoty szukać i rozpoczynać swojego własnego Drugiego Życia. Tym bardziej, że w moim przypadku musiałoby by ono być już trzecie lub czwarte ;]

Tags:
Author: Xion, posted under Games, Thoughts » 1 comment

Z życia moderatora

2007-09-04 17:06

Funkcjonowanie dużego i otwartego community – takiego jak forum Warsztatu – wymaga zawsze istnienia pewnych zasad, nawet jeśli byłyby one niepisane. Zebranie ich w formie osobnego dokumentu, na przykład regulaminu, nadaje im większą rangę i przede wszystkim stanowi jasną podstawę dla działań służb porządkowych; w przypadku forum są to oczywiście moderatorzy.

Decyzje (“wyroki” ;)) przez nich wydawane są rzecz jasna zawsze w pewien sposób subiektywne. Najprawdopodobniej nie ma bowiem dobrej metody na radzenie sobie z najbardziej powszechnym naruszeniem regulaminu forum, czyli tzw. lamerskimi wątkami. Są one zazwyczaj zakładane przez osoby dopiero co pojawiające się w społeczności i bywa, że równie szybko z niej znikające :)
Co robić z takimi wypryskami radosnej i mało zachwycającej twórczości? Rozwiązań jest przynajmniej kilka, wśród którym można wymienić:

  • Usunięcie problematycznego wątku, ewentualnie z powiadomieniem autora. Zaletą jest fakt, że wątek przestaje straszyć innych użytkowników :) Wadą jest to, że skutek może okazać się odwrotny do zamierzonego i powodować eskalację niepożądanych zachowań. Poza tym trzeba przyznać, że takie szafowanie przyciskiem Delete jest bądź co bądź odrobinę nieeleganckie.
  • Zablokowanie wątku, poprzedzone odpowiednim komentarzem wyjaśniającym, w jaki sposób narusza on regulamin i/lub inne zasady panujące na forum. Dzięki temu można utworzyć przykład złego zachowania, klarownie pokazujący jego skutki. Wiadomo jednak, że nadmiar złych przykładów szkodzi. Po jakimś czasie może się też okazać, iż sensowne i wartościowe wątki są gęsto przedzielone tymi, które nie powinny się pojawić. Utrudnia to korzystanie z forum i jest nieco irytujące.
  • Przeniesienie wątku do specjalnego, wydzielonego działu “złych przykładów”. To wyjście obecnie powszechnie stosujemy na forum Warsztatu, gdzie istnieje specjalnie do tego stworzony Poprawczak. Lądujące tam tematy są automatycznie blokowane i zwykli użytkownicy nie mogą się już w nich wypowiadać. Autor potraktowanego tak wątku może jednak go poprawić i wówczas może on wrócić w poprzednie miejsce. Jest to aczkolwiek czysta teoria, bo jakoś ciężko mi sobie przypomnieć jakikolwiek przypadek takiej korekty :)

Przenosiny wątku do Poprawczaka

Te trzy metody mają jedną wadę: są metodami siłowymi i wymagają interwencji owych służb porządkowych. Innym wyjściem jest prosta zasada Don’t feed the trolls, czyli zwyczajne… ignorowanie. Praktyka ta wywodzi się jeszcze z czasów, gdy najpopularniejszą formą komunikacji “ogłoszeniowej” były grupy i listy dyskusyjne. W myśl tej reguły, wątek lub post, który w rażący sposób nie narusza zasad netykiety (czyli nie zawiera np. treści obraźliwych), a jedynie obniża poziom dyskusji – mówiąc wprost: jest lamerski – powinien zostać zwyczajnie zignorowany. Wówczas umrze on śmiercią naturalną, a community będzie niejako regulowało się samo.
Widać już, że to dość utopijne. Im społeczność jest większa i bardziej zróżnicowana, tym ciężej o taką jednomyślną postawę. Dodam jeszcze do tego swoją osobistą refleksję: w czasach panowania tak modnego hasła Web 2.0, zakładającego współtworzenie serwisów przez odwiedzających i nawyk komentowania wszystkiego przez wszystkich, powstrzymywanie się od wypowiedzi jest coraz trudniejsze i rzadsze. Także dlatego troll zawsze zostanie w końcu nakarmiony i będzie grasował dopóty, dopóki jakiś moderator go nie ustrzeli :)

Tags: ,
Author: Xion, posted under Internet » 2 comments

Szczęśliwego nowego roku… szkolnego

2007-09-03 11:52

Pan Roman G.Początek września to czas, w którym dużo się dzieje i dużo jest do zrobienia. Liście przestają się trzymać drzew, więc służby oczyszczania miasta mają co robić. Telewizje wprowadzają nowe ramówki, więc ich – nieliczni i wciąż ubywający – widzowie też mają co robić (i oglądać). Aha, no i oczywiście rozpoczyna się nowy rok szkolny, więc i uczniowie, i ich rodzice, i nauczyciele znów mają co robić.
Aczkolwiek jeśli chodzi o to ostatnie wydarzenie, to już od paru miesięcy wszyscy mieli się nad czym zastanawiać. Dylemat dotyczy głównie osobliwej i narzuconej odgórnie ‘mody’ na tzw. stroje jednolite. To oczywiście tylko jeden element wątpliwej jakości spuścizny po poprzednim ministrze edukacji, o którym napisano już jednak tyle, że chyba nie trzeba nic więcej dodawać :)

Na całe szczęście jako student już od trzech lat jestem całkowicie odporny na wszelkie pomysły osób zasiadających na tym stanowisku. I chociaż po drodze musiałem przetrwać inne “ciekawe” zmiany, jak choćby wprowadzenie gimnazjów czy nową maturę, wydaje mi się, że były one o wiele łatwiejsze do przełknięcia niż to, co jest serwowane uczniom w tym roku.
Wszystkim zmuszonym dzisiaj do marszu do szkół życzę więc powodzenia, a reszcie kształcących się – udanego ostatniego miesiąca wakacji :)


Author: Xion, posted under Life » 4 comments

Bolączki C++ #2 – Pakietowanie kodu

2007-09-01 19:05

W czasach panowania języków proceduralnych i strukturalnych – jak C czy Pascal – możliwości ukrywania i ochrony kodu przed niepowołaną zmianą były, delikatnie mówiąc, słabe. Wszystkie funkcje, pola i struktury były dostępne na zewnątrz i tylko dzięki programistycznej kurtuazji (i czytaniu dokumentacji technicznej, o ile istniała) zawdzięczało się poprawne działanie kodu.
Sytuacja poprawiła się wraz z językami obiektowymi, takimi jak C++. Mamy już klasy, których składniki mogą być określone jako publiczne, chronione (protected) albo prywatne. Jeżeli tylko odpowiednio oznaczymy składowe należące do implementacji, nikt niepowołany nie będzie miał do nich dostępu zwyczajnymi środkami.
Od tego czasu świat poszedł jednak do przodu pod względem technik organizacji kodu. Nowsze języki programowania – jak Java, C# czy Python – posiadają wbudowane mechanizmy pakietów (zwanych w .NET złożeniami – assemblies). Dzięki nim można grupować klasy wykonujące wspólne zadania i zapewniać dostęp do wybranych składowych wszystkich klasom z danego pakietu. W precyzyjnym określaniu widoczności celuje zwłaszcza C#.

W C++ teoretycznie mamy dość podobne możliwości, oferowane przez kilka osobnych mechanizmów językowych. Czymś co zdaje się najbardziej przypominać pakiety lub złożenia są przestrzenie nazw (namespaces). Ich przeznaczeniem jest przede wszystkich jednak zabezpieczenie przed dublowaniem i niejednoznacznością nazw. Na przykład klasa string z STL jest zawarta w przestrzeni std i dzięki temu nie będzie pomylona z jakąś inną klasą łańcuchów znakowych o tej samej nazwie.
Jednak przestrzenie nazw to bardzo ułomny sposób pakietowania. Elementy jednej przestrzeni (klasy, funkcje) domyślnie są dla siebie tak samo obce, jak te należące do różnych przestrzeni. Można to oczywiście zmienić, korzystając z deklaracji przyjaźni; wymaga to jednak znajomości wszystkich tych “przyjaciół” – czyli odpowiednich deklaracji zapowiadających – co jest bardzo niewygodne. Naturalnie można powiedzieć, że wtedy przynajmniej wiemy, kto nas “podgląda”. Lecz co z tego, skoro w takim zaprzyjaźnianiu stosować można wyłącznie zasadę wszystko albo nic: klasa/funkcja będzie widziała albo wszystko składowe, albo tylko publiczne (domyślnie). Bez pokrętnych sztuczek nie da się udostępnić pewnych składników tylko w ramach “pakietu”.

Całkiem osobną kwestią jest też to, jak mechanizm przestrzeni nazw współpracuje z tą zakałą C++, czyli plikami nagłówkowymi i dyrektywą #include. W nowszym językach wystarcza instrukcja podobnej do tej:

  1. using System.Windows.Forms;

żeby jednocześnie zadeklarować użycie pakietu i uchronić się przed koniecznością używania kwalifikowanych nazw (w tym przypadku np. ListBox zamiast System.Windows.Forms.ListBox). W C++ potrzebujemy do tego dwóch dyrektyw:

  1. #include <vector>
  2. using namespace std;

i niby wszystko byłoby w porządku. Problem w tym, że wielce inteligentny mechanizm plików nagłówkowych oraz #include sprawia, że nazw niekwalifikowanych możemy używać praktycznie tylko w plikach *.cpp. Gdyby bowiem umieścić using namespace w nagłówku, to instrukcja ta zostałaby bezmyślnie powielona we wszystkich plikach, które ten nagłówek dołączają. A wtedy przestrzeń nazw nie spełniałaby nawet tej najprymitywniejszej funkcji, czyli ochrony przed wieloznacznością powtarzających się nazw.

Tak naprawdę to same przestrzenie nazw nie są złe. Nawet same pliki nagłówkowe z C++ nie byłyby aż tak bardzo złe, gdyby ich zadaniem nie było tylko ułatwianie życia kompilatorowi. Dopiero połączenie tych dwóch rzeczy sprawia, że zdecydowanie odechciewa się używać którejkolwiek z nich ;P
Istnieje jednak pewien optymistyczny akcent. Jeśli kiedykolwiek zostanie zniesiony w C++ podział na dwa rodzaje plików z kodem, wówczas i przestrzenie nazw będą musiały się przekształcić w coś podobnego do pakietów Javy czy złożeń z .NET. Podobnie jest w drugą stronę: jeżeli C++ dorobi się mechanizmu pakietów, wtedy pliki nagłówkowe i dyrektywa #include nie będą miały wielkiego sensu. Wypada więc tylko kibicować Komitetowi Standaryzacyjnemu w wykonaniu tego pierwszego kroku, bo drugi prawdopodobnie zrobią siłą rozpędu :)

Tags: ,
Author: Xion, posted under Programming » 3 comments
 


© 2018 Karol Kuczmarski "Xion". Layout by Urszulka. Powered by WordPress with QuickLaTeX.com.