Skocz do zawartości

Zając

Użytkownicy
  • Postów

    130
  • Dołączył

  • Ostatnia wizyta

Treść opublikowana przez Zając

  1. Jak wpadnie mi do głowy jak to urozmaicić tak żeby nie przepisywać całego kodu, to urozmaicę. W sumie to założenie było żeby zrobić minigierkę, ale solidną, bez bugów. Nie jestem pewien kiedy DBZ: EC zostanie ukończone, ale zapewniam was że nie przestanę pracować nad tym projektem. Co jakiś czas będę informował o postępach w tym temacie.
  2. Zając

    Festiwal głupoty.

    8 lat temu. :sp_ike:
  3. Tytuł: Dragon Ball Z: Energy Clash Gatunek: Gra na refleks. Wciskanie strzałek jak najszybciej, bez pomyłek. Opis: Dragon Ball Z: Energy Clash to darmowa gra nad którą pracuję. Grę zdecydowałem się zapowiedzieć, gdyż produkcja nad nią jest już dosyć zaawansowana i jestem pewien, iż skończę ten produkt. Gra polega na wciskaniu strzałek, lecz troszkę inaczej niż w większości produkcji tego typu. Zazwyczaj w takich grach lecą strzałki, a my mamy wciskać je w odpowiednim momencie. Nie tutaj. W DBZ: EC gracz musi jak najszybciej, robiąc jak najmniej pomyłek, ukończyć rząd strzałek przed przeciwnikiem. Kto robi to lepiej, będzie zdobywał przewagę w owym Energy Clash (siłowanie się na energie). Walka składa się z trzech "faz". -Warmup (rozgrzewka) to pierwsza z nich i nie ma na walkę zbyt wielkiego wpływu. Postacie walczą sobie wręcz na ekranie, a my wciskamy strzałki jak najszybciej, nie robiąc błędów. Pierwszy rząd to 1 strzałka, drugi rząd to 2 strzałki, potem 3... i tak aż do dziesięciu. Każda dobrze wciśnięta strzałka daje nam dodatnie punkty. Pomyłka nam je odejmuje. Kto ukończy rząd strzałek przed przeciwnikiem dostaje bonusowe punkty (Połowę dodatnich punktów z ilości strzałek w rzędzie). Kto wygra rozgrzewkę, ten będzie miał ciut przewagi nad przeciwnikiem w chwili zderzenia energii. -Charging (ładowanie) to druga faza walki. Również nie ma ona ogromnego wpływu na przebieg pojedynku. Faza trwa zaledwie kilka sekund, podczas niej musimy wciskać strzałkę jak tylko pojawi się ona na ekranie. Czym więcej strzałek zdążymy wcisnąć poprawnie, tym szybciej nasz pocisk będzie leciał, do momentu zderzenia z pociskiem przeciwnika. -Energy Clash (Siłowanie się na energie) to tytułowa faza pojedynku. Przeciwnicy siłują się na energie, poprzez wypełnianie rzędów 10 strzałek. Tak jak w rozgrzewce, ukończenie rzędu przed przeciwnikiem da nam dodatkowe punkty. Wciśnięcie złej strzałki trochę punktów nam odejmuje. Energia rusza się dopiero po tym jak obaj przeciwnicy ukończą swoje rzędy strzałek. Do tego każdy bezbłędnie ukończony rząd strzałek będzie dawał nam bonus... Jeszcze dokładnie nie wiem jaki, ale zapewne będzie mnożnik do naszych punktów (*1+ 0.1 za każdy ukończony bezbłędnie rząd strzałek, w przypadku błędnie wciśniętej strzałki wraca do 1, czy coś w ten deseń. Nad tym jeszcze nie zacząłem pracować, a wierzcie mi, dużo testuję swoją grę, bo chcę aby była zbalansowana.). Jeżeli energia dojdzie do postaci, to gracz ten przegrywa. Punkty dodatnie/ujemne o których non stop pisałem nie są widoczne w trakcie gry. Po prostu troszkę wyjaśniłem mechanikę gry. Kto wygrywa rozgrzewkę widzimy dopiero po zakończeniu tej fazy, kto wygrywa ładowanie widzimy po tym kogo pocisk leci szybciej no i później widzimy w którą stronę po każdym rzędzie strzałek rusza się energia. W ogóle to dużo się rozpisałem o mechanice gry, niektórym może być ciężko ogarnąć o co mi chodzi. Ale gra sama w sobie jest prosta. Sprowadza się do jednego. Do wciskania strzałek jak najlepiej tylko potrafimy. W grze będzie trochę postaci do wyboru, jednak kim gramy nie ma wpływu na walkę. Jedynie na wygląd naszej postaci. No bo szczerze mówiąc nie wiem na co typ postaci miałby mieć wpływ w mojej produkcji. Mógłbym sprawić aby jedne postaci od innych miały mniej punktów przy wciskaniu strzałek itp itd, ale to się mija z celem, bo po prostu niektórymi postaciami grało by się trudniej i nic więcej. Parę postaci będzie do odblokowania. Grę zacząłem tworzyć głównie o rozrywce przez multiplayer. Będzie łączenie przez TCP/IP. Dla jednego gracza będą dwa tryby, pojedyncza walka przed którą wybieramy poziom trudności, oraz survival w którym staramy się wygrać jak najwięcej walk i zbieramy sobie punkty, będzie high score table. Autorzy: Programowanie: Zając/ Z the Wolf/ jak mnie zwał tak zwał Fabuła: Zając/ Z the Wolf/ jak mnie zwał tak zwał Grafika: Większość z neta, postaram się wymienić w credistach jak najwięcej autorów użytej grafiki. Trochę grafiki robię sam, np menu, interfejs, albo poprawki przy spritesach. Muzyka: Z neta. Screeny:
  4. Z c++ też kiepsko. Dobra kij tam. Obejdzie się bez tego.
  5. Dwa tematy zakładam, bo każdy do czego innego. GML w miarę ogarniam, ale nie PHP, i nie mam czasu żeby uczyć się czegoś od podstaw, dlatego proszę o gotowca. Nie pytam żeby ktoś za mnie czegoś szukał, ale nie szkodzi zapytać czy ktoś nie posiada już takiego przykładu. Nie chcę żeby ktoś coś za mnie robił. Po prostu- pytam czy ktoś przypadkiem wcześniej w swoim żywocie natknął się na coś takiego. Czy zły dział? Może... Nie wiem. PHP jako tako wykracza poza Game Maker'a dlatego założyłem tematy tutaj.
  6. Na php nie znam się w ogóle. Ale być może zna ktoś jakisz szablon, w którym dzieje się coś takiego?: 1. Gracz 1 klika "Znajdź przeciwnika". 2. Gra sprawdza na stronce, czy ktoś hostuje już grę. 3. Nikt nie hostuje, więc gra ustawia gracza jako hosta. Wysyła IP na stronkę. 4. Gracz 2 klika "Znajdź przeciwnika". 5. Gra sprawdza na stronce, czy ktoś hostuje grę. Gra ze stronki dowiaduje się że tak, i bierze zapisane tam ip, łączy z graczem 1. 6. Kiedy gracz 1 znajdzie przeciwnika, albo wyłączy grę, stronka dostaje info że nikt już nie hostuje. Czy coś w ten deseń...
  7. Zna może ktoś jakiś przykład, jak zrobić tabelę high score, online? Na php nie znam się w ogóle. Oczywiście z przykładem w którym zmienne wysyłane są na stronke... Znalazłem stronkę http://www.gmhighscores.com/ . Koleś podał przykład jak zrobić tabelę high score, która później wyświetlała się na stronce którą hostował. Ale wyczytałem że pierwszego lutego 2013, strona będzie wyłączona. Więc kiszka.
  8. A no racja, zmieniłem na true i jest git. Dzięki.
  9. Problem o który pytam tutaj, nie ma nic wspólnego z innym topic'iem, to tak gwoli ścisłości. Takie pytanko mam małe... Czy jeżeli w grze z widokiem od góry mam jako jeden obiekt cały dom, tzn jego ściany, istnieje możliwość sprawdzenia collision_line w domu? Nie wiem czy to ja coś źle napisałem w kodzie ale używam collision_line do sprawdzenia czy przeciwnik nas widzi i na chwile obecną na terenie domu to nie działa. Czy collision_line widzi cały obiekt jako "kwadrat"? Czy muszę zrobić cały dom z kwadratowych bloczków żeby to działało?
  10. A tu mi wywalają errory przy log'ach jakieś z tego skryptu :mellow:
  11. Kurde no... Mam w kodzie coś takiego a jak napotka ściante to leci przez nią pocisk powoli, cholera wie czemu zamiast się zniszczyć. Przy kolizji z obj_walker działa dobrze... GML if ( collision_line( xprevious, yprevious, x, y, p_shootable, 0, 0 ) ) { _other = collision_while( xprevious, yprevious, p_shootable ) if ( _other > 0 ) switch ( _other.object_index ) { case obj_walker: instance_destroy(); // pocisk się zniszczy with ( _other ) s_walkercol(); // przeciwnik takze break; case obj_block: instance_destroy(); break // tutaj tylko pocisk sie zniszczy ( sciana nie ) break; } }
  12. Spoko, wielkie dzięki za te całe starania.
  13. W takiej sytuacji zalicza mi kolizję ze ścianą a nie przeciwnikiem, w kodzie mam takie coś: GML var _other; if ( collision_line( xprevious, yprevious, x, y, obj_block, 0, 0 ) ) { _other = collision_while( xprevious, yprevious, obj_block ) if ( _other ) { instance_destroy(); // POCISK with ( _other ) { } } } var _other; if ( collision_line( xprevious, yprevious, x, y, obj_walker, 0, 0 ) ) { _other = collision_while( xprevious, yprevious, obj_walker ) if ( _other ) { instance_destroy(); // POCISK with ( _other ) { s_walkercol() //OTHER } } } obj_block jest parentem dla wszelkiego typu ścian, a nie mogą mieć takiego samego parenta bo inny kod ma się wykonywać przy kolizji z ojb_walker :mellow: Skrypt s_walkercol() zawiera co ma się dziać przy kolizji z obj_walker. Ps. A jak zamienie te dwa kody miejscami to wtedy będzie mógł przeciwnik dostać mimo tego że za ścianą będzie.
  14. Czuję się głupi, ale jak to przerobić żeby sprawdzał więcej niż jeden obiekt? Bo jak skopiuje cały kod i wkleje pod spodem przerabiając go na to co ma zrobić z innym obiektem to i tak jeżeli sprawdzanie kolizji ze ścianą jest pierwsze, a obiekt stoi tuż przed ścianą to pocisk zaliczy kolizję ze ścianą.
  15. Nie ogarniam tego skryptu, ale działa, z tym że... a) Musiałem ustawić szybkość na ponad 1000 bo, dalej czasami zaliczało kolizję jak był za ścianą. (Myślę że chodzi o to, że skoro to jest na end step, to przed tym w sytuacji kiedy nabój znajduje się tam gdzie przeciwnik to zalicza normalną kolizję przed wykonaniem end step) B) Jak wspomniałem nie ogarniam tego skryptu, ale działa, z tym że dalej other nie znajduje... Tak czy siak wielkie dzięki za po moc do tej pory. :)
  16. Moglbym prosić o prosty przykład? :)
  17. W przykładzie jakim dałem, już nie pamiętam ale w grze nad którą pracuję jest 75. W ogóle wyjaśni mi ktoś czemu jak mam na end_step collision event, to potem z tego collision event nie zalicza mi w ogóle "other"? :mellow: W sensie że jak np jest other.hp-=5 to wyskakuje że nie zna zmiennej, normalnie jak nie mam tego sprawdzania kolizji w end step i zaliczy kolizje to działa. Ehh załamać sie idzie. :crying:
  18. No już jest w miare git... Nie wiem z czego to wynika ale zależnie od ustawienia gracza chwilami dalej dostaje obj_npc mimo tego że jest za ścianą... :mellow:
  19. W przykładzie sprawdzam kolizję ze ścianą tą samą funkcją, tyle że jak ustawić żeby zaliczał kolizję tego co jest bliżej... Bo tak to zalicza tego co jest pierwsze w kodzie po prostu. Ten link co dałeś prześledzę jak się okaże, że nie ma prostszego rozwiązania.
  20. Zrobiłem przykład żeby pokazać o co mi chodzi. Masz tu wykorzystanie collision line i obiekt który dostaje pomimo tego że jest za ścianą. http://speedy.sh/T9jtC/example.gmk Ściana krwawi na czarno a przeciwnik na czerwono. :P
  21. Nie wiem, może po prostu wolno myślę i tego nie ogarniam ale w takiej sytuacji jak ustawić żeby sprawdzał czy przeciwnik jest przed ścianą? Zwraca ID obiektu znajdującego się bliżej A, ale wyznaczonego obiektu, czyli wszystko fajnie, zaliczy najbliższego przeciwnika jeżeli inny jest za nim. Ale już jeżeli są dwa typy przeciwników, dwa inne obiekty to wtedy zaliczy oba. (No bo do każdego obiektu muszę ten kod dać...) Poza tym to mi dalej nie wyjaśnia co zrobić kiedy obiekt jest za ścianą, a collision_line zalicza i obiekt i ścianę. Bo wtedy zaliczy obie kolizje. Nie mogę też ustawić np że najpierw sprawdza kolizję ze ścianą a na "else" kolizję z obiektem bo wtedy jeżeli obiekt jest przed nami, a za nim ściana to pocisk zaliczy kolizję ze ścianą tylko. Kurde jeżeli dziwnie piszę to dlatego że jestem zmęczony ale po prostu dalej ni widzę rozwiązania mojego problemu..
  22. No tak, ale wtedy zaliczy wszystkie obiekty pomiędzy x,y oraz xprevious,yprevious...
  23. Co zrobić z obiektem który jest za szybki, a mianowicie przenika przez inne obiekty? Chodzi o nabój w strzelance od góry. Kombinowałem na parę sposobów, jak np. zrobienie podłużnego niewidzialnego sprite'a pocisku, ale problem i tak pozostaje przy.. ścianach. Bo jeżeli przeciwnik stoi blisko ściany z drugiej strony to i tak dostawał. Wtedy zrobiłem obiekt który sprawdza czy jest "wolna droga", tyle że po tym kiedy wróg stał przy ścianie, przed nami, to i tak nie dostawał... "collision_line" też chyba odpada bo by zaliczało wszystkie obiekty na lini wcześniejszego i obecnego położenia... Jaki jest najprostszy sposób się tym zająć?
  24. Kurde dzięki. Tak to jest jak zamiast tutoriali sie uczysz po swojemu a potem jakieś najprostsze rzeczy omijasz. :sp_ike:
  25. Istnieje możliwość przypisania paru obiektów do jednej zmiennej? Chodzi mi coś na styl... OBIEKTY=obj_obiekt1 oraz obj_obiekt2 oraz obj_obiekt3; Żeby potem użyć tego w if !collision_line(x,y,obj_player.x,obj_player.y,OBIEKTY,false,false) then {coś tam coś tam} Wiem że istnieje możliwość sprawdzenia wszystkich solidnych ale nie o to mi chodzi. Bo niektóre solidne ma pomijać. Z góry dzięki. :thumbsup:
×
×
  • Dodaj nową pozycję...