Skocz do zawartości

SimianVirus7

Użytkownicy
  • Postów

    264
  • Dołączył

  • Ostatnia wizyta

  • Wygrane w rankingu

    31

Treść opublikowana przez SimianVirus7

  1. 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
  2. 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; }
  3. 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ół :/
  4. 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
  5. SimianVirus7

    wspólna gra

    Generalnie ja myślałem, że to ma być zabawa na tydzień dwa, a nie, że to jakieś poważne projekty.
  6. SimianVirus7

    wspólna gra

    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?
  7. 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?
  8. 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ą.
  9. 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ć
  10. 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ć.
  11. 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ą.
  12. 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.
  13. Dobra, nevermind, już wiem. Po prostu robiłem pętle chwila przerwy i człowiek głupieje
  14. 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
  15. 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.
  16. 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
  17. 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ć?
  18. 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
  19. kilka klatek się wyświetla a później co się dzieje? Zastyga w jednej klatce, zmienia się animacja, animuje od początku?
  20. 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; }
  21. 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;
  22. 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
  23. Jaka świnia taki schab, jakie życie taki rap. To jest piękne.
  24. 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
×
×
  • Dodaj nową pozycję...