Archive for March 2008

Zmiany na lepsze?

Postanowiłem, że należałoby wreszcie zrobić porządek z biblioteką NLib oraz z silnikiem NIne. Niestety jak się okazało przy projektowaniu gry (myślę nad klonem Tetrisa w 3D), aktualny stan silnika nie pozwala na jego rozbudowę i pisanie w oparciu o niego jakiejkolwiek gry. Dlatego stwierdziłem, że lepszym pomysłem byłoby zaprojektować grę, a następnie do niej odpowiedni interfejs, mając na uwadze ponowne użycie kodu do tworzenia innych gier.

Na początek zająłem się biblioteką NLib. Zamierzam kompletnie uniezależnić się od wyjątków, ponieważ uważam, że są one dobre do zwykłych programów, w których występuje wiele sytuacji wyjątkowych. W grze są niepotrzebne, gdyż jeżeli nastąpi sytuacja wyjątkowa, to grę i tak należy zamknąć, a poza tym podobno obsługa wyjątków spowalnia kod. Zamiast tego błędami będzie sie zajmował Logger, do którego będą trafiać wszystkie komunikaty (nawet te najmniej ważne), dzięki temu będzie wiadomo co i kiedy poszło nie tak. Dlatego będzie wymagany do używania jakiegokolwiek modułu z biblioteki.
Ważną zmianą jest też wprowadzenie obsługi Unicode. Niestety standardowe strumienie zapisujące do plików, nie zapisują ich w tym kodowaniu, dlatego zacząłem pisać własny strumień oparty na funkcjach WinApi. Z początku będzie obsługiwał tylko Little Endian, ale myślę nad dodaniem obsługi plików zapisanych jako Big Endian i ANSI (w trybie Unicode projektu). Z tego strumienia będzie korzystał również Logger. Oczywiście Unicode będzie obsługiwany tylko wtedy, gdy w ustawieniach projektu kodowanie będzie w tym trybie. W trybie ANSI, strumień będzie zapisywał tylko w ANSI.

Uważam, że należy iść z duchem czasu, a nie pozostawać w epoce kamienia łupanego :D.