poniedziałek, 3 grudnia 2007

Blog przeniesiony

Od kilku dni bloga mozna ogladac pod nowym adresem:


Życie tego bloga konczy sie po rownych 1024 odwiedzinach... :)






czwartek, 11 października 2007

Torishimi - postępy

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 5x5 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 :D
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.

niedziela, 7 października 2007

Milestone #1

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.

czwartek, 27 września 2007

Bug #1

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Ę :D

Człowiek jest szczęśliwszy po usunięciu buga po 5,5 godzinnym boju...

piątek, 21 września 2007

Nowy projekt

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 :)

sobota, 1 września 2007

Mała przerwa

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 :D 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!

wtorek, 14 sierpnia 2007

Kolizje ciąg dalszy

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;amp;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 &amp;amp;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?