Piątek 21:00, 3 000 graczy online.
I wtedy mój plugin pada.
Opowiem Wam historię z zeszłego miesiąca, która prawie zepsuła mi weekend. Wszystko przebiegało idealnie - serwer pełen graczy, sobotni finał turnieju dla widzów na YouTube. I wtedy nagle jeden kawałek mojego kodu postanowił, że ma dość. Pokażę, jak znalazłem błąd - i jak bardzo pomogło mi w tym Claude.
Jeśli prowadzisz serwer Minecrafta z 4 tysiącami graczy, to masz w sobie pewien rodzaj lęku, którego inni ludzie nie rozumieją. Siedzisz w piątek wieczorem przy komputerze, wszystko jest fajnie, dzieciaki grają, a Ty przez cały czas masz z tyłu głowy jedną myśl: „coś zaraz może się zepsuć".
No i w tamten piątek, 21:37, się zepsuło.
Moment, kiedy wszystko się zaczyna.
Piszę ten wpis trochę od środka. Chcę, żebyście zobaczyli z bliska, co się właściwie dzieje, gdy serwer „pada". Bo jako rodzic dziecka, które chce programować, warto wiedzieć, jak wygląda prawdziwa praca w tej branży. Nie Scratch. Nie podręcznik. Prawdziwa sytuacja, z prawdziwym stresem i prawdziwymi tysiącami graczy, którzy zaraz będą wściekli.
Pierwszy sygnał.
Na moim panelu sterowania pojawia się ostrzeżenie. Serwer zaczyna się krztusić - to znaczy, że zamiast płynnie działać, co chwilę się zacina na ułamek sekundy. Gracze jeszcze tego nie widzą.
Czat się rozkrzyczał.
Na czacie pojawiają się pierwsze wiadomości: „laguje", „co jest", „serwer kończy?". Sprawdzam Discord - prywatne wiadomości od graczy VIP, którzy zauważyli wcześniej niż reszta. To się zaczyna rozlewać.
Serwer zaczyna wyrzucać graczy.
Coraz więcej osób jest wyrzucanych z powodu utraty połączenia. Liczba graczy spada z 3100 do 2400. Ta liczba to jest konkretne pieniądze i konkretna reputacja. Nie mogę sobie pozwolić, żeby ludzie wychodzili z serwera z uczuciem „tam się nie opłaca grać, bo wszystko pada".
Otwieram Claude.
Ok. Pora zabrać się do roboty.
Na czym polega znalezienie błędu w kodzie?
Żeby zrozumieć, co zaraz opiszę, potrzebujesz jednej rzeczy - prostej metafory, która tłumaczy, jak wygląda szukanie błędu w programie.
Szukanie błędu w kodzie to jak detektyw szukający złodzieja w kamienicy.
W kamienicy mieszka 40 osób. Jedna z nich coś zepsuła. Nie wiesz która. Musisz pytać każdą po kolei, sprawdzać, kto gdzie był o której godzinie, porównywać zeznania, szukać tropów.
W programie jest podobnie. Masz dziesiątki kawałków kodu, które działają razem. Jeden z nich robi coś głupiego - spowalnia całość. Nie wiesz który. Musisz sprawdzać. Eliminować podejrzanych. Szukać tropów.
To jest praca, której uczę dzieciaki na kursie. Nie tylko „pisz kod". Też „znajdź, dlaczego kod nie działa jak powinien". Bo ta druga umiejętność jest w prawdziwej pracy równie ważna jak pierwsza.
Rozmowa z Claude. 21:49.
Wrzucam do Claude pierwszy kawałek tego, co widzę na panelu. Nie wiem jeszcze, gdzie jest problem - wiem tylko, że serwer „się zacina". To tak, jakbym zadzwonił do mechanika i powiedział: „mój samochód dziwnie brzmi, nie wiem co mu jest".
1. Zapis danych graczy na dysk (często robi się co 30-60 sekund).
2. Jakieś sprawdzenie wszystkich graczy naraz (np. system nagród, anty-oszust, ekonomia).
3. Komunikacja z bazą danych albo innym serwerem.
Spróbuj najpierw wejść do panelu serwera i sprawdź, co jest ustawione co kilka sekund. Który kawałek kodu tak często się uruchamia? Wklej mi potem listę, to dopytam dalej.
Claude jest moim drugim detektywem.
Nie rozwiązał problemu - bo go nie zna. Ale zawęził listę podejrzanych z 40 do 3. I powiedział mi, gdzie mam patrzeć najpierw. W detektywistyce to jest czasem ważniejsze od samego rozwiązania - żeby nie marnować godzin na złe tropy.
Znaleźliśmy trop.
Idę na panel serwera, patrzę na listę rzeczy, które powtarzają się co kilka sekund. Widzę jedną, która mnie zastanawia. System codziennych nagród - plugin, który sprawdza co 5 sekund, czy ktoś z graczy nie zasłużył na złote monety za bycie online.
Wracam do Claude.
Wrzucam Claude mój kod pluginu od nagród. Claude czyta go przez kilka sekund. Wraca z odpowiedzią.
Rozwiązanie: zamiast pytać bazę za każdym razem, zapisz te informacje w pamięci serwera przy starcie i aktualizuj je co 10-15 minut. Wtedy zamiast 2600 pytań co 5 sekund masz jedną paczkę zapytań co 15 minut.
Napisać Ci poprawioną wersję kodu?
Dokładnie ten typ myślenia uczę dzieci na kursie. Nie „napisz kod". Tylko „popatrz, co robi ten kod tysiąc razy - czy naprawdę musi to robić tyle razy?".
Poprawka. 22:18.
Claude dał mi poprawiony kod w 2 minuty. Przeczytałem go linijka po linijce - to jest moja zasada, ta sama, której uczę dzieciaki. Nie wklejaj od Claude bez sprawdzenia. Zawsze patrz, co robi każda linijka.
W poprawce zobaczyłem dokładnie to, co Claude opisał: plugin już nie pyta bazy danych o każdego gracza co 5 sekund. Zamiast tego ładuje dane raz przy starcie do pamięci serwera, sprawdza je w pamięci (co jest tysiące razy szybsze), i co 15 minut zapisuje z powrotem na dysk. Proste, logiczne, eleganckie.
Wrzuciłem poprawiony plugin. Serwer się restartował. I...
Efekt.
do naprawy
w kolejnej godzinie
wgrania poprawki
Serwer wrócił do normalnej pracy przed 22:30. Gracze, którzy wyszli, zaczęli powoli wracać. W sobotę rano miałem pełne 4 tysiące ludzi, tak jakby nic się nie stało. Weekend uratowany.
Ale bez Claude? Szczerze - sam bym szukał tego problemu godzinami. Wiem, bo takie sytuacje zdarzały mi się wcześniej, gdy nie korzystałem jeszcze z AI. Wtedy godziny, dziś minuty. To jest realna różnica, nie marketingowa.
Po co Wam ta historia?
Bo kiedy mówię rodzicom, że uczę dzieci rozmawiać z AI tak, jak robią to prawdziwi programiści, mam na myśli dokładnie to, co właśnie przeczytaliście. Nie „zrób mi ładną komendę". Tylko:
- „Mam problem, nie wiem gdzie szukać - pomóż mi zawęzić poszukiwania."
- „Przeczytaj ten kod i powiedz, czy widzisz coś podejrzanego."
- „Przedstaw mi rozwiązanie, ale wytłumacz mi, dlaczego akurat to."
Dokładnie tego uczę na kursach. Dziecko, które rozumie, jak zadawać pytania AI, żeby rozwiązywać prawdziwe problemy - to dziecko, które za 10 lat będzie miało przewagę, jakiej inni nawet nie zauważą. Bo nikt ich nie uczy szukania błędów. Scratch nie uczy. Podręcznik nie uczy. Nauczyciel, który nie programuje na co dzień, też nie uczy - bo sam tego nie robi.
Dobry programista to nie ten, kto pisze kod bez błędów. Taki nie istnieje. Dobry programista to ten, kto szybko znajduje błędy w swoim (i cudzym) kodzie - i umie je naprawić. Szukanie błędów to 70% realnej pracy w tej branży. A w moim kursie to jest równoważna z pisaniem kodu część nauki.
Dzięki za przeczytanie. Do następnego.
PS. Ten błąd świetnie pokazuje jedną ważną rzecz: nawet kod, który na pierwszy rzut oka wygląda dobrze, może mieć w środku problem, który wychodzi dopiero pod dużym obciążeniem. To też lekcja dla dzieci: nie zakładaj, że coś działa dobrze tylko dlatego, że wygląda profesjonalnie.
Chcesz, żeby Twoje dziecko myślało jak detektyw?
Pobierz darmowy Level 0 - 46-stronicowy PDF, w którym prowadzę dziecko przez pierwszy plugin i pokazuję, jak rozmawiać z Claude tak, żeby on pomagał myśleć, a nie tylko pisać kod. Dokładnie ta sama metoda, której użyłem w tej historii.
Pobierz darmowy Level 0 →Więcej notatek z serwera.
System łapiący oszustów na moim serwerze
40 linijek kodu z pomocą Claude. Pokazuję z bliska, jak realnie używam AI na serwerze z 4000 graczy.
Moje 3 zasady używania Claude z 10-latkiem
Po 6 miesiącach uczenia dzieciaków mam 3 proste reguły, których nigdy nie łamię.
Mój brat próbował nauczyć się programowania z polskich kursów
Patrzyłem, jak tydzień po tygodniu przeciąga klocki w Scratchu. Dlatego zrobiłem własny kurs.