Wpisy autora

Polscy developerzy szaleją

gamezillaPisali o nas na gram.pl, na polygamia.pl a teraz do listy dołącza gamezilla.pl:

Polscy developerzy szaleją – w naszym kraju powstaje ponad 230 gier

Ostatnio może i nie piszemy zbyt wiele o naszych projektach – ale sami narzekaliście, że obiecujemy i obiecujemy, więc teraz damy znać gdy coś już będzie. W „międzyczasie” i dla oderwania dłubiemy przy małych projektach, testując też pewne rozwiązania społecznościowe – w najbliższych tygodniach powinny pojawić się jakieś nowe informacje na ten temat :)


Inspiracje RPGowe w designie Almory

Dziś trochę nietypowy wpis, bo nie będzie dotyczył ani nowych narzędzi które stworzyłem, ani postępów w grze (ale o tym też wkrótce napiszę) – a inspiracji które czerpałem i czerpię przy tworzeniu Almory. Zaznaczam, że to tylko moje własne inspiracje, ale może Borka też natchnie któregoś dnia do napisania podobnego wpisu (np. o Aliensach czy też o Almorze).

Z racji, że poza PC dużo grywam na konsolach, kilka gier które wspomnę będzie stricte konsolowych.

Diablo2Myślę, że takim pierwszym natchnieniem które pewnie i wam przyszło do głowy jest Diablo. Kto grał, zapewne zauważył podobieństwa w Almorze. Chociażby atrybuty przedmiotów, które posiadały jak w Diablo min. i max. wartości dla damage itp. Nie znaczy to jednak, że zgapiliśmy rozwiązania z Diablo – po prostu jest to najbardziej znany PCtowy RPG, ale kto grał w inne, wie, że po prostu ten gatunek tak ma i takie rozwiązania były są i będą w większości gier. Oczywiście czasem coś przyjdzie do głowy w trakcie kolejnej sesji, a że ostatnio kupiłem Diablo 3 na konsole, to pomysłów jakby więcej. Nie mniej traktuję to na zasadzie – „hm, fajne, ale w Almorze zrobimy to inaczej”. Np. nowe inventory w Almorze Origins będzie miało kształt koła, podobnie jak w konsolowym Diablo 3, ale tam zrobiono to z innego powodu (obsługa pada) – ja zrobiłem to, bo koło można fajnie animować – a na iPadzie ikony będą dalej od siebie dzięki takiemu zabiegowi i łatwiej będzie się „wklikać” palcem. Jedną z rzeczy której do tej pory nie było, ale mam nadzieję się pojawi i może się właśnie skojarzyć z Diablo, są poziomy przeciwników – podział na normalne, unikalne, elitarne itp. jest dość ciekawy – zresztą moim zdaniem to trochę nudne gdy każdy np. Snake w grze ma tyle samo HP. W Almorze Origins na pewno będą występować te same potwory na różnych poziomach i posiadające nawet różne ataki zależnie od levelu – nie będzie już 100% identycznych przeciwników jednego gatunku całą grę. No i dungeony. Co prawda raczej nie będę tracił czasu na randomowo generowane lochy (chociaż może po premierze jako update), ale na pewno pojawi się ich więcej niż w AO 0.7.6 – może nawet kilkadziesiąt. Diablo ma też jedną fajną rzecz, która ma największy wpływ na Almorę – jak pogram, to zawsze mam ochotę się zabrać za programowanie i kończenie gry ;)

Wiedzmin2Kolejna gra po której ogarnianiu zawsze nabieram ochoty na zabawę z Almorą i w jakimś stopniu jest też inspiracją, nie tyle nawet do rozwiązań technicznych co ogólnie natchnieniem na to, że RPGi pografią być naprawdę fajne jest Wiedźmin. Owszem gra w 3D, więc różniąca się znacząco od Almory, do tego w świetnym świecie stworzonym przez Sapkowskiego. Jest jednak coś co bardzo mi się w tej grze podoba – to jej słowiańskość. Nie w sensie pochodzenia, a w sensie stylu. To RPG który ma własny klimat, to co wielu z was tak pokochało w Almorze Online. No i ta fabuła. To jedna z tych rzeczy które chciałbym mieć w dobrym RPGu – fajna, trzymająca się kupy fabuła z mnóstwem dialogów. Nie wiem tylko czy takie rozwiązanie pasowałoby do Almory – raczej nie chcę żebyście się zaklikali na śmierć czytając dialogi, więc pewnie będą to jakieś krótkie scenki nie dłuższe niż ten akapit. Ale na pewno będzie sporo questów i nawet spróbuję je trochę zrandomizować, żeby niektóre parametry dobierało losowo w każdej nowej grze.

FF12Czas na konsolowe rozwiązanie. Final Fantasy – chociaż całą serię uwielbiam i ogólnie chciałbym zrobić kiedyś grę w stylu jRPG (trochę do tego co mi się marzy zbliża się TeeGee ze swoim Bonfire), to jednak sporo elementów jest tutaj typowych dla gier turowych, więc do Almory nie pasują absolutnie, ale to nie znaczy, że nic nie powoduje inspiracji. Ze wszystkich części w które grałem (Tactics, VIII, IX, XII i XIII) to chyba dwunastka podoba mi się najbardziej – świat Ivalice tam przedstawiony jest dość spójny i jako jeden z niewielu pojawia się w jeszcze innych grach z serii. Jedną z tych rzeczy która podobała mi się w 12 były questy z polowaniem – w mieście dostawaliśmy zlecenie, a potem trzeba było znaleźć przeciwnika – niby proste, ale czasem nie było dokładnie wiadomo gdzie go znajdziemy, czasem najpierw trzeba było znaleźć sposób na zwabienie go. Tacy przeciwnicy praktycznie zawsze byli też mutacją znanego wcześniej przeciwnika – ot wyobraźmy sobie Buga z Almory, ale  z niebieskim futrem. Polowania na zlecenie to coś co w Almorze na pewno sie znajdzie. Możecie potraktować to też jako sub-bossów. No i pojawią się też nowe rodzaje infekcji – poza poison np. confuse (postać może nagle atakować w inną stronę), freeze/petrify czy (chociaż tego nie jestem pewien) doom – czar który odlicza sekundy do śmierci i albo użyjesz antidotum, albo koniec gry. Ostatnie rozwiązanie to na pewno ryzykowne posunięcie i być może dodam je dopiero w update po wydaniu gry, jako opcjonalne – żeby nie zepsuć jakości rozgrywki. Dla serii FF jest tez inna charakterystyczna rzecz – przyzywanie summonów/GFów/esperów – boskich postaci które wspierają gracza i atakują przeciwników. Rozwiązanie znów trochę trudne do przeforsowania w Almorze, ale dla czego nie zrobić czarów które np. na 2-3 sekundy tworzą dookoła przeciwnika stado Bugów, Snakeów czy Wolfów i zadają mu atak? Czy musi być tylko ogień itp.? Myślę, że to ciekawe rozwiązanie. Inne o którym myślałem przy tej okazji, to zmiana postaci w przeciwnika – np. gralibyśmy Infinity Spiderem przez jakiś czas, dzięki specjalnym czarom.


Polscy Twórcy od A do Z: Gear Studio

Polygamia GSWspomniało już o nas kiedyś gram.pl, a tym razem serwis Polygamia. Jest okazja aby przeczytać trochę ciekawostek o nas

Polscy twórcy gier od A do Z: Gear-Studio

Przy okazji warto dodać, że oba serwisy wyłapały nas w sieci same – więc jak widać zainteresowanie naszymi grami jest. A, że gier nie widać… postaramy się to jak najszybciej zmienić. Planujemy nawet spotkanie i burzę mózgów w trakcie Zjazdu Twórców Gier w październiku. To może być też okazja zobaczyć w praniu wersje developerskie naszych gier. Co prawda nie gwarantujemy jeszcze, że na 100% obaj tam dojedziemy, ale jeśli planujecie wizytę na PGA 2013 – jest szansa, że zobaczycie rzeczy, ktorych na blogu i facebooku nie widzieliście.


DS Packer – wersja beta dostępna

ds-packer-1Dziś wieczór miałem chwilę, żeby dokończyć program DS Packer, o którym wspominałem przy okazji poprzedniego posta. Program można pobrać tutaj: https://bitbucket.org/gnysek/gms-ds-packer/downloads . Działa TYLKO z GM:Studio. Działa z polskimi znakami (40% czasu poświęconego na kod straciłem na to…).

Pozwala on importować proste pliki TXT i CSV (rozdzielone przecinkiem) z jedną lub dwiema kolumnami, oraz eksportować je do ds_list/ds_map. Wystarczy stworzyć jakiś pusty skrypt w GM, nadać mu nazwę, a następnie nadpisać ten skrypt bezpośrednio z programu (skrypty są w folderze scripts twojego projektu). Tworzymy odpowiednią strukturę (ds listę/mapę) aby dostać jej identyfikator, a następnie wywołujemy skrypt za pomocą nazwaSkryptu(idStruktury). I w ten sposób mamy wczytane dane. Przykładowo:

    mapa = ds_map_create();
    wczytajMojaMape(mapa);

Poniżej jeszcze prosty skrypt do eventu DRAW, który wyświetli max pierwsze 50 elementów wczytanych danych, który używałem do testów.

Mapa:

    first_key = ds_map_find_first(mapa);
    for(i = 0; i < min(20,ds_map_size(mapa)); i++) {
        draw_text(10, 10 + (i*16), string(first_key));
        draw_text(100, 10 + (i*16), ds_map_find_value(mapa, first_key));
        first_key = ds_map_find_next(mapa, first_key);
    }

Lista:

    for(i = 0; i < min(20,ds_list_size(lista)); i++) {
        draw_text(300, 10 + (i*16), string(ds_list_find_value(lista, i)));
    }

Błędy proszę zgłaszać tutaj: https://bitbucket.org/gnysek/gms-ds-packer/issues

W kolejnych wersjach dojdzie opcja zapisu klucza i wartości w mapach jako real zamiast string, różnych separatorów dla CSV, wyboru którą kolumnę eksportować do listy/map, wyboru czy kolejne kolumny eksportować do kolejnych map.


Kilka małych nowości

AlmoraSzkicJeśli śledzicie nasz fanpage na Facebooku to pewnie jesteście na bieżąco, ale dla całej reszty (oraz tych, którym FB nie wyświetlił któregoś z postów) kilka krótkich informacji.

Prace nad obiema Almorami są prowadzone cały czas, nie bójcie się. Obie gry planujemy wydać w tym roku – na „dużą” Almorę dodatkowy nacisk kładzie licencja developera iOS kosztująca ponad 300zł którą muszę odnowić we wrześniu, więc jeśli się nie wyrobię oznacza to dla mnie stratę.

StaraAleJaraJeśli chcecie powspominać stare czasy, to zebrałem z forum gmclan.org wasze screeny z Almory Online i stworzyłem album 109 zdjęć – dostępny tutaj. Nie trzeba konta na Facebooku aby go oglądać :)

ItemPackerScrren1Dodałem dział „Narzędzia i Aplikacje” w którym dzielić się z wami będziemy aplikacjami napisanymi na nasze wewnętrzne potrzeby, a które być może da się użyć też do innych typów gier i jakoś skorzystacie na naszej pracy. Na razie jeden pełen program, kod źródłowy do dwóch i zapowiedź jednego, ale w przyszłości pojawią się tam pewnie też przykłady skryptów GM:S itp.


Trochę teorii – towarzysze

Dziś krótka nota o rzeczy którą być może wprowadzę w Almorze pod koniec sam koniec etapu tworzenia. W drodze z i do pracy mam zawsze trochę czasu aby w pociągu przemyśleć niektóre rozwiązania. Grając w kilka gier na konsoli czy PC, a także porównując  z wersją online doszedłem do wniosku, że jedną z rzeczy które by się w grze przydały byłby towarzysz który za nami podąża. No cóż, zagadnienie nie jest takie proste, ale kilka kolejnych dni przemyśleć podsunęło mi trochę rozwiązań. Największym wyzwaniem jest zdecydowanie podążanie za graczem – ale tutaj GM:Studio samo podsuwa rozwiązanie – jeden z przykładów praktycznie podaje na tacy to czego potrzeba. Wystarczy użyć ds_listy która zapamiętuje pozycje gracza – powiedzmy gdy od ostatniej pozycji odejdziemy na 20 pikseli. Postać która za nami podąża przestrzega też jednej zasady – idzie w ustalone miejsca ale tylko tak długo, aż w kolejce są więcej niż dwie ostatnie pozycje – dzięki temu na nas nie wchodzi, stoi w pewnym odstępie i zaczyna podążać dopiero gdy oddalimy się o 20 pikseli. Ma to też jeszcze jedną zaletę – postać chodząca w kółko nie tworzy żadnych nowych pozycji, więc ta podążająca nie reaguje na nie w żaden sposób. Trzecia sprawa – w przypadku walk towarzysz może na chwilę wyłączyć podążanie, a zabrać się za walkę – gdy ona się skończy, z powrotem wrócić do śledzenia postaci, wybierając za następną pozycję tę na której podążanie się kończy (czyli trzecią na liście). Dzięki temu szybko nas dogoni. Tyle teorii, zobaczymy czy praktyka okaże się równie prosta – nie mniej jest to element gry który będę chciał wstawić względnie bliżej 90% ukończonej gry i w przypadku problemów może się stać tak, że jednak go pominę – więc nie obiecuję, że towarzysze w grze się pojawią, ale na pewno poświęcę dzień lub dwa na próby. A może ktoś z was stworzy ciekawy przykład takiego zachowania na podstawie moich przemyśleń?

1 komentarz więcej...

Edytor animacji

almora-animacje2Dzisiaj w ramach nowinek Almorowych, praca moich ostatnich kilku wieczorów – edytor animacji do Almory, dzięki któremu mogę szybko stworzyć nowe animacje do ataku, poruszania się itp. Jeśli zastanawia was po co dla postaci do której animacje w sumie już istnieją robię osobny edytor, po podam wam dwa powody: 1) Drobne poprawki zabierają za dużo czasu – zmiana jednej cyferki, odpalenie gry i sprawdzanie tego w ruchu to ok. 5 minut – tymczasem w edytorze mogę wartości zmieniać „na żywo”. Powód 2) Animacje w tym edytorze będą tworzone nie tylko dla postaci głównej, ale też dla… to zobaczycie za jakiś czas, ale możecie liczyć na nieco bardziej ożywionych przeciwników niż do tej pory.


Edytor map 2.0 w Almorze

W poprzednim wpisie wspomniałem o tym, że robię nowy edytor map – room editor z GM:Studio może i nie jest zły, na pewno lepszy niż wcześniej – ale mapy w Almorze są dość skomplikowane i wiele elementów nakłada się, przez co ciężko je jakkolwiek edytować, do tego sporo elementów ma specjalne właściwości (np. numer questu czy dialogu) – zamiast tworzyć 100 obiektów w których zmienia się tylko ubranie i numer dialogu, łatwiej ustawić zmienne bezpośrednio na mapie. Wcześniej korzystałem z edytora napisanego w GM, który szyfrował dane, zapisywał dane o zasobach i potem gra je odczytywała. Jak pisałem w poprzednim poście, nie ma sensu już tak dalej robić, a nawet częściowo się już nie da – nie mniej GM:Studio zapisuje zasoby jako pliki XML, więc wpadłem na inny pomysł. Na podstawie istniejącego edytora GMare do GM8 (a więc częściowo na gotowym kodzie), stworzyłem specjalny edytor w C# korzystający z OpenGL, który jest w stanie odczytać zasoby GMowe i zapisać mapę bezpośrednio do GM:Studio – i tam wciąż edytować. Mogę też tworzyć mapę najpierw w GM:S, a potem poprawiać ją w edytorze – program więc integruje się w pracę i ułatwia tworzenie, a nie tworzy nowe pliki które trzeba interpretować. Edytor będzie w miarę uniwersalny (tzn. powinien nadać się do wszystkich gier, w których jak w Almorze elementy otoczenia będą jednym obiektem, którego właściwości są nadawane po stworzeniu – sprite_index, mask_index, solid, x, y, oraz jakieś customowe zmienne). Edytor zostanie w najbliższym czasie (gdy go skończę) wydany publicznie, także każdy będzie mógł go wykorzystać w swojej grze (dostępna będzie dokumentacja i prosty projekt przykładowy).


Gdzie ta duża Almora?

Ostatnio sami zagadujecie w komentarzach, na facebooku czy to nawet na GG, kiedy pojawi się w końcu nowa Almora. No cóż, to dobre pytanie, ale na pewno nie pojawi się ona przed wyjściem GameMaker:Studio w wersji 1.2. Dlaczego? Otóż  ta właśnie wersja zaoferuje kilka rzeczy, które niewątpliwie wpłyną na działanie gry. Np. Shadery – które pozwolą na efekty graficzne nieosiągalne wcześniej lub bardzo niewydajne (liczę na: blur, grayscale, tint), LLVM czyli pełną kompresję binarną kodu GML (znaczne przyspieszenie wykonywania eventów), nowy Debugger (przydatny przy wykrywaniu błędów gdy ma się kilka tysięcy obiektów w grze, oraz np. do czytania struktur danych które Almora wykorzystuje, a w których błędu obecnie można szukać czasem i dwa dni), czy obsługę plików OGG. Dodatki wersji 1.3 i 1.4 nie są czymś co obecnie chciałbym wykorzystać (chociaż oczywiście obsługa sieci czy GPSa znalazła by swoje zastosowanie).

Duże opóźnienie spowodowało też kilka zmian w GM:Studio. Po pierwsze, do tej pory wszystkie zasoby czytałem z zewnątrz, w tym także generowałem itemy i mapy. Niestety od jakiegoś czasu GM:S sandboxuje gry (tzn. nie pozwala czytać plików spoza katalogu gdzie działa) i 39dll który do tego wykorzystywaliśmy zaczął się nieźle gubić – nie mniej ponieważ GM:S jest już wystarczająco bezpieczny, to nie ma sensu tego czytać z zewnątrz, a na iPadzie też stanowiłoby to problem. Uprościłem więc całość i mapy oraz itemy są teraz zdefiniowane w grze – przy okazji, wczytywanie przyspieszyło.
Czytanie grafik z zewnątrz też stanowiło pewien problem – po pierwsze, GM nie chciał ich czytać z tego folderu którego chciałem, po drugie na iPadzie i tak to nie działa, po trzecie – GM:Studio oferuje coś takiego jak „texture pages” i można fajnie zoptymalizować grę – tak jak kiedyś nieużywane w aktualnym terenie grafiki usuwaliśmy z pamięci, tak teraz GM:S robi to sam (każda kraina jest na innej stronie tekstur, a GUI na jeszcze osobnej) – i też widać pewien skok wydajnościowy. Ostatnia zmiana to mapy – kiedyś całość mieściła się na jednej mapie – nie mniej w trybie simple nie ma potrzeby trzymać wszystkiego na jednej mapie – nie ma innych graczy których trzeba utrzymywać na ich pozycjach – więc przerabiam też edytor map tak, aby można było ich tworzyć więcej. To oznacza też, że pojawi się więcej niż do tej pory dungeonów i niektóre będą losowo wczytywane.

Ogólnie w końcówce stycznia większość zmian powinna już być gotowa i gra będzie rozbudowywana od tego momentu głównie o questy i nowe akcje przeciwników (jedyną formą ataku AI nie będzie już tylko podchodzenie i atakowanie, będą ataki magiczne, itp.). Pewnie część rzeczy byłaby gotowa wcześniej, ale bugi nękające GM:Studio często zatrzymywały mnie nawet na 2-3 tygodnie (wieszanie się GMa przy dużych tablicach gdy wystąpił błąd, przez co nie mogłem zdebugować praktycznie nic, bo nawet jeśli błąd nie dotyczył itemów, to oczekiwałem na komunikat o błędzie nawet 15 minut…).

Jeszcze w tym miesiącu spodziewajcie się nowych informacji o grze :)


Almora – kwietniowy pamiętnik

Cześć i czołem, Hidden Sword pod stołem, hłe hłe. Witam najbardziej cierpliwych graczy w tej części Europy, którzy czekają na Almorę. Oczywiście wciąż do zrobienia w grze jest dużo, ale zaczynam zbliżać się do momentu, gdy jest tego mniej niż więcej. Od ostatniego czasu zdążyłem się przeprowadzić, wydać inną grę, czy przylecieć na święta do Polski – działo się dużo… pracowałem przez jakiś czas nad edycją ścieżek w grze – do tworzenia rzek, oraz tras w lesie – niestety efekty wciąż są niezbyt zadowalające (tekstury się „rozciągają” co nie wygląda najpiękniej), więc na razie ten element pominąłem – bez sensu tracić dni na coś, co jest tak naprawdę w tej chwili mniej potrzebne – popierdółki graficzne mogę sobie przecież dorabiać w trakcie, gdy gra będzie już w fazie beta testów. Tak więc skupiłem się teraz na Questach i NPC. Na razie tych pierwszych jeszcze nie ma, chociaż częściowo już mam pod to przygotowane skrypty, ale zaczynają się pojawiać NPC, których mogę sobie konfigurować w edytorze map. Wkrótce dorobię też dla nich znaczniki do ścieżek, więc do Alebry znów wróci życie, jak za czasów Almory Online. Co prawda w mieście zmieni się nieco lokacja budynków (głównie tawerny), ale starych kolegów znajdziecie bez problemu – wciąż będzie można usłyszeć słynne „Leave me alone” albo „hehehe” od odpowiednich NPCów. W grze zmieniło się menu (prawdopodobnie już ostatecznie, pojawią się tylko różne dodatkowe ozdobniki), wkrótce zacznie pojawiać się GUI (ponieważ atakowanie wszystkimi 3 rodzajami broni już działa, więc najwyższy czas dodać wyświetlanie magii, czy używanie itemów). Udało mi się też nieco poprawić AI, chociaż to wciąż nie to, co chciałbym uzyskać (przejście za plecami NPCa dosłownie ocierając się o niego, powinno jednak wywołać jego zainteresowanie…).

Z innych rzeczy: parę dni temu dla oderwania się na chwilę, testowałem stary prototyp Almory (Triberian) na iPadzie 2. Niestety, spora część rzeczy nie działała (iPad nie obsługuje wczytywania plików luzem z dysku, muszą być wkompilowane w grę), więc wywaliłem co zbędne aby nie przedłużać testu i z samą trawą i grafiką bohatera, zrobiłem proste dotykowe poruszanie (palec – chodzenie, dwa palce – atak). Absolutnie nie myślcie, że pracuję obecnie nad wersją na iPada – tą zajmę się dopiero gdy gra wyjdzie na PC – na podstawie waszych opinii będzie można jeszcze zmienić to i owo. Bowiem to wersję na iPada zakładam jako tą, która przyniesie większy sukces finansowy dla mnie i Borka.


© 2011 GEAR-STUDIO. Wszystkie prawa zastrzeżone.
Szablon: Jarrah autorstwa Templates Next, poprawki oraz modyfikacja Gear-Studio, tłumaczenie: Wordpress PL | Działa na WP