środa, 22 marca 2017

Progres!

Rany! Minął już tydzień, a ja nie zdążyłem w tym czasie napisać posta. Jak ten czas leci! Na szczęście w ciągu ostatnich dni starałem się nie próżnować i poczyniłem postępy nad własnym projektem więc w sumie jest dobrze.

Postęp!


Jak widać, na przyszłym polu bitwy pojawiły się góry - hura! klik i w miejscu wskaźnika pojawiają się góry! klik... i góry ustępują miejsca miastu (które jeszcze nie mają grafiki). Parę takich kliknięć i zaczyna powstawać cała mapa. Więc kolejną pozycję z listy mogę uznać za skreśloną.
  • Wyświetlanie podstawowego terenu
  • Wyświetlanie i poruszanie kursora
  • Kliknięcie kursora musi zmieniać rodzaj terenu
  • Wymyślenie i implementacja zapisywania map
  • Wczytywanie map
Tym samym mogę stwierdzić, iż jestem może w jednej trzeciej pierwszej części zadania jakie chcę wykonać (duma bardzo). Jednakże w miarę prac zdałem sobie sprawę, że nie wszystko jest takie różowe, a na drodze pojawiają się kolejne przeszkody...

Plusy dodatnie oraz ujemne

Tak więc... póki co jednym z największych problemów na jaki napotkałem było wykorzystanie plików xml do przechowywania informacji na temat poszczególnych pól. Po kilku próbach wolałem się zdecydować na podanie parametrów już w programie. Co jak dla mnie zmniejsza przejrzystość kodu. Kolejną kwestią są elementy wyższe - góry, wieżowce itp... Właściwie dopiero teraz zauważyłem, że w takiej rozgrywce część grafiki z jednego pola nachodziło na drugie - co przy tym wygląda znacznie lepiej.
Ostatnią istotną kwestią jest grafika - Potrzeba mi grafika, który potrafi w pixelart'y! Póki co chyba mogę bazować na grafikach zaczerpniętych prosto z gry, jednakże w najbliższej przyszłości chciałbym je zamienić na coś innego. Ostatecznie nie chcę tworzyć klona, a jedynie na podobnej mechanice.
No ale hej... kliknięcie przyczynia się do zmiany rodzaju terenu - a więc prosty generator plansz już mam - yey! Teraz jedynie zwiększyć ilość rodzajów terenów i gotowe... potem tylko zapis tych map.

Plany na przyszłość

Tak jak już wspominałem, jedną z pierwszych rzeczy, które chcę poprawić, jest dodanie kolejnych terenów (bo same łąki i góry to trocę mało..) tak by urozmaicić przyszłe pole bitwy. Potem oczywiście zapisywanie map i... będziemy mieli gotowy generator! Wtedy możńa rzeczywiście się zabrać za jednostki.
Dla wszystkich niecierpliwych: repozytorium postaram się ogarnąć do końca tygodnia tak, by można było na bieżąco obserwować postępy prac.

środa, 15 marca 2017

Adventure war


Dobra więc, skoro powiedziało się A, należy też powiedzieć B a minęło już dość sporo czasu od ostatniego wpisu, a strona straszy pustką co przyprawia mnie o smutny nastrój. Czas w końcu z tym skończyć, uzupełnić wpisy, podjąć się wyzwania, do którego się przystąpiło i coś zrobić - Bo warto coś robić!

Cel: Strategia

Tak, więc w sumie będzie to coś bliskie temu, przed czym byliśmy przestrzegani. Więc czemu nie... w końcu to nie może się skończyć źle, prawda? prawda? Może pomińmy tę kwestię i przejdźmy do szczegółów, co chcę? czego chcę? i jak to zrobić? Pozwoli to na zebranie burzy pomysłów i poskładanie tego w jakąś logiczną całość, którą będzie można z czasem rozwinąć o kolejne elementy.
Więc czego chcemy? Może kojarzycie dość starą, bo wydaną w 2001 roku grę Adventure war na konsolę Game Boy Advance? Gra mojego dzieciństwa, na podstawie której chciałbym stworzyć coś podobnego z tym wyjątkiem, by docelowo można było zagrać na PC wraz z znajomymi. Cel wydaje się ambitny ze względu na konieczność nie tylko stworzenia gry na nowo, ale również ogarnięcie balansu rozgrywki (w końcu nikt nie chciałby oberwać spamem ciężkich, niezbalansowanych czołgów) oraz stworzenia przynajmniej kilku podstawowych map do gry.
Więc w sumie na co się piszę:
  • Odtworzenie logiki rozgrywki
  • Stworzenie generatora poziomów
  • Dodanie szeregu jednostek oraz interakcji między nimi
  • Balans tego wszystkiego
Więc w sumie... dużo tego. Więcej niż myślałem na samym początku, no ale cóż... do odważnych świat należy. A jeśli chciałbym kierować się w branżę game developmentu, to warto stawiać sobie wyzwania - w końcu na nich można nauczyć się najwięcej.


Screen z adventure war 2. Źródło: http:cdn.gamer-network.net

Jak to zrobimy? Monogame

No właśnie.. czemu nie Unity? Ostatecznie dla tego dość popularnego silnika powstała już cała masa... w sumie wszystkiego co pozwala na ogromne wsparcie w przypadku jakichkolwiek problemów. To oczywiście racja, jednakże moje doświadczenia z Unity pozwalają póki co wysnuć wniosek, iż głównie gry się składa niż generuje. Moja pierwsza gra z wykorzystaniem Unity sprowadzała się do kilkudziesięciu linijek kodu, kilku klas i obiektów, do których wszystko zostały poprzypinane. "San Escobar must by stoped!" stanowił więc zbiór luźnych elementów, które jakoś na siebie oddziaływały - no, ale o tym kiedyś. Później.
W Monogame stworzyłem już pierwszą grę właściwie bez większej pomocy, w oparciu o swoją wiedzę i mniej więcej wiem czego mogę się spodziewać - choć i tak przypomina to bardziej elektryka, który nie wie co robi - o... poszły iskry i nie działa... lepiej cofnę zmiany i spróbuję inaczej.
Kolejną istotną rzeczą jest to, że Monogame stanowi opensourcowy framework (co spodoba się pewnemu zielonemu kotu jeśli przeboleje myśl o Windows'ie :v ), który umożliwia pisanie gier pod Windowsa, Linuxa, Maca oraz... platformy mobilne, a przeniesienie kodu z Windy na mobilne ponoć sprowadza się do zmiany platformy docelowej, sterowania... i gotowe. A o tym w sumie przekonam się dopiero jak skończę tworzenie gry.

Cu robimy? Czyli wersja podstawowa

No właśnie... co chcemy osiągnąć? W pierwszej kolejności chciałbym się zająć od wyświetlania mapy - a co się z tym wiążę - stworzenia podstawowych terenów (póki co nie muszą być ładne) i ogarnięcie ich wyświetlania, tak by tworzyły siatkę. Kolejna kwestia to kursor i sterowanie, które pozwoli na zmianę terenu na danym polu. To w ostateczności w podstawowej wersji powinno nam zapewnić podstawowy generator plansz. A to raczej jest istotne! Gdy będziemy mieli generowalne plansze - będziemy mogli pomyśleć nad stworzeniem jednostek, które będą między sob toczyć boje.

Tak więc co przewiduję na najbliższe tygodnie:
  • Wyświetlanie podstawowego terenu
  • Wyświetlanie i poruszanie kursora
  • Kliknięcie kursora musi zmieniać rodzaj terenu
  • Wymyślenie i implementacja zapisywania map
  • Wczytywanie map
Wykonanie tych elementów już będzie dla mnie sukcesem, lecz chciałbym to wzbogacić i pójść dalej dodając jednostki, budynki itp. Póki co pierwsze dwa punkty mam już wykonane ale z biegiem czasu liczę, że każdy kolejny zalśni na zielono. Gdy wszystkie będą zielone. Mogę powiedzieć o pierwszym ogromnym sukcesie i przejścia do kolejnego etapu rozgrywki/prac nad grą.

Tak więc wydaje mi się dużo jak na dwie godziny implementacji z określeniem, czego właściwie będę potrzebował w pojedynczym obiekcie terenu. Co sądzisz o projekcie? Następny raport w przeciągu tygodnia (mam nadzieję). 


Dobra, więc to na tyle bo ciężko pisze się kopytami. Znikam wylegiwać się na chmurach - w końcu wiosna! Słonko wyszło! Jest już ciepło.

wtorek, 7 marca 2017

A więc się zaczyna!


Serio! nie spodziewaliśmy się, iż będziemy tu pisać - baa, pomarańczowy nie spodziewał się, że dam się przekonać do uzupełnienia strony "o blogu", a tutaj... o proszę, jest.

A więc skoro to początek to warto określić czym się zająć. Obrać kurs, postawić żagle i płynąć. Powoli bo powoli, ale do przodu. A zacznę od konkursu:


Daj się poznać stanowi konkurs programistyczny dla ambitnych - tych, co chcą coś samemu napisać i mieć ku temu motywację (a przynajmniej bardzo motywujący bat w postaci dedlajna*). Tak czy inaczej od dłuższego czasu miałem pomysł na realizację gry, więc właśnie taki bat mi się przyda.  

Podsumowując, na blogu od czasu do czasu z pewnością pojawią się kolejne posty w danym zakresie informujące o postępach prac oraz trudnościach, które zdołało się rozwiązać.


*zapis umyślny