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?

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

sobota, 4 sierpnia 2007

Moduły v1.0 skończone

Pare dni temu skończyłem 3 moduly do silniczka - timer, czcionki i obsluge okna. Wyszło jak wyszło ale już jestem w trakcie pisania nowych wersji (moze nie beda duzo lepsze ale na pewno mniej rozczarowujace :P). Możesz ściągnąć moduły stąd: POBIERZ

Do końca wakacji muszę przeczytać 3 lektury - iliadę, króla edypa i mitologię - póki co czytam pierwszy tom perełek programowania gier...

Następnym razem postaram się dać nowe wersje modułów.

piątek, 27 lipca 2007

Kolejne leniwe dni

Ostatnie kilka dni, jak widać z tytułu wpisu były bardzo leniwe. Zrobiłem mało, czas zajmowało mi siedzenie na forach, msdn'ie i granie. W najbliższej przyszłości zamierzam się poprawić, oto minilista 'todo na przyszłe dni':

  • dokończenie modułów silnika (czcionki, timer, okno)
  • napisanie jakiejś mini gierki, np snake
  • zabawa z grafiką 3d - modele, cienie
  • przerabianie Perełek tom 1 (dziś zamówione, dojdą w przeciągu najbliższych dni)

Nawiązując do pierwszego akapitu chciałbym wskazać sprawcę mojego koderskiego lenistwa - jest nim nowa odsłona jednej z moich ulubionych serii - Command&Conquer 3 Wojny o tyberium (c&c 3 tiberium wars). To kontynuacja takich hitów jak Red Alert 1, 2 czy Generals. Nie będę tu pisał recenzji żeby nie robić konkurencji CD-ACTION ale zapewniam, że warto zagrać. Szczególnie, jeśli grało się w poprzednie części. Grywalność 10/10 i do tego ta grafika, fabuła - mniam.

Co do bloga to zaktualizowałem linki - nowy adres strony Kuraka i dodane hiperłącze do changeloga gry Game Producer.

Do następnego razu.

Po krótkim namyśle deser - jako, że nie pisałem dłuższy czas. Oto screeny z Wojen o tyberium






czwartek, 12 lipca 2007

Kolejne newsy...

Dawno nic nie pisałem więc wypadałoby to zmienić. Ostatnie dni spędziłem kodząc, grając w Red Alert oraz obijając się.

Skodziłem:
- część modułu odpowiedzialnego za tekst
- część modułu odpowiedzialnego za czas (timer)

Do skodzenia zostało:
- dokończenie obu modułów
- napisanie modułu odpowiedzialnego za wyswietlanie okna

Inne newsy:
- moj pajączek - A. geniculata - przeszedł 2 dni temu wylinkę, jest teraz L5
- zacząłem czytać serię Wiedźmin, na pierwszy ogień idzie "Krew Elfów"
- wyszło nowe CD-Action, muszę załatwić 15 zł, może ktoś mi zasponsoruje?

Postaram się częsciej pisać.

czwartek, 5 lipca 2007

Kilka newsów

Dawno nic nie pisałem więc napisze pokrótce co się u mnie ostatnio działo.

  • dostałem się do I LO w Siedlcach ("Prus") do klasy matematyczno-fizycznej
  • dostałem zadania do napisania - okno, tekst i timer
  • jutro zostane przydzielony do klasy

Przez ostatnie dni sporo kodziłem głupot i grałem w Gothic'a 3. Czas się wziąć za poważną robotę więc kończe :)

niedziela, 24 czerwca 2007

A jednak się udało :)

Operacja poprawianie projektu accomplished! Zajęło mi to ponad 3h a rozwiązanie mogłem napisać w 5 minut - najprostsze pomysły są najlepsze ale to już mój problem :) Udało mi się skończyć pisanie kodu 20 minut przed deadline'm czyli o 23.40... Wszystko spakowane i wysłane - czekam na opinię szefa. Jak będzie źle to mam jeszcze jedną koncepcję...

Chciałem napisać o ostatnim znalezisku - grze Dune 2. Można powiedzieć, że jest to ojciec Red Alert'a - pierwszej gry, w której się zakochałem :) Klasyczny RTS - rozgrywka toczy się między trzema nacjami, zbieramy coś a'la złoto, w grze jest to nazwane creditsami. Budujemy infrastrukturę, piechotę i maszyny bojowe po czym złomujemy wroga. Gra jest darmowa ale działa tylko pod DOS'em więc konieczne jest też ściągnięcie DOSbox'a.


Link do gry: KLIK
Oraz kilka screenów - grafika nie powala ale grywalność owszem

Gameplay


Mapa podbojów :)


Trzy frakcje



Aha, jakby ktoś chciał grać to po pierwszej misji musimy odpowiedzieć na pytanie - odpowiedź można znaleźć w manualu (do ściągnięcia na stronie).

sobota, 23 czerwca 2007

Koniec roku szkolnego

Wczoraj oficjalnie zakończył się rok szkolny. Na owym zakończeni było troche nudnawo ale dotrwałem do odebrania świadectwa i książki (Syzyfowe prace -łaaaaaau). Czekałem na to 3 lata :) Papiery złożone (ILO im. Bolesława Prusa w Siedlcach). Można powiedzieć, że zaczęły się wakacje. Co to oznacza? Więcej czasu na kodzenie i odpoczynek :)

Nawiązując do kodzenia muszę połączyć jeszcze mój kodem ze szkieletem aplikacji - biorę się więc do pracy bo deadline już dziś ;). Jak skończe to w końcu reaktywuje mój projekt, którego nazwę i design doc zamieszcze jak skończe przynajmniej w połowie.

wtorek, 19 czerwca 2007

Maszyna stanów i menu do pobrania

Dziś udostępniam do ściągnięcia źródła maszyny stanów opartej na wzorcu projektowym state pattern oraz exe'k z menu do gry arkanoid :)

Source: ściągnij (7kb)


Exe: ściągnij (121kb)


Pliki
są spakowane rar'em. Źródła 'wykomentowane' więc nie powinno być problemów ze zrozumieniem kodu.

sobota, 16 czerwca 2007

Mały zastój

Dawno nie pisałem nic na blogu - ostatnie kilka dni to poprawianie ocen a potem ciągłe opierdalanie się.

Stwierdziłem, że artykułu jednak nie będę publikował - nie jestem jeszcze na takim poziomie, żeby uczyć innych :)

Aktualnie przepisuje obsługę stanów i może dziś zacznę jakiś niewielki projekt...

Dodam
jeszcze, że kilka dni temu moja Brachypelma miała wylinke :)

wtorek, 12 czerwca 2007

Powrót :)

W końcu wracam, po około tygodniowej przerwie w pisaniu. Miałem na głowie pisanie projektu (o tym za chwilę), naukę do egzaminów (tak, mieliśmy jeszcze jedne, wewnątrzszkolne) i inne duperele.

Ku mojemu zdziwieniu udało mi się ukończyć projekt. Nie obyło się bez pomocy ale wysłałem 2h przed deadline'm :) Zrobiłem maszynę stanów, coś na styl wprowadzenia - jpeg z logo grupy i oczywiście menu (na białym tle, z 4 przyciskami... aktywny tylko jeden - koniec :D). Ogólnie sporo się nauczyłem, dlatego chciałbym tę wiedzę przekazać innym - może jeszcze dziś pojawi się na blogu artykuł o tym, jak skodzić maszynę stanów krok po kroku. Może komuś się przyda.

To coś co widać po lewej - tak, tak właśnie wygląda menu :D Ale ja mialem zrobić mechanike a nie wygląd, dlatego też nie ma żadnego tła. Dąbek (znajomy grafik :P) tylko buttony zrobił.

wtorek, 5 czerwca 2007

Maszyna stanów skończona :)

Dzisiaj w końcu, dzięki nieocenionej pomocy Kuraka skończyłem obsługę stanów. Jak wszystko doprowadze do porządku to może wrzucę kod.

Dowiedziałem się też, że rysowaniem menu nie zajmie się render tylko... ja :) No cóż, trzeba to będzie skodzić, deadline już w tę niedzielę. Wracam do pracy.

czwartek, 31 maja 2007

Postępy w kodzie ;)

Dziś zakodziłem już szkielet mechanizmu stanów - wielkie dzięki Kurak za wytłumaczenie i zobrazowanie jak to ma wyglądać, masz piwo u mnie :P Upomnij się na IGK. Jak będzie coś więcej to na pewno napiszę.

Szczęśliwą wiadomością jest to, że trzy dni temu moja A. geniculata przeszła trzecią wylinkę. Teraz powoli dochodzi do siebie i twardnieje :)

Pozatym, jutro dzień dziecka, nie idę z tej racji do szkoły tylko czekam na gościa (:*). I będzie oczywiście więcej czasu na kodzenie.

niedziela, 27 maja 2007

Zadanie do zakodzenia i festyn 2007

Już drugi dzień istnienia bloga, czy działo się coś ciekawego? A owszem, nawet dużo.

Dzis bylo spotkanie programistow teamu, koordynator Wachu rozdzielil zadania. Oto co musze zrobic:

System menu:
- ogólne założenia są takie: mamy klasę jakąą abstrakcyjną stan, z tej klasy dziedziczymy inne stany ( stany gry/programu ) i tak mamy stan: intro, menu, gra, autorzy
- zadaniem programisty jest stworzenie systemu który umożliwia przełączanie się między tymi stanami
- renderuje jakis ekran tytułowy po którym przechodzi się do menu
- obsługę menu: nowa gra, wyjęcie, autorzy
- i stan gry: sucha klasa, w której będzie się pisało grę wlasciwą
- oczekuje dużej samodzielności przy tworzeniu tego i inwencji własnej
ogólnie mam na myśli coś na kształt tego:

przelacznik_stanow.przelacz_na(menu) if any key w intro
{
      stan = new Menu();
}
...
przelacznik_stanow.przelacz_na(gra) if new game w menu
{
      stan = new Game();
}
...

w klasie przełącznik:
obsluz_stan()
{
     stan->obsluz();
}

Dodam, że gra to Arkadoid. Jeszcze nie wiem jak się za to zabrać ale postaram się wszystko wykonać na czas.
Zaraz odpalam więc kompilator i siadam do kodzenia.


Kolejną ciekawą sprawą o jakiej chciałbym napisać jest to, co właśnie odbywa się pod moim oknem - Święto kuźwa jego mać ludowe. Jest to wiejski event na którym od 9 rano pod samym oknem puszczają muzykę na full, potem są występy Koła Gospodyń Wiejskich a na końcu impreza Disco Polo. Plan przeciętnego festynowicza wygląda mniej więcej tak:

1. Przyjść o 14 i zacząć pić
2. Pić do 19
3. Iść pobawić się przy disco polo
4. W półprzytomnym stanie zaliczyć dziewczynę której się nawet nie zna (która oczywiście też jest nachlana w trzy dupy)
5. Spowrotem pić
6. Na zmianę tańczyć, śpiewać, pić
7. O 5 rano (lub wcześniej, zależy od twardości głowy) położyć się z uśmiechem na przepitej twarzy spać na trawniku/placu/piwnicy/pod sceną - każdy według upodobań.

Teraz większość jest między 3 a 6 punktem. Ja siedzę i piszę, racząc się tymi upajającymi dźwiękami i przejmującymi tekstami grupy SKALAR. Zazdrościcie? Wiem.


Po głębszym zastanowieniu postanowiłem, że jednak będe stawiał ogonki - wygląda profesjonalniej i łatwiej się czyta.

Poczatek bloga

Dzis (27.05.2007) zaczal dzialac moj blog - bede pisal przewaznie o postepach w programowaniu i projektach ale nie zabraknie tez zupelnie off-topic'owych tematow. Mam nadzieje ze nie bedzie nudno.

Troche goraco jest wiec ciezko sie mysli ale czytam o mieszaniu kolorow w dx (nie powiem, ciekawe :P). Jutro Wielki Wiejski Event czyli swieto ludowe 2007 Skorzec. Opisze wrazenia z tej wiesniackiej imprezy.

Sory, ze tak bez 'ogonkow' ale rzeszom czytelnikow zza oceanu moze sie krzaczyc (czytaj: jestem zbyt leniwy zeby nacisnac naraz 2 klawisze).