tirsdag den 11. september 2007

Uge 1: starten

Overordnet


Vi fik løst opgaven og implementeret IKeyboard og IMouse, selvom
de ikke er helt færdige. Man kan ikke holde en knap nede og få flere
events(Som hvis man holder w nede for at gå frem i et skydespil)

Vi implementede kamera kontrol som et seperat modul, der lytter på
IKeyboard::onKeyUp/Down og IMouse::mouse*Event. En ting vi gjorde
anderledes i forhold til eksemplerne er at vi droppede Handler delen
af event systemet.

class QuitEventHandler {
public:
void HandleQuit(KeyboardEventArg arg) {
if (arg.sym == KEY_ESCAPE)
IGameEngine::Instance().Stop();
}
};

bool GameFactory::SetupEngine(IGameEngine& engine) {
QuitEventHandler* quit_h = new QuitEventHandler();
Listener<QuitEventHandler, KeyboardEventArg>* quit_l
= new Listener<QuitEventHandler, KeyboardEventArg> (*quit_h, &QuitEventHandler::HandleQuit);
IKeyboard::keyUpEvent.Add(quit_l);
return true;
}


Kan håndteres lige så nemt med en HandleQuit metode direkte i GameFactory
og så new Listener<GameFactory, KeyboardEventArg> (*this, &GameFactory::HandleQuit)

Den teknik giver mening når man laver engangs-ting, men det er ikke reusable.

Tools


Vi bruger allesammen Linux, men vores valg af editor er mindre ensformigt.
Kate, KWrite, gedit og vim bliver alle brugt.

De værktøjer der er blevet valgt for os, synets vi godt om.


  • Darcs er et godt system og vi har også sat det op til at dele kode i gruppen

  • CMake er uendeligt meget bedre end selv at rode med Makefiles i Linux
    og projekt-filer på windows

  • SDL er ret lige til og helt klart et godt valg til crossplatform ting



Det er selvfølgeligt også rart at alle værktøjerne er open source.
Vi ville nok selv have valgt de samme ting.

OpenEngine



Frameworket virker fornuftigt, vi skulle dog lige bruge et kort stykke tid til
at sætte os ind i koden men nu ser den ud til at være fleksibel.

Dokumentationen på openengine.dk var også til hjælp. Godt organiseret og
detaljeret nok.

Boost bliver allerede brugt i frameworket, så hvorfor ikke udvide det til
event systemet.
Med Boost::Signals og Boost::Bind får man samme system gratis.

Koden til IKeyboard::keyUpEvent kunne simplificeres til det følgende
hvis HandleQuit metoden flyttes ind i GameFactory:

boost::signal<void (KeyboardEventArg)> keyUpEvent;
keyUpEvent.connect(boost::bind(&GameFactory::HandleQuit, *this, _1));

Ingen kommentarer: