Skocz do zawartości

Amaterasu

Użytkownicy
  • Postów

    390
  • Dołączył

  • Ostatnia wizyta

Treść opublikowana przez Amaterasu

  1. Myślę, że byłby całkiem dobry do przewidywania pogody, dajesz mu na wejście dane nt pogody z ostatnich 30 dni, a ten domyśli się, jaka pogoda będzie jutro. Choć nie sądzę, żeby jego dokładność była zniewalająca. Pojedyncze perceptrony można łączyć w sieci. Możesz np. zrobić 32 perceptrony, każdy będzie rozpoznawał inny znak. Funkcję aktywacji stosujesz wtedy tylko do sprawdzania, czy wg danego perceptronu rysunek przedstawia odpowiadający perceptronowi znak, do samego sprawdzania, jaki jest to znak wg sieci funkcja aktywacji jest zbędna - perceptron z największą sumą wyjściową wygrywa. Jeśli jakieś perceptrony pomylą się w rozpoznawaniu litery, poprawiasz tylko te błędne perceptrony, pozostałe pozostawiasz w spokoju.
  2. EDIT: nie doczytałem EDIT2: perceptron powinien domyślić się, że to też jest litera L. Jeżeli powiesz mu, że to rzeczywiście litera L, to nic się nie zmieni, jednakże jeśli perceptron dowie się (od uczącego), że popełnił błąd, poprawi swoje wagi wg algorytmu.
  3. Jeżeli ta suma przekroczy pewną wartość ustaloną przez funkcję aktywacji, perceptron uzna, że obrazek reprezentuje literę L. Suma jest ważona, czyli im ważniejsze wejście wg perceptronu, tym większy wkład w rozpoznawanie litery ma to wejście. Możesz zobaczyć to na tym szarym obrazku obok wejścia - w pewnym sensie, jest to wyobrażenie litery L wg perceptronu.
  4. Ten surface (surf) jest tłumaczony na wejście perceptronu (netgrid). Jeśli dany piksel nie jest koloru białego, ustawia dane wejście perceptronu na 1, wpp na 0. Wyobraź sobie ten perceptron jako drzewko, którego liściami jest surface na jednej płaszczyźnie, a pniem jest wyjście perceptronu.
  5. Niezbędna jest wiedza na temat uczenia sieci neuronowych - bez tego są one bezużyteczne. Są trzy typy uczenia, każdy wymaga innego algorytmu do modyfikowania wag neuronów. W dodatku przy sieciach wielowarstwowych dochodzi algorytm propagacji wstecznej, który w ogóle jest kosmosem i nawet ja jeszcze nie całkiem ogarniam, jak on dokładnie działa. Na początek spróbuj zbudować pojedynczy perceptron, później weź się za bardziej skomplikowane rzeczy. Oczywiście rozumiem, że algorytmy genetyczne masz już przerobione : P
  6. Zrobilem kiedyś perceptron, który sprawdza, czy na obrazku jest litera 'L'. Tutaj Perceptron to model neuronu, ma kilka/set wejść i jedno wyjście. Żeby się nauczył czegoś, trzeba mu dać przykłady, na które znasz odpowiedź. Potem, gdy neuron się już nauczy, możesz mu pokazywać nowe litery, a on rozpozna, czy to litera 'L', czy nie. Jeśli nie rozpozna, to po prostu poprawi swoje 'rozumienie' o literze 'L' i będzie lepiej zgadywać kolejne litery. Sieci neuronowe to teoretycznie potężne narzędzie, pozwalające komputerowi robić rzeczy, które do tej pory były zarezerwowane dla człowieka (czytanie, rozpoznawanie mowy, obrazów itp.) Jest sieć, która nauczyła się grać w Civilizations IV, inna bezbłędnie odczytuje kody reCaptcha.
  7. Jasne, tylko ze to nie jest jakies bardzo proste. Jesli przyjmiemy, ze nie ma wiosek wewnatrz wiosek, to trzeba obudowac taka wioske waypointami A. Waypointy A beda glownymi waypointami, wiec nie potrzebujesz ich duzo. Kazdy waypoint A bedzie polaczony ze swoimi dwoma sasiadami. Teraz sa dwie drogi do wyboru: 1. Ta jest prostsza, rysujesz linie laczace sasiadujace waypointy A. 2. Ta jest trudniejsza, ale da ci taki efekt, jak w Settlersach IV. Rysujesz waypointy B miedzy waypointami A (nie tworzysz oddzielnego obiektu, po prostu rysujesz, czy to na surface, czy w skrypcie w evencie Draw). Aby upewnic sie, ze nie narysujesz ich niepotrzebnie duzo, waypointy A powinny byc wyrownane do siatki. Waypointy B umiescisz, korzystajac z Algorytmu Bresenhama, czyli algorytmu glownie stosowanego do rysowania linii (figur geometrycznych, wektor) na ekranie (ograniczona siatka, bitmapa). Umieszczasz waypointy B tam, gdzie tenze algorytm uwaza, ze powinny stac. Pamietaj, zeby zoptymalizowac oba sposoby (dezaktywacja waypointow A, sprawdzanie, czy dany sasiad waypointu A istnieje itp). E: nie podalem sposobu, jak umiescic waypointy A na mapie, to zalezy od ciebie. Ogolnie rzecz biorac, powinienes to robic tylko, gdy powstaje/niszczy sie budynek.
  8. Nie mozemy zrobic za ciebie calej gry. Pomoc w jednej, dwoch rzeczach, jasne, ale nie w praktycznie wszystkim. Przeszukaj forum, wiele wczesniejszych tematow traktowalo o strzelaniu w takiej czy innej formie. Przeczytaj tez FAQ, mozna tam znalezc odpowiedzi na podstawowe pytania dotyczace mechaniki gry.
  9. Nie. Chcesz miec obiekt, ktory przeniesie cie do innej mapy, jesli na niego wejdziesz. To znaczy, ze musisz ustawic mu pewna maske w ksztalcie prostokata, ten prostokat bedzie strefa, ktora przeniesie gracza stojacego na niej. Mozesz mu dac sprite w ksztalcie prostokata, bedzie lepiej widac, gdzie ta strefa sie znajduje w edytorze, ale odznacz zakladke 'visible' w obiekcie strefa Tez nie. Zmienna globalna raz stworzona nigdy nie ginie, czyli wystarczy stworzyc ja raz, na poczatku gry (np. w evencie Create bohatera). Podczas przenoszenia sie do innego roomu nadaj tej zmiennej wartosc aktualnego roomu (czyli doslownie 'global.prevRoom = room) ZANIM przeniesiesz sie do kolejnego roomu.
  10. A, o takie przejscia ci chodzi. Myslalem, ze chciales sam efekt graficzny przejscia do kolejnego rooma. Najprosciej jest stworzyc obiekt, na ktory jezeli wejdziesz, przenosi cie do danego rooma. Daj mu sprite'a i maske, ale odznacz 'visible'. Trzeba tez zrobic zmienna globalna, ktora zapamieta, w ktorym roomie byles ostatnio. Dzieki temu bedzie wiadomo, w ktorym miejscu ustawic bohatera podczas przenoszenia do innego roomu. Co do obracania sie wroga, spojrz raz jeszcze na ten kod: GML if (hsp != 0) image_xscale = sign(hsp); image_xscale = -1; image_xscale = 1; i zastanow sie, co jest nie tak.
  11. Kij z fabula, jakbym chcial fabuly, to odpalilbym sobie Dragon Age'a albo Planescape: Torment
  12. Cos w stylu Mega Mana? Tu jest pewien problem, w GM od 8.1 w dol bylo to calkiem proste, tam mialo sie dostep do room transitions, czyli efektow przejscia miedzy roomami. W GM:S jest to juz niemozliwe, trzeba takie cos zrobic recznie, a to wymaga sporo czasu i wiedzy o tym, jak dzialaja 'surfaces'. Duzo prosciej jest z efektem zaciemnienia podczas wychodzenia z rooma i rozjasniania podczas wchodzenia do rooma, po prostu rysujesz czarny prostokat na caly ekran i plynnie zmieniasz przezroczystosc tego prostokata, a w miedzyczasie zmieniasz room.
  13. Czy gdy probujesz skakac, w konsoli edytora w GM:S wypisuje ci te debug_message, ktore ustawiles?
  14. zapisz sobie kopie tego projektu. W kopii projektu zamien GML ///Horizontal Collision if (place_meeting(x+hsp,y,obj_Collision) || place_meeting(x+hsp,y,obj_niewidzialny)) { while (!place_meeting(x+sign(hsp),y,obj_Collision)) { x+= sign(hsp); } hsp = 0; dir *= -1; } na GML ///Horizontal Collision if (place_meeting(x+hsp,y,obj_Collision) || place_meeting(x+hsp,y,obj_niewidzialny)) { hsp = 0; dir *= -1; } Jezeli to nie zadziala, sprawdz, czy masz ustawiona maske we wrogu i w obj_Collision, jezeli nie, ustaw na <same as the sprite>. Funkcja place_meeting() nie dziala, jezeli obiekty biorace udzial we sprawdzaniu kolizji nie maja ustawionej maski
  15. Dla n itemow, trzeba sprawdzic w przypadku brute force od 9 do 9n pikseli, czyli srednio 9n/2 pikseli (nie biore pod uwagi czestosci wystepowania przedmiotow, przyjmuje, ze prawdopodobienstwo kazdego przedmiotu jest identyczne), w zoptymalizowanym przypadku - od n do 9n pikseli (srednio ~10n/9, czestosc ta sama co w poprzednim przypadku). Trzeba by jednak tworzyc specjalne struktury danych do przechowywania obrazkow jako kluczy i ID itemow jako wartosci. Nie mam pojecia, ile bajtow miesci zmienna liczbowa w GM:S, jezeli 9 lub wiecej, to te tablice 3x3 mozna zapisywac w jednej zmiennej (o ile wartosc ID materialu do craftingu nie przekrazca 255), wtedy mozna zastosowac prosty ds_map. @Nejman: mozesz zastosowac string do przechowywania tablic craftingowych, kazdy symbol bedzie odpowiadal za dany material, potem mozna zwyczajnie porownywac stringi do siebie.
  16. GML if (hsp != 0) image_xscale = sign(hsp); image_xscale = -1; image_xscale = 1; zastanow sie, co robi ten kod GML dir = choose(-1, 1); ///initialize Variables dir = -1; albo ten
  17. Tak przy okazji, istnieje funkcja move_outside_solid(dir,maxdist), ktora jest w stanie zastapic Twoja petle while. GML if (place_meeting(x+hsp,y,obj_Collision)) { move_outside_solid((1+sign(hsp))*90,abs(hsp)) //(1+sign(hsp))*90 oznacza, ze jesli hsp jest wieksze od 0, dir bedzie rowne 0, hsp < 0 -> dir = 180 hsp = 0; dir *= -1; //to nie to dir co wyzej, mozesz zostawic jak jest } Jezeli obj_Collision nie ma zaznaczone solid, to albo zaznacz, albo zamien move_outside_solid na move_outside_all (w tym przypadku Twoj obiekt bedzie unikal wszystkich obiektow) Tak samo mozesz usunac petle w Vertical Collision i Enemy Collision, ale bedziesz musial uzyc innych argumentow w funkcji, jezeli nie jestes gotowy na takie wyzwanie, mozesz zostac przy swoich petlach
  18. Takie menu, o ktorym mowisz, jest niezwykle trudne do zrobienia, w GM:S praktycznie nie ma juz funkcji, ktora wstrzymywalaby prace gry (usunieto m. in. sleep() i mouse_wait()). Musialbys napisac w swojej grze system, ktory na zawolanie zatrzymywalby ruch wszystkich obiektow, blokowal timery itd., dopiero wtedy rysowalbys menu.
  19. o matko GML //Obiekt sasuke2p, event Collision with shurik2 with (other) { hp2 -= 10; if (hp<=0) instance_destroy(); } zamien na GML hp2 -= 10; if (hp2<=0) instance_destroy(); Tak samo w obiekcie naruto, tylko ze w evencie Collision with shurik, i zamien hp2 na hp
  20. Amaterasu

    Warlocks

    Jest wporzo, ale oddziel linijki czarnego tekstu od siebie o jeden piksel i bedzie lepiej wiem ze bzdura
  21. Amaterasu

    GM:S Standard

    Musisz aktywowac licencje, robisz to w GM-ie na ekranie przed edytorem projektu
  22. Odznacz 'persistent', problem sie rozwiaze. Ewentualnie przy przejsciu do kolejnej rundy usuwaj wszystkich wrogow: GML with(obj_skeleton_normal1) instance_destroy()
  23. Zmieniam co jakis czas, to taki moj nawyk

×
×
  • Dodaj nową pozycję...