eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programming › zaawansowane ai
Ilość wypowiedzi w tym wątku: 49

  • 11. Data: 2012-04-17 14:55:39
    Temat: Re: zaawansowane ai
    Od: " M.M." <m...@N...gazeta.pl>

    <f...@N...gazeta.pl> napisał(a):

    > M.M. <m...@N...gazeta.pl> napisał(a):
    >
    > > <f...@N...gazeta.pl> napisał(a):
    > >
    > > > > > >
    > > > > > > Boty tu, boty tam? ;)
    > > > > > >
    > > > > >
    > > > > > bot botem pogania,
    > > > > >
    > > > > > próbuję zrobić podstawowe 'scenariusze' typu 'coward',
    > > >
    > > > na przykład taki przykład/problem - maly konkurs:
    > > >
    > > > chce oprogramowac walasajaca sie swobodnie pozatym ze tchorzliwa
    > > > postac, (w moim wydaniu jest to krowa)
    > > >
    > > > postac normalnie poruszalaby sie np randem
    > > >
    > > > {
    > > > skierujPostac( kto, (rand()%3) -1, (rand()%3) -1);
    > > >
    > > > ( kto to id postaci, a dwa kolejne pola to dx dy - poprawki
    > > > do pozycji na mapie)
    > > > ]
    > >
    > >
    > > Za bardzo drga, za malo się porusza. Prosto chyba sie nie da.
    > > To poniżej ma taką wadę że nagle zmienia kierunek i się odbija
    > > od krawędzi zamiast płynnie hamować, albo zmieniać tor na
    > > równoległy do krawędzi.
    > >
    > > if( rand() % 16 == 0 ) {
    > > if( rand() % 2 ) kto.dx = rand()%3-1;
    > > if( rand() % 2 ) kto.dy = rand()%3-1;
    > > }
    > > if( kto.y + kto.dy > max_y || kto.y + kto.dy < min_y )
    > > kto.dx = -kto.dx;
    > > if( kto.x + kto.dx > max_x || kto.x + kto.dx < min_x )
    > > kto.dy = -kto.dy;
    > > kto.x += kto.dx;
    > > kto.y += kto.dy;
    > >
    >
    > spox, tyle ze nie o procedure na ruch mi chodzi, ruch moze byc
    > przypadkowy to zalezy od konwencji - niektore turowki rpg albo
    > strategie zachaczaja o planszowki - tam ruch pionka rypu rand()%3-1
    > nie razi
    >
    > chodzi mi o oprogramowanie ruchu 'pionka' (np krowy na pastwisku)
    > tak by walesala sie ale nie zblizala za nadto do np walesajacych sie
    > tam przeciwnikow ktore moglyby ja kopnac - robie to na swoj sposob ale
    > jestem ciekaw innych podejsc - przy tym zalezy mi na prostocie kodu
    > bo sam pomysl mozna podac jednym zdaniem ale tu chodzi o prostote
    > kodu

    Nie wiem... zasymulować to może magnesami i tarciem? Wrogowie to
    magnesy odpychające, zielone pastwiska to magnesy przyciągające. Do
    tego uwzględnić tarcie (wystarczy statyczne) aby krowa nie rozpędzała
    się do prędkości ponaddźwiękowych. No i chaos, od czasu do czasu jakiś
    rand do dx i dy. Albo zamiast rand dać dwa magnesy przyciągające krowę
    które poruszają się całkowicie przypadkowo. Wtedy będzie wyglądało tak,
    jakby krowa miała jakiś wyimaginowany cel i zanim magnes zmieni położenie
    to będzie się gramoliła w miarę w jednym kierunku.
    Pozdrawiam



    --
    Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/


  • 12. Data: 2012-04-17 15:10:44
    Temat: Re: zaawansowane ai
    Od: " " <f...@N...gazeta.pl>

    > > kto.x += kto.dx;
    > > kto.y += kto.dy;
    > >

    w kazdym razie dobra konwencja, taka bezposrednia konwencja
    (w sensie dostepu przez kto.x ) np

    void atak(postac kto, postac kogo)
    {
    if(trafienie(kto, kogo))
    kogo.hp -= damage(kto);
    }

    byaby do uzycia w poprawionym c (przekazujacym struktury
    przez wewn referencje)

    (do przemyslenia sa i inne skladnie np modulowa

    if(kto trafienie(kogo)
    kogo hp -= kto damage();

    ale to jest trudny temat na kiedy indziej)


    poki co w starym c uzywam indeksow

    atak(int kto , int kogo)
    {
    if(trafienie(kto, kogo))
    postac[kogo].hp -= damage(kto);
    }

    ale 'bezposrednia' wersja jest chyba lepsza bo pominawszy inne
    rzeczy jest szybsza (nie ma jednego mnozenia)

    - dygresja


    --
    Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/


  • 13. Data: 2012-04-17 15:42:34
    Temat: Re: zaawansowane ai
    Od: " " <f...@N...gazeta.pl>

    M.M. <m...@N...gazeta.pl> napisał(a):

    > <f...@N...gazeta.pl> napisał(a):
    >
    > > M.M. <m...@N...gazeta.pl> napisał(a):
    > >
    > > > <f...@N...gazeta.pl> napisał(a):
    > > >
    > > > > > > >
    > > > > > > > Boty tu, boty tam? ;)
    > > > > > > >
    > > > > > >
    > > > > > > bot botem pogania,
    > > > > > >
    > > > > > > próbuję zrobić podstawowe 'scenariusze' typu 'coward',
    > > > >
    > > > > na przykład taki przykład/problem - maly konkurs:
    > > > >
    > > > > chce oprogramowac walasajaca sie swobodnie pozatym ze tchorzliwa
    > > > > postac, (w moim wydaniu jest to krowa)
    > > > >
    > > > > postac normalnie poruszalaby sie np randem
    > > > >
    > > > > {
    > > > > skierujPostac( kto, (rand()%3) -1, (rand()%3) -1);
    > > > >
    > > > > ( kto to id postaci, a dwa kolejne pola to dx dy - poprawki
    > > > > do pozycji na mapie)
    > > > > ]
    > > >
    > > >
    > > > Za bardzo drga, za malo się porusza. Prosto chyba sie nie da.
    > > > To poniżej ma taką wadę że nagle zmienia kierunek i się odbija
    > > > od krawędzi zamiast płynnie hamować, albo zmieniać tor na
    > > > równoległy do krawędzi.
    > > >
    > > > if( rand() % 16 == 0 ) {
    > > > if( rand() % 2 ) kto.dx = rand()%3-1;
    > > > if( rand() % 2 ) kto.dy = rand()%3-1;
    > > > }
    > > > if( kto.y + kto.dy > max_y || kto.y + kto.dy < min_y )
    > > > kto.dx = -kto.dx;
    > > > if( kto.x + kto.dx > max_x || kto.x + kto.dx < min_x )
    > > > kto.dy = -kto.dy;
    > > > kto.x += kto.dx;
    > > > kto.y += kto.dy;
    > > >
    > >
    > > spox, tyle ze nie o procedure na ruch mi chodzi, ruch moze byc
    > > przypadkowy to zalezy od konwencji - niektore turowki rpg albo
    > > strategie zachaczaja o planszowki - tam ruch pionka rypu rand()%3-1
    > > nie razi
    > >
    > > chodzi mi o oprogramowanie ruchu 'pionka' (np krowy na pastwisku)
    > > tak by walesala sie ale nie zblizala za nadto do np walesajacych sie
    > > tam przeciwnikow ktore moglyby ja kopnac - robie to na swoj sposob ale
    > > jestem ciekaw innych podejsc - przy tym zalezy mi na prostocie kodu
    > > bo sam pomysl mozna podac jednym zdaniem ale tu chodzi o prostote
    > > kodu
    >
    > Nie wiem... zasymulować to może magnesami i tarciem? Wrogowie to
    > magnesy odpychające, zielone pastwiska to magnesy przyciągające. Do
    > tego uwzględnić tarcie (wystarczy statyczne) aby krowa nie rozpędzała
    > się do prędkości ponaddźwiękowych. No i chaos, od czasu do czasu jakiś
    > rand do dx i dy. Albo zamiast rand dać dwa magnesy przyciągające krowę
    > które poruszają się całkowicie przypadkowo. Wtedy będzie wyglądało tak,
    > jakby krowa miała jakiś wyimaginowany cel i zanim magnes zmieni położenie
    > to będzie się gramoliła w miarę w jednym kierunku.


    niestety widze ze wylozenie o co mi chodzi zajeloby mi
    wiecej nizbym chcial na to przeznaczac,

    w zadnym razie nie chodzi mi o algorytm na ruch - to jest
    skwantowane na siatce kwadratowych pol, na niektorych stoja
    drzewa, inne sa puste, jest tez tam krowa, krowa moze
    przejsc sobie w jeden z osmiu kierunkow (lewo-prawo-gora-dol
    i na ukosy), krowa spokojnie moze sie poruszac ruchami
    browna bo nie jest glowna postacia (postac glowna jest
    poruszana przez gracza z klawiatury i moze byc akurat o
    kilometr alej) tylko epizodycznym botem, a cala gra jest
    skwantowana na kwadratowej siatce

    chodzi tylko o to by krowa nie zblizala sie w swoim brownowskim
    ruchu do niektorych innych postaci typu np goblin i inne
    (ten system relacji miedzy krowa a innymi tez trzeba jakos
    okreslic oprogramowac, moze byc na intach floatacjh albo enumach
    - i tez jestem ciekaw jak ktos by to zrobil,

    chodzi o algorytm (procedure) po jakiej krowa wybieralaby gdzie
    isc a gdzie nie, pierwsza wersja zakladala ze krowa sie rozejrzy
    w promieniu 10 pol, znajdzie najblizsza postac (co niesie ze soba
    trudnosc zwiazana z tym ze rownie odleglych postaci moze byc >1
    -( i co wtedy budowac liste i losowac jedna znich - to na maksa
    klopotliwe )- dlatego wlasnie pytam o kwestie dokladnej implementacji)
    - jesli ta postac budzi krowia nieufnosc skierowac sie w przeciwnym
    kierunku niz ta postac - ale jest to algorytm niezbyt dobry teraz
    klepie troche lepszy ale nie wiem czy i jego nie da siepoprawic


















    --
    Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/


  • 14. Data: 2012-04-17 16:10:00
    Temat: Re: zaawansowane ai
    Od: " " <f...@N...gazeta.pl>

    >
    > Nie wiem... zasymulować to może magnesami i tarciem? Wrogowie to
    > magnesy odpychające, zielone pastwiska to magnesy przyciągające. Do
    > tego uwzględnić tarcie (wystarczy statyczne) aby krowa nie rozpędzała

    za to dobrze ze poruszasz temat pastwisk, tez rozwazalem pola
    z trawa przyciagajace krowe, ale chwilowo staram sie wyklepac
    jakos 'ogolne ai' z ktorego krowa jest jednym z przypadkow (cowarda),

    oprogramowanie samej krowy jednak tez mnie interesuje np
    koncepcja by krowa po wejsciu w tryb pragnienia skierowala sie
    w poszukiwaniu wody - problemem by bylo okreslic algorytm
    poszukiwania wody ale mozna po prostu podac krowie stale wspolrzedne
    np rzeki i skierowac tam krowe przez A* lub prostrzy lokalny
    sposob docierania do punktu (mysle by nie uzywac A* (choc mam juz
    napisany bo lata temu uzywalem) tylko opracowac jakis uproszczony
    lokalny algorytm typu skieruj sie w lini prostej do celu jesli
    przeszkoda na drodzewylosuj pole w bok (albo wylosuj pole randem
    kilka tur) - chodzi o taki algorytm ktory dzialalby chocby
    dla przypadkow prostych przeszkud po drodze na trudniejszych moglby
    ew krowe zwodzic - zna ktos taki lokalny algorytm ktory by
    dzialal?












    --
    Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/


  • 15. Data: 2012-04-17 16:14:38
    Temat: Re: zaawansowane ai
    Od: zażółcony <r...@c...pl>

    W dniu 2012-04-17 15:42, f...@N...gazeta.pl pisze:
    > M.M.<m...@N...gazeta.pl> napisał(a):
    >
    >> <f...@N...gazeta.pl> napisał(a):
    >>
    >>> M.M.<m...@N...gazeta.pl> napisał(a):
    >>>
    >>>> <f...@N...gazeta.pl> napisał(a):
    >>>>
    >>>>>>>>
    >>>>>>>> Boty tu, boty tam? ;)
    >>>>>>>>
    >>>>>>>
    >>>>>>> bot botem pogania,
    >>>>>>>
    >>>>>>> próbuję zrobić podstawowe 'scenariusze' typu 'coward',
    >>>>>
    >>>>> na przykład taki przykład/problem - maly konkurs:
    >>>>>
    >>>>> chce oprogramowac walasajaca sie swobodnie pozatym ze tchorzliwa
    >>>>> postac, (w moim wydaniu jest to krowa)
    >>>>>
    >>>>> postac normalnie poruszalaby sie np randem
    >>>>>
    >>>>> {
    >>>>> skierujPostac( kto, (rand()%3) -1, (rand()%3) -1);
    >>>>>
    >>>>> ( kto to id postaci, a dwa kolejne pola to dx dy - poprawki
    >>>>> do pozycji na mapie)
    >>>>> ]
    >>>>
    >>>>
    >>>> Za bardzo drga, za malo się porusza. Prosto chyba sie nie da.
    >>>> To poniżej ma taką wadę że nagle zmienia kierunek i się odbija
    >>>> od krawędzi zamiast płynnie hamować, albo zmieniać tor na
    >>>> równoległy do krawędzi.
    >>>>
    >>>> if( rand() % 16 == 0 ) {
    >>>> if( rand() % 2 ) kto.dx = rand()%3-1;
    >>>> if( rand() % 2 ) kto.dy = rand()%3-1;
    >>>> }
    >>>> if( kto.y + kto.dy> max_y || kto.y + kto.dy< min_y )
    >>>> kto.dx = -kto.dx;
    >>>> if( kto.x + kto.dx> max_x || kto.x + kto.dx< min_x )
    >>>> kto.dy = -kto.dy;
    >>>> kto.x += kto.dx;
    >>>> kto.y += kto.dy;
    >>>>
    >>>
    >>> spox, tyle ze nie o procedure na ruch mi chodzi, ruch moze byc
    >>> przypadkowy to zalezy od konwencji - niektore turowki rpg albo
    >>> strategie zachaczaja o planszowki - tam ruch pionka rypu rand()%3-1
    >>> nie razi
    >>>
    >>> chodzi mi o oprogramowanie ruchu 'pionka' (np krowy na pastwisku)
    >>> tak by walesala sie ale nie zblizala za nadto do np walesajacych sie
    >>> tam przeciwnikow ktore moglyby ja kopnac - robie to na swoj sposob ale
    >>> jestem ciekaw innych podejsc - przy tym zalezy mi na prostocie kodu
    >>> bo sam pomysl mozna podac jednym zdaniem ale tu chodzi o prostote
    >>> kodu
    >>
    >> Nie wiem... zasymulować to może magnesami i tarciem? Wrogowie to
    >> magnesy odpychające, zielone pastwiska to magnesy przyciągające. Do
    >> tego uwzględnić tarcie (wystarczy statyczne) aby krowa nie rozpędzała
    >> się do prędkości ponaddźwiękowych. No i chaos, od czasu do czasu jakiś
    >> rand do dx i dy. Albo zamiast rand dać dwa magnesy przyciągające krowę
    >> które poruszają się całkowicie przypadkowo. Wtedy będzie wyglądało tak,
    >> jakby krowa miała jakiś wyimaginowany cel i zanim magnes zmieni położenie
    >> to będzie się gramoliła w miarę w jednym kierunku.
    >
    >
    > niestety widze ze wylozenie o co mi chodzi zajeloby mi
    > wiecej nizbym chcial na to przeznaczac,
    >
    > w zadnym razie nie chodzi mi o algorytm na ruch - to jest
    > skwantowane na siatce kwadratowych pol, na niektorych stoja
    > drzewa, inne sa puste, jest tez tam krowa, krowa moze
    > przejsc sobie w jeden z osmiu kierunkow (lewo-prawo-gora-dol
    > i na ukosy), krowa spokojnie moze sie poruszac ruchami
    > browna bo nie jest glowna postacia (postac glowna jest
    > poruszana przez gracza z klawiatury i moze byc akurat o
    > kilometr alej) tylko epizodycznym botem, a cala gra jest
    > skwantowana na kwadratowej siatce
    >
    > chodzi tylko o to by krowa nie zblizala sie w swoim brownowskim
    > ruchu do niektorych innych postaci typu np goblin i inne
    > (ten system relacji miedzy krowa a innymi tez trzeba jakos
    > okreslic oprogramowac, moze byc na intach floatacjh albo enumach
    > - i tez jestem ciekaw jak ktos by to zrobil,
    >
    > chodzi o algorytm (procedure) po jakiej krowa wybieralaby gdzie
    > isc a gdzie nie, pierwsza wersja zakladala ze krowa sie rozejrzy
    > w promieniu 10 pol, znajdzie najblizsza postac (co niesie ze soba
    > trudnosc zwiazana z tym ze rownie odleglych postaci moze byc>1
    > -( i co wtedy budowac liste i losowac jedna znich - to na maksa
    > klopotliwe )- dlatego wlasnie pytam o kwestie dokladnej implementacji)
    > - jesli ta postac budzi krowia nieufnosc skierowac sie w przeciwnym
    > kierunku niz ta postac - ale jest to algorytm niezbyt dobry teraz
    > klepie troche lepszy ale nie wiem czy i jego nie da siepoprawic

    Skoro twoja plansza wygląda jak taka z gier typu
    BoulderDash/Rockford/Rocks'n'Diamonds/EmeraldMine
    to proponuję algorytm 'zapachu' zrobiony na automatach
    komórkowych. Wróg krowy daje zapach o sile np. 10
    a wszystkie pola planszy bez zapachu aktualizują
    swój zapach do wielkości maksymalnego zapachu
    swoich sąsiadów - 1. Uzyskujesz wtedy jakiś gradient
    rozsiewany wokół 'pachnących' obiektów i mozesz np.
    łatwo zaimplementować, by się on nie roznosił
    przez mury, krzaki czy co tam. Zakładasz, że zapach 0
    to minimum, czyli w odległości >10 pól od źródła
    zanika całkowicie.

    Natomiast jak losujesz te brownowe ruchy krowy
    w różnych kierunkach to bierzesz pod uwagę zapach
    i np. mocno zmniejszasz prawdopodobieństwo
    wylosowania pól, które pachną mocniej, niż pozostałe.


  • 16. Data: 2012-04-17 16:19:23
    Temat: Re: zaawansowane ai
    Od: zażółcony <r...@c...pl>

    W dniu 2012-04-17 16:10, f...@N...gazeta.pl pisze:
    >>
    >> Nie wiem... zasymulować to może magnesami i tarciem? Wrogowie to
    >> magnesy odpychające, zielone pastwiska to magnesy przyciągające. Do
    >> tego uwzględnić tarcie (wystarczy statyczne) aby krowa nie rozpędzała
    >
    > za to dobrze ze poruszasz temat pastwisk, tez rozwazalem pola
    > z trawa przyciagajace krowe, ale chwilowo staram sie wyklepac
    > jakos 'ogolne ai' z ktorego krowa jest jednym z przypadkow (cowarda),
    >
    > oprogramowanie samej krowy jednak tez mnie interesuje np
    > koncepcja by krowa po wejsciu w tryb pragnienia skierowala sie
    > w poszukiwaniu wody - problemem by bylo okreslic algorytm
    > poszukiwania wody ale mozna po prostu podac krowie stale wspolrzedne
    > np rzeki i skierowac tam krowe przez A* lub prostrzy lokalny
    > sposob docierania do punktu (mysle by nie uzywac A* (choc mam juz
    > napisany bo lata temu uzywalem) tylko opracowac jakis uproszczony
    > lokalny algorytm typu skieruj sie w lini prostej do celu jesli
    > przeszkoda na drodzewylosuj pole w bok (albo wylosuj pole randem
    > kilka tur) - chodzi o taki algorytm ktory dzialalby chocby
    > dla przypadkow prostych przeszkud po drodze na trudniejszych moglby
    > ew krowe zwodzic - zna ktos taki lokalny algorytm ktory by
    > dzialal?

    I tu znów polecam algorytm zapachu. Możesz zaimplementować
    kilka różnych zapachów, jedne są dla krowy atrakcyjne, inne
    wręcz odrażające. W największym uproszczeniu masz tylko dwa zapachy
    - zapach jedzenia(wody) i zapach wroga. Ale możesz mieć ich więcej,
    np. zapach nagrzanego byka, który ma w sobie zarówno coś z
    atrakcyjności, jak i smaczek niebezpieczeństwa :) a krowa musi
    podejmować decyzję - co ważniejsze :)

    Całkiem serio mówię :)


  • 17. Data: 2012-04-17 16:38:11
    Temat: Re: zaawansowane ai
    Od: " " <f...@N...gazeta.pl>

    > > chodzi o algorytm (procedure) po jakiej krowa wybieralaby gdzie
    > > isc a gdzie nie, pierwsza wersja zakladala ze krowa sie rozejrzy
    > > w promieniu 10 pol, znajdzie najblizsza postac (co niesie ze soba
    > > trudnosc zwiazana z tym ze rownie odleglych postaci moze byc>1
    > > -( i co wtedy budowac liste i losowac jedna znich - to na maksa
    > > klopotliwe )- dlatego wlasnie pytam o kwestie dokladnej implementacji)
    > > - jesli ta postac budzi krowia nieufnosc skierowac sie w przeciwnym
    > > kierunku niz ta postac - ale jest to algorytm niezbyt dobry teraz
    > > klepie troche lepszy ale nie wiem czy i jego nie da siepoprawic
    >
    > Skoro twoja plansza wygląda jak taka z gier typu
    > BoulderDash/Rockford/Rocks'n'Diamonds/EmeraldMine

    boulder dash - dokładnie (pozostalych nie znam),
    widze ze ktos wie o co chodzi (ostatnio nawet wspominalem
    bo wydaje mi sie ze ktos z grupowiczow mial kiedys pod linkiem
    calkiem wyrabistego boulder dasha napisanego w open glu)


    > to proponuję algorytm 'zapachu' zrobiony na automatach
    > komórkowych. Wróg krowy daje zapach o sile np. 10
    > a wszystkie pola planszy bez zapachu aktualizują
    > swój zapach do wielkości maksymalnego zapachu
    > swoich sąsiadów - 1. Uzyskujesz wtedy jakiś gradient
    > rozsiewany wokół 'pachnących' obiektów i mozesz np.
    > łatwo zaimplementować, by się on nie roznosił
    > przez mury, krzaki czy co tam. Zakładasz, że zapach 0
    > to minimum, czyli w odległości >10 pól od źródła
    > zanika całkowicie.
    >
    > Natomiast jak losujesz te brownowe ruchy krowy
    > w różnych kierunkach to bierzesz pod uwagę zapach
    > i np. mocno zmniejszasz prawdopodobieństwo
    > wylosowania pól, które pachną mocniej, niż pozostałe.

    to jest dobre (a nawet bardzo dobre jako ogolny pomysl)
    ale mz bardziej do innych zastosowan - np symulowania
    psa mysliwskiego - ktory moglby tropic krowy po zapachu
    i wogole symulowania zapachu na mapie

    tutaj w przypadku prostej krowy bylyby dwa problemy ->

    mam duzo postaci >10 tys i duza mape > 1000x1000
    i updatowanie dla kazdej z nich mapy zapachu by troche
    trwalo (co prawda jest to chyba (*)koszt porownywalny z
    rozgladaniem sie, gdzie kazda postac przy kazdym rozejrzeniu
    sie musi przeczytac np do 400 sasiadujacych pol - to ujdzie
    ale jest to lekkie obciazenie)

    (*) po zastanowieniu wychodzi ze jendak znacznie wiekszy bo
    tzrebaby chyba przetwarzac cala mape wzgledem zapachow a to
    by zmulilo jak nie wiem co

    poaztym, zapachy mieszalyby sie i trzebeby kombinowac z podzialam
    na podtypy i/lub uzywac wielu map do trzymania roznych - za duza
    komplikacja za duzo ramu i za wolno










    --
    Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/


  • 18. Data: 2012-04-17 16:39:02
    Temat: Re: zaawansowane ai
    Od: " M.M." <m...@N...gazeta.pl>

    <f...@N...gazeta.pl> napisał(a):

    > niestety widze ze wylozenie o co mi chodzi zajeloby mi
    > wiecej nizbym chcial na to przeznaczac,
    Cóż no tak to już jest. Wielokrotnie przerywam post w połowie,
    bo zdaję sobie sprawę że nikt nie zrozumie jeśli nie włożę w
    niego tyle pracy ile wymaga.



    > w zadnym razie nie chodzi mi o algorytm na ruch - to jest
    > skwantowane na siatce kwadratowych pol.
    Może być ruch. Kilka klatek fizyki na jedną klatę graficzną i
    potem skwantyzowane współrzędne x i y można rzutować na siatkę.

    > na niektorych stoja
    > drzewa, inne sa puste, jest tez tam krowa, krowa moze
    > przejsc sobie w jeden z osmiu kierunkow (lewo-prawo-gora-dol
    > i na ukosy),
    Jeśli wlezie na drzewo to można zrenderować kawałek siatki na
    której stroi krowa pod drzewem :D

    > krowa spokojnie moze sie poruszac ruchami browna bo nie
    > jest glowna postacia
    Nie może poruszać się ruchami browna bo jest za ciężka i ma
    za dużą bezwładność w stosunku do siły jakie oddziałują na
    jej ciało :D Krowa gdy jest stara to majestatycznie łazi w tę i
    w nazad. A więc musi mieć w grze swój wyimaginowany cel. Cel
    czasami porusza się w jakimś kierunku. Krowa jest przyciągana
    do celu. W ten sposób powoli będzie ruszała, osiągała prędkość
    swojego marszu, a w pobliżu celu spowalniała. Cel porusza
    się zgodnie z preferencjami krowy. Oddala się od wilków czy tam
    czego a kieruje się ku soczystej trawce, a co jakiś czas ku
    sadzawce albo rzeczce. Ponadto można dodać efekty stada, wtedy
    krowa byłaby przyciągana siłą wypadkową do innych krów i swojego
    celu.

    > (postac glowna jest
    > poruszana przez gracza z klawiatury i moze byc akurat o
    > kilometr alej) tylko epizodycznym botem, a cala gra jest
    > skwantowana na kwadratowej siatce
    Obliczenia można robić na floatach i potem rzutować na
    skwantowaną powierzchnię, nie ma problemu.


    > chodzi tylko o to by krowa nie zblizala sie w swoim brownowskim
    > ruchu do niektorych innych postaci typu np goblin i inne
    > (ten system relacji miedzy krowa a innymi tez trzeba jakos
    > okreslic oprogramowac, moze byc na intach floatacjh albo enumach
    > - i tez jestem ciekaw jak ktos by to zrobil,
    Ja bym dał zestaw sił dla każdej pary obiektów. Ponadto jakby
    obiekt tego wymagał dałbym mu cele. Cele obiektu to takie
    obiekty które by oddziaływały tylko z nim. Cele bym rzucał
    zgodnie to tu, to tam, np. dla krowy bym rzucał na trawę albo
    koło wodopoju, sprawdzałbym czy cel nie jest zbyt blisko wilków.


    > chodzi o algorytm (procedure) po jakiej krowa wybieralaby gdzie
    > isc a gdzie nie, pierwsza wersja zakladala ze krowa sie rozejrzy
    > w promieniu 10 pol, znajdzie najblizsza postac (co niesie ze soba
    > trudnosc zwiazana z tym ze rownie odleglych postaci moze byc >1
    > -( i co wtedy budowac liste i losowac jedna znich - to na maksa
    > klopotliwe )-
    To jest proste. Kłopotów w implementacjach takich rzeczy to są
    dopiero KŁOPOTY :D. Nie da rady oprogramować jedną pętlą i
    jednym wzorem świata w którym jest 1000 różnych obiektów, a
    każda para obiektów (ba, czasami n obiektów) wyzwala jakieś
    specyficzne akcje.

    > dlatego wlasnie pytam o kwestie dokladnej implementacji)
    > - jesli ta postac budzi krowia nieufnosc skierowac sie w przeciwnym
    > kierunku niz ta postac - ale jest to algorytm niezbyt dobry teraz
    > klepie troche lepszy ale nie wiem czy i jego nie da siepoprawic
    No a jaki klepiesz?

    Pozdrawiam
    Aha...
    Do wyznaczania trasy to jest przeszukiwanie grafu w szerz plus
    jakiś chaos - krowy chyba nie zawsze wybierają optymalne trasy.
    Jeśli krowa nie może wleźć na skały, albo jeśli musi ominąć
    koniecznie to drzewo, to po ustaleniu celu można jej przypisać
    ciąg elementów siatki na jakie ma kolejno włazić. Gdy cel
    zmieni położenie, to ciąg elementów siatki trzeba policzyć na
    nowo. Ale... coś mi się zdaje że dobrze wiesz o tym wszystkim :)
    Pozdrawiam


    --
    Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/


  • 19. Data: 2012-04-17 16:44:43
    Temat: Re: zaawansowane ai
    Od: " " <f...@N...gazeta.pl>

    zażółcony <r...@c...pl> napisał(a):

    > W dniu 2012-04-17 16:10, f...@N...gazeta.pl pisze:
    > >>
    > >> Nie wiem... zasymulować to może magnesami i tarciem? Wrogowie to
    > >> magnesy odpychające, zielone pastwiska to magnesy przyciągające. Do
    > >> tego uwzględnić tarcie (wystarczy statyczne) aby krowa nie rozpędzała
    > >
    > > za to dobrze ze poruszasz temat pastwisk, tez rozwazalem pola
    > > z trawa przyciagajace krowe, ale chwilowo staram sie wyklepac
    > > jakos 'ogolne ai' z ktorego krowa jest jednym z przypadkow (cowarda),
    > >
    > > oprogramowanie samej krowy jednak tez mnie interesuje np
    > > koncepcja by krowa po wejsciu w tryb pragnienia skierowala sie
    > > w poszukiwaniu wody - problemem by bylo okreslic algorytm
    > > poszukiwania wody ale mozna po prostu podac krowie stale wspolrzedne
    > > np rzeki i skierowac tam krowe przez A* lub prostrzy lokalny
    > > sposob docierania do punktu (mysle by nie uzywac A* (choc mam juz
    > > napisany bo lata temu uzywalem) tylko opracowac jakis uproszczony
    > > lokalny algorytm typu skieruj sie w lini prostej do celu jesli
    > > przeszkoda na drodzewylosuj pole w bok (albo wylosuj pole randem
    > > kilka tur) - chodzi o taki algorytm ktory dzialalby chocby
    > > dla przypadkow prostych przeszkud po drodze na trudniejszych moglby
    > > ew krowe zwodzic - zna ktos taki lokalny algorytm ktory by
    > > dzialal?
    >
    > I tu znów polecam algorytm zapachu. Możesz zaimplementować
    > kilka różnych zapachów, jedne są dla krowy atrakcyjne, inne
    > wręcz odrażające. W największym uproszczeniu masz tylko dwa zapachy
    > - zapach jedzenia(wody) i zapach wroga. Ale możesz mieć ich więcej,
    > np. zapach nagrzanego byka, który ma w sobie zarówno coś z
    > atrakcyjności, jak i smaczek niebezpieczeństwa :) a krowa musi
    > podejmować decyzję - co ważniejsze :)
    >
    > Całkiem serio mówię :)

    to z bykiem to mi sie za bardzo nie podoba ;-) to jest
    dobre jako konepcja symulowania zapachu ale jako podloze
    do danej sytuacji z krowa zbyt kosztowne (mam duza mape +
    duzo postaci szukam stosunkowo dobrze dzialajacych uproszczen









    --
    Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/


  • 20. Data: 2012-04-17 16:52:32
    Temat: Re: zaawansowane ai
    Od: " M.M." <m...@N...gazeta.pl>

    <f...@N...gazeta.pl> napisał(a):

    > >
    > > Nie wiem... zasymulować to może magnesami i tarciem? Wrogowie to
    > > magnesy odpychające, zielone pastwiska to magnesy przyciągające. Do
    > > tego uwzględnić tarcie (wystarczy statyczne) aby krowa nie rozpędzała
    >
    > za to dobrze ze poruszasz temat pastwisk, tez rozwazalem pola
    > z trawa przyciagajace krowe, ale chwilowo staram sie wyklepac
    > jakos 'ogolne ai' z ktorego krowa jest jednym z przypadkow (cowarda),
    >
    > oprogramowanie samej krowy jednak tez mnie interesuje np
    > koncepcja by krowa po wejsciu w tryb pragnienia skierowala sie
    > w poszukiwaniu wody - problemem by bylo okreslic algorytm
    > poszukiwania wody
    Hmmm
    1) pamięć gdzie poprzednio była się napić
    2) zapach niesiony wiatrem
    3) z wzniesienia daleko widać, ale nie wiem czy krowy wchodzą na wzniesienia
    aby rozejrzeć się za wodą :)
    A to jest dzika krowa, czy taka u chłopa w zagrodzie? :D

    > np rzeki i skierowac tam krowe przez A*
    Raz chcesz prosty algorytm, a drugi raz od razu a-star.
    Dla promienia 10 pól nie rzucałbym się na A*. W grze
    GO rozwiązałem ten problem przez zapamiętanie ID obecnego
    przeszukiwania grafu. Dzięki temu nie musiałem całej
    planszy zerować i potem zaznaczać że dane pole siatki
    było odwiedzone. Zakładałem że przeszukań będzie mniej
    niż 2^32 i testowałem:
    if( ! siatka.odwiedzony < globalny_id_przeszukiwania )
    siatka.odwiedzony = globalny_id_przeszukiwania;
    Dla małego breanch-factor i dla małych promieni działało
    rewelacyjnie.

    > lub prostrzy lokalny
    Dla promienia 10 pól zdecydowanie jakiś prostszy.


    > sposob docierania do punktu (mysle by nie uzywac A* (choc mam juz
    > napisany bo lata temu uzywalem) tylko opracowac jakis uproszczony
    > lokalny algorytm typu skieruj sie w lini prostej do celu jesli
    > przeszkoda na drodzewylosuj pole w bok (albo wylosuj pole randem
    > kilka tur) - chodzi o taki algorytm ktory dzialalby chocby
    > dla przypadkow prostych przeszkud po drodze na trudniejszych moglby
    > ew krowe zwodzic - zna ktos taki lokalny algorytm ktory by
    > dzialal?
    Przeszukiwanie grafu wszerz.
    Pozdrawiam




    --
    Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/

strony : 1 . [ 2 ] . 3 ... 5


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: