sobota, 25 września 2010

GŁUPIE BŁĘDY Część 1

W tym poście chciałbym napisać jakie głupie błędy popełniłem przez te kilka tygodni, które opóźniały pracę:
1. Pierwszy błąd jaki popełniłem był związany z  niskim fps(frame per second), a mianowicie inicjowałem okno Allegro5 po utworzeniu obrazka, co prowadziło do kosztownych konwersji formatu, a winikiem tego był fps rzędu 0 - 1(przy 48 wyświetleniach bitmapy 100x100px). Wpadnięcie na rozwiązanie tego problemu zabrało mi 2 dni.

2. Drugi błąd dotyczył  klas managerów zasobów, dokładnie chodziło o błąd spowodowany moja nie wiedzą na temat hash_map z stl. Chciałem uzyskać mapę w postaci: std::string, *resource. Korzystając z przykładu z tej strony: http://www.sgi.com/tech/stl/hash_map.html, popełniłem błąd( nie wiedziałem że istnieje już specjalizacja dla std::string), męczyłem się z nim ze 4 dni.

3. Więcej błędów nie pamiętam ...

Rozwiązywanie błędów to szansa na zdobycie cennego doświadczenia, które przyda się w przyszłości.

Logger

Dzisiaj zabrałem się za stworzenie Loggera ale za nim to zrobiłem przemyślałem pewną istotną kwestię dotyczącą jego implementacji, a mianowicie czy powinien być zintegrowany z klasami silnika(czy ma być wewnątrz klasa i logować co one robią w swoich metodach), nie byłoby to jednak dobre rozwiązanie. Po pierwsze musiałbym przebudować to co wcześniej napisałem. Po drugie logować wszystko to nie najlepszy pomysł, więc Logger jest oddzielony od reszty i stanowi odzielną jednostkę, dodatkowo jest wielowyjściowy(można na razie wypisywać log na konsole i do pliku, ale w przyszłości udostępnię również logowanie do pliku .html czy .rtf). Jeszcze słów kilka o koncepcji Error Handlera,  zrezygnowałem z niego, bo wiązałoby się to z wielkimi zmianami w kodzie (i tak nie dałby mi za dużo:)). 

wtorek, 14 września 2010

Koncepcja Loggera i Error Handlera

Od kilku dni myślę o dodaniu do silnika Loggera, który jak sama nazwa wskazuje zapisuju przebieg programu. Jest to bardzo pomocne narzędzie w wykrywaniu błędów różnego rodazaju:
  • Logiczne(czy funkcje są wykonywane w odpowiedniej kolejności);
  • Wykonania(możemy wykryć gdzie  program wywala na pulpit);
  • U klienta(gdy urzytkownicy korzystają z naszego produktu i mają błędy możemy je wykryć i naprawić).
Logger zastępuje zewnętrzny debuger(w niektórych aspektach), upraszcza pisanie w początkowej fazie projektu( możemy wyniki kierować do loga, jeśli nie mamy innej możliwość np. nie ma funkcji do rysowania tekstu) .

Teraz po co nam Error Handler(uchwyt błedów):
  • przyda się, bo możemy zobaczyć jaki wystąpił ostatni błąd za nim program się wyłączył(zapisujemy go zawsze do loga automatycznie)
  • można zrobić listę błędów jakie wystąpiły
  • inne zalety to ...

niedziela, 12 września 2010

Pierwsze testy

Przez ostatnich kilka dni robiłem trochę testów wydajnościowych itp., wypadły całkiem nieźle:
Przy rysowaniu 48 obrazków 100x100 mam 2500 FPS;
Przy rysowaniu 500 obrazków 100x100 mam 60 FPS.
Obecnie będę kończył rdzeń graficzny:
Dodam klasy odpowiedzialne za animacje, sprite-y itp.
Potem przejdę do tworzenia klas odpowiedzialnych za wejście(klawiatury,myszki i joystika).