Atraktory
5, czerwiec 2008
W ostatnim czasie trochę się zaniedbałem jeśli chodzi o prowadzenie bloga. Wpływ na to miało kilka czynników. Po pierwsze, wiadomo koniec roku, oceny, poprawy i tak dalej. Tak naprawdę jednak dosyć mocno zastanawiam się nad sensem istnienia bloga w takiej formie jakiej jest teraz. Chciałbym prowadzić raczej coś na kształt xion.org.pl ale na takie częste publikowanie miniartykułów to jestem jeszcze za cienki
W każym razie postanowiłem, że będę pisa rzadziej a treściwiej, przedstawiając konkretne prace i projekty. Dzisiaj na pierwszy ogień pójdą atraktory.
Pierwszy raz zetknąłem się z nimi na warsztacie oglądając prace Zbyszka i Kwazara. Pomyślałem, że ładne i wogóle ale takie coś to na pewno wyższa szkoła jazdy. Jakoś niedługo potem zobaczyłem, że wyżej wymieniony już Zbyszek napisał artykuł co i jak z tymi atraktorami. Swierdziłem, że fajnie byłoby coś takiego napisać, szczególnie, że już niedługo koniec roku i przydałoby się zakręcić za szóstką z infy.
Moje prace:
Pickover
Clifford
Trig 1
Trig 2
Lorenz
Pisane w C++, rendering DirectX.
No i przy okazji zrobiłem elegancką prezentację na informatykę, wpadła dobra ocena dzięki czemu podniosę sobie tragiczną średnią
Pozatym napisałem loader plików *.obj. Toporny jak Pudzian ale działa
. Podstawowa funkcjonalność jest (wierzcholki, normalne, coordy tekstur + teksturowanie), troche nie chciało mi się bawić w obsługę materiałów i tak dalej ale już dziś zabieram się za nową, porządną wersję w której to wszystko zaimplementuję. Główny problem polega na tym, że muszę to wszystko wsadzić do interfejsu LPD3DXMESH (dla wygody sprawdzania kolizji promień-model). Przypomniałem sobię o tym dopiero jak zmieniłem całą klasę CMesh i CMeshInstance na obsługę VertexBuffer’ów… Taka mała wpadka.
Jeśli będę zadowolony z ostatecznej wersji loadera to z pewnością udostępnie.
Red Streets Editor – postępy
14, kwiecień 2008
Dawno nie pisałem nic o głównym projekcie w któym uczestnicze. Szczerze to nie wiem w jakim stopniu zaawansowania aktualnie jest sama gra ale w grywalne minidemo już miałem okazję zagrać jakieś dwa miesiące temu. Ja do edytora dorobiłem kilka przydatnych opcji, między innymi:
- podświetlanie modelu
- obramowanie wybranego modelu boundingbox-em
- wstępna obsługa warstw
- zlikwidowane kilka bugów
Podłoże będzie składało się z trzech warstw
- pierwsza – czyli ulice, chodniki i tego typu elementy
- druga – czyli półprzezroczyste dodatki w stylu dziury w jezdni, zakratowane wejścia do studzienek ściekowych etc.
- trzecia – pozostałe elementy czyli drzewa i cała reszta
Warstwy ułożone będą następująco:
- trzecia (będzie nieco “wyżej” niż pozostałe, przysłania modele i inne warstwy)
- modele
- druga
- pierwsza
Po skończeniu zabaw z przesuwaniem obiektów (które i tak jest do poprawy :/) w planie mam obsługa dodawania nowych elementów na mapę a potem zacznę kombinować z formatem i zapisem/odczytem mapek.
Chyba mogę już powiedzieć, że jestem bliżej końca niż początku
Bo tak wogóle to marzy mi się totalny refaktoring kodu ale z moim lenistwem…
Compo
29, marzec 2008
Dwa dni temu skończyło się wielkanocne compo – konkurs w pisaniu gier na czas, jesli ktos jest spoza warsztatu i nie wie
Tematem była ‘gra absurdalna’. Ta edycja była dla mnie szczególna, zadebiutowałem jako uczestnik
Moją prace nazwałem gabsurdame (absurd + game
): Przygoda pana Miećka. W grze wcielamy się w tytułowego Mieczysława – czarodzieja wyrzuconego z pracy za %
. Miecio jednak się niepoddał i znalazł nową robotę, jako murarz na budowie. Strasznie rozpił swoich kolegów budowlańców (alkomagiczne napoje mają naprawdę dużą moc…) dlatego pewnego dnia jedna z postawionych przez nich ścian zaczęła się walić. Nasz bohater akurat wracał do domu, gdy zaczęły na niego spadać cegły. Żeby przeżyć, musi ich unikać. Tu gra przestaje być śmieszną zręcznościówką a zaczyna być czystym absurdem. Otóż mamy dwa poziomy trudnośći – na pierwszym, naszym celem jest PRZEGRAĆ a na drugim, ani wygrać, ani przegrać sie po prostu NIE DA
Teraz czas na trochę samokrytyki. Gra nie zachwyca niczym – ani grafiką (chociaż jest znośna), ani dźwiękiem (który ważne, że wogóle jest) ani gameplayer (który imo jest całkiem zabawny). Niektórzy skarżyli się na “chód” Miećka. Nie zapominajmy, że jest urżnięty w trzy dupy. Zmienia kierunek chodu, przyspiesza/zwalnia, czasem wchodzi w niewidzialne teleporty. IMO taki pokręcony gameplay jest plusem ale gusta to gusta.
Wyniki compo przedstawiają się następująco:
1. Ciunkos
2. sobol
3. heavymental
4-8. reszta uczestników
9. gamer.cpp (ja
) ex aequo (tak to się pisało?) z 4 innymi uczestnikami.
Niestety na 16 uczestników nikt na mnie nie zagłosował, więc nie zdobyłem ani jednego punktu. Szczerze mówiąc zdziwiłem się trochę bo wg mnie wysłałem pracę lepszą niż kilka osób będących w klasyfikacji przede mną.
Wygrał, całkiem zasłużenie, Ciunkos. Ja dałem 3 pkt jego pracy, była najbardziej rozbudowana, ciekawa, wciągająca i co najważniejsze – absurdalna. Drugie miejsce przypadło sobolowi (ode mnie 2 pkt), za to, że jego gra była najbardziej profesjonalna ze wszystkich. Trzeci na podium stanął heavymental – według mnie niezasłużenie, jego praca nie podobała mi się. Raz że była krótka, dwa że grywalność zerowa. Podobała mi się jedynie grafika.
Wracając do mojej pracy, uważam że została trochę niedoceniona. Sam postawiłbym ją na trzecim miejscu ale widocznie tylko mi się podoba
Może na następnym compo będzie lepiej… Gratuluje zwycięzcom i przegranym, najważniejszy jest przecież udział.
Garść linków
Compo na oficjalnej stronie konkursu
Temat compo na forum gamedev.pl
Moja ocena prac (na forum)
Download wszystkich prac
To co wyżej tylko na rapidshare.de (szybszy download)
Po przerwie
28, luty 2008
Witam wszystkich, nie bylo mnie tu juz dluzszy czas (ferie, snowboard, imprezy
), wiec wypadaloby cos w koncu napisac.
Jak ostatnio pisalem pracuje nad edytorem map do gry Red Streets. Red Streets bedzie podobne do pierwszych czesci serii GTA. Pisana w C++, za render odpowiada OpenGL. Teraz nieco o edytorze.
Do tej pory zrobione:
- szkic layoutu (kontrolki itd)
- viewport (render DirectX)
- podstawowe przeksztalcenia modeli (obroty, skalowanie, translacje)
- wyswietlanie warstw podloza (dostepne 3 warstwy)
- input z myszki, przesuwanie modeli (prowizorka, do poprawienia)
- kamera
- logger
Do zrobienia:
- format map
- zapis/odczyt map
- zarzadzanie modelami
- loader meshy *.obj (w tej chwili czyta tylko *.x)
- poprawa dzialania niektorych elementow
- cala reszta
Uzywam:
- c++ – kod
- DirectX – rendering
- wxWidgets – GUI
Screeny z edytora:
(kliknij zeby powiekszyc)
W tle moj piekny pulpit z Warsztatowa tapeta ;]
I screeny z gry (grafika testowa):
(kliknij zeby powiekszyc)
Sory ze napisze kilka notek po kolei ale nie chce wrzucac do jednej kilku tematow
Aktualne projekty
17, styczeń 2008
Do następnego razu!
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.



