Entity Manager

HA
  • Rejestracja:ponad 7 lat
  • Ostatnio:ponad 7 lat
  • Postów:6
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.

Spine
Zmień temat. Co Entity Manager mówi o Twoim problemie? Poza tym, Twoje pytanie jest mocno newbie. Nie zadawaj takich pytań w dziale C++.
HA
W takim razie w jakim dziale? Tytuł mówi wszystko o moim problemie. Entity = np. postaci na mapie manager = coś co tym zarządza. W jaki sposób zrobić takie coś, żeby wyglądało to bardziej "profesjonalnie", czy zrobić klasę, czy listę metod w klasie np. o nazwie gameplay, która trzyma mapę i playera.
Spine
Dział Newbie - tam są pytania początkujących. Poza tym nie pytasz tak naprawdę o C++, tylko o projektowanie. Tytuł powinien coś mówić o problemie. Jakbym napisał tytuł "Zarządzanie Linuksem" i w treści zapytał jak napisać skrypt basha, żeby zmienić nazwy wszystkich plików w katalogu, to też byłoby niewłaściwe... Żeby było profesjonalnie musisz najpierw spaprać kilka projektów, albo ten projekt poprawiać do skutku. Nie piszesz od razu na czysto. Sprawdzaj własne przemyślenia, a nie szukaj gotowców. Eksperymentuj, a nie ucz się na kolejnego stackoverflow klepacza...
Spine
  • Rejestracja:około 22 lata
  • Ostatnio:około 4 godziny
  • Postów:6687
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...


🕹️⌨️🖥️🖱️🎮
edytowany 3x, ostatnio: Spine
HA
  • Rejestracja:ponad 7 lat
  • Ostatnio:ponad 7 lat
  • Postów:6
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.

Spine
  • Rejestracja:około 22 lata
  • Ostatnio:około 4 godziny
  • Postów:6687
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.


🕹️⌨️🖥️🖱️🎮

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.