•  

    Hej,

    Zanim przejdę do meritum mojego wpisu, to chciałem bardzo wam bardzo podziękować. Pod moim poprzednim wpisem udało mi się zebrać od was równo 700 plusów oraz ponad 100 komentarzy. Dało mi to ogromną motywację do dalszej pracy. Jeszcze raz wam za to wielkie dzięki mirki oraz mirabelki. Pomyślałem, że skoro jest tak duże zainteresowanie tego typu tematyką to chyba te wpisy powinny trochę zmienić swoją formę. Od teraz regularnie (+/- co miesiąc) będę publikował wpisy na temat rozwoju silnika oraz tego co sprawiło mi problemy w implementacji oraz co nadal nie działa tak jak bym chciał. Dodatkowo w komentarzach, jeżeli ktoś będzie miał pytania odnośnie implementacji, którejś z tych rzeczy, które zrobiłem od ostatniego wpisu to chętnie odpowiem. Na inne pytania z silnika też chętnie odpowiem, bo chciałbym podzielić się tą wiedzą, ale wiadomo jak to jest z pamięcią, po prostu mogę czegoś nie pamiętać. Tak więc, jeżeli kogoś interesuje któraś rzecz jak została zaimplementowana to zapraszam do pytania, bo jestem tutaj, by na nie odpowiedzieć (o ile będę tylko umiał). Poza tym, jeżeli ktoś znajdzie czas to zapraszam do przejrzenia kodu i wyrażenia swojej opinii oraz rad. Chętnie wprowadzę zmiany, żeby kod był jak najlepszy, ale wiadomo jak to jest... nie zawsze mam pomysł, a jak spojrzy ktoś z większym doświadczeniem w pisaniu gier lub C++ (na pewno jest tutaj dużo takich osób) to będę po prostu lepszym programistą, bo nauczę się na swoich błędach. Jestem otwarty na krytykę o ile jest konstruktywna.

    Wystarczy jednak tego wstępu (wyszedł strasznie długi), ponieważ dzisiaj mijają dokładnie dwa miesiące od kiedy tworzę mój silnik gier CLUSEK. Od ostatniego wpisu mineło pół miesiąca, ale był to czas bardzo pracowity dla mnie, szczególnie ze względu na długi weekend. Przez ten czas udało mi się zaimplementować poniższe rzeczy w silniku:
    - Gruntownie zrefaktoryzowano kod;
    - Dodano pełne wsparcie kontrolera Xbox 360/One;
    - Dodano obsługę przeźroczystości;
    - Usunięto model Nanosuit oraz dodano model samochodu;
    - Zmieniono skybox z modelu kuli (wczytywanego z pliku .fbx) na generowany (z poziomu kodu) sześcian;
    - Zredagowano plik README.md;
    - Dodano poziomy loggera;
    - Dodano nowe menu dla stanu myszki, klawiatury oraz gamepada;
    - Dodano możliwość konfiguracji prędkości poruszania kamerą z pliku oraz dedykowanego menu;
    - Poprawiono obsługę tagów;

    Refaktorozycja kodu postępuje. Zastosowałem już część rzeczy o której pisali niektórz po "Code Review", ale nie wszystko. Niektóre rzeczy zaimplementuje w przyszłości, a niektóre raczej nie ze względu na czas oraz na optymailzację. Wolę kod troszkę mniej czytelny, ale za to dużo szybszy oraz gotowy na zrównoleglenie na wszystkie wątki (taki na razie jeszcze jest). Kolejna sprawa, która była dość czasochłonna to przeźroczystność. Jest to bardzo skomplikowany temat, który już czuję, że będzie mi się odbijał przez długi czas. W skrócie nadal nie jest tak jak powinno być i czasem powoduje to, że przez szybę w samochodzie można zobaczyć na prawdę dziwne rzeczy. Walczę z tym i pewnie przez najbliższy czas będę nad tym długo siedział. Ogólnie nie jestem fanem przeźroczystości w grach, ponieważ tworzy to sporo problemów od deferred renderingu po optymalizację. Przeźroczystość wymaga bardzo skomplikowanego renderera, żeby działała bez żadnych problemów. Nie chcę wchodzić w szczegóły, ale jeżeli kogoś to interesuje to najwyżej mogę poruszyć co jest takie problematyczne w komentarzu. Poza tym, dodałem model samochodu i usunąłem ten z Crysisa. To też jest lekka katastrofa, ponieważ nie mam rozbudowanego shadera i to dopiero uwypukla jak ubogi jest ten silnik. Myślałem nad zaimplementowaniem PBR'a, ale... to zajmie mi pewnie dużo czasu, ponieważ jest tam pod spodem dużo trudnej matematyki i fizyki, jak odpowiednie zachowanie energii, BRDF, czy setki innych rzeczy. Inne rzeczy raczej poszły raczej gładko, a nie chcę na każdą poświęcać w tym wpisie 3-4 zdań, bo ten wpis będzie miał długość pracy magisterskiej, a to nie o to chodzi.

    pokaż spoiler Jeszcze raz wielkie dzięki za 700 plusów pod poprzednim wpisem! I proszę bardziej doświadczonych programistów gier/silników/rendererów o analizę implementacji rozwiązań, które zastosowałem w moim silniku oraz o uwagi, co poprawić na lepsze.


    KOD ŹRÓDŁOWY

    #programowanie #gamedev #gry #directx #grafikakomputerowa #clusek
    pokaż całość

    źródło: clusek_xbox_wykop_photo.jpg

  •  

    Hej,

    Chciałem się pochwalić moim pierwszym w życiu silnikiem gier o ciekawej nazwie CLUSEK. Przez ostatnie półtora miesiąca po pracy i w weekendy pisałem sobie silnik oparty od DirectX 11 w C++. Na obecną chwilę mam już zaimplementowane:
    - UI Edytora;
    - Podstawowy silnik renderujący oparty od DirectX 11;
    - Możliwość wczytywania modeli i tekstur z pliku (format JSON);
    - Możliwość wczytywania map z pliku (format JSON);
    - Architekturę opartą o czystego ECS;
    - Logger z możliwością zapisu logów do pliku lub na konsolę;
    - Plik konfiguracyjny (własny format).

    W planach mam jeszcze wiele elementów takich jak na przykład:
    - Obsługa terenu z teselacją;
    - Fizyka z użyciem PhysX;
    - Obsluga audio;
    - PBR;
    - Lepsza obsługa materiałów/shaderów (obecnie jest masakra i mam to w planach zrefaktorować);
    - Cienie;
    - AO;
    - Obsługa kontrolera;
    - Lepsza obsługa myszki;
    - Rozbudowa edytora;
    - i wiele wiele innych...

    Jeżeli ktoś ma jakieś pytania lub opinię na temat postępu to chętnie odpowiem. Cały kod źródłowy można znaleźć na Github. Jeżeli znalazł by się ktoś kto się zajmuje się profesjonalnie tworzeniem gier oraz silników mógłby coś jeszcze dopowiedzieć na temat silnika, albo co w nim poprawić (na pewno jest w nim dużo takich elementów) to byłoby po prostu ekstra! Nie mniej super będzie usłyszeć każdą opinię.

    #programowanie #gamedev #gry #directx #grafikakomputerowa
    pokaż całość

    źródło: CLUSEK.jpg

    •  

      @siepan: Dzięki!
      Jego silnik jak na 10 lat temu wygląda na wyjątkowo zaawansowany. Myślę, że Crysis, który wychodził w tamtych czasach nie powstydził by się takiego silnika.
      Poza tym twój komentarz dał mi do myślenia. Myślę, że jak będę wrzucał postęp prac na wykop to przy okazji będę opisywał co było proste, z czym miałem problemy, a co poszło bez problemów i przy okazji, jeżeli ktoś zapyta w komentarzu jak zrobiłem jakąś konkretną rzecz to będę odsyłał do konkretnego miejsca w kodzie i jeżeli będzie to potrzebne danej osobie to będę omawiał w teorii jak działa dana rzecz. pokaż całość

    • więcej komentarzy (100)

...to tylko najnowsze aktywności użytkownika bilek993

Zobacz wszystkie dodane znaleziska, komentarze i wpisy korzystając z menu powyżej.