nDMaze

Ostatnim zadaniem na laboratoriach Sztucznej inteligencji było zaimplementowanie labiryntu. Postanowiłem udostępnić moje rozwiązanie, gdyż być może komuś wyda się ono ciekawe. Jego główne cechy to:

  • dowolna ilość wymiarów (2-…)
  • wyszukiwanie ścieżki (BFS, DFS)
  • możliwość edycji
  • zapis/odczyt do/z pliku
  • losowe generowanie ścianek

Pobierz program
Kilka screen-ów prezentujących labirynty 2D, 3D, 4D:

Opublikowano Bez kategorii | 1 komentarz

Tech.

W poprzednich wpisach wspominałem o technologii pozwalającej na tworzenie gier i filmów. Tech. (takiej nazwy będę używał) z założenia jest środowiskiem symulacji procesów fizycznych. W jej skład wchodzi edytor i silnik.

Edytor odpowiada za kontrolę nad symulowanymi procesami. W szczególności do jego zadań należy tworzenie zasad i stanu początkowego a także ustawianie parametrów procesu. Zadaniem silnika jest symulacja procesów o znanych i stosunkowo prostych zasadach z jak największą efektywnością. Można wyróżnić trzy cechy charakteryzujące działanie silnika:

  • szybkość
  • jakość
  • elastyczność

Szybkość jest odwrotnością czasu potrzebnego do przeprowadzenia procesu obliczeniowego. Jakość wyników symulacji jest tym większa im większa jest ich zgodność z wynikami analitycznymi. Elastyczność (uniwersalność) silnika jest zdolnością do przeprowadzania szerokiej klasy procesów (brak ograniczeń). Zazwyczaj zwiększenie jednego z parametrów powoduje spadek pozostałych. Głównym celem przy tworzeniu silnika jest uzyskanie największej efektywności tzn. dążenie do jak największej szybkości i jakości przy stałej mocy obliczeniowej dla optymalnego zbioru przypadków danych wejściowych. Dodatkowo powinien on pozwalać na płynną regulację współczynnika jakość / szybkość (np. automatyczne dobierając jakość wyników do ustalonej szybkości działania).

Prace nad tech. z oczywistych powodów zacząłem od silnika. W najbliższym czasie powstanie drugi podprojekt – kolejny renderer.

Opublikowano Bez kategorii | Dodaj komentarz

Silnik 3D

Mimo że TODO zawierało jeszcze kilka ważnych pozycji, dwa miesiące po rozpoczęciu postanowiłem zakończyć prace nad RayTracer-em. Uznałem iż zaimplementowanie kolejnych cech nie ma większego sensu.
Od dwóch tygodni pracuje nad wcześniej zapowiadanym silnikiem 3D. Niżej znajduje się spis moich dotychczasowych dokonań:

1. Ogólne
  - singleton
  - definicje podstawowych typów
2. Kontrola pracy silnika
  - obsługa błędów
    - stos komunikatów o błędzie (zewnętrzne błędy krytyczne)
    - makra współpracujące z loggerem (błędy wewnętrzne)
      - assert
      - cond
  - logger
    - logowanie do pliku *.html
    - logowanie do konsoli
  - profiler
    - prosty w użyciu
    - generowanie statystyk
3. Framework
  - okno Windows
    - odbieranie komunikatów od systemu
    - obsługa wejścia (w tym joystick-a)
  - urządzenie Direct3D
    - utrata urządzenia
    - zmiana ustawień
  - główna pętla programu
    - odmierzanie czasu
    - dostosowywanie się do stanów aplikacji
  - ustawienia systemowe
    - grafika
    - dźwięk
4. System ustawień wejścia
  - intuicyjne przypisywanie wejść odpowiednim akcjom w grze
  - obsługa różnych wejść

Niestety muszę przerwać prace nad silnikiem na jakiś czas (co najmniej dwa tygodnie). Po przerwie zamierzam zabrać się za zarządzanie zasobami i renderer.

Opublikowano Bez kategorii | Dodaj komentarz

RayTracer

W poprzednim wpisie zapowiedziałem pojawienie się podstrony prezentującej postępy w pracy nad silnikiem 3D. Strona rzeczywiście powstała, jednak do dnia dzisiejszego nie posiada żadnej zawartości. Przyczyną tego jest zmiana decyzji co do kolejności wykonywania projektów. Zamiast zająć się silnikiem, postanowiłem skupić się na technologi wspierającej tworzenie multimediów. W ramach tego projektu powstanie kilka mniejszych, będących pewnego rodzaju rozgrzewką przed właściwym zadaniem. Pierwszym z nich jest raytracer (renderer wykorzystujący metodę śledzenia promieni). Ma on charakter edukacyjny i powstaje już około miesiąca (z mniejszymi lub większymi przerwami wywołanymi brakiem czasu). W chwili obecnej jest już na dość zaawansowanym etapie. Poza podstawowymi elementami posiada między innymi: generowanie obrazu stereoskopowego, CSG, normal mapping. Pełną listę cech i przykładowe rendery można znaleźć na podstronie RayTracer-a.

Stereoscopy

Stereoscopy

Normal mapping

Normal mapping

Opublikowano Bez kategorii | Dodaj komentarz

Dwa lata później

Minęły dwa lata od ostatniego i zarazem pierwszego wpisu. Co się działo przez ten czas? Jak można wnioskować po pustce panującej na blogu – niewiele.

W tym roku zamierzam realizować trzy duże projekty. Pierwszy to prosty silnik 3D wraz z grami które na nim powstaną (wkrótce pojawi się podstrona prezentująca postępy w pracy nad silnikiem). Drugi projekt – uniwersalna technologia pozwalająca miedzy innymi na tworzenie gier i filmów, będzie w dużej mierze bazowała na ostatnim przedsięwzięciu, które ma charakter naukowy. Więcej na ten temat w przyszłości :)

Opublikowano Bez kategorii | Dodaj komentarz

Start!

Witam na moim devBlogu!
Założenie bloga planowałem już od pewnego czasu, nareszcie pojawiła się ku temu okazja. Dość powszechne jest to, że nastanie nowego roku niesie ze sobą postanowienia. Moim postanowieniem i celem na ten rok jest lepsze wykorzystanie wolnego czasu, zwiększenie produktywności i walka o motywacje do działania. Rozpoczęcie blogowej działalności ma mi w tym pomóc. W publikowanych nowościach będę prezentował efekty swojej pracy i luźne przemyślenia, które mogą być użyteczne dla czytelników. Życzę wszystkim (w tym sobie ;p) szczęśliwego i owocnego Nowego Roku :)

Opublikowano Bez kategorii | 2 komentarzy