Entity Manager

0

Cześć! Próbuje stworzyć gierkę. Mam fizykę postaci, kolizje, mapę. Jednak co to za gra bez przeciwników? Niestety nie mam pojęcia jak się za to zabrać. Szperałem trochę w internecie, ale nie mogłem znaleźć niczego pasującego do mojego stylu kodu. Moją prośbą jest o wskazanie mi drogi w jaki sposób mógłbym to zrobić. Najlepiej uczę się na przykładach. Może posiadacie jakieś tematy na innych forach, które posiadają przykłady dobrego kodu, którym mógłbym się posiłkować przy tworzeniu przeciwników. Piszę w bibliotece SDL2 i w Visual studio 2017 pro, ale to chyba nie ma znaczenia.

0

Przeciwnicy działają tak samo jak gracz. Tylko ich sterowanie podlega pod AI, a nie klawiaturę/pad/itp. Ich pociski powinny nie zderzać się z wrogami, tylko z samym graczem.

AI to może być prosta funkcja: idź w lewo, strzel, idź w prawo strzel i zapętlić.

Jak chcesz kod, to pooglądaj jakiś projekt open source... Może Super Tux...

0

Wiem jak działają przeciwnicy. Trudno tworzyć grę, nie grając w żadną, a we większości działają na tej samej zasadzie. Chodziło mi bardziej o takie rzeczy jak :

  • Czy zrobić do tego nową klasę czy w zupełności wystarczy w klasie np. o nazwie gameplay gdzie renderuje mapę itp.
  • Czy użyć zwykłego wektora std::vector<klasa*> nazwa; czy może std::vector<std::shared_ptr<klasa> > nazwa;, czy w ogóle najbardziej opłacalną opcją jest zrobienie innym sposobem.
  • itd.
0

Poczytaj może o drzewach behavioralnych. Żeby załapać podstawy możesz zacząć od tego:

  1. https://www.gamasutra.com/blogs/ChrisSimpson/20140717/221339/Behavior_trees_for_AI_How_they_work.php
  2. http://aigamedev.com/insider/tutorial/second-generation-bt/
  3. http://www.gameaipro.com/GameAIPro/GameAIPro_Chapter06_The_Behavior_Tree_Starter_Kit.pdf
  4. https://github.com/aigamedev/btsk <--- tu masz kod do punktu wyżej

Powinno Ci to dać jakieś podstawy i wskazać kierunek.

0
Harna napisał(a):

Wiem jak działają przeciwnicy. Trudno tworzyć grę, nie grając w żadną, a we większości działają na tej samej zasadzie. Chodziło mi bardziej o takie rzeczy jak :

  • Czy zrobić do tego nową klasę czy w zupełności wystarczy w klasie np. o nazwie gameplay gdzie renderuje mapę itp.
  • Czy użyć zwykłego wektora std::vector<klasa*> nazwa; czy może std::vector<std::shared_ptr<klasa> > nazwa;, czy w ogóle najbardziej opłacalną opcją jest zrobienie innym sposobem.
  • itd.

Ty boisz się pisać kod bez zapewnienia, że będzie dobrze...

Klasy są po to, żeby łatwiej ogarnąć kod. Żeby nie pisać wszystkiego w jednym pliku. Na scenę powiny być dodane obiekty, ale one same powinny odpowiadać za siebie. Nie powinieneś dodawać żadnego specjalnego kodu dla wrogów do dobrze napisanego engine.

Ja w Unity zrobiłem wspólną klasę po której dziedziczą klasy wrogów i gracza.
Klasa wspólna ma wszystkie metody typu walk left, jump itp., a klasa gracza podpina pod te metody input managera, zaś klasa wroga wykorzystuje te metody w AI.

1 użytkowników online, w tym zalogowanych: 0, gości: 1