Skocz do zawartości

Biegi, obrotomierz, prędkościomierz


Rekomendowane odpowiedzi

Zrobiłem mały przykładzik ale całkiem realistyczny, ma tylko kilka nieznaczących małych bugów.

Chciałem jak najlepiej oddać zachowanie obrotomierza i prędkościomierza przy zmianie biegów

i wydaje mi się, że to pierwszy taki przykład na forum.

 

https://gmclan.org/up2885.html

 

wystarczy dorobić jakiś samochodzik, sprzężyć to wszystko paroma zmiennymi i gra, że ho ho :rolleyes:

Dla początkujących ten przykład może być skomplikowany nieco, ale jak się chwilkę

poanalizuje to będzie ok.

 

OCENIAJCIE !

Odnośnik do komentarza
Udostępnij na innych stronach

Dwója.

 

Strzałki mogą robić pełne kółko, jak próbuje zmienić bieg a trzymam gaz to strzałki skaczą. Ruch strzałek strasznie niepłynny. Nie mówiąc o tym, że czym większa prędkość, tym przyśpieszenie powinno maleć.

Rozumiem, że się namęczyłeś, ale to naprawdę dało się zrobić prościej, i lepiej.

 

A terazdrobna krytyka ze strony kodu.

 

1. obrotosciomierz (a gdzie przedrostek "obj_"...? albo chociaż "o_"...), event draw niepotrzebny

2. Klocki śmierdzą. Switch roxi.

3. Poziom skomplikowania tego przykładu jest nienaturalnie wysoki :P

Gwarantuję, że można to było zrobić prościej, i, cholera, lepiej.

 

I na zakończenie: Nie wiem, czego ten przykład może uczyć.

 

Się ropisałem :D

Odnośnik do komentarza
Udostępnij na innych stronach

1. Przyśpieszenie maleje, a że tobie nie maleje to ja nie wiem jak to zrobiłeś, z resztą tak tylko dla

przykładu wartości zmiennych wpisywałem.

2. Wskazówka skacze gdy wskazówka dojdzie do lampki lub gdy np:

prędkość wynosi 150 a bieg zredukujesz do 1,

3. Nie zrozumiałem o co chodzi, że "wskazówka nie porusza się płynnie", jest tylko jeden taki bug,

że czasem jak wskazówka dojdzie do 7 tys. to nagle skoczy na 9 tys.

4. Draw przyda się gdy jakiś obiekt (samochód) sobie pojedzie a zegary,

będą się "trzymały" widoku gry,

5. Czytaj game info bo pewnie nie wiedziałeś jak biegi zmieniać,

6. Dużo kodu mi nie przeszkadza wyobraź sobie poziom skomplikowania takiego przykładu w c++.

7. Nie znasz się na samochodach.

Odnośnik do komentarza
Udostępnij na innych stronach

Drobna krytyka krytyki kodu Dawiddsa:

1. Po kiego jakieś przedrostki? Od kiedy zacząłem używać ich w przykładach to ludzie zaczęli uważać je za konieczność.

2. Execute bla bla code też jest klockiem. I sam śmierdzisz jeśli uważasz, że klocki śmierdzą.

3. Tak jak 99% innych przykładów i artykułów w tym i ( woops! ) Twój artykuł.

 

W sumie nie znam się na samochodach a w ściganki mało gram tak więc powiem, że dobrze jest jak jest. Tak odnośnie przykładu.

Odnośnik do komentarza
Udostępnij na innych stronach

Co do punktu 3 Tymon, może go źle zrozumiałeś :P ?

 

A przedrostki śmierdzą, duża litera załatwi sprawę :) . A przykład mi się podoba. Chciałem jeszcze powiedzieć, że sam listing kodu w C++ odpowiedzialny za coś takiego byłby podobny. Funkcje takie, jak te z GMa oferuje każda dobra biblioteka za to odpowiedzialna :) .

Odnośnik do komentarza
Udostępnij na innych stronach

chyba nie uważasz, ze realistyczne jest wyciągnąć 280hm/h na jedynce? :P

 

Znalazł się kolejny znawca <_< , w moim przykładzie da się osiągnąć

na jedynce 280km/h (tak, to jest bug) ale tylko na 10 tys obr/min i bardzo

wolno wtedy idzie, ale nie bój sieeee... Dorobię jeszcze

komunikat : Silnik zatarty - game over (gdy dojdziesz do 60km/h na jedynce) :lol:

 

Ale jedno jest śmieszne : musiało ci to sporo zająć na jedynce do 280 haha

Odnośnik do komentarza
Udostępnij na innych stronach

Kurde, chcecie screena :P ?

 

musiało ci to sporo zająć na jedynce do 280 haha
Ustawiam room_speed na 5000...

Zatkało, hahaha? //Wiem, że to nie do mnie, ale co tam...

 

1. Po kiego jakieś przedrostki? Od kiedy zacząłem używać ich w przykładach to ludzie zaczęli uważać je za konieczność.
Po tego. jak nazwę sprita "ludzik", i objekt też "ludzik", to jest problemik. A ja przynajmniej nie dałbym rady zapamiętać, że już nazwałem ta jednego sprita dla obiektu muszę inną nazwę wymyślić.

 

2. Execute bla bla code też jest klockiem. I sam śmierdzisz jeśli uważasz, że klocki śmierdzą.
:P Dobre. Ale i tak uważam, że zamiast jakiś trzech klocków lepeij postawić kilka znaków, a i kod.... nie, jak to klocki to nie kod, więc zawartość eventa staje się czytelniejsza, zajmuje mniej miejsca, i łatwiej i szybciej ją przerabiać.

 

3. Tak jak 99% innych przykładów i artykułów w tym i ( woops! ) Twój artykuł.
Ale w moim artykule, jak już do niego nawiązałeś (w ogóle to chyba 10s się zastanawiałem, czy ja jakiś artykuł pisałem :P) nie było zbędnego kodu. No i spełniał stuprocentowo swoją rolę.

 

Znalazł się kolejny znawca <_<
Zrozum, taka prawda, że tandetny jest ten przykład. Nagrałbym ci filmik, ale nie mam zainstalownego żadnego takowego programu :P Ale masz instrucję.

 

1. Włącz grę w "Debug Mode"

2. Zwiększ room_speed do 5000 (równie dobrze możesz tego nie robić, ale jak nei chcesz czekać, to lepiej to zrób...)

3. Wstaw 1. bieg. (wciśnij raz [X])

4. Trzymaj strzałkę do góry.

5. Obserwuj zachowanie strzałki. Jakimś cudem będzie leciała do 260... przekroczy 260.... znowu będzie ustawiona na 0... 50.... 100.... zrobi jeszcze z pięć kółek, będzie wyraźnie widać, że zwalnia.... i nagle znowu będzie szybko leciała. Przez ten cały czas wskazówka po prawej stornie będzie drgać jak oszalała.

 

I podsumowanie: zapewne po prostu naprawisz te bugi. Ale to i tak będzie złe. Zamiast maskowania kolejnych bugów lepiej napisać silnik od początku wiedząc, jakich błędów nie popełniać. Bo tak to próbując to rozbudowywać będziesz zyskiwał coraz to kolejne bugi, tracił coraz to kolejne FPS'y oraz minuty na maskowanie owych błędów.

Że kurde nie wspomnę, że tego kodu mogło być min. 2x mniej. A mówię to asekuracyjnie...

 

Niezbyt obrazowo mi to wyszło :P

 

Ale jeszcze coś dodam. Brak jednoznacznych zmiennych. Do tego przykładu wystarczyły by 3, na upartego 2 globalne. A nie ustawianie

GML
biegi=wsk_obr.bieg
. I że zacytuję gnyska "głodny jesteś, że średniki zjadasz?".

W sumie to w ogóle brak zmiennej określającej prędkość.

Kod

GML
if image_angle>240

{

image_angle=240

}

Powinien być wstawiony na końcu kodu, w tym przypadku jako ostatni klocek.

Nawet jak rozpędza się na 1. biegu, to wskazówka idzie szybko, i nagle (mniej więcej na 55km/h) zwalnia. A to powinno być całkiem płynne.

Inne pytanko: skąd ktoś, kto by użył tego przykładu ma wiedzieć, jaka jest prędkość samochodu?

 

I screen podsumowujący moją, cholera, znów długą wypowiedź.

65073c0931bab898.png

Jakby ktoś nie skumał: jako, że w tym skrypcie nei ma zmiennej przechowującej prędkość, więc pokazuję image_angle wskazówki prędkościowej. Co ciekawe, im mniejszy image_angle, tym większa prędkość. Na tym screenie mamy trochę ponad 5000km/h, wyciągnięte na jedynce na dodatek. A autor wymaga za to credits. No ale cóż, taki kod. Albo raczej, jak Tymon stwierdził, klocki :P

 

PS: Zaraz mi tu stwierdzisz, że jestem konfliktowym człowiekiem. Zauważyłeś może kiedyś, żebym się przyczepił kogoś że tak to nazwę "dobrego"...?

 

Dobra kończę, bo przekroczę limit długości wiadomości :D Coś ostatnio napisanie jednego postu zajmuje mi za dużo czasu :|

Odnośnik do komentarza
Udostępnij na innych stronach

Jaaa nie mogeeeee, ten człowiek nie da żyć.

 

Raz : po prostu dam sobie ograniczenie do 280, po co się tak o to rzucasz.

 

Dwa : kto i po kiego grzyba będzie grał na room_speed=5000, przykład jest

zrobiony do gry przy 30. Jak chcesz to zrób sobie grę, która chodzi

na room_speed=5000 i gap się na nią cały dzień (albo zwal se przy niej).

 

Trzy : Pozwoliłem ci pokazywać mój kod na forum ? po co czepiasz się moich

rozwiązań, oceniłeś raz i do widzenia, i co cię obchodzi ile i jak używam kodu.

 

Cztery : sprity nazwałem z przedrostkiem a objecty bez więc w czym problem ?

 

pięć : Z resztą wkrótce jeszcze dam wersję beta gdzie wszystko będzie płynnie

i w ogóle, żeby cię zatkało i przyczepisz się w tedy o to, że mam słaby avatar :P

 

sześć : Zapomniałem o jednym, image_angle się zmniejsza, I CO Z TEGO ?

To nie znaczy, że wtedy będzie się zmniejszał speed ewentualnego samochodu,

przecież to tylko grafika zagaru, a ty naiwny jesteś...

Jak ktoś umie to zrobi, tak, że speed samochodu będzie się zwiększał, o tym

nie pomyslałeś co ?

 

Dam ci dobrą radę : nie kłóć się i nie rób scen z byle powodu, takim sposobem

daleko nie zajedziesz.

Odnośnik do komentarza
Udostępnij na innych stronach

Po tego. jak nazwę sprita "ludzik", i objekt też "ludzik", to jest problemik. A ja przynajmniej nie dałbym rady zapamiętać, że już nazwałem ta jednego sprita dla obiektu muszę inną nazwę wymyślić.

wiesz to już zależy od osobistych preferencji, mozesz nazwac sprita ludzik obejkt ludzior itp. dobrze że nie widziałes nazw obiektów/spritów/reszty w moich projektach

Odnośnik do komentarza
Udostępnij na innych stronach

Nadal to jest niepłynne :P

 

1. Na jedynce, Trzymam strzałkę. Prawa wskazówka. Idzie szybko, nagle zwalnia i.... przeskakuje na 10.

2. Dlaczego to jest niepłynne, więc mówię. Na jedynce trzymaj gaz. Prędkość. Wskazówka leci szybko, szybko.... i nagle zaczyna wolno. A to powinno lecieć 100% płynnie. Czyli Z początku leci szybko, a potem powoli zwalnia, zwalnia, przyśpieszenie maleje, coraz wolniej... i dopiero wtedy się silnik zaciera.

3. Przy wrzucie na dójkę dziwnie szybko kacze prawa wskazówka.

4. WTF!!!??? Wrzucam szósty bieg. Prawa wskazówka jest gdzieś na 6. Próbuje przyśpieszać, ale strzałka leci straaasznie powoli. Kiery prawa wskazówka dojdzie do zera... nagle wskakuje piąty bieg a owa prawa wskazówka leci na pozycję 8. Kiedy jest już 3. bieg prędkość jest równa 0, ale prawa wskazówka ciągle przeskakuje na max pozycję, stopniowo zchodzi, bieg się obniża o jeden,a prawa wskazówka znów wskakuje na wysoką pozycję.

5. Taki trick. Jestem na czwartym biegu. Próbuję wrzucić wyższy bieg trzymając strzałkę do góry. Bieg się nie wrzuca, ale prawa strzałka zchodzi na tą samą pozycję za każdym wciśnięciem [X] (o ile trzymam strzałkę)

 

Wyjaśnij to zjawisko. Szczególnie zależy mi na punkcie 4.

 

PS: Ja nic do ciebie nie mam :P Nie bierz tego, że chcę się z Tobą powyzywać, nie lubię Cię itp. Nic do Ciebie nie mam. Ale prawda jest taka, że ten przykład jest tandetny :P

Odnośnik do komentarza
Udostępnij na innych stronach

Właśnie jest taki bug, że gdy prędkość=0 biegi nadal się redukuja, właśnie - redukują

się automatycznie gdy obroty spadną poniżej 1tys, ale nie wiedziałem jak zrobić, że gdy

zredukują się do jedynki to zawsze prędkość spadnie do zera. A właśnie -

to nie wiedziałeś, że obroty na chwilę skoczą przy redukowaniu biegów ?

Z tym czwartym biegiem - wskazówka zawsze tam skoczy, czy jest

mniej czy więcej obrotów, zapomniałem tego naprawić.

Silnik się zaciera na szóstce, po prostu za dłuuuugo na wysokich

obrotach, w cale nie musi się szybko wkręcać, żeby się

zatrzeć. Z tą dwójką - dziwnie skacze, bo ustawiłem, że skoczy obrotomierz, gdy

kąt wskazówki prędkościomierza wynosi ileś tam i ustawiłem za wczesną wartość.

 

Coraz częściej sobie myslę, że zrobię od nowa. :unsure:

Odnośnik do komentarza
Udostępnij na innych stronach

Widzisz jakie pogmatwane ;P ?

A to naprawdę nie tak wiele roboty, aby to było płynne, jak mówiłem.

 

Napisałbym skrypcik aby ci udowodnić, jakie to proste, no ale cóż, no niezbyt się znam na działaniu samochodu :D Wiem tyle, że prawa strzałka (hmmm... moc silnika? a obrotomierz ;p) rośnie ze wzrostem prędkości, na wyższych biegach wyrabia się wyższe prędkości. Nie mam pojęcia, czy obrotomierz ma jakiś wpływ na przyśpieszenie, jak tak to jaki, że przyśpieszenie chyba jest trochę mniejsze jak mam wyższy bieg, i to w sumie tyle wiem :P

 

W takim razie to raczej dziwne, że silnik ma obroty 0 i w chwili ma maksymalne :P

 

PS: A płynne chodzenie powinno się ograniczać nawet do "bezwładności" wskazówek. Czyli że jak wskazówka idzie do góry, a nagle puszczasz gaz i powinna iść na dół, to ona powoli zmniejsza swoją prędkość, aż zaczyna iść "do tyłu".

Odnośnik do komentarza
Udostępnij na innych stronach

Obrotomierz pokazuje tylko obroty na minutę, a obroty

potrafią tak skoczyć na złym przełożeniu (biegu),

ale nie będę już się rozpisywał jak to dokładnie jest bo

to skomplikowane nieco ale zrobię po prostu lepszy przykład :D

bo temu jednak daleko do realistyki ale już ma coś z niej :P

Odnośnik do komentarza
Udostępnij na innych stronach

  • 10 miesięcy temu...

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...