Tworzenie gier - Marynarzyk (cz. 5)

in pl-gamedev •  7 years ago 

Zastanawiałem się czy podszlifować marynarzyka, zająć się dokumentacją czy może nową grę. Nikt nie dał odpowiedzi, więc postanowiłem zrobić chyba ostatnią część "tworzenia marynarzyka" na którą zapraszam.

Gra naturalnie działa, więc teraz będziemy ją szlifować do końca po prostu.

Usunięcie trybu "debugującego"

Jak pamiętacie wcześniej - gra wyświetlała nam wartości wylosowane przez komputer i wybrane przez nas. W grze do wydania nie powinny się znaleźć takie rzeczy, więc usuwamy pierwszy blok z Draw - 2 linijki zawiera i wyświetla zmienne - wybraną przez komputer opcję i swoją.

Usuwamy je przez co gra nie będzie podpowiadać nam nic.

obraz.png

Duże widoczne wyniki

obraz.png

Jak widzimy - wyniki, które dostajemy od gry są napisane małą czcionką i gdzieś po lewej. Może wyśrodkujmy napis i powiększmy? Musimy to rozbić na dwa.

Czcionka

Sam Game Maker / Enigma nie ma możliwości powiększenia czcionki - trzeba dodać własną. Dodajemy Fonts i wypełniamy jak chcemy, tutaj mój przykład:
obraz.png

Następnie musimy w kodzie dodać obsługę tej czcionki (a dokładniej by gra ją wykorzystywała). W obiekcie controller dodajemy w Draw linijkę

draw_set_font(font_text);

obraz.png

Czcionka o wiele czytelniejsza!

Wyśrodkowanie

Wcześniej do wyświetlania wyników używaliśmy na przykład linijki

draw_text(10, 50, "Remis");

Wskazywaliśmy od którego miejsca ma być rysowany (pisany) tekst.

Gra domyślnie działa w 640x480. 320 to połowa 640 (szerokości). Ale sam tekst też swoje zajmuje, więc użyjemy funkcji

string_width("Remis")

Która zwraca szerokość tekstu "Remis". Ale co to nam daje?

Wkleję tutaj przykładowe wyświetlenie tekstu Remis po zmianach i omówię to

draw_text(320-(string_width("Remis")/2), 50, "Remis");

Straszne ... ale czy jednak?
Musimy tekst wyświetlić na środku. Czyli bierzemy 320. Sam tekst Remis jakąś długość ma (np. 40 pikseli ustalmy). Więc od 320 musimy odjąć 40. Ale wtedy tekst będzie kończył się na środku, a nie będzie sam na nim. W takim razie musimy odjąć nie całe 40, a połowę, czyli 20.

Całe zadanie dla rysowanie tekstu dla pozycji X działa tak:
Od 320 odejmij połowę z długości tekstu "Remis".

Proste? Mam nadzieję. Podobnie robimy z każdym wynikiem zmieniając tekst w string_width. I działa ;)

obraz.png

Fajerwerki

Jak się bawić to się bawić - zróbmy fajerwerki! ;)

Fajerwerki będą się wyświetlać gdy wygramy.

Musimy zapoznać się z funkcją od "Simple effects"

effect_create_above(kind, x, y, size, colour);

Przyjmuje ona 5 parametrów

  • Rodzaj efektów (u nas ef_firework)
  • Pozycja w szerokości
  • Pozycja w wysokości
  • Rozmiar (0, 1, 2)
  • Kolor

Więcej o tym przeczytasz tutaj

Zróbmy czerwony i niebieski sztuczny ogień.

Działa, ale to wręcz deszcz firewerków!
obraz.png

Jak zrobić pojedynczy strzał? Musimy zrobić zmienną np. efekty=0.
Jeśli efekt jest równy 0 - zrób firewerki i zamień efekt na 1.

obraz.png

Działa! Oto kod na wyświetlanie wygranej:

if(((global.wybor_gracz=1 && wybor_cpu=3) || (global.wybor_gracz=2 && wybor_cpu=1))  || (global.wybor_gracz=3 && wybor_cpu=2) )
{
if(efekty=0)
{
effect_create_above(ef_firework, 75, 50, 2, c_red);
effect_create_above(ef_firework, 565, 50, 2, c_blue);
efekty=1;
}
draw_text(320-(string_width("Wygrana")/2), 50, "Wygrana");
}

Warto zauważyć, że kolory poprzedza się prefiksem c_

Na koniec

Dziękuję za uwagę i możecie dawać swoje propozycje na temat gier czy co chcecie w serii widzieć!

Krótkie podsumowanie

  • Zawsze usuwaj zbędne rzeczy z gry
  • Ciężko się manipuluje czcionkami - najłatwiej dodać nową
  • Jeśli robisz grę, która dostosowuje się do rozdzielczości - musisz bazować nie na konkretnych wartościach
  • Simple Effects to fajna rzecz, którą warto się pobawić ;)
  • Kolory poprzedza się prefiksem c_
Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

To co robisz to po prostu nie ogarniam.
Podziwiam takich ludzi.
Pozdrawiam.

To nie takie trudne, ale warto rozpocząć serię od początku i wtedy powoli wprowadzać to u siebie

Osobiście widzę efekt wygranej w kolorach złotym i srebrnym :D albo może tylko złotym

Super robota :D W ogóle, ze taki pomysł akurat na taką gierkę Ci wpadł xD

Podoba mi się to że pokazujesz kody, jak co powstało :) Można zobaczyć jak co działa, jak rozgryzłeś dany temat :) pozdrawiam, miłego dnia :)

Najprościej jak zwykle zacząć grę robić, gdyż wtedy błędy widzisz natychmiast i szukasz rozwiązań. Mimo, że w Game Maker siedzę od gimnazjum o tyle dopiero po studiach (lub pod koniec) zacząłem robić pierwszą grę. Dużo się przy tym nauczyłem

Bardzo fajnie Ci to wyszło :) Sam chciałem się kiedyś zabrać za tworzenie gier, ale ilość pracy jaką trzeba włożyć nawet w tak prostą gierkę mnie przeraża. Fajnie piszesz i ciekawie przedstawiasz temat, oczywiście upvote + follow.

Zapraszam na techstories, gdzie można poczytać różne ciekawostki technologiczne :)