-
Postów
1 887 -
Dołączył
-
Ostatnia wizyta
-
Wygrane w rankingu
20
Typ zawartości
Profile
Forum
Wydarzenia
Odpowiedzi opublikowane przez I am vader
-
-
No, brawo brawo! Ale mnie zastanawia ten wydawca, niczego "dużego" nie wydał, wszędzie są tylko garstki ocen tu i tam. Ani jedna gra przez nich wydana nie przebiła 100 ocen.
-
@gnysek Skoro już tu wszedłeś, jako master GM'a, powiedz mi, czy asynchronous aktualizuje się tylko tak często jak step? Bo takie odnoszę wrażenie póki co.
-
Aktualizacja pingu:
///NetServerGetPing(Socket); var _sckpos = ds_list_find_index(PlayerSocket,argument0); if _sckpos!=-1{ var ct = floor(get_timer()/1000); PlayerTimeout[| _sckpos] = ct; PlayerPing[| _sckpos] = ct - PlayerPingStamp[| _sckpos]; PlayerPingStamp[| _sckpos] = ct; NetServerSendPing(argument0); }
Po wykonaniu NetServerSendPing(argument0); serwer oczekuje wiadomości zwrotnej która ponownie wywoła powyższy skrypt. Innymi slowy liczony czas to czas od wywołania aktualizacji do wywołania aktualizacji.
Kod nie wykonuje się w stepie tylko w Asynchronous Networking, więc powinien działać POZA stepem, szybciej od niego, tak szybko jak szybko przychodzą pakiety.
Chyba że czegoś nie wiem o asynchronousie i wykonuje on się tylko tyle razy na sekundę co step.
-
Szczerze w to wątpię zawsze generuje surface'y "w locie" i są responsywne.
Strzelam że zmienna nie istnieje i kod wykrzacza się na 1szej lini(czytaj: mój inb4).
-
Rysowanie do surface nie wymaga draw. Ale skoro to nie naprawia problemu, podrzuć PELEN błąd, może jest coś czego nie zauważyłeś?
Edit:
A walnę INB4 bo czemu nie
INB4 zmienna nie istnieje bo jej nie zdefiniowałeś lub zadeklarowałeś.
-
Może daj surface_reset_target() przed stworzeniem sprite'a.
To jedyne co mogłoby być nie tak, bo starasz się "dorwać do" surface'a, gdy ten jeszcze jest w trakcie edycji.
-
Czy jest jakiś dokładniejszy sposób na pomiar aktualnego czasu niż get_timer()? Nie chodzi mi o jeszcze drobniejszą skalę czasu, tylko coś co faktycznie obecny "moment" zwraca.
Bo get_timer i current_time aktualizują swoje wartości co step, a ja potrzebuje czegoś co zwróci czas pomiędzy stepem. Po co mi to? Do obliczenia pingu. Jak licze (czas obecny - czas wysyłki) to zawsze wynik jest wielokrotnością 16 lub 17, bo 1 step zabiera 16.66ms przy 60 stepach na sekundę.
Edit: Alternatywnie to może być jakiś błąd GM'a bo kiedyś sprawdzałem jak długo wykonuje się skrypt używając get_timer przed i po skrypcie i działało - wyświetlało mikrosekundy różnicy. A jak używam tego w funkcji do asynchronous to już nie działa tak.
-
To erm..z pewnością jakaś inspiracja.
-
Modernistyczne cycki zawsze w cenie
-
Myślicie że już czas zakładać temat w zapowiedziach? Projekt ma dopiero miesiąc, ale czuję że długo zajmie. Na razie brak przeciwników, tylko bronie.
-
Zamknięte.
-
-
Jakkolwiek nazwałeś zmienną w lini 1 w stepie ObjNPC, istnieje WBUDOWANA zmienna o takiej nazwie i nie można jej redefiniować(jest tylko do odczytu).
Zmień nazwę zmiennej.
Edit: A i poprzednia pozycja to xprevious, nie xprev, chyba ze chcesz ręcznie zaprogramować zapisywanie ostatniej pozycji
-
Zazwyczaj w przypadku błędów lepiej jest zostawić je w oryginalnym języku, aby byly zrozumiałe dla tych którzy już znają(i rozumieją) błędy GM'a. Plus, oryginalne błędy da się wygooglować. To co napisałeś nic mi nie mówi.
Znaczy, poza drugim błędem który brzmi jak błąd w INNYM miejscu w kodzie. Najlepiej wklej cały error bo mam wrażenie że zchrzaniłeś w innej części kodu.
-
Do pewnego stopnia da, ale nie ma takiej rzeczy na planecie któej by nie zhackowano, więc po co się wysilać jak to gra single player?
-
-
Wiesz, nie każda rasa musi mieć unisexową klasę militarną, nie było kobiet(poza USSR) w trakcie 2 wojny światowej, na ten przykład. Z drugiej strony może i być rasa a'la amazonki. Zależy jak na to patrzeć.
-
Może to kwestia modelu? clamped sugeruje ze jest to zamkniete miedzy dwiema wartosciami i wartosc minimalna moze byc malo plynna, probowales uzyc nieclampniętego liniowego albo exponent?
Edit: Z dokumentacji wychodzi że clamp działa na minimalny dystans, nie maksymalny. Nie mam pojęcia jak temu zaradzić w łatwy sposób. Możesz zawsze ręcznie zaprogramować listener robiąc grupę audio i zmieniając jej głośność w zależności od dystansu.
-
-
Masz tu absolutnie minimalny przyklad, bo chce zebys tez sam pomyslal. Postaraj sie zastosowac ten kod do zrobienia grawitacji oraz poruszania w lewo.
-
Nie działa, bo dałem y+j+1 zamiast y-j-1. W edicie wrzuce dzialajacy przyklad.
-
Widzisz, są dwa sposoby na kolizje:
1. Wszystko sie rusza jak chce, a jesli wykryje ze cos w cos wlazlo, to wypycha jedna z rzeczy zeby sie juz nie stykaly.
2. Wszystko sprawdza czy moze sie ruszyc bez kolidowania z innymi obiektami. Jezeli nie ma kolizji, ruch jest dozwolony.
Ty korzystasz z metody 1szej, która jest...słaba, żeby się nie wyrażać, a w każdym razie ja nie jestem jej fanem.
Proponuję Ci zrobić ruszanie się i kolizje na nowo, używając metody #2, a ruszanie się po skosach wyjdzie Ci automagicznie samo z siebie po dodaniu drobnych poprawek. do kodu poruszania się.
Przykładowo, ruch w prawo może wyglądać na jeden z dwóch poniższych sposobów:
if place_free(x+5,y) x+=5; //Metoda 1sza, dziala na wszystkie obiekty SOLID if !place_meeting(x+5,y,Parent_Obiektow_Solidnych) x+=5; //Metoda 2ga, dziala na obiekt Parent_Obiektow_Solidnych i ich wszystkie dzieci
Dla płynnego poruszania się możemy użyć pętli for:
for(var i=0;i<5;i++){ if !place_meeting(x+1,y,Parent_Obiektow_Solidnych) x+=1; }
Nastepnym krokiem jest dodanie "co jeśli jednak jest kolizja" czyli:
for(var i=0;i<5;i++){ if !place_meeting(x+1,y,Parent_Obiektow_Solidnych) x+=1; else{ //Co jeśli jest kolizja na x+1 } }
Ten kod musimy wypełnić sprawdzeniem czy jeżeli podniesiemy się o Y pikseli do góry czy nie będzie kolizji. W ten sposób powstaje ruch po skosie!
for(var i=0;i<5;i++){ if !place_meeting(x+1,y,Parent_Obiektow_Solidnych) x+=1; else{ var _max = 4; //Maksymalny skos to 4 piksele do gory i 1 piksel w bok. Zamien na dowolna liczbe ktora Ci pasuje. for(var j=0;j<_max;j++){ if !place_meeting(x+1,y-j-1,Parent_Obiektow_Solidnych) //Jezeli znalazlo wolna przestrzen { x+=1; y+=j-1; break; //Przerwij te petle bo juz znalezlismy skos. } } } }
Takie ostrzezenie, pisze to 100% z głowy więc może nie działać, w najgorszym wypadku po małych poprawkach powinno działać.
Edit: Ciagle zapominam ze nie ma juz tagu gml.
Edit2: Poprawiono kod na dzialajacy i poprawiono czytelnosc kodu dla potomnych i inncyh zagubionych duszyczek szukajacych rozwiazania.
-
Civ fantasy istnieje i nazywa sie, o ironio, Warlock - Master of the Arcane.
-
Bierz ofertę PsichiXa, jest tu najlepszy z shaderów i pewnie zrobi Ci to w 5 minut z palcem w zadku.
Ignis
w Zapowiedzi
Opublikowano
Tak ale czy to czasem nie jest ich zadaniem żeby wrzucić trochę marketingu? Rozpromować grę, jeśli uznają że jest dobra i jest tego warta?