Co w silniku piszczy

Odkąd mieszkam w Szczecinie wieczorami mam trochę czasu i mogę znowu wrócić do silnika. Jako, że dawno już tam nie zaglądałem musiałem trochę “poodkurzać”. Na dobry początek jako, że silnik się rozrasta dodałem namespace’y i część metod zamieniłem na const’owe. Dalej przerobiłem moją leciwą i lekka kulejącą (ale działającą!) serializacje. Teraz zamiast kilku metod postanowiłem sobie przeciążyć operator << (serializacja) i >> (deserializacja) i do tego jest mały menedżer archiwów. Jak to wszystko działa? Najpierw oczywiście musimy stworzyć klasę archiwatora (czyli tam gdzie będziemy zapisywać / odczytywać dane) implementującą interfejs IArchive. Następnie musimy obiekt tego archiwum (oczywiście menedżer zadba o to, żeby nie tworzyć 2 razy tego samego archiver’a). Teraz możemy już do niego zapisywać / odczytywać:


//serialize
arch << someInt << someVector << someOther;
//deserialize
arch >> someInt >> someVector >> someOther;

Oprócz tego do silnika dodałem obsługę skryptów. Zdecydowałem się na bardzo popularna lua’e. Szczerze mówiąc sama składnia bardziej mi się podoba w AngelScript ale za lua przemawia jej szybkość oraz jej popularność wśród gamedeveloperów. Do połączenia lua’y z C++ użyłem biblioteki luabind, która w bardzo łatwy sposób pozwala na “zbindowanie” lua’y do C++. Teraz dzięki temu cała logika gry będzie spoczywać na skryptach i będzie można ją łatwo modyfikować bez ponownej kompilacji kodu (również przez osoby trzecie).
Udało mi się również dodać klasę do obsługi klawiatury oraz myszki. Teraz w bardzo łatwy i przystępny sposób mogę mieć obsługę tych dwóch urządzeń w każdym miejscu silnika (oraz skryptów). Podłączyłem też już część PhysX, tj. character controler oraz mesh cooking, muszę jeszcze do edytora “dopiąć” opcje fizyczny dla aktorów.
Na dzień dzisiejszy zostało mi dopracowanie meanedżera serializacji, skończenie pełnego podpinania silnika do lua’y, refactoring fabryki klas, oraz klasa do dźwięku i w końcu będę mógł się wziąć za renderer :)

One Response

  1. Яков Says:

    Актуально. Некоторые моменты не знал.

Leave a Comment

Please note: Comment moderation is enabled and may delay your comment. There is no need to resubmit your comment.