All blog entries, ordered from most recent. Entry count: 1198.
# Newerwinter Nights 2
Fri
22
Jun 2007
Gram ostatnio w Newerwinter Nights 2 i chciałbym wam polecić tą grę. To naprawdę kawał dobrego erpega. Parę drobiazgów wkurza, ale to nieuniknione przy produkcji tak rozbudowanej. Wiadomo też, że to nie MMORPG - tu grę się po prostu przechodzi, a nieliniowość polega głównie na wyborze kwestii dialogowych. Tym nie mniej gra jest naprawdę ładna, ciekawa, wciągająca, długa i ogólnie fajna. Każdy, kto gra w coś więcej niż strzelanki ma szasnę uznać ją za bardzo udaną i opanować jej zasady mimo, że nie są banalne - bo oparte na D&D.
# MalborkRaider
Mon
11
Jun 2007
Chciałem sobie wziąć udział w "pomaturalnej", tygodniowej edycji konkursu Compo. Do napisania była gra "na podstawie lektury szkolnej". W planach miałem platformówkę 2D. Z powodów projektowych (kod się po prostu zamotał...) nie dokończyłem jej, ale to co udało się napisać znajdziecie w archiwum z pracami konkursowymi - Compo_2007-06-10.rar (4.2 MB).
Comments | #games #productions Share
# Game Programmer - Drzewko Umiejętności
Sun
10
Jun 2007
Zrobiłem coś śmiesznego, co jednak może mieć jakiś sens. Nazwałem to Game Programmer Skill Tree. Jest to dostępne online, stylizowane przedstawienie drogi nauki, którą moim zdaniem przebywa każdy kto uczy się programowania gier. Zwięźle i krótko prezentuje poszczególne umiejętności, a także najważniejszą literaturę przydatną do ich nauki.
Następnym razem, kiedy ktoś przyjdzie z pytaniem "od czego zacząć", "nauczyłem się C++ i co dalej" albo "z czego się uczyć", możecie go tam odesłać. Będę też wdzięczny za wszelkie komentarze na forum. W planach mam następne zakręcone rzeczy :)
Comments | #teaching #philosophy #warsztat Share
# EduAkcja - tani Microsoft Office
Fri
08
Jun 2007
EduAkcja - Microsoft przygotował ciekawą ofertę dla uczniów, studentów i wszelkich pracowników sektora edukacyjnego. Można w niej kupić po przystępnej cenie pakiet Office 2003 lub 2007 (Standard - niecałe 200 zł, Professional - niecałe 280 zł brutto). To dobra wiadomość zważywszy, że w przeciwieństwie do Windows czy Visual Studio, pakiet biurowy nie jest dostępny dla studentów za darmo w ramach MSDN AA. Przejrzałem dokładnie zasady i oto moje wnioski:
Zalety:
Wady:
Comments | #shopping #software Share
# Dobra biblioteka, zła biblioteka
Sat
02
Jun 2007
Chcę teraz napisać moduł do obsługi daty i czasu. Poszukując czegoś, na czym mógłbym się wzorować szczególnie dokładnie przejrzałem dokumentację i kod dwóch bibliotek - Boost.Date_Time oraz wxWidgets wxDateTime. Was też zachęcam do poświęcenia kilku chwil na próbę zrozumienia, jak te biblioteki wyglądają i ich porównania. Można tu naprawdę klarownie zobaczyć, jak powinien wyglądać, a przede wszystkim jak NIE powinien wyglądać interfejs dobrej biblioteki. Jedni głoszą, że "Mądrość i piękno bardzo rzadko idą w parze" (ten cytat jest mottem całego dzieła Meyersa "Effective C++"), inni znają takie pojęcie jak elegancja...
Comments | #libraries #software engineering Share
# Napisałem FreeList
Thu
31
May 2007
Napisałem na podstawie artykułów z "Game Programming Gems" (oraz swoich pomysłów) własne alokatory pamięci do obiektów konkretnego typu, czyli tzw. FreeList. Powinny działać szybciej niż standardowe, podobno wolne operatory new i delete. Znajdą się oczywiście w nowej wersji mojej biblioteki CommonLib. Testy (przeprowadzone dla 10240 operacji alokacji lub zwalniania) są bardzo optymistyczne:
DEBUG: Element typu int: FreeList : 68.0636 ms DynamicFreeList : 184.441 ms new i delete : 78.8142 ms Element typu zajmujacego 1024 bajty: FreeList : 69.3896 ms DynamicFreeList : 203.506 ms new i delete : 93.2942 ms RELEASE: Element typu int: FreeList : 7.87224 ms DynamicFreeList : 11.4786 ms new i delete : 17.0348 ms Element typu zajmujacego 1024 bajty: FreeList : 9.18059 ms DynamicFreeList : 18.0729 ms new i delete : 24.0537 ms
Comments | #c++ #algorithms Share
# int1, int2, int4, int8
Thu
31
May 2007
Ilekroć koledzy widzą mój kod, dziwią się, dlaczego swoje typedef-y nazwałem int1, int2, int4, int8, uint1 itd., zamiast int8, int16, int32, int64, uint8 itd. Ja wtedy pytam: Po co miałbym liczyć rozmiar w bitach, zamiast w bajtach? Wiem, że tak się najczęściej robi, ale to i tak są zawsze wielkrotności ósemki. Może w grach komputerowych za zebranie kryształka warto naliczyć graczowi całe 100 punktów zamiast jednego, bo to ma jakiś efekt psychologiczny, ale programiści powinni podchodzić do życia praktycznie. Dlatego dla mnie liczenie w bitach jest po prostu bez sensu. Operator sizeof też zwraca rozmiar w bajtach :P
Comments | #c++ #philosophy Share
# Policy-Based Design
Wed
30
May 2007
class DeletePolicy {
public:
template <typename T>
static void Destroy(T *p) { delete p; }
};
class ReleasePolicy {
public:
template <typename T>
static void Destroy(T *p) { if (p) p->Release(); }
};
class scoped_ptr<typename T, typename PolicyT = DeletePolicy>
{
public:
explicit scoped_ptr(T *p = NULL) : m_Ptr(p) { }
~scoped_ptr() { PolicyT::template Destroy<T>(m_Ptr); }
// ...
};
scoped_ptr<int, DeletePolicy> p1;
scoped_ptr<IDirect3DTexture9, ReleasePolicy> t1;
To przykład techniki zwanej Policy-Based Design, którą wynalazł Andrei Alexandrescu. Wszystkich zainteresowanych zabawami z językiem C++ zachęcam do zgłębiania tematu. Szablony to nie jest lekarstwo na wszystkie (jakże liczne) problemy rodzące się podczas programowania w tym języku, ale to jedna z potężnych i zaawansowanych technik. Znałem ją już wcześniej, ale teraz doceniłem i użyłem. Jak to się mówi w komentarzach na Allegro: Polecam! :)