Na co dzień jestem programistą PHP. A że jest to język nudny i trochę bez przyszłości… no dobra, może trochę przesadzam. ;) Nie chodzi mi oczywiście o to, że za chwilę nie będzie pracy dla programistów PHP. Wręcz przeciwnie – PHP ma jedną poważną przewagę nad konkurencją: jest tani, popularny i istnieje w nim masa projektów, które trzeba obsługiwać, rozwijać i utrzymywać. I pewnie jeszcze przez długie lata będzie na to zapotrzebowanie.
Problem z PHP jest jednak taki, że właściwie nie ma w nim niczego, czego nie dałoby się zrobić w czymś innym. Do tego mam wrażenie, że coraz częściej brakuje mu wsparcia, które można znaleźć w innych językach – szczególnie jeśli chodzi o chmurę, AI czy nowe biblioteki i narzędzia. Oczywiście wszystko zależy od projektu, ale jeśli zaczynamy coś od zera i mamy do wyboru Pythona, Javę, JavaScript czy C#, to PHP nie wydaje mi się już tak oczywistym wyborem jak jeszcze kilka czy kilkanaście lat temu.
A ja po prostu nie bardzo mam ochotę przez kolejne kilka lat zajmować się głównie utrzymywaniem i rozwijaniem projektów, które mają po dziesięć lat. ;)
Czas nauczyć się czegoś nowego
Postanowiłem więc zacząć uczyć się czegoś nowego. Najlepiej nauka wychodzi mi wtedy, kiedy robię jakiś konkretny projekt, dlatego zamiast kolejnego kursu czy przerabiania tutoriali postanowiłem po prostu zacząć coś tworzyć.
Padło na grę.
Oczywiście nie mogła to być od razu jakaś wielka produkcja 3D, bo skończyłoby się to prawdopodobnie na tym, że przez pół roku modelowałbym jedno drzewo i nadal nie miałbym gry. ;) Dlatego wymyśliłem, że zrobię grę karcianą – zwykłe 2D. Dzięki temu grafika nie powinna pochłonąć większości mojego czasu, a ja będę mógł skupić się przede wszystkim na programowaniu.
Python, Godot i trochę AI
Uczę się korzystając z DeepSeek i muszę powiedzieć, że jest całkiem niezły. Około rok temu też próbowałem coś z nim robić i widać naprawdę ogromny postęp.
Żeby nie było – większość kodu, który mam w tej chwili, wygenerował właśnie DeepSeek. Ale coraz częściej coś w tym kodzie zmieniam, poprawiam i dopisuję samodzielnie. I chyba właśnie na tym etapie zaczyna się prawdziwa nauka – kiedy zamiast tylko kopiować gotowy kod zaczynam rozumieć, co właściwie się w nim dzieje.
Cały projekt zacząłem jakieś pięć dni temu.
Wcześniej próbowałem wystartować z Godot Engine. Godot oferuje własny język skryptowy, GDScript, który do tworzenia gier jest bardzo wygodny, ale z punktu widzenia nauki czegoś przydatnego zawodowo nie wydawał mi się szczególnie interesujący. Jest jeszcze wsparcie dla C#, ale kiedy zaczynałem, nie byłem pewien, na ile jest ono kompletne. No i cały czas mam wątpliwości, czy C# nie byłby jednak ciekawszym wyborem niż Python.
Na razie jednak zostałem przy Pythonie.
I teraz mogę się trochę pochwalić tym, co udało się zrobić przez tych kilka dni. :)







Co właściwie ma z tego powstać?
Jak widać po załączonych screenach, plan jest taki, żeby była to wojenna gra karciana. Nie chcę, żeby karty były tylko pojedynczymi jednostkami, które zagrywamy i odkładamy na stół. Jednym z głównych elementów gry ma być ich łączenie.
Do wojownika będzie można na przykład dodać czołg. Do kart terenu będzie można dodać robotników, podobnie będzie można rozwijać fabryki i inne elementy infrastruktury.
W grze ma być kilka rodzajów surowców: żywność, ruda żelaza, stal, ropa, paliwo, logistyka i inicjatywa. Każdy z nich ma mieć swoje zastosowanie, a produkcja jednych surowców będzie zależna od innych.
Czyli nie wystarczy mieć czołg.
Trzeba jeszcze mieć z czego go zbudować, czym go zatankować, dostarczyć go na front i zapewnić mu odpowiednią logistykę. ;)
Planuję również różne strefy. Będzie Państwo, w którym znajdą się między innymi tereny, fabryki i infrastruktura logistyczna. Do tego będą strefy wojenne: Front, Druga Linia i Zaplecze, na których znajdą się różnego rodzaju jednostki. Oczywiście będzie też kilka Frakcji.
Na razie jest to oczywiście bardziej zbiór pomysłów niż gotowy projekt gry. Mechanika będzie się pewnie jeszcze dziesięć razy zmieniać, zanim uznam, że wszystko ma sens.
AI robi nie tylko kod
Muszę też zaznaczyć, że wszystkie grafiki, które obecnie wykorzystuję w projekcie, również są generowane przez AI – głównie Perchance.org i ChatGPT.
Ogólnie bardzo mocno wspieram się AI przy całym tym projekcie. I właśnie dzięki niemu byłem w stanie tak z marszu zacząć projekt w języku programowania, którego praktycznie nie znam.
Czy to jest najlepszy sposób nauki programowania? Tego jeszcze nie wiem.
Może za kilka miesięcy okaże się, że nauczyłem się głównie pisać dobre prompty i kopiować kod. ;)
Ale na razie widzę jedną ogromną zaletę takiego podejścia: zamiast najpierw przez kilka miesięcy uczyć się Pythona, a dopiero później próbować coś stworzyć, od pierwszego dnia tworzę coś konkretnego.
I chyba właśnie dlatego nauka programowania zaczęła być dla mnie trochę ciekawsza niż wcześniej.
Projekt ma dopiero kilka dni, więc na razie trudno powiedzieć, co z tego ostatecznie wyjdzie. Może powstanie działająca gra, może po drodze zmienię język, silnik albo połowę założeń.
Ale przynajmniej jest co robić.
A jeśli przy okazji nauczę się nowego języka programowania, to nawet jeśli sama gra nigdy nie ujrzy światła dziennego, nie będzie to chyba najgorzej zmarnowane kilka miesięcy. ;)
A mi się wydaje, że metoda nauki poprzez AI się nie sprawdza, choć jeśli ktoś ma odpowiednią ilość samozaparcia i motywacji jest w stanie się nauczyć. Obawiam się, że większość jednak raczej wybierze drogę na skróty i będzie przeklepywać, albo nawet będzie tylko wydawać polecenia agentowi.
Gdzieś czytałem, że przejście w firmach programistycznych na AI spowodowało trudności w analizie kodów i wpłynęło negatywnie na morale ludzi, którzy nie czują związku z kodem, który tworzą a przez to jakość ich pracy jest mniejsza.
tak, masz rację. nauka przez AI to nie jest coś co bym komuś polecił, jak ktoś zaczyna programować.
Ale w moim wypadku nie jest to pierwszy język którego się uczę. Ogólnie włączyłem sobie jakiś kurs z podstawami pythona, coś koło godziny trwał i ok, czegoś się dowiedziałem. Ale część rzeczy, od razu wyleciała mi z głowy. Jednak aby coś zapamiętać/nauczyć się, potrzebuję przetrenować, powtórzyć jakąś czynność i to kilka razy. Dlatego wolę jednak uczyć się w taki sposób, że robię jakiś projekt. Nie powtarzam ćwiczenia z jakiegoś kursu, bo efekt będzie taki sam jak przeklejanie z AI. Tak samo prawdopodobnie jak z nauką czegokolwiek innego, jak nie powtarzasz - nie używasz - czegoś w praktyce, zapominasz. I cała nauka idzie na marne.
Ok, pierwsze dwa dni to faktycznie, było pisanie poleceń do czatbota. Nawet nie rozumiałem co wklejam. Ale już trzeciego dnia okazało się to mało efektywne. Bo pisanie polecenia, przesuń przycisk o 5 pikseli i przeklejenie tego w kod, zajmuje więcej czasu, niż zrobienie tego samemu. Zresztą nie używam agenta, tylko czatbota, więc on nie widzi efektu.
Mogę Ci potwierdzić w 100% - to prawda. Często kod jest tak z dupy, że nie nadaje się w ogóle do analizy. Kilkanaście miesięcy firma w której pracowałem używa Copilota - agenta. I faktycznie, ten kod wyprodukowany przez agenta, jest jakiś inny, ciężko powiedzieć - z czego on wynika, jak ktoś do tego doszedł, że tak coś zaimplementował.
Na morale ludzi to chyba najbardziej wpłynęło to, że poczuli się łatwiej zastępowalni. Bo jednak firmy wdrażają AI, nie po to by zrobić fajnie programistom, ale liczą na optymalizację kosztów - czyli na ludzki, że części załogi będzie można się pozbyć.
Trzeba sobie powiedzieć - przynajmniej ja tak do tego podchodzę - nie zawrócę kijem Wisły, nie będę się z koniem kopać. AI to już rzeczywistość, jak nie można z nią wygrać, to trzeba ją oswoić i jakąś ją wykorzystać.