Blackout

Pod tagiem Blackout opisywałem kiedyś swoje zmagania ze skryptem xNova. Wpisy dotyczą poprzedniego, zupełnie innego technicznie, podejścia do tego tematu, więc choć polecam lekturę, nie będzie ona stricte związana z projektem przedstawionym poniżej.

Blackout to próba zrefactorowania skryptu xNova, służącego do tworzenia klonów popularnej niegdyś gry przeglądarkowej OGame. Absolutne opus magnum w dziedzinie moich bezcelowych, totalnie nieuzasadnionych biznesowo projektów pobocznych. Zderzenie roku 2018 ze skryptem sprzed ponad dekady, który już w swoich latach był absolutnie przestarzały. Podczas gdy użytkownicy mogą toczyć walki kosmicznych statków i przejmować obce planety, ja toczyłem walkę z chaotycznym kodem autorstwa dziesiątek niezwiązanych ze sobą osób, które łączył jedynie wspólny cel i niechęć do utrzymania porządku czy dokumentacji.

Blackout

Mówiąc zaś ciut poważniej (choć utrzymanie pełnej powagi w tym wypadku jest trudne i wystawia całą inicjatywę na śmieszność) szukałem kodu, na którym będę mógł do woli wyładować mój zew refactorowania staroci. W sytuacji ekstremalnej udało mi się zderzyć z wieloma ciekawymi problemami - poczynając od migracji ze starego (i niedobrego) mysql_* na PDO, przez wprowadzenie architektury MVC, aż po stworzenie pełnoprawnej fuzji tysięcy linijek vanilla PHP sprzed ponad 10 lat z frameworkiem Laravel, w wersji wydanej w roku 2017.

Miłośnikom refactoringu mogę polecić przejrzenie całego repozytorium, natomiast szukającym niekonwencjonalnych rozwiązań spojrzenie na przepływ zapytań HTTP, cykl życia aplikacji i to w jaki sposób oba elementy współpracują ze sobą (choć często jest to okraszone prawdziwymi hackami).

Ludzi zainteresowanych użyciem (są jeszcze tacy w 2018 roku?) ostrzegam że cały projekt jest jednym wielkim poligonem doświadczalnym, który możliwościami biznesowymi (skierowanymi do użytkownika końcowego) prawdopdoobnie odstaje od późniejszych reedycji xNova (patrz np. xNova Revolution). Nie to jednak było celem tego przedsięzwięcia, gdyż tamte projekty zostały zwyczajnie napisane od nowa - a to, jak wiemy - jest nie tylko bardziej błędogenne ale też zwyczajnie mniej ciekawe :D

Zobacz kod źródłowy na GitHubie
Pobierz