Skocz do zawartości

Temporal

Użytkownicy
  • Zawartość

    35
  • Rejestracja

  • Ostatnia wizyta

  • Wygrane w rankingu

    2

Zawartość dodana przez Temporal

  1. Galeria Grafik

    To jest czaszka z padem? Nie ogarniam co się tam dzieje, ale bardzo śliczne to
  2. Poruszyła was jakaś scena w grze 2D?

    Widać, że ktoś tu się dobrze zna na grach Z reguły jak przejdę jakąś grę single player, to do niej nie wracam, ale z pierwszym Falloutami mam tak, że raz na jakiś czas bierze mnie taka chcica, że muszę kolejny raz zatopić się w ten świat. Szkoda, że takich erpegów się nie robi. Prawdziwy brutalny świat bez elfów, magii i innych takich. RPG w którym naprawdę podejmujesz decyzję i masz wpływ na otoczenie. Większość erpgeów mydli oczy toną tekstu, marketingowym bełkotem, a jak przyjdzie co do czego, to gra jest strasznie liniowa i każdy quest wykonuje się na jeden przewidziany sposób. Ludzie do dzisiaj podniecają się Baldurami, a tam wszystko było iluzją, jakiej opcji dialogowej byś nie wybrał, to nie miało to zupełnie znaczenia. W Falloucie to każdy quest można wykonać na wiele sposobów, a i tak większość z nich jest opcjonalnych. Questy poboczne, to nie tylko fecz questy, ale normalne duże rozbudowane zadania, które można wykonać albo przejść grę o nich nawet nie wiedząc. F2 to już w ogóle, takie F1, tylko na sterydach.
  3. Czyli darować sobie tilesy i wrócić do starych sprawdzonych obiektów kolizyjnych? Plansze w grze mają być duże, nie jakaś metroidvania, ale trochę tam ma się scrollować zanim etap się skończy. Pomysł z dezaktywacją obiektów, które są daleko od aktualnej kamery nie jest taki głupi i myślę, że nawet z moją małą wiedzą o GM'ie jestem w stanie ogarnąć temat.
  4. Tworzę sobie taki projekcik, gdzie wykorzystuję kolizję opartą o tilesy, a nie obiekty. Mój skrypt, który jest taką alternatywą dla "place_meeting()", tylko działa na tilesach: Tak wygląda kod odnośnie kolizji: Nic odkrywczego, taki standard jeśli chodzi o precyzyjną kolizję, tutaj jednak odnosimy się do tilesów. Chcę w grze mieć wrogów, którzy mają zasięg widzenia i jeśli my jako gracz się w nim znajdziemy, to odpalają się pewne state'y. Problem jest taki, że ściany, platformy, to tilesy bez obiektów kolizyjnych, więc funkcja collision_line() odpada. Moje doświadczenie jest małe i coś tak kombinuję sobie, jak pierwszy lepszy pomysł do głowy trafi. Skoro mam własną funkcję do wykrywania kolizji między obiektami a tilesami, to pomyślałem, że może "wzrok" przeciwników, to będzie obiekt, ze spritem o wielkości 1 pixela, który będzie się skalował w osi x na maksymalny zasięg z zmiennej. Problem jest taki, że kolizja z tilesami jest oparta o punkty bounding boxa tilesa. Rózne rozmiary kolidujących spirtów mogę powodować różne błędy i niewykrycie kolizji. W moim przypadku mamy 8 punktów sprawdzania kolizji i większości przypadków daje radę. Jeśli biała linia przejdzie za bardzo przez tilesa, to kolizja nie zachodzi i zmienna seeing_wall = false; Na screenie widać o co mi chodzi. Chciałbym żeby linia wchodząc w tilesa scalowała się w dół. Tak by nadal kolidowała z tilesem a się skracała tak by nie wychodziła poza obszar tilesa. Pewnie nie jest to najlepsze rozwiązanie, ale likwidacja tego jednego problemu dałaby mi to czego potrzebuję. Próbowałem coś na googlach szukać odnośnie collision_line z tilesami i jedyne co znalazłem jakiś niezrozumiały dla mnie skrypt, który był raycastem opartym o ds_grid. Jak na moje potrzeby, to jednak za bardzo skomplikowane. Może zamiast skalowanego obiektu na wzór linii zrobić obiekt "punkt", który jest w odległości od przeciwnika i w razie kolizji jest dopychany w pętli idealnie do punktu bounding boxa? samą linię mógłbym na potrzeby debbuginu rysować w drawie w odległości x przeciwnika do x punktu. Jakieś rady? Jeśli ktoś znałbym jakiś nie za bardzo skomplikowany sposób na zrobienie tego bez dodatkowych obiektów tylko na podstawie jakieś "zaawansowanej" matematyki, to się nie obrażę
  5. Glorious: Companions

    Super twarz wyszła, ręka niestety jakością trochę odstaje. Może domalować jakieś wytarcia na krawędziach? Materiał w tych miejscach się najbardziej rysuje i farba odchodzi.
  6. Poruszyła was jakaś scena w grze 2D?

    Płakać na grach, nie płaczę, ale są takie momenty gdzie się morda cieszy, człowiek wczuwa się w tą fikcyjną scenkę itd. Taki Fallout1 i scena wygnania ze schronu, albo alternatywne zakończenie, gdzie supermutanty wbijają się nam do schronu 13, coś pięknego Hollow Knight i pierwsze zakończenie.
  7. Glorious: Companions

    trzymam kciuki za projekt, bo naprawdę fajnie się to zapowiada
  8. Mam w grze obiekt ctr_game, który robi za taki "globalny obiekt". Odpowiedzialny jest za kody, debbuger i inne takie. W moim debugerze chcę widzieć aktualną wartość alarmu konkretnego obiektu. Jest taka funkcja alarm_get i dzięki niej mogę sprawdzić wartość konkretnego alarmu dla obiektu w którym użyta jest ta funkcja. Problem jest taki, że chcę użyć tej funkcji w moim globalnym obiekcie. if (hide = true) && (instance_exists(obj_player)){ draw_text(10,30,"hspd "+string(obj_player.hspd)); draw_text(10,50,"vspd "+string(obj_player.vspd)); draw_text(10,70,"grounded "+string(obj_player.grounded)); draw_text(10,90,"shooting "+string(obj_player.shooting)); draw_text(10,110,"alarm shooting "+string(alarm_get(0))); } W ostatniej linijce widać co chcę zrobić. Oczywiście chcę się odnieść do obiektu obj_player, tylko nie wiem jak to ugryźć :/ Mam coś kombinować z with obj_player?
  9. Alarm get z innego obiektu

    Trochę ze mnie debil, bo całkowicie zapomniałem, że alarm to po prostu wbudowana zmienna i mogę się do niej dostać tak samo jak do zdefiniowanych przez siebie zmiennych. Pytanie tylko teraz jest takie: po co jest to całe alarm_get? Sugerowałem się tym co jest napisane w helpie, ale teraz wychodzi, że prościej sczytywać sobie wartość bezpośrednio jak blabla = alarm[0] czy tak jak dla tego przypadku obj_player.alarm[0] Nie za bardzo widzę zastosowanie dla tego alarm_get... chyba, że to jakieś pozostałości ze starych wersji GM, gdzie inaczej się nie dało dobrać do tych wartości.
  10. Alarm get z innego obiektu

    tam w ostatniej linijce nie powinno być: draw_text(10,110, "alarm shooting" +string(a); zamiast var _a; with(obj_player){_a = alarm_get(0);} draw_text(10,110,"alarm shooting "+string(alarm_get(0))); ??
  11. spaceWaveCombat

    Technicznie zrobione bardzo fajnie, ale parę rzeczy mi się nie podoba. Mamy 3 kolorowe paski, brakuje jakiegoś opisy, nie wiadomo, co który robi. W pewnym momencie można się domyślić górnego paska, ale co robią pozostałe dwa dolne? To jest jakiś exp? Przydałaby się jakaś punktacja, skora gra nie ma żadnej fabuły, nowych leveli i innego elementu wskazującego na postęp gry. Po co mam zabijać przeciwników jak mogę unikać wszystkiego? Przeciwnicy mogą niezabici przelecieć przez dolną krawędź ekranu, coś tam się podświetla jakbym dostawał jakieś obrażenia, ale tak naprawdę to nic nie robi. Po paru zmianach mogłaby być to fajna gierka.
  12. Nad czym aktualnie pracujesz?

    To jest clipping camery, czy ukryte polygony?
  13. Jak profesjonalnie powinno się podchodzić do tworzenia leveli w grze? Jeśli każdy poziom/ekran, to nowy room, to nie jest to rozwiązanie mało wydajne? Czy poziomy gry nie powinny być zapisywane oddzielnie jako pliki i ładowane w konkretnym momencie? Jak wygląda sprawa roomów w GM? Odpalam grę i wszystkie roomy ładowane są do pamięci, czy po prostu dany room ładowany jest gdzieś z pliku data podczas wczytywania danego rooma? Może mi ktoś przybliżyć tę kwestię? Tworząc przyszłe gry chciałbym na etapie planowania już sobie ogarnąć jak zabrać się za dany projekt, niż w trakcie uznać, że wszystko trzeba przepisać i zrobić inaczej by było wydajniej.
  14. Nowy level, nowy room

    "FAILED: Run Program Complete" :/ EDIT: Dobra, działa, coś tam GMowi odbiło, ale po restarcie jest ok. Pamięć zżera totalnie :/ Ten bug we wcześniejszych wersjach też był, czy to bolączka GMS2?
  15. Nowy level, nowy room

    Dziękuję za wszystkie odpowiedzi, doceniam to bardzo. Pierwszy mini projekcik mam już za sobą i sam jestem z tych, co uważają, że optymilizacja dla sztuki jest nie warta świeczki, ale warto jednak brać pod uwagę różne rzeczy podczas kodzenia, by nasza gra nie była zrobiona totalnie na odwal. Mam w planach trochę większy projekt i chciałbym się odpowiednio do niego przygotować. Na razie mam zamiar zrobić jeszcze dwie jakieś proste gierki w ramach nauki a później skupić się na tym swoim głównym projekcie. Mam zamiar stworzyć platformera z dużą ilośćią roomów i chcę być "gotowy". Wiele dzisiejszych indyków jest robiona w stylu retro i nawet jak same gry są napisane mało optymalnie, to obsługiwanie gierek o małych rozdzielczościach na dzisiejszych kompach nie powinna sprawiać problemów, ale ja chciałbym zrobić modernistyczną grę 2d, takie full hd, pełna paleta barw itd. Nie mam zamiaru robić jakieś metroidvani, ale chciałbym żeby każdy level się trochę "scrollował". Programista ze mnie żaden, a w GM siedzę jakieś z 1,5 miecha. Oglądam masę tutoriali i czytam różne ciekawe tematy na forum yoyo. O tej aktywacji i dezaktywacji obiektów poza widokiem też się trochę naczytałem. Cały czas mnie tylko zastanawiało, jak prosi robią gry, czy korzystają z podstawowych ficzerów GM'a, czy jednak robią wszystko okrężną, trudniejszą, lecz wydajniejszą drogą. Nie mam zamiaru robić żadnego wielkiego sieciowego mmo, ale chciałbym żeby moja gra chodziła sensownie na każdej konfiguracji i ładowała się szybko. Data structure w GM zawsze powodują memory leak, czy źle zrozumiałem ten wcześniejszy post? Z tego co czytałem, to jak będziemy usuwać w clean evencie nasze struktury, to powinno być wszystko ok.
  16. Sezon #2, Tura #1

    SLy, dobra robota
  17. Regular ball

    Dodatkowe serca można zbierać i z reguły częściej opłaca nam się stracić jedno serce niż wpaść do przepaści. Level nie został układany z ręki, tylko został wygenerowany losowo. Trochę powinienem popracować nad balansem poziomu trudności, bo są momenty gdzie jest ciężko po a jednym trudnym momencie nagle przez dłuży czas jest banalnie prosto. Im dłużej gramy, tym szybciej przewija się ekran, oraz zwiększa się częstotliwość pojawiana platform z kolcami. Kolejny projekt będzie trochę bardziej rozbudowany ale też bez jakiś przesadnych ambicji, żadnych rpg ani nic z tego. Po prostu chce przez takie projekty stopniowo uczyć się programu. Jak będę miał wystarczające umiejętności, to wtedy zacznę swój projekt życia :). Dzięki za komentarze, zawsze to jakaś motywacja, wiem, że sama gra po paru minutach się nudzi i nie wyróżnia się niczym na tle darmowych gier znajdowanych w sieci. Pierwszy krok wykonany, czekajcie na kolejne produkcje
  18. Regular ball

    Taka prosta gierka w ramach nauki GMS'a. Sterujemy piłeczką, skaczemy i kombinujemy by nie wpaść do przepaści. Z czasem prędkość gry stopniowo się zwiększa, dochodzą platformy z kolcami, a gdzieniegdzie pojawiają się serduszka, które zwiększają naszą żywotność. Screen: Download: https://drive.google.com/file/d/1_-7sHkjdreetIb0RlcSsDCOxkaDDVUDt/view?usp=sharing
  19. Regular ball

    Zapisałem uwagi i następnym razem postaram się by uniknąć tych niedogodności z listy. Dużo się nauczyłem robiąc tą mingierkę. Mam w planach zrobić jeszcze z jakieś 2 gierki, każda bardziej zaawansowana, a później zacznę już mój "oficjalny" projekt.
  20. Pokombinowałem trochę i wymyśliłem coś takiego: dla obj_player: create dla obj_player: create /// @desc Variables spd = 2; jump_impulse = 4; grav = 0.1; hspd = 0; vspd = 0; lift = false; step /// @desc Main code // initialize input iLeft = (keyboard_check(vk_left)) || (keyboard_check(ord("A"))); iRight = (keyboard_check(vk_right)) || (keyboard_check(ord("D"))); iUp = (keyboard_check(vk_up)) || (keyboard_check(ord("W"))); iDown = (keyboard_check(vk_down)) || (keyboard_check(ord("S"))); iJump = (keyboard_check_pressed(vk_space)); // x direction dx = iRight - iLeft; dy = iDown - iUp; // horizontal speed hspd = dx*spd; // gravity if (grav<0.3){grav+=0.01}; vspd = vspd+grav; // horizontal collision and movment if (place_meeting(x+hspd,y, obj_platform)){ while (!place_meeting(x+sign(hspd), y, obj_platform)){ x += sign(hspd); } hspd = 0; } x += hspd; // jumping if (iJump){ if (place_meeting(x,y+1, obj_platform)){ vspd=-jump_impulse; } } //vertical collision and movment if (place_meeting(x,y+vspd, obj_platform)){ while (!place_meeting(x, y+sign(vspd), obj_platform)){ y += sign(vspd); } grav = 0.1; vspd = 0; } else { lift = false; } if (lift == false){y += vspd}; dla obj_platform /// @desc Random sprite sprite_index = choose(spr_platform_small, spr_platform_medium, spr_platform_large); vspd = 1; step /// @desc ? //platform movement y-= vspd; // lift the player if (place_meeting(x, y-1, obj_player)){ obj_player.y = (bbox_top-4); obj_player.lift = true; obj_player.grav = 0.1; obj_player.vspd = 0; } //destroy platform outside the height room if (y < 0){instance_destroy()}; Nie wiem czy to optymalne rozwiązanie, ale działa jak złoto. Żadnych bugów, perfekcyjna kolizja, śmiga wszystko. Może komuś się przyda, dlatego zostawiam to na forum.
  21. Dla nauki robię swoją pierwszą gierkę i próbuję wykorzystać wiedzę, którą zdobyłem przerabiając różne tutoriale. Zamysł jest taki, że sterujemy kulką, platformy lecą do góry, a my skaczemy z jednej na drugą by nie wpaść do przepaści. Stworzyłem kod ruchu platformowego, z możliwością skakania i perfekcyjnych kolizji. Wszystko działa super gdy platformy się nie poruszają, ale przy ruchomych platformach potrzebuje jakiś modyfikacji. Problem jest taki, że nie wiem jak się za to zabrać, w necie łatwo o znalezienie tutoriali odnośnie platform poruszających się poziomo, ale z pionowym już gorzej (większość tutoriali pokazuje jak wykonać jakiś kod na odpieprz bez precyzyjnych kolizji). Próbowałem coś tam po swojemu kombinować, ale każdy sposób dawał opłakane rezultaty. Kod gierki wygląda tak: dla obj_player: create /// @desc Variables spd = 2; jump_impulse = 4; grav = 0.1; hspd = 0; vspd = 0; step /// @desc Main code // initialize input iLeft = (keyboard_check(vk_left)) || (keyboard_check(ord("A"))); iRight = (keyboard_check(vk_right)) || (keyboard_check(ord("D"))); iUp = (keyboard_check(vk_up)) || (keyboard_check(ord("W"))); iDown = (keyboard_check(vk_down)) || (keyboard_check(ord("S"))); iJump = (keyboard_check_pressed(vk_space)); // x direction dx = iRight - iLeft; dy = iDown - iUp; // horizontal speed hspd = dx*spd; // gravity if (grav<0.3){grav+=0.01}; vspd = vspd+grav; // horizontal collision and movment if (place_meeting(x+hspd,y, obj_platform)){ while (!place_meeting(x+sign(hspd), y, obj_platform)){ x += sign(hspd); } hspd = 0; } x += hspd; // jumping if (iJump){ if (place_meeting(x,y+1, obj_platform)){ vspd=-jump_impulse; } } //vertical collision and movment if (place_meeting(x,y+vspd, obj_platform)){ while (!place_meeting(x, y+sign(vspd), obj_platform)){ y += sign(vspd); } grav = 0.1; vspd = 0; } y += vspd; dla obj_platform create /// @desc Random sprite sprite_index = choose(spr_platform_small, spr_platform_medium, spr_platform_large); vspd = 1; step //platform movement y-= vspd; // colission with player if(place_meeting(x,y-1, obj_player)){ while (!place_meeting(x, y-sign(vspd), obj_player)){ obj_player.vspd -= sign(vspd); } obj_player.vspd = vspd; } Ten kod dla obj_platform jest bez sensu, ale to z ostatniej wersji. Kombinowałem różne warianty, ale nie mam już na to pomysłu i testuje jak leci.
  22. Glorious: Companions

    dodałem ,a co tam i tak mnie to nic nie kosztuje
  23. Galeria Grafik

    Wojzax, jak robisz model pod subsurface subdivision, to unikaj trójkątów i ngoenów. W paru miejscach można bardzo łatwo pousuwać krawędzie tak, że powstanie Ci w tym miejscu quad. Nie wiem ile siedzisz w 3d, ale jak dla mnie to dobry początek. Parę poprawek tu i uwdzie i będzie supcio.
  24. Glorious: Companions

    Po cieniowaniu widzę, że tam jest od cholery goemetrii i topologia siatki jest taka, że nie nadaję się do animacji. Przy takim typie gry, gdzie postacie są dość w oddali, można by zmniejszyć ilość trójkątów drastycznie, a model nic by na tym nie stracił. https://polycount.com/ polecam zajrzeć na to forum, poprzeglądać wątki, samemu tam wstawiać modele i czytać komentarze użytkowników. Forum o tematyce low poly. Tak jak w programowaniu ważna jest optymilizacja kodu, tak w tworzeniu grafiki do gier, jest ważna optymilizacja pod tym kątem.
  25. Glorious: Companions

    Ta jaszczurobaba, to model który jest użyty bezpośrdednio w grze? Jeśli tak, to trochę średnio się nadaje, w sumie wcale się nie nadaje. Nie wiem jakie masz doświadczenie w modelowaniu, ale bezpośrednich sculptów nie używa się w grach, choć to coś wyglądal jak baza pod sculpt. Badzo straszna nieoszczędność w geometrii i beznadziejna siatka do animacji. Nie hejtuje, ale trochę siedzię w 3d i ten model za bardzo do niczego się nie nadaje.
×