Logger skończony
12, grudzień 2007
Dzisiaj skończyłem pisać logger. Z założenia miał być prosty i nieskomplikowany, więc chyba się udało. Po uruchomieniu exe’ka generuje plik log.txt składający się z różnych komunikatów. Prototyp takiego komunikatu wygląda mniej więcej tak:
[typ_komunikatu] [data] [godzina] Treść
Na przykład:
[error][ 12.12 ][ 22 : 20 : 7 ] Cannot load texture
[okay][ 12.12 ][ 22 : 20 : 0 ] Mesh loaded
[warn][ 12.12 ][ 22 : 20 : 7 ] ‘W’ was pressed
Jestem świadomy, że nie powala funkcjonalnością ale jak na razie starczy
Aha, logger zrobiony jako singleton dostępny w każdym pliku projektu.
ps. Może głupie pytanie ale wie ktoś jak tu wyjustować tekst w wordpress’ie?:D
Egg Framework skończony.
3, grudzień 2007
Skończyłem pisanie frameworka pod silnik – kod jest przejrzysty, w miare ładny i wygodny. Framework jest mocno wzorowany na tutorialach i kodzie Chada Vernona (link). Niektore z featursów szkieletu:
- inicjalizacja directx, tworzenie, wyświetlanie okna, zmiana trybu fullscreen/windowed, solid/wireframe, utrata urządzenia itd.
- statyczny i dynamiczny bufor wierzchołków
- teksturowanie
- obsługa statycznych modeli *.x
- wczytywanie i wyświetlanie map opartych na heightmap’ach
- timer i time based movement
- wejście z myszki i klawiatury
- obsługa czcionek
- kamera przypominająca trochę tę z FPS’ów
To tak z grubsza tyle. Teraz zabieram się za czytanie nowych tutoriali i zastanawianie od czego zacząć pisanie dalszej części silnika…
Ps. Aaa, brakuje mi jeszcze logo
Zmiany, zmiany…
22, listopad 2007
Witam po przerwie!
Jak widać blog przeszedł całkowitą metamorfozę – nowa strona, nowy layout, nowy system blogowy. Przerzuciłem się na WordPress’a z kilku powodów – przede wszystkim dlatego, że to co mam teraz bardziej przypomina stronę domową niż bloga (co było moim celem). To nie jest jeszcze wersja ostateczna, możliwe, że sam stworzę nową stronę od podstaw ale raczej zostanę przy WP.
Ostatnio pisałem ponad miesiąc temu. Sporo się zmieniło – znudziło mnie programowanie Torishimi – projekt niestety został porzucony. Programując 2D czułem się jakbym wogóle nie szedł do przodu tylko stał w miejscu. Po niedługim zastanowieniu wybór nowego projektu padł na – kultową już - silnikologię stosowaną
Wygląda to tak, że uczę się ciągle DirectX’a i nauczone rzeczy staram się pakować w eleganckie klasy i dołączać do poprzednich. Już teraz widzę trochę zamieszania w kodzie ale ogólnie nie jest źle. Silnik przybrał kodową nazwę Egg, czyli poprostu jajko. To tyle na dzisiaj
Torishimi – postępy
11, październik 2007
Wypadało by coś napisać o postępach przy Torishimi, a więc po kolei.W ostatnich dniach zajmowałem się głównie:
1. Mapą – wyświetlanie, wczytywanie z pliku, teksturowanie. Na obecną chwilę schemat działania wygląda tak:
- otwieramy plik mapa.txt
- interpretujemy go
- teksturujemy odpowiednimi teksturami kafelki
- wyswietlamy mape
Mapa w pliku txt wygląda przykładowo tak (mapa 5×5 kafelków):
00000
01010
00200
00200
33333
Gdzie cyfry oznaczają rodzaj pola – czy to ma być trawa, lód czy może drzewo. Wiem, sposób godny mistrza ![]()
Optymalizacji nie stwierdzono.
2. Bohater – a właściwie tylko klasa wyświetlająca obrazek w formacie *.tga z kanałem alfa. Możemy równierz poruszać “bohaterem” po kafelkach mapy. Bez animacji.
Do zrobienia w obecnym milestone:
- dopracowanie mapy i bohatera
- optymalizacja
W następnym kamieniu milowym pewnie zajmę się animacją – brrr, nigdy tego nie robiłem.
Milestone #1
6, październik 2007
Właśnie ukończyłem pierwszy milestone nowego projektu
Zajęło mi to dwa tygodnie (niezbyt intensywnego kodzenia) a oto co zrobiłem:
- napisałem coś w stylu design doca
- zaadoptowałem do projektu regeditowy framework z WARP’a
- napisałem menager stanów
- sprężyłem to jako tako z frameworkiem
- zrobiłem wyświetlanie quadów – wydaje się banał a miałem najwięcej problemów (głównie przez to, że nie wczytywałęm się za głęboko w niuanse frameworka)
- skończona jest klasa pojedynczego kafelka (łaaaał)
- uporządkowałem i okomentowałem wszystko
Wydaje się mało ale trochę sie z tym zeszło
Jak gra zacznie nabierać kształtów to może napiszę o niej coś więcej.
Bug #1
27, wrzesień 2007
Od poniedziałku kodze sobie w wolnym czasie (a dużo go nie mam) mały projekcic. Od 2 dni borykam się z (jak się pewnie później okaże banalnym) błędem. Mianowicie, kompilacja przebiega bez problemu, żadnych errorów ani nawet warningów a zaraz po uruchomieniu charakterystyczne okienko z “wyślij raport o błędach/nie wysyłaj”. No więc debuguje sobie projekt i… błąd jest w linijce, w której tworze bufor wierzchołków. Próbowałem różnymi sposobami się tego pozbyć ale zawszę sie tu wykrzacza – nawet przy source’ach z tutoriali albo co jeszcze dziwniejsze – z kodu tego samego projektu tylko innego pliku *.cpp też! Dziś znów czeka mnie kilkugodzinny bój…// edit: dziaua
Błędem było chyba to, że używałem urządzenia zanim zostało utworzone… Nie jestem pewien ale podejrzewam, że tak
No to pozostaje mi zacząć kodzić MAPĘ
Człowiek jest szczęśliwszy po usunięciu buga po 5,5 godzinnym boju…
Nowy projekt
21, wrzesień 2007
Dobra to dziś w końcu coś napiszę bo daaaaawno nic tu nowego nie było.No to napiszę w skrócie. Szkoła mi się podoba, klasa też jest ok. Z materiałem gonimy na łeb, na szyje ale da się (przynajmniej na razie) nadążyć. Jestem w klasie mat-fiz (1D) w Siedleckim “Prusie”.
Pong definitywnie skończony – nie będę jednak umieszczał exe’ka bo gówniano ogólnie wyszedł. Po pierwszym projekcie czas na następny ale o tym bedzie następny akapit.
Jestem w trakcie pisania design doca nowej gierki – będzie to 2D Hack’n’slash w orientalnych klimatach. Na razie mogę zdradzić nazwę głównego bohatera (czyli nazwę gry) – Torishimi. Nie wiem czy oprócz mechaniki nie zmienie diametralnie konceptu – ten, który jest teraz nie bardzo mi pasuje (szlachetni wojownicy nie zapieprzaja z nunchaku młócić potworów) więc fabuła i świat to kwesia otwarta. Nie mniej jednak, kiedyś taką grę zrobię
Do następnego razu
Mała przerwa
1, wrzesień 2007
Przerwa
Ostatni wpis na blogu pojawił się 14 sierpnia czyli około dwa tygodnie temu. Już spieszę się z wyjaśnieniami. Otóż zmieniłem miejsce zamieszania i aktualnie nie mam dostępu do internetu. Jeśli dobrze pójdzie to w pierwszym – drugim tygodniu września będę ‘on-line’
Kod
Skończyłem wersję 0.9 mojej pierwszej (ukończonej) gry czyli – Pong’a
Do dopracowania jest sporo spraw (dlatego to nie 1.0), między innymi zmiana grafiki – obecna straszy swą prostotą oraz kilka mniejszych bugów w kodzie. Teraz piszę z komputera brata więc nie zuploaduję exe’ka ale w najbliższym czasie postaram się to nadrobić.
Szkoła
Wczoraj odbyło się spotkanie organizacyjne dla uczniów pierwszych klas “Prusa”. Zostałem przydzielony do “D” (mat-fiz) i od trzeciego września zaczynam naukę.
Do zobaczenia!
Kolizje ciąg dalszy
14, sierpień 2007
Tak jak wspominałem, kolizje napisałem od nowa (a właściwie to skopiowałem z posta regedita z Warsztatu). Jednak nie o tym będę pisał, pokażę różnicę między dwoma sposobami sprawdzania
kolizji pomiędzy dwoma prostokątami.
Mój stary sposób:
bool KolizjaPilkaLewaPaletka()
{
if(det(paletka.rozmiar.right, paletka.rozmiar.top, paletka.rozmiar.right, paletka.rozmiar.bottom, pilka.rozmiar.left, pilka.rozmiar.top) == 0)
{
if(det(paletka.rozmiar.right, paletka.rozmiar.top, paletka.rozmiar.right, paletka.rozmiar.bottom, pilka.rozmiar.left, pilka.rozmiar.bottom) == 0)
{
if(min(paletka.rozmiar.right, paletka.rozmiar.right) <= pilka.rozmiar.left &&amp; pilka.rozmiar.left <= max(paletka.rozmiar.right, paletka.rozmiar.right)) { if(min(paletka.rozmiar.top, paletka.rozmiar.bottom) <= pilka.rozmiar.top && pilka.rozmiar.top <= max(paletka.rozmiar.top, paletka.rozmiar.bottom) || min(paletka.rozmiar.top, paletka.rozmiar.bottom) <= pilka.rozmiar.bottom && pilka.rozmiar.bottom <= max(paletka.rozmiar.top, paletka.rozmiar.bottom)) { return true; } } } } }
I to jest kod tylko dla kolizji lewa paletka – piłka. Niezłe co? Na początku sprawdza
współliniowość lewego boku piłki i prawego boku paletki, potem sprawdza czy punkty leżą na odcinkach itd… Podsumowując, wycudowane w chuj.
A to kod sposobu regedita (funkcja przyjmujaca 2 prostokaty dla ktorych ma byc sprawdzana kolizja):
inline bool OverlapRect(const RECT &a_rect1, const RECT &a_rect2)
{
return (a_rect1.left < a_rect2.right) &&
(a_rect1.right > a_rect2.left) &&
(a_rect1.top < a_rect2.bottom) &&
(a_rect1.bottom > a_rect2.top);
}
Jest różnica, prawda?
Ja vs kolizje runda pierwsza
12, sierpień 2007
Po kilkunastu nieskończonych projektach postanowiłem wziąć się za coś prostego, co w końcu mógłym skończyć. Wybór padł na klon ponga. Do tej pory napisałem wyświetlanie paletek, pilki, kolizje piłki ze ścianami oraz paletkami. I w tych ostatnich jest problem, chyba będę je musiał napisać od nowa, innym sposobem. Gra będzie prawdopodobnie open source więc jeśli ją skończe to dam link do ściągnięcia.
Kilka dni temu odbyło się też spotkanie programistów z teamu – aktualnie jest nas 3 i jedna osoba ‘w fazie testów’. Planujemy pierwszą betę silnika na koniec sierpnia – zapewne zaliczymy mały poślizg ale cóż, tak bywa.