-
Postów
264 -
Dołączył
-
Ostatnia wizyta
-
Wygrane w rankingu
31
Typ zawartości
Profile
Forum
Wydarzenia
Treść opublikowana przez SimianVirus7
-
Jak wykryć nowe linie w stringu?
SimianVirus7 odpowiedział(a) na MetalowyNerd temat w Pytania zaawansowanych
Raczej ogranicza Cię tylko RAM komputera. Przy 16gb nic nie stanęło mi na przeszkodzie, żeby zrobić 45mln elementów w tablicy. Przy pustym pokoju i tylko wypisywaniu każdej linijki, przy 30tyś, fps spadł do 30 klatek. Choć pewnie ktoś z tego forum (choćby Gnysek), może powiedzieć o tym wiele więcej -
Jak wykryć nowe linie w stringu?
SimianVirus7 odpowiedział(a) na MetalowyNerd temat w Pytania zaawansowanych
Hej, zrobiłem coś takiego. Linie liczy, a żeby pokazywał tylko kilka pierwszych/ostatnich to pewnie wystarczy tylko zmienić pierwszy/drugi argument w forze. Projekt [gm:s2] - https://gmclan.org/up8556_18_Line_counter.html Zrobiłem liste, a w Draw umieściłem kod: var _break = 5; //Przerwa pomiędzy linijkami list_height = 0; //zeruj for(var i = 0; i < ds_list_size(list); i++) { draw_text_ext(5, 5 + (list_height), string(i+1) + ". " + string(list[| i]), 20, 300); list_height += string_height_ext(list[| i], 20, 300)+_break; } -
Jak wykryć nowe linie w stringu?
SimianVirus7 odpowiedział(a) na MetalowyNerd temat w Pytania zaawansowanych
draw_text_ext(x, y, lista[| i], 20, 300); Powinno łamać tekst... chociaż? Nie wiem, musiałbym popróbować. Wydaje mi się, że będzie łamać tekst, ale mogą się nachodzić góra/dół :/ -
Jak wykryć nowe linie w stringu?
SimianVirus7 odpowiedział(a) na MetalowyNerd temat w Pytania zaawansowanych
Ja okno konsoli zrobiłem na ds_list. Każda lista to osobny string. Wtedy możesz policzyć linie po prostu licząc listy w tablicy -
Generalnie ja myślałem, że to ma być zabawa na tydzień dwa, a nie, że to jakieś poważne projekty.
-
To co? Próbujemy? @Uhasz Ysz Zrób nowy post, albo w tym, dodaj projekt startowy, w którym już coś napiszesz. Po dodanym poście, ktoś odpowiada "przejmuje" i ma maks dzień, żeby coś dodać do kodu, jeśli tego nie zrobi, ktoś inny może "przejąć". Żeby uniknąć problemów, umówmy się, że zmienne podstawowe na życie, prędkość itp. będą zapisywane tak samo u każdego, np: hp - życie max_hp - maks. życie hspeed, vspeed - wbudowane, można z tego korzystać. Wtedy nie będzie problemów, że jak ktoś doda nowy pocisk to nie wywali błędu o nieznanej zmiennej na HP, czy coś w tym stylu. Wyjdzie pewnie wielka kupa bez kontekstu ale coś wyjdzie... chyba :V edit: a no i jeszcze jaka wersja gm:s? Studio 2 w wersji stabilnej?
-
Pograłem chwilę i całkiem fajna gierka Myślę, tylko, że gra na dwóch to tylko na dużym tablecie, bo na smartfonie może być kiepsko + całkiem miła rozgrywka + możliwość customizacji rozgrywki + możliwość gry w dwóch lokalnie (ale tylko na większym ekranie :| ) + jak się doda więcej piłeczek i ufoki to nieźle się dzieje + AI przeciwnika nawet daje radę - Sterowanie :| często po odbiciu piłeczki traciłem kontrole nad platformą i musiałem tapnąć w ekran jeszcze raz - customizacja gry mogła by być przy rozpoczęciu rozgrywki a nie w opcjach - trochę nieczytelne menu?
-
Jak rozmyślać nad problemem szyfrowania plików zapisu? i czy w ogóle rozmyślać. Gnysek na gmclanie opisał metode z przekształcaniem tekstu z pomocą ASCII i XOR ale to było w 2005r. W dokumentacji natknąłem się na coś takiego jak "ds_map_secure_save", ktoś miał z tym jakiś bliższy kontakt i mógłby wyjaśnić jaśniej co i jak? edit: zacząłem coś w tym grzebać i po zapisaniu jednego klucza: score; value: 1 wynikiem w saves.dat jest ciąg literek i cyferek. Chyba pasuje. Myślałem też nad zapisami w chmurze ale to chyba będzie przerost formy nad treścią.
-
Feeling strzelania jest fajny, bardzo mi się podobał. Mapki rzeczywiście mało rozbudowane i surowe ale jakoś zbytnio to nie przeszkadzało, a pewnie będzie urozmaicane. Zmieniłbym tylko to otwieranie drzwi, bo psuło trochę dynamikę gry. Niech otwierają się bardzo szybko albo jakoś je inaczej zmienić. Trochę miałem dość tej muzyki po kilku minutach xD jakby była dłuższa to ok. Ale ogólnie to dobrze to wygląda i w jak wyjdzie aktualizacja to na pewno zagram. PS: Za pierwszym razem nie odpaliła mi się cutscenka w intro i nie wiedziałem co mam zrobić
-
Pytanie o game maker: studio Można jakoś pozyskać listę folderów, a później plików w tym folderze? Chciałbym zrobić eksplorator plików muzycznych i powiedzmy, że mam główny folder nazwany "Music", a w nim foldery o niewiadomej mi nazwie, a w tych folderach pliki muzyczne też o niewiadomej nazwie. Tyle wiem, że trzeba będzie zrobić jakąś tablice trzymającą ścieżki. Albo jestem zbyt zmęczony, żeby wpaść na pomysł, albo tego po prostu w gm:s nie da się zrobić.
-
Przesyłanie danych co klatkę, ale skoro się pytasz to wiem, że robię błąd Generalnie wszystkie poradniki na temat "networkingu" robiły mi z mózgu papkę, bo nie wiedziałem co jak i do czego, a co każdy poradnik to inny sposób. Dlatego też większość jak nie wszystko napisałem po swojemu posiłkując się dokumentacją.
-
Miałem zamiar nie pisać gry, tylko mieć jakiś cel, bo pisanie gier trochę mi nie wychodzi. Postanowiłem więc zrobić coś, czego nigdy wcześniej nie tykałem. Napisałem serwer i klienta.
-
Dobra, nevermind, już wiem. Po prostu robiłem pętle chwila przerwy i człowiek głupieje
-
Witam, Chcę zrobić prosty "all-in-one server". Nigdy tego nie robiłem, posiłkuje się dokumentacją i poradnikiem z yoyogames: https://help.yoyogames.com/hc/en-us/articles/216754698-Networking-Overview Przy samym tworzeniu serwera mam następujący błąd, gdzie wykonują się dwa bloki IF'a, czyli tak jakby rezultat był pozytywny jak i negatywny. Stoję za NATem ale mam możliwość wyprowadzania portów przez mojego IPS. Kod: server_socket = network_create_server(network_socket_tcp, 65010, 2); if(server_socket < 0) { show_message("Nie udało się stworzyć serwera"); instance_destroy(); } else { room_goto(rGame); } Rezultat: a) gdy nie jest włączony serwer (czyli port nie jest zajęty): Error: I could not see your service on 94.40.xxx.xxx on port (65010) b ) gdy jest włączony serwer: - wyświetla wiadomość o nieudanym stworzeniu serwera - niszczy obiekt oServer (jeśli usunę kod dla niszczenia obiektu, to wiadomość wyświetla się cały czas) - przechodzi do następnego pokoju - otwiera port: Success: I can see your service on 94.40.xxx.xxx on port (65010)Your ISP is not blocking port 65010
-
Też zakupiłem kopie i no cóż... szczerze mówiąc myślałem, że będzie się trochę różnić od wersji dema. Trochę za trudna? Nie wiem czy to przez wzgląd na mechaniki czy po prostu nie potrafię grać. Niemniej jak zginąłem przy balistach to nie miałem ochoty zaczynać od nowa. Ale hej, skończyłeś swoją grę od początku do końca (chyba, bo końcówki nie ujrzałem :P), to się chwali. PS: Lektor zasługuje na oklaski, dobrze się tego słucha.
-
Kolizja - sterowanie padem
SimianVirus7 odpowiedział(a) na SimianVirus7 temat w Pytania początkujących
Niestety, move_outside_solid powodował, że postać wchodziła w ścianę i poruszała się wolniej(?) Natomiast co mnie zdziwiło bardziej, to to, że przykład Threefa, brzmiał w teorii bardzo prosto i wydawałoby się, że powinien zadziałać stu procentowo, czyli "uderzyłeś w ścianę, cofnij się o jeden pixel", co w zupełności nie przełożyło się na praktykę Kod zadziałał tak... jakby go nie było Niemniej dzięki za podpowiedzi inaczej pewnie bym porzucił temat i odłożył GM'a na kolejne miesiące. Poczytałem trochę, pomyszkowałem, poszperałem i mam! Znalazłem i działa bardzo dobrze! https://www.yoyogames.com/blog/432/buttery-smooth-tech-tips-movement -
Co to? Można w to zagrać?
-
Dzień Dobry, Aż wstyd mi jest zakładać wątek w tej sprawie, bo po takim czasie, powinienem wiedzieć jak to robić, aczkolwiek nie chce znowu porzucić gm'a poprzez zniechęcenie się, także pytam. Sterowanie jest napisane pod pada, pod analog. Nie mogę sobie poradzić z napisaniem dobrej kolizji. Nasmarowałem coś takiego: Maska kolizji + origin + wymiary bohatera: Maska kamienia jest na precise, a origin ustawiony w środku sprita Kod: axisY = gamepad_axis_value(0, gp_axislv); //zczytaj ustawienie lewego analogu vertykalnie axisX = gamepad_axis_value(0, gp_axislh); //zczytaj ustawienie lewego analogu horyzontalnie if(gamepad_button_check(0, gp_face1)) game_restart(); if(scr_gp_treshold(0, 0.2)) //martwa strefa gałki { dir = point_direction(0, 0, axisX, axisY); //oblicz kierunek spd = (abs(axisX) + abs(axisY))*max_spd; //oblicz spd wraz z przyspieszeniem } else { spd = 0; } motion_set(dir, spd); //nadaj ruch //kolizja if(!place_free(x, y)) { var _id = instance_place(x, y, oRock); var _dirOpposite = point_direction(_id.x, _id.y, x, y); //motion_set(_dirOpposite, spd); while(!place_free(x, y)) { x+=lengthdir_x(.1, _dirOpposite); y+=lengthdir_y(.1, _dirOpposite); } } Efekty tego są takie Przy jednej przeszkodzie, wygląda świetnie: Ale przy kilku mniejszych, osadzonych obok siebie, postać teleportuje się na drugą stronę: Pytania: a) jakieś pomysły, co tu zmienić? b ) mam pooglądać poradniki na YT, bo ten kod do niczego się nie nadaje? c) Czy można skorzystać wbudowanej fizyki w gm:s2 czy lepiej tego nie używać?
-
Maska kolizji ataku bohatera
SimianVirus7 odpowiedział(a) na pankracy temat w Pytania zaawansowanych
No jeśli animacja się zmienia, to znaczy, że gdzieś w kodzie tak masz zapisane, że przy jakimś warunku ma się zmieniać animacja edit: Chodzi mi o to, że gdzieś masz sprite_index który zmienia się, przy wykonaniu jakiegoś warunku, dajmy na to: Jesteś w powietrzu -> Animacja zmienia się na spr_animacjaskakania -> Wciskasz A lub D i zmienia się animacja, bo do tej akcji przypisany jest if od sterowania Czy coś takiego -
Maska kolizji ataku bohatera
SimianVirus7 odpowiedział(a) na pankracy temat w Pytania zaawansowanych
kilka klatek się wyświetla a później co się dzieje? Zastyga w jednej klatce, zmienia się animacja, animuje od początku? -
Maska kolizji ataku bohatera
SimianVirus7 odpowiedział(a) na pankracy temat w Pytania zaawansowanych
Zacząć od image_index = 0, kiedy skok się zaczyna. Możesz zrobić np. if keyboard_check_pressed(vk_space) then image_index = 0; albo inacej, bo to zależy od twojego kodu sterowania: CREATE: animOdPoczatku = true; STEP: if(inAir == true && climbing == false && animOdPoczatku==true) { image_index = 0; //zaczynaj od pierwszej klatki sprite_index = spr_player_air;// wyswietlaj animacje skakania animOdPoczatku = false; } ANIMATION END: if(sprite_index == spr_player_air) { image_index = image_number - 1; animOdPoczatku = true; } -
Maska kolizji ataku bohatera
SimianVirus7 odpowiedział(a) na pankracy temat w Pytania zaawansowanych
no i fajnie, brakuje jeszcze zaczynania animacji od początkowej klatki, ale to nie przeszkadza, to być nie musi. Do zmiany tempa odtwarzanej animacji służy image_speed: image_speed = 1; // normalna prędkość image_speed > 1; // szybsza prędkość image_speed < 1; // wolniejsza Daj sobie image_speed = 0.5; a po zakończeniu animacji, wróć do standardowej image_speed = 1; -
Maska kolizji ataku bohatera
SimianVirus7 odpowiedział(a) na pankracy temat w Pytania zaawansowanych
Kolejny kogel mogel :V Po co Ci te zmienne: klatkaAnimWPowietrzu = 0; cmin = 0; cmax = 0; Do obliczania, kiedy animacja się zakończy? A nie lepiej użyć wbudowanego w gm:s "animation end"? I wtedy dajesz normalnie w stepie, żeby zaczął Ci wykonywać animacje po jakimś spełnionym warunku (choćby ten co masz), najlepiej od zerowej klatki, a w animation end dajesz, warunek, że jak ta animacja się zakończy, to ma zostać na ostatniej klatce -
Jaka świnia taki schab, jakie życie taki rap. To jest piękne.
-
Intro obrazkowe+wyświetlający się pod obrazkiem tekst
SimianVirus7 odpowiedział(a) na pankracy temat w GM:Studio 1.x
W sumie to było łatwiejsze niż myślałem. Aczkolwiek jest to najbardziej podstawowa wersja, jaką da się zrobić (tak sądzę). Przykład: https://gmclan.org/up8556_16_Wypisywanie_tekstu.html