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?

niedziela, 12 sierpnia 2007

Ja vs kolizje runda pierwsza

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.

wtorek, 7 sierpnia 2007

Moduł okna V1.1 gotowy

Skodzone dzisiaj:

- okno V1.1 POL + dokumentacja
- okno V1.1 ANG

Jak widać do skończenia modułu okna zostało jeszcze przepisanie dokumentacji na język angielski. Dlaczego piszę dwie wersje? Ano właśnie, jedna (po polsku) na potrzeby tworzonego silnika (nie ja to niestety ustaliłem, siła wyższa) a druga (po angielsku) dla siebie.

W najbliższym czasie do napisania:
- moduł czcionek V1.1 POL + dokumentacja
- moduł czcionek V1.1 ANG + dokumentacja

I na tym skończy się (póki co) kodzenie modułów do silnika - zrobie sobie małą przerwe (zwłaszcza, że reszta teamu sie opierdala ;)) a zacznie pisanie jakiegoś malutkiego własnego projektu - może będzie to pseudosnake, może coś innego równie prostego, zobaczymy. Jutro zedytuje tego posta i wrzuce link do ściągnięcia modułu.

Do zobaczenia!

// edycja 8 sierpnia 2007: zgodnie z zapowiedzią przetłumaczyłem (kulawą angielszczyzną, trochę na szybko) moduł i dokumentację okna. Do ściągnięcia STĄD

niedziela, 5 sierpnia 2007

Timer v1.1

Jeszcze wczoraj udało mi się skończyć pisanie nowej wersji timera - oznaczonej 1.1. Dostępna w dwóch wersjach językowych - polskim oraz angielskim. Część kodu (metoda obliczania klatek na sekunde) jest z ogólnodostępnych tutoriali z internetu.

Krótki changelog (z wersji 1.0 na 1.1):

- poprawienie obliczania fps
- napisanie metod dostepowych
- mala reorganizacja kodu
- zmiana nazw metod i klasy
- calkowite przerobienie kodu na jezyk angielski + napisanie dokumentacji po angielsku
- czytelniejsze komentarze

Timer możesz pobrać stąd

Może się komuś przyda, prośby skargi zażalenia kierować na gamer.cpp[at]gmail[dot]com