
Amaterasu
Użytkownicy-
Postów
390 -
Dołączył
-
Ostatnia wizyta
Typ zawartości
Profile
Forum
Wydarzenia
Treść opublikowana przez Amaterasu
-
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.
-
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.
-
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.
-
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.
-
( ͡° ͜ʖ ͡°)
-
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
-
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.
-
albo bufferów
-
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.
-
[GMS] Wróg chodzi w jedna strone i nie obraca sie
Amaterasu odpowiedział(a) na Cygnus temat w Pytania początkujących
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. -
[GMS] Wróg chodzi w jedna strone i nie obraca sie
Amaterasu odpowiedział(a) na Cygnus temat w Pytania początkujących
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. -
[GMS] Wróg chodzi w jedna strone i nie obraca sie
Amaterasu odpowiedział(a) na Cygnus temat w Pytania początkujących
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. -
Kij z fabula, jakbym chcial fabuly, to odpalilbym sobie Dragon Age'a albo Planescape: Torment
-
[GMS] Wróg chodzi w jedna strone i nie obraca sie
Amaterasu odpowiedział(a) na Cygnus temat w Pytania początkujących
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. -
[GMS] Wróg chodzi w jedna strone i nie obraca sie
Amaterasu odpowiedział(a) na Cygnus temat w Pytania początkujących
Czy gdy probujesz skakac, w konsoli edytora w GM:S wypisuje ci te debug_message, ktore ustawiles? -
[GMS] Wróg chodzi w jedna strone i nie obraca sie
Amaterasu odpowiedział(a) na Cygnus temat w Pytania początkujących
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 -
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.
-
[GMS] Wróg chodzi w jedna strone i nie obraca sie
Amaterasu odpowiedział(a) na Cygnus temat w Pytania początkujących
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 -
[GMS] Wróg chodzi w jedna strone i nie obraca sie
Amaterasu odpowiedział(a) na Cygnus temat w Pytania początkujących
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 -
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.
-
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
-
Jest wporzo, ale oddziel linijki czarnego tekstu od siebie o jeden piksel i bedzie lepiej wiem ze bzdura
-
Musisz aktywowac licencje, robisz to w GM-ie na ekranie przed edytorem projektu
-
Odznacz 'persistent', problem sie rozwiaze. Ewentualnie przy przejsciu do kolejnej rundy usuwaj wszystkich wrogow: GML with(obj_skeleton_normal1) instance_destroy()