piątek, 4 marca 2016

Trudne początki



Projekt, który będę tu realizował w ramach akcji „Daj się poznać”, ma być grą. Grą od której wybuchną wasze mózgi, grą którą IGN oceni na 11/10 a w TVP zrobią o niej pozytywny (sic!) materiał, w którym redaktor płaczliwym głosem stwierdzi, że gry są nowym lekarstwem na raka.

No dobra tak naprawdę to nie będzie tak różowo, bo grę, którą chcę (z)robić ma być grą hakerską, trochę w klimatach gry Uplink (fantastyczna produkcja Introversion Software, polecam!)  czy też mniej znanego No hackers sky. W zasadzie ta druga gra zakiełkowała w moim umyśle ten pomysł- również polecam ten tytuł, zwłaszcza, że jest darmowy. Rozgrywka ma też nawiązywać do „hakowania” w filmach.
Więc w zasadzie gra raczej nie będzie się (taką mam nadzieję) traktowała zbyt serio.


Tru 1337 h4xor


(chociaż w takim Matrix: Reaktywacja pokazali atak na hosta który przypomina coś rzeczywistego- scena z Trinity w elektrowni)

Stare gry z lat 80 i 90 miały w sobie ten taki „pierwiastek szaleństwa” takiej dziecinnej niedorzeczności np. głupawe power upy w Carmaggedonie, które powodowały, że nasz pojazd skakał albo przechodnie byli dwa razy więksi.
I żeby nie zrzędzić- wiele nowych gier wraca do tych rozwiązań i obecnie powstaje całkiem dużo totalnie odjechanych gier.

Chciałbym, żeby docelowo moja gra właśnie taka trochę głupkowata- bo prawdę powiedziawszy nie znam się za bardzo na hakowaniu oraz zabezpieczeniach, jakieś tam pojęcie mam ale naprawdę nieduże.

Ale odchodzę od tematu.

Nazwa, którą sobie wymyśliłem to B4B3L, nie pytajcie mnie dlaczego- rozwinę ten pomysł gdzieś po drodze. Tak, tak- założenia nie są jeszcze do końca gotowe- póki co mam dość mglistą wizję tego co chcę zrobić.

Ale z drugiej strony mam ustabilizowane elementy (nawet mam trochę kodu) co do których jestem pewien.

Przede wszystkim- link do repozytorium na githubie
W katalogu docs znajdują się dwa pliki: b4b3l_zalozenia.odt w którym (jak nazwa wskazuje) znajdują się założenia projektowe gry.
Co do założeń- na razie to jeden wielki bajzel ale staram się zapisywać każdy nawet najdurniejszy pomysł. Stan obecny jest taki, że są tam jeszcze stare pomysły, gdy kombinowałem, żeby to połączyć jakoś z wykopem ( ͡° ͜ʖ ͡°) ale w końcu uznałem, że to zbyt głupie i hermetyczne.
Drugi plik (TODO) zawiera bieżące sprawy, niektóre luźno związane z prowadzeniem projektu.
Przewiduję, że przeniosę się z czasem na githubowe wiki oraz issues bo to będzie o wiele bardziej czytelne- wszystko będzie w jednym miejscu. No i inni ludzie też będą mogli rozwijać projekt :-)
Githuba będę się starał utrzymywać w języku angielskim, bloga jakoś wygodniej mi pisać w języku ojczystym :-)

Technologia
  • Python 2.7
  • framework Pygame w wersji 1.9.1
  • Linux

Muszę się wytłumaczyć z takiego wyboru- bo to wybór nieco nietypowy jeśli chodzi o tworzenie gier.
Obecnie bardzo popularne stało się tworzenie gier przy użyciu bardzo złożonych narzędzi takich jak Unity czy Construct, które umożliwiają na szybkie tworzenie gier na wiele różnych platform, zdejmując z barków programisty ogrom prac jakich musiałby się podjąć, żeby tylko dostarczyć grę na wymarzone urządzenia . Istnieją nawet narzędzia, które umożliwiają na dość proste tworzenie gier bez znajomości języków programowania! Takim narzędziem jest Game Maker, powstało w nim m.in. zjawiskowe „Hotline Miami”.

Jednakże licznym deweloperom nie podoba się „wysokopoziomowa” natura gotowych rozwiązań więc decydują się pisać grę / silnik samodzielnie od podstaw. Najczęstszym wyborem jest język C++, który z jednej strony dostarcza mechanizmy umożliwiające na bardzo dużą kontrolę nad kodem i pisanie bardzo wydajnych rozwiązań a z drugiej strony dostarcza paradygmat obiektowy, który jest bardzo naturalny w przypadku tworzenia gier.
Niemal każdy znaczący silnik do gier jest napisany w C++.

ALE… Gdybym chciał się uczyć C++ to tworzyłbym grę w C++. Gdybym chciał poznać Unity, to tworzyłbym w Unity :-)
Od jakiegoś czasu chciałem poznać i zrozumieć o co chodzi w Pythonie
Wiadomo- komuś może nie spodobać się wybór starego już Pythona 2.7, którego odradza się w przypadku tworzenia nowych projektów. Jednak najwięcej materiałów i pomocy jest wciąż robiona pod „starego węża” więc na razie trzymam się starej wersji. Jednakże w planach mam przejście na nowszą wersję- potraktuję to jako dodatkowe wyzwanie. Gdy projekt się rozwinie przepiszę go na Pythona 3- co pozwoli mi na poznanie różnić pomiędzy tymi dwoma wersjami języka.
Ten projekt chcę traktować jako poligon do różnych zbrodniczych eksperymentów (muhahaha!)

Uważam, że nie ma lepszego sposobu na naukę programowania niż praktyczne zastosowanie wiedzy i douczanie się w trakcie. Jasne- czytanie książek, tutoriali itd. jest bardzo ważne, ale ma to znaczenie dopiero wtedy, kiedy możemy użyć tego w praktyce. I stąd ten wybór.

Pygame samo w sobie jakimś cudem nie jest. Od dłuższego czasu nie jest nawet rozwijane, ale to nie jest jakiś wielki problem bo jest dokumentacja która jest całkiem niezła a użytkownicy wciąż są aktywni (reddit i stackoverflow). Pygame tak naprawdę jest nakładką na SDL- jest to bardzo popularna biblioteka (nie silnik!) do tworzenia gier w C++. Ponieważ SDL został przeniesiony na różne platformy (podobnie jak Python) teoretycznie nie powinno być problemu z przenoszeniem gry z Linuksa na Windowsa czy Maca (w praktyce nigdy nie jest tak różowo, wiem z doświadczenia :-], zwłaszcza gdy rośnie złożoność projektu- trzeba pamiętać, że Winda trochę inaczej traktuje drzewo katalogów itd.).
Jeszcze się zastanawiam, czy nie robić tylko na Windowsie z prozaicznego powodu- lepszego kompa mam z Windowsem :D Zobaczymy, na razie „trzaskam” na Linuksie.

Z racji tego, że trochu się już rozpisałem, zapowiadam, że następny wpis będzie wreszcie merytoryczny i będzie zawierał mięso tzn. jakiś kod. Jeszcze nie wiem jak się wrzuca na blogspocie kod źródłowy (buuuuuuuuuu! Noob!) ale mam nadzieję, że sobie z tym poradzę.
No i opiszę założenia pierwszego etapu ("kamienia milowego") :-)

PS. Był kiedyś taki blog gościa który się nazywał „Leniuch” i on tam miał taką tradycję, że na końcu wpisu linkował do jakiegoś utworu muzycznego. Takoż robię i ja.
Heh w sumie do kogo ja piszę, i tak nikt tego nie czyta, oprócz botów Google i ciebie Adamie :P

Miłego!



EDIT: i zapomniałem o najważniejszym: nie dodałem linka do repozytorium na GitHubie, bo założyłem, że jak ktoś tu wchodzi to zna już ten link. Oto i on:
https://github.com/Nicramus/b4b3l_the_hacker_game


Brak komentarzy:

Prześlij komentarz