Wpis z mikrobloga

Nareszcie! Wstępna implementacja itemów do Angry John gotowa :)

Dzień na design, dwa dni na implementację, ale działa.

Jak to działa? - trochę technicznie
Dodałem do gry Atrybuty. Atrybutem może być np. damage, cooldown, odrzut czy też inny dowolny parametr, który chcemy mieć możliwość modyfikować poprzez itemy. W momencie pobrania wartości atrybutu, podawany jest obiekt, który go potrzebuje (dla damage będzie to pocisk, dla cooldown broń, a dla życia gracz). Następnie przez wszystkie itemy posiadane przez obiekt oraz obiekty nadrzędne (np Pocisk > Broń > Gracz) przepuszczany jest modyfikator atrybutu kumulujący wszystkie modyfikacje wartości jego pól. Na przykład modyfikator damage posiada pola, dmgMul oraz dmgAdd. Itemy mają możliwość dodania odpowiednich wartości do pól akumulatora modyfikatora. Na koniec z wartości bazowej atrybutu oraz pól akumulatora wyliczana jest wartość wg zadanej dla atrybutu formuły (np. dla damage: wartość bazowa * (dmgMul + 1)^0.5 + dmgAdd).

Może brzmi to skomplikowanie, ale obecnie dodawanie nowych atrybutów oraz itemów jest bardzo proste, nie wymaga dużych zmian w kodzie, a itemy mają sporą możliwość manipulacji atrybutami. Dodatkowo przewidziałem wstrzykiwanie własnego kodu przez itemy w wyznaczonych miejscach (np. aby zmodyfikować tor lotu pocisku).

#gif
Na gifie item zmniejszający cooldown broni.

#gamedev
--------
Robimy grę gatunku Top Down Shooter / Rogue-lite. Śledź postępy pod tagiem #lukzdev !
jasiek13 - Nareszcie! Wstępna implementacja itemów do Angry John gotowa :)

Dzień n...

źródło: comment_L46DnSnEeryL56VEYqIQGXKhkDN1QjQn.jpg

Pobierz
  • 8
  • Odpowiedz
@goshki: bardziej spoglądałem w stronę Isaaca, ale też chciałem mieć możliwość robić takie rzeczy jak mutacje w NT. Tyle, że bez hacków w kodzie typu if(haveitemx) :P
  • Odpowiedz
@Kypy: Nic nadzwyczajnego. Itemy mogą implementować interfejsy np WeaponInterface, albo BulletInterface. Interfejsy mają metody np onShoot, onReload. W momencie np wystrzału podobnie jak powyżej szukane są wszystkie itemy implementujące WeaponInterface i wołana na nich jest metoda onShoot z odpowiednimi parametrami. ;)
  • Odpowiedz