Skocz do zawartości

PsichiX

Użytkownicy
  • Postów

    5 647
  • Dołączył

  • Ostatnia wizyta

  • Wygrane w rankingu

    12

Odpowiedzi opublikowane przez PsichiX

  1. @Hawaxi

    pierwsza rzecz, jaka przychodzi mi na myśl to:

    // calculate saturation of color.
    float sat = dot(gl_FragColor.rgb, vec3(1.0));
    // calculate alpha boolean filter (we get 1.0 only if saturation is not zero).
    float f = step(0.004, sat); // 1 divided by 255 is ~0.004.
    // multiply alpha by boolean filter to make black color fully transparent.
    gl_FragColor.a *= f;

    Przetestowałem lokalnie i działa - sprawdź jak na iOSie się to zachowuje. W razie czego zwiększ 0.004 i zobacz, na jakiej wartości iOS usuwa czarny.

  2. @Ignatus dziś nie zdążyłem odpowiedzieć na pytania, ale o takie mi właśnie chodziło i na nie odpowiem przed zrobieniem następnego exampla!

     

    A swoją drogą: UPDATE - poprawiłem błąd nieśledzenia view, oraz dodałem example załamań wody (także na maskach), ale nie skończyłem go komentować więc jest WIP. W ruchu wygląda lepiej, bo widać dobrze te delikatne załamania.

    obraz.png

  3. 6 minut temu, szpaq99 napisał:

    Dzięki, że przypomniałeś, bo kiedyś nie miałem tel z androidem. Ale widzę, że ładnie 100tys. pobrań to szacun. Ale myślę, że to i tak szacunek dla Was, że po tylu latach ludzie na forum pamiętają dalej o tym projekcie. 

    pierwszy na serio powazny projekt forumowy, wielka inspiracja dla wielu projektow wiec dziwnym byloby zeby nie pamietano - to byly swietne czasy widzac jak ludziki ucza sie robic gry dzieki nawiazywaniu do rozwiazan almory : D

  4. @Ignatus a wiem co powoduje ten blad i w nocy go naprawie - blad zwiazany z draw gui: miast rysowac surface jak jest, musze go zeskalowac do rozmiarow okna zeby byl zalezny od rozmiarow okna :D
    a co do niezrozumienia to po to tu jestem by wyjasnic to, co niezrozumiale, ale do tego potrzebuje abys mi powiedzial czego nie rozumiesz, a raczej dlaczego nie rozumiesz - czy to wina tego, ze nie rozumiesz komentarzy, a moze co innego? gorsze od niewiedzy jest strach przed zadawaniem pytan, wiec nie krepuj sie bo jestem w stanie wszystko opowiedziec ale musze wiedziec czego nie rozumiesz i co mam wytlumaczyc, inaczej jakakolwiek proba pomocy Tobie skonczy sie fiaskiem :P

  5. Przykład z gotowymi skryptami bazowymi do zarządzania renderowaniem wieloprzebiegowym.

    Nazwa może być niezrozumiała, ale zasada działania jest dosyć prosta: pozwala to wyrenderować wiele wariantów tych samych obiektów zależnie od tego, jakie informacje sobie zażyczymy. W tym przykładzie jest to renderowanie informacji o obiektach, które mają się brudzić krwią oraz informacje o obiektach brudu - po wyrenderowaniu tych obu przebiegów otrzymujemy tekstury z tymi informacjami gotowe do uzyskania finalnego zabrudzenia krwią elementów pokoju jak i ścian.

     

    W razie niejasności lub niezrozumienia nie bać się, tylko pytać tutaj a ja na każde pytanie z chęcią odpowiem, bez odsyłania do jakichś linków - chcę aby każdy był w stanie na końcu rozumieć zasadę działania i potencjał multipass renderingu jak i cudownych możliwości, jakie ze sobą niesie. Co jakiś czas będę urozmaicał paczkę o nowe przykłady zastosowania, bo jest ich na prawdę masa! :D

     

    Aktualne efekty:

    • Dirt (blood)
    • Distortions (heat and water)
    • Volumetric fog

     

    Download: http://storage.psichix.io/MultipassRendering.gmz

     

    lVSOI6g.png

     

     

  6. 2 godziny temu, Ignatus napisał:

    Naprawdę nikt nie wie jak zrobić to metodą którą zaproponowałem?

     

     

     

    tu nie chodzi o to, ze nikt nie wie - tu chodzi o to ze ten "najprostrzy" sposob sprawi, ze bedziesz sie jeszcze bardziej z tym miotal, bo ma to restrykcje gdzie na przyklad moga pojawiac sie elementy krwi, a gdzie nie, plus wydajnosc to zabije.
    my serio staramy sie rozwiazac ten problem na sposoby, ktore pozbawia Cie meczarni i nie zabija aplikacji. to nie jest taki trywialny problem, jak Ci sie wydaje i tutaj w kazdej metodzie zyskujesz cos, tracac cos innego - nie ma tu sytuacji win-win. jak chcesz miec to zrozumiale dla Ciebie, to bedzie to niewydajne i bugogenne, ale zyskujesz wygode prostej implementacji. w druga strone implementacja jest nieco bardziej skomplikowana, ale zyskujesz na wydajnosci.

  7. Godzinę temu, Ignatus napisał:

    Chciałbym żeby krew zostawiała ślady na ścianie.Jak zrobić żeby rysował się tylko kawałek sprite krwii i to tylko w tej części w której nastąpiła kolizja z obj_blood ? Przykłady które znalazłem (np z gry Ink) są dla nie absurdalnie skomplikowane i nie potrzebuje czegoś takiego.Wystarczy mi określenie tego miejsca na ścianie gdzie ma się rysować.Macie jakieś pomysły?

    są skomplikowane bo to nie jest taki prosty trick na zrobienie tego w grze z widokiem top-down. jak ja bym to zrobił:

    1. dzielisz rendering na kilka passów (pass to w skrócie przebieg renderingu, dla przykładu pierwej renderujesz scenę normalnie do surface, w kolejnym passie renderujesz informacje o światłach do drugiego surface, w trzecim renderujesz same normalki sceny do trzeciego surface, a w czwartym zaś w shaderku renderujesz już kombinację trzech surface na ekran gdzie masz wynikowy obraz oświetlonej sceny z cieniowaniem wypukłości - oczywiście tak się dokłądnie nie robi oświetlenia, ale rozumiesz już jak działają passy renderingu);
    2. w pierwszym passie renderujesz scenę normalnie na ekran;
    3. w drugim passie renderujesz na biało elementy, na których ma się odkładać krew i zabrudzenia zaś na czarno wszystko to, czego ma nie brudzić, do surface #1 - to będzie maska krwi i zabrudzeń;
    4. w trzecim passie renderujesz krew i zabrudzenia do surface #2 - to będzie kolor krwi i zabrudzeń;
    5. w czwartym passie rysujesz pełnoekranowy czworokąt z shaderkiem, w którym jako alphe stosujesz któryś z kanałów RGB z surface #1, a kolor zabrudzenia i krwi bierzesz z RGB surface #2. ten pass renderujesz na ekran.

    jeśli uznasz tę metodę za wartościową, to daj znać to zrobię przykład jak takie coś działa.

  8. w tej aplikacji? zadne. ale jesli juz musza byc to banery male - problem polega na tym, ze starsze osoby i tak nie beda widziec reklam, nie beda umialy ich wylaczyc ani obchodzic sie z nimi, po prostu nie ten target. jesli chcesz przetestowac serwisy, ktore wymieniles, zanim trafia do konkretnej gry, stworz mala, bardzo prosta gierke logiczna, albo zrecznosciowa (np. strzelanie z procy/luku do celu) i wtedy reklamy filmowe mozesz wstawic jako sposob na mozliwosc kontynuowania "misji" po stracie wszystkich szans trafienia perfekcyjnego.

  9. 1. tak jak gnysek mowi - iOSowe safari ma blokade odtwarzania dzwieku, dopoki nie kliknie sie w element strony. musisz dodac jakas warstwe, ktora klikasz i dopiero przechodzi do wyswietlania prezentacji.

     

    2. powodem moze byc duzy rozmiar assetow gry, musialbys sprawdzic ile wazy paczka assetow wygenerowana przez modul HTML5.

    Druga sprawa to sposob w jaki GM laduje te assety: jesli GM laduje je synchronicznie (co byloby glupie, ale mozliwe i do tego neizgodne z wytycznymi responsywnosci), wtedy przegladarka moze sie zawiesic i ciagle dostarczanie inputu moze wymusic mechanizmy probujace odblokowac przegladarke i w koncu wywalic ja. mozesz sprawdzic i mi opisac, jak GMowe HTML5 laduje assety?

    Inna sprawa tez, ze generalnie aplikacje canvasowe HTML5 dzialaja wolniej na mobilkach, ktore nie sa tak szybkie jak PCty, a takze sam GM ma bardzo biedny silnik pod przegladarki, ktory dodaje spory narzut wzgledem contentu jaki ma serwowac.

     

    3. Aplikacja canvas HTML5 taka, jak gra, powinna wypelniac caly dokument, oraz na mobilkach uwzglednic device viewport, a samo swipe'owanie powinno byc zaimplementowane w skryptach aplikacji. Ja dla gier przegladarkowych stosuje taki szablon HTML5, jak ponizej:
     

    <html>
      <head>
        <meta charset="utf-8">
        <title>SoulHunter prototype - made with Oxygen game engine</title>
        <meta
          name="viewport"
          content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0"
        >
      </head>
      <body style="margin: 0; padding: 0">
        <canvas
          id="screen-0"
          style="width: 100%; height: 100%; cursor: none"
          onclick="javascript:window.openInFullscreen()"
        ></canvas>
        <script src="app.js" type="text/javascript"></script>
      </body>
    </html>

    interesuje Cie glownie drugi tag meta oraz atrybut stylu w tagu canvas jak i styl w tagu body.

  10. nie no, coś Ty - do prototypu użyłem tej ujowej starszej wersji portowanej z flasha D: na emscriptenowego będę zmieniał przed releasem, jak będę miał zaprototypowany cały gameplay i wejdę w fazę optymalizowania gry, nie wcześniej :D emscriptenowa bedzie hulac w porownaniu do 1:1 portu flasha : D

  11. 1 godzinę temu, SLy napisał:

    Stary nie znaczy, że słaby :P

    Dwa lata temu dodałem SSD i więcej RAMu, ale procek i grafika pozostały takie same.

    https://ark.intel.com/products/48496/Intel-Core-i5-760-Processor-8M-Cache-2_80-GHz
    http://www.benchmark.pl/produkt/ranking/radeon-hd-5850

    Najsss :o okej, masz jeszcze jakieś uwagi co do prototypu? konstruuje liste rzeczy, ktore wkurwiaja ludzi (oraz dlaczego), zeby do najblizszego builda dodac. Plus, jak bardzo rozgrywka jest nudna i czy masz pomysl moze co mogloby sprawic wieksza frajde z grania? Bo mnie osobiscie rozgrywka nuzy ale to moze byc wina tego, ze non stop w to gram, gdy robie wiec malo miarodajna ocena :<

  12. 21 godzin temu, SLy napisał:

    Ja tylko chciałem napisać, że na moim 7 letnim kompie (i5 760, HD5850) mam 59-66 FPS...

     

    Poza tym nie podoba mi się sterowanie. Skoro nawet jest mysz i wyraźnie widać, w którą stronę odwrócona jest postać to logiczne wydawało by się poruszanie:

    - W/S do przodu/tyłu a nie góra/dół

    - A/D strafe na boki a nie lewo/prawo "monitora"

    jestes dopiero druga osoba, ktorej sie to sterowanie nie podoba (pierwsza jest moj ojciec xD) i mimo tego, ze jestescie oboje statystycznym bledem, to ja coraz mocniej mysle o tym, by jednak dodac w opcjach wybor metody poruszania pomiedzy lokalnym a globalnym ukladem odniesienia - dzieki za uwage, jest to cos, co moge dodac od kopa i dodam do nastepnego builda! :D

     

    Swoja droga, jakim cudem Ci to dziala na 7-mio letnim sprzecie? xD ale nie wymieniales czasem jakichs podzespolow (procek/grafika) na nowsze?

  13. Teraz, Ignatus napisał:

    Sedno sprawy ^ Też tak to widzę.

     

     

    Twój punkt widzenia to punkt widzenia 12 latka który nie przyjmuje żadnej krytyki i uważa się za lepszego od innych-,wszystko co zrobił jest lepsze bo ON to zrobił-typowe buractwo- ot cały sekret.

     

    12 minut temu, Nikas napisał:

    Hmmm no niech pomyślę. Podam do porównania przykład siebie. Jest rok 2006, mam 12 lat i robię gówno gry. Wstawiam je na forum i ludzie po mnie jadą, że robię szajs. Początkowo ich atakuję, bo jak mogą mnie obrażać, mnie i moje produkcje?! Przecież moje gierki są świetne! Po czasie jednak stwierdzam, że mogą mieć rację, ogarniam się i zaczynam wyciągać wnioski z tego co mówią.
    A ty jesteś dorosłym człowiekiem który robi jakiś szajs, ludzie wałkują z tobą ten sam temat od lat ale nie - MOJE GRY TO SUPER TECHNOLOGIA WYPRZEDZAJĄCA PRZYSZŁOŚĆ A JA JESTEM BOGIEM PROGRAMOWANIA. NIE DZIAŁA CI NA MIESIĘCZNYM KOMPUTERZE? HA HA NIE MOJA WINA ŻE MASZ STARY KOMPUTER, TERAZ LICZY SIĘ PRZYSZŁOŚĆ. MOJA GRA TOPDOWNKTÓRAWYGLĄDAJAKPRZYKŁADZGMCLANUZ2008ROKU TO PRAWDZIWA REWOLUCJA!!!11
    Nie znam drugiej osoby która ma tak wybujałe ego. xD

     

    Hola, hola, bo zagalopowaliscie sie ze swoimi asumpcjami ;)
    Pora na male wyjasnienie (ponownie), ktore pozwoli Wam zauwazyc sens tego wszystkiego:
     

    Moj cel istnienia jako programisty jest prosty i jasny: biore gowniana technologie i robie wszystko, by wyciagnac z niej jak najwiecej, gdy widze ze tool ma potencjal osiagnac lepsze wyniki. Najstarsi GMClanowcy pamietaja moje poczatki jako tworcy - od samego poczatku robilem Xenona jako plugin do GMa, zamiennik obecnego wtedy gunwianego renderera i byl to calkowicie nowy i diametralnie szybszy renderer niz to, co oferowal GM na czasy GM 6.1. Z czasem przenioslem sie na oficjalne forum GMA (potem YYG) i tam ludzie docenili jego walory, zaczely powstawac podobne projekty i w koncu tworcy GMa poprawili nieco wbudowany rendering na szybszy - cala spolecznoscia sprawilismy, ze GM stal sie lepszy w tym, czym byl najgorszy. Po zalatwieniu sprawy z GMem bralem sie za kolejne narzedzia do robienia gier, wyciagalem z nich jak najwiecej i zglaszalem sie do ich tworcow lub community z dowodem, ze da sie osiagnac wiecej, ale tu i tu jest lipnie, to i to mozna poprawic i jak. Wielu sie podobalo moje podejscie, ze pokazywalem ze ich twory maja ogromny potencjal i razem z commmunity pracowalismy nad poprawa narzedzi - udawalo sie. Pare lat temu mialem nawet zabawny epizod z Click Fusion, bo ludziki tam mieli bardzo ubogie wsparcie dla shaderow i po mojej prezentacji (za ktora dostalem darmowy klucz CF od tworcow zebym mogl dalej grzebac w nim :D) calkiem fajnie ruszyl rozwoj ich wsparcia shaderow :D
    A wiec mowiac, ze tym projektem osiagnalem genialniejsze mozliwosci, nizeli oferuja obecne toole gier dla WebGL, wcale nie sklamalem i nie mowilem tego, zeby posmyrac sie po jajach, tylko stwierdzilem fakt - nie ma w tym nic z wygorowanego ego, serio powinniscie wyluzowac - jesli kogos boli to, ze mowie iz robie technologicznie lepsze rzeczy niz X, a jest to prawda, to w ogole nie powinniscie w takim razie reagowac w zaden sposob jak na przytyk, bo ponownie: stwierdzilem tylko fakt, nie sklamalem, a nie zamierzam okrywac siebie zbytnia skromnoscia, jesli ktos mowi mi ze to, co zrobilem jest technologicznie gowniane :D

    Wyluzujcie, przestancie sie spinac :D o byle co :D

×
×
  • Dodaj nową pozycję...