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. ;)
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. :)
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.
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. ;)