Zenedith's dev blog

Dałem się namówić.., szatanowi chyba..

Projekt licencjacki

Nazwa projektu: Gra przez przeglądarkę „Wirtualne miasto”,
Czas realizacji: 01.2006 – 06.2006,
Rodzaj projektu: akademicki, projekt licencjacki do pracy pt.

„Obiektowość w językach skryptowych na podstawie php5″.

Rola w projekcie: Główny programista mechaniki i interfejsu użytkownika,

Wykorzystane umiejętności:

  • System operacyjny: Windows XP, Windows Vista,
  • Wykorzystane języki programowania: PHP5, JavaScript,
  • Baza danych: MySQL, PostgreSQL
  • Technologie: HTML, XML, Smarty, UML, wz_tooltip.js,
  • Metodologia: OOA, OOD, OOP, eXtreme Programming,
  • Użyte oprogramowanie: Eclipse+PDT, SVN, Mozilla Firefox, Internet Explorer.

Projekt miał komercyjne korzenie, jednakże inwestor wycofał się w związku ze skalą prac nad docelowym kształtem i funkcjonalnością projektu. Była to gra przez przeglądarkę internetową, która pozwalała prowadzić swoje „drugie życie” w wirtualnym mieście, lecz w zdecydowanie inny sposób (bogatszy) niż jest to w innej grze tego typu – http://www.gra.twoje-miasto.pl/. Ostatecznie projekt został adaptowany na projekt licencjacki i był wykonywany we dwie osoby. Oryginalne założenia były takie, żeby dać graczowi bardzo dużo możliwości działań w mieście. Ponieważ byliśmy ograniczeni czasowo, zrezygnowaliśmy z wielu założeń i wiele akcji zostało uproszczonych. Zgodnie z tematem pracy licencjackiej, projekt realizowany był w pełni obiektowo na podstawie PHP5.

Gracz zaczynał od stworzenia postaci, na którą składało się parę współczynników (kondycja, rozrywka, towarzystwo, kultura, zmęczenie, wiedza, itp.), które z czasem (mijającymi turami gry) obniżały swój poziom, nie pozwalając graczowi na niektóre czynności, nawet te podstawowe jak udanie się do pracy. Gracz miał bowiem możliwość, a nawet konieczność, znaleźć pracę żeby utrzymać siebie i mieszkanie. Jeśli chodzi o mieszkanie, system dawał możliwość ulokowania się w hotelu, motelu, wynajęcia mieszkania czy nawet jego zakupu albo wybudowania. Nie samym powietrzem człowiek żyje, tak więc gracz miał za zadanie dbać o posilanie się, kontakty z innymi graczami (wirtualne), doskonalenie w wybranych dziedzinach, kształcić się w szkołach, spędzać czas na rozrywkach, itp. Wszystko to było oferowane przez dowolnie skalowalną mapę, która składała się z pewnej ilości niepodzielnych jednostek, gdzie jedna jednostka odpowiadała fragmentowi drogi lub działce (teren nie zabudowany lub budynek specjalnego przeznaczenia jak wspomniany wcześniej hotel, sklep spożywczy, kino, itp). Jeśli pewien użytkownik dokonywał akcji na mapie (zakup działki, budowanie budynku), jego działania były widoczne dla pozostałych użytkowników.

Kontakt z innymi użytkownikami odbywał się w kawiarni, która była wbudowanym w grę chatem. Takie spotkania mogły doprowadzić do szczęśliwego zakończenia i zamieszkania razem lub przerodzić się we wzajemną nienawiść. Dostępna była opcja zaatakowania, w jeden z zabawnych sposobów, budynku innego gracza z pewnym własnym ryzykiem. Udany atak powodował utratę reputacji budynku, co miało swoje dalsze konsekwencje, natomiast przez niepowodzenia ataku, atakujący narażony był na interwencję policji (inni gracze).

Interfejs użytkownika, dzięki wykorzystaniu technologi javascript (własna biblioteka oraz wz_tooltip.js), był bardzo elastyczny oraz funkcjonalny – podawał wszelkie informacje o danej jednostce mapy gdy przytrzymano nad daną ikonką jednostki mapy dłużej kursor – dostępne było wtedy menu danego budynku, czyli możliwe akcje do wykonania przez gracza. Przy budowaniu budynku skrypty javascript pozwalały zmieniać dynamicznie opcje wpływające na jego właściwości jak np. reputację, dochodowość, koszty, czas budowy, itp. Do formatowania i wyświetlania danych używany był Smarty. Możliwa była zmiana skinów interfejsu i ikonek mapy.

Gra implementowana była jako gra wielojęzyczna – osobne pliki z tłumaczeniami dla każdej wersji językowej (domyślnie polski i angielski). Większość danych i zależności (pomijając właściwości budynków konfigurowanych w plikach XML) przechowywane były w bazie danych MySQL. W celu uzyskania przemijania czasu w grze (tury), stworzona została aplikacja, która w ustalonych odstępach czasu dokonywała przeliczenia, aktualizacji danych graczy i miasta oraz przejścia do następnej tury.

Do mnie należało napisanie mechaniki budynków, poruszania, budowania, ładowania mapy, stworzenie panelu zarządzania miastem i graczem oraz stworzenie dynamicznego interfejsu użytkownika.

Do drugiej osoby należało stworzenie optymalnej bazy danych i większości zapytań do niej, uzupełnienia jej danymi oraz stworzenie aplikacji (również w php) uruchamianej w ustalonych odstępach czasu, aktualizującej dane graczy i miasta.

W projekcie tym zastosowaliśmy jedno z głównych założeń metodologi programowania ekstremalnego, a mianowicie implementacji (wybranych fragmentów projektu) przez jedną z osób gdy druga to kontroluje i zgłasza swoje uwagi. Dzięki temu kod trzymał się pewnych zasad i standardów, doskonale znaliśmy działanie trudnych bloków kodu, popełnialiśmy mniej błędów, stosowaliśmy najprostsze rozwiązania. Nabyliśmy również doświadczenia w fazie zbierania wymagań i planowania systemu, przez kontakt z rzeczywistym klientem.

%d blogerów lubi to: