Ostatni raz o Pulsar Online pisałem ponad miesiąc temu. W tym czasie udało mi się ‘pchnąć’ prace do przodu i uruchomić działającą wersję dostępną dla graczy. Od miesiąca trwają testy dla wybranej grupy graczy, dziś startują testy otwarte.
Trzy słowa o grze. W Pulsar Online to gra przeglądarkowa typu MMORPG w której wcielasz się pilota statku kosmicznego i zostajesz przeniesiony do wszechświata Pulsar. Wszechświat jest podzielony na systemy, a systemy na sektory. W systemach znajduję się sektory różnych typów (asteroidy, mgławica, itp.) różniące się parametrami oraz zasobami jakie w nich występują. Oprócz tego, w systemach są ulokowane stacje i porty kosmiczne. Gracz ma możliwość poruszania się wewnątrz systemów jak i pomiędzy nimi (używając Wrót Skoku), dokowania do portów i stacji, kupna i sprzedaży towarów, zbierania zasobów z przestrzeni kosmicznej. Dzięki handlowi i zbieractwu można kupować lepsze statki, wyposażenie i uzbrojenie. Posiadając odpowiedni statek można walczyć z innymi graczami.
Na chwilę obecną zaimplementowane są następujące mechanizmy:
- poruszanie się po świecie gry
- handel
- zbieractwo
- podstawowa komunikacja pomiędzy graczami
- zarządzanie statkiem (uzbrojenie i wyposażenie)
- podstawowy model walki (jeden na jeden) , bez kary za przegraną walkę
W najbliższym czasie udostępniona zostanie kolejna wersja gry rozszerzająca model walki o:
- walka wielu statków na raz
- nowe uzbrojenie i wyposażenie
- walka ze statkami sterowanymi przez komputer (NPC)
Jeśli macie ochotę wypróbować moje dzieło, zapraszam tutaj: http://pl.pulsar.spychalski.info/ do testów wersji polskojęzycznej, lub tutaj: http://en.pulsar.spychalski.info/ do wersji angielskojęzycznej.
Gra nie posiada jeszcze instrukcji obsługi. Na pytania mogę odpowiadać w komentarzach do tego posta lub na tymczasowym forum gry: http://omripulsar.freeforums.org/index.php (wersja angielskojęzyczna).
Wszelkie znalezione błędy można zgłaszać na bugtracku: http://dev.spychalski.info/flyspray
Zapraszam.
Paweł Pulsar Online Gra, MMORPG, MySQL, PHP, Programowanie, Pulsar Online, Testy
Wstęp
MySQL jest chyba najpowszechniej używaną bazą danych w różnego typu aplikacjach internetowych: od portali, przez fora, blogi, gry i inne rodzaje stron. Dlaczego? Bo jest szybka, prosta, darmowa i się przyjęła. Oprócz ewidentnych zalet ma też serię wad: standardowy engine MyISAM nie jest transakcyjny, nie jest bezpieczny, przy zapisie blokuje całą tabelę, a nie pojedynczy rekord. Jakby tego jeszcze było mało, to w 95% procentach przypadków, właśnie baza MySQL jest wąskim gardłem całej aplikacji i to jej wydajność (szybkość przetwarzania zapytań) decyduje o wydajności całego rozwiązania. Pracując nad pewną aplikacją (Pulsar-Online), przez ostatni tydzień starałem się skupić właśnie nad sprawą wydajności MySQL na której oparty jest Pulsar i podzielić się swoimi spostrzeżeniami na ten temat.
Po pierwsze, specyfika aplikacji internetowych, a przynajmniej ich większość, więcej odczytuje z bazy danych, niż do niej zapisuje. UPDATE i INSERT stanowią mniejszość w porównaniu z liczbą wykonywanych SELECTów. Wydajność pobierania rekordów z bazy ma więc dość duże znaczenie.
Ogólnie
Zastanówmy się, jak MySQL pobiera dane z tabeli, jeśli wybrana tabela nie posiada indeksów na polach które uwzględnimy w zapytaniu (zarówno w JOIN jak i WHERE lub ORDER BY). Dla każdego zapytania skanuje od początku wszystkie rekordy w tabeli, aż warunek nie zostanie znaleziony. Jeśli nie uwzględnimy LIMIT, MySQL będzie skanował dalej, aż do końca tabeli. Co to dla nas oznacza? Wyjaśnię na przykładzie.
Czytaj więcej…
Paweł Wujek Dobra Rada, Zawodowo Bazy danych, MyISAM, MySQL, PHP, Poradniki, Programowanie, Pulsar Online, WWW
Po raz kolejny wróciłem do pracy nad Pulsar Online. W tym tempie szybko nie skończę tej gry, lecz znów widać pewne postępy, kolejne rzeczy zaczęły wreszcie działać:
- możliwość zakupu wyposażenia
- podstawowe zarządzanie wyposażeniem
- możliwość zakupu uzbrojenia
- podstawowe zarządzanie uzbrojeniem
W chwili obecnej na agendzie są:
- rejestracja graczy
- optymalizacja bazy danych
- prace koncepcyjne nad:
- schematem walki, najprawdopodobniej zostanie on uproszczony względem moich oryginalnych pomysłów
- interakcja z NPC
- zarządzanie grą
Lista rzeczy do zrobienia jest ciągle bardzo długa aby można było myśleć o jakiś testach. Zobaczymy…
Paweł Pulsar Online MySQL, PHP, Programowanie, Pulsar Online, Worklog
Przysiadłem dziś troszkę nad psDebug i przygotowałem nowy release. Zmian wiele nie ma, kosmetyka i usunięty jeden błąd związany z wyświetlaniem backtrace. Dodatkowo, dodałem kod źródłowy do repozytorium na sourceForge. I to tyle.
Wersję 0.6 można pobrać ze strony projektu na sourceForge.
Paweł Zawodowo Błędy, PHP, Programowanie, psDebug, Wyjątki
Jak iść w OpenSource, to iść w OpenSource. Od dziś klasa psDebug o której pisałem jakiś czas temu jest dostępna jako projekt na sourceForge. W najbliższym czasie postaram się o kawałek dokumentacji po angielsku.
Paweł Zawodowo Błędy, PHP, Programowanie, psDebug, Wyjątki
PHP, szczególnie od wersji 5 w górę jest całkiem przyjemnym językiem i swoimi możliwościami nie odstaje aż tak bardzo od C++, czy Java. Fakt, jest prostszy, ale odkąd działa w nim prawdziwa obiektówka i wyjątki, dobre programowanie stało się wygodniejsze.
Niestety, PHP nie jest pozbawione kilku niedociągnięć, czasami przeradzających się gigantyczny ból w tyłku. Jednym z nich jest niekonsekwencja zachowania funkcji na błędy. Część rzuca wyjątki, część rzuca błędy, a jeszcze inne zwracają FALSE lub NULL gdy coś nie idzie po ich myśli. Z tego powodu, sensowym wyjściem jest napisanie własnej funkcji obsługi błędów przekształcających je na wyjątki. A skoro można napisać coś takiego, to czemu od razu nie napisać własnej funkcji obsługi wyjątków i dodać kilka innych usprawnień?
Z tych powodów, bazując na klasie wfErrorHandler Grzegorza Godlewskiego, napisałem własną klasę obsługi błędów: psDebug. Jej główne cechy to:
- wszystkie błędy są przekształcane na wyjątki w celu ich późniejszego przechwycenia
- wyjątki które nie zostały przechwycone mogą być raportowane na następujące sposoby:
- elegancki komunikat dla użytkownika nie zawierający szczegółów
- pełny komunikat o błędzie razem ze ścieżką wykonania
- przesłanie w tle komunikatu o błędzie do phHelpdesk (który kiedyś wreszcie opublikuję jako OpenSource)
- dodatkowe funkcje wspomagające obsługę błędów
Czytaj więcej…
Paweł Projekty, Zawodowo Błędy, PHP, Poradniki, Programowanie, psDebug, Wyjątki
Mam dobrą i złą wiadomość dla wszystkich, których zainteresował temat Encjaków. Po pierwsze, dobra: wróciłem do tematu i znów grzebię w kodzie. Po drugie, zła: to co wytworzyłem poprzednio średnio mi się już podoba i szykuje się małe refactoring. Innymi słowy: zamiast pisać nowe rzeczy, będę poprawiał stare…
Paweł Encjaki Encjaki, PHP, Programowanie, Projekty, Worklog
Niestety prace nad Encjakami idą mi jak krew z nosa. W pracy zbliża się termin dużego wdrożenia nowego produktu, testy idą pełną parą i po całym dniu ‘napierdalania’ kodu nie mam po prostu sił do pracy nad własnymi projektami. Aczkolwiek, coś się dzieje. Przez ostatnie tygodnie powstał zarys silnika strony głównej i rejestracji.
O dalszych postępach będe informował jak będzie o czym informować…
Paweł Encjaki Encjaki, PHP, Programowanie, Projekty, Worklog