Blackout – przedstawienie projektu

Już sporo czasu upłynęło od ostatniego wpisu na moim blogu, tak więc stwierdziłem, że nadszedł czas na podzielenie się częścią informacji o tym nad czym właśnie pracuję.

Być może pamiętacie poprzedni wpis  „recenzujący” skrypt xNova służący do tworzenia własnych klonów gry przeglądarkowej Ogame. Postanowiłem przepisać go po swojemu i uzyskać z niego w miarę uniwersalny silnik gier MMORPG via WWW. Zależy mi na tym, aby nie był ściśle ukierunkowany na grę dziejącą się w kosmosie, żeby po dokonaniu zmian w szablonach, plikach językowych i ewentualnie lekkich zmianach mechaniki móc na nim postawić dowolną inną grę strategiczno-ekonomiczną. Skrypt zdecydowałem się ochrzcić Blackout (nazwę, tak jak zazwyczaj wymyślił Rhino, chwała mu za to). Może nie jest to nazwa super oryginalna, ale bardzo chciałem uniknąć kolejnego potworka o nazwie "Super Game Uber-pro Elo Melo Maka-Faka Engine".

Jak wskazują daty modyfikacji niektórych plików – przepisywanie skryptów zacząłem dziesiątego lutego tego roku. Tak więc całkiem przypadkiem dziś mija miesiąc – sądzę, że to niezły pretekst do opisana tego co udało mi się zrobić i tego co mnie jeszcze czeka.

Tak więc: zacząłem od przygotowania najbardziej potrzebnych elementów do rozpoczęcia pisania. Poprawiona klasa baz danych, wzorowana lekko na tej użytej jeszcze w Iron CMS-ie, bardzo prosty logger błędów i króciutki system obsługi szablonów (nie ma chyba nawet 60 linijek).

Zacząłem rzecz jasna od napisania plików dołączanych do każdej strony – mamy więc znany z oryginalnej xNovy plik common.php – w przebudowanej formie, ale spełnia identyczne w założeniu zadanie – wykonuje czynności potrzebne przy wczytaniu każdej strony (np. sprawdzenie czy gracz nie jest zbanowany). W moim silniku pozostały jeszcze resztki ze sławetnego pliku todofleetcontrol.php (możecie o nim przeczytać w tym wpisie, punkt 10). Na razie okroiłem go tylko i przemianowałem na pure_evil.php – sądzę, że to bardziej adekwatna nazwa :D. Potem zostanie usunięty, a każda podstrona będzie ładować tylko to, czego faktycznie potrzebuje.

Jeśli chodzi o zakładki, które dla użytkownika są najważniejsze to:’

  • Podgląd – gotowy w 80%, nie gotowe opuszczanie kolonii i zmienianie nazwy planety
  • Budynki, laboratorium, stocznia, obrona – odtworzone działanie i wygląd z oryginalnej xNovy, mocna przebudowa planowana na następną wersję
  • Oficerowie – gotowe w 100%, jeśli nie liczyć części niedokończonych tłumaczeń
  • Handlarz – gotowy w 20%
  • Sojusz – na początku próbowałem wzorować się na oryginalnym alliance.php jednak po 4 godzinach stwierdziłem, że nie ma to żadnego sensu. Aktualna koncepcja jest rozrysowana na kartce i czeka na realizację
  • Flota – działa sama czynność wysyłania flot, w większości działa misja walki
  • Wiadomości – napisane całkowicie od nowa – jest tam kilka rzeczy do dorobienia i poprawki, ale ogólnie mówiąc plik jest prawie gotowy
  • Galaktyka – ciekawa historia: przerażony ilością zapytań jakie generuje ta zakładka (średnio 50 na odsłonę, przy 1 planecie w pokazywanym systemie) i ilością funkcji jakich używa tylko ta zakładka (17 plików – 1200 linijek) postanowiłem napisać go od zera. Zapytania w pętli zastąpione jednym podwójnym JOIN-em, wszystko ładnie umieszczone w jednym pliku – sądzę, że w wersji ostatecznej plik nie przekroczy 300 linijek
  • Imperium, Surowce, Technologia – gotowe
  • Rekordy – nawet nie zaczęte
  • Statystyki – prawdopodobnie działają, lecz to się okaże dopiero po zrobieniu skryptu do przeliczania punktów
  • Szukaj – gotowe
  • Zbanowani – gotowe, przebudowana tabela trzymająca bany, użyto relacji
  • Chat – gotowy, tylko trzeba go ujednolicić w jeden plik i ogarnąć system BBCode – jeden dla całej gry
  • Kontakt – działa
  • Opcje – mocno odchudzone, nie działa jeszcze urlop i usuwanie konta
  • Panel administracyjny – grubsza sprawa, temat na osobny wpis

Tak, wiem, w większości zrobiłem sobie z tego wpisu kolejne wcielenie notatek odnośnie skryptu, mam jednak nadzieję, że umieszczenie tego publicznie pomoże mi się zmotywować do dalszej pracy.

Jak widać, wiele jeszcze przede mną, myśląc o kilku plikach robi mi się słabo :D, ale jakoś to będzie… Więcej konkretów, mniej suchych notatek obiecuję już w przyszłym wpisie.

7 komentarzy do “Blackout – przedstawienie projektu

    • Sobak pisze:

      1) Utworów o nazwie Blackout znam sporo, teraz jest kolejny, choć lekko nie moje klimaty

      2) Właśnie tu jest ciekawa sprawa, bo cały skrypt był napisany proceduralnie. Wprawdzie wydzieliłem parę oczywistych kwestii do klas – np. system szablonów, klasę do bazy danych itd, ale oryginalne elementy w większości są na funkcjach i tak prawdopodobnie zostanie. Tutaj większość z tych funkcji używana jest w pojedynczych, góra kilku plikach, więc nie widzę sensu wrzucania wszystkiego w klasę ogólną – to przeczy założeniom obiektowości.

      3) Jeśli ma być dystrybucja osobom trzecim to płatny. Kilkoma fragmentami kodu mogę rzucić chociaż, aby pokazać jak przekombinowany jest oryginał, ale to za dużo pracy, żeby całość oddać za darmo.

    • Sobak pisze:

      Wątpię :) Większość ludzi leci na to, że coś im się będzie „fajnie mrygać” albo że dostaną od razu fajny layout. Myślenie przychodzi (albo i nie) dopiero jak co bardziej wprawna osoba położy im stronę w 5 minut.

  1. Soanvig pisze:

    Ja cię arbuz, ty to jesteś pracuś, Sobak. Jak ja się mam za coś wziąć, tak jak za sławetną konsolową przygodówkę w Rubim to raz dziennie porobię coś pięć minut i mam dość. Przy czym 2 minuty zajmuje odpalenie wirtualnej maszyny z Linuxem, na którym robię w Rubim.

    • Sobak pisze:

      Oj, nie przesadzajmy :D Ja mam tak, że raz potrafię się wbić w pracę i pisać naprawdę długo, ale zazwyczaj wygląda to tak, że naksrobię z 20 linijek, porobię coś innego, poczytam forum, pogadam z kimś i te 20 linijek jest wynikiem godziny „pracy”.

      Sądzę, że jakbym się tak naprawdę spiął to miałbym szansę skończyć to do powiedzmy przyszłej środy. A tak? A tak to będziemy czekać pewnie do końca kwietnia :D

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *