Programmer Bot – wersja Alpha. Moje przeżycia część 1
W pierwszym semestrze na 2 roku studiów na Zachodniopomorskim Uniwersytecie Technologicznym na kierunku Informatyka, jest zadanie. Trzeba napisać grę.
I to grę 3D.
Ludziom co nie znają poziomu ZUT’u dopowiem, że piszemy korzystając z OpenGL 1.1 – 2.1, czyli czegoś super wypas nie musimy robić, bo też narzędzia wydają się mało ostre.
Chyba w tym roku najpopularniejszym pomysłem wśród braci studenckiej są wyścigi 3 rzędowe. Przykładowa gra taka jak Wild Wild Taxi (gra flash).
Ja pomysł na grę także zaczerpnąłem z gier flashowych, a mianowicie z gry lightBot.
Nie zamierzam opisać tej gry, wystarczy przejść kilka pierwszych poziomów oryginału, aby wiedzieć z czym musiałem się zmagać podczas tworzenia tego klonu gry.
Start programowania, zgrzyt językowy
Domyślnie językiem, który każdy student na drugim roku powinien potrafić, to C. Obok zajęć z grafiki istnieje przedmiot programowanie obiektowe na którym zgłębiamy język C++.
Rozpocząłem projekt od zera, od pustego projektu konsolowego. Następnie dodałem biblioteki i zadbałem aby projekt był łatwy do przeniesienia pomiędzy komputerami. Biblioteki umieściłem w katalogu lib obok źródeł. A ścieżki dla kompilatora były podane jakie ścieżki pośrednie.
Gdy projekt osiągnął pułap 300-400 linii kodu, stwierdziłem, że język C++ spowalnia pisanie gry. Uciążliwe stały się pliki nagłówkowe które trzeba było pamiętać, aby je aktualizować za każdym razem gdy chcemy dodać, zmienić, zmodyfikować, usunąć funkcję.
Ponadto trudne do zrozumienia były błędy kompilatora, a sam proces kompilacji wydłużał się z powodu wielu zbędnych #includów. Wtedy zmiana jednego fragmentu programu powodowała re-kompilację całego projektu.
Poczułem, że za mało znam C++ aby mógł komfortowo z niego korzystać. Teraz czuję, że dalsze korzystanie z C++ mogło spowodować przyspieszone łysienie.
OpenTK
Jako, że znam C# chyba najlepiej z wszystkich języków to postanowiłem poszukać bibliotek które pozwoliły mi przenieść istniejący kod na C#
Przeszukując rożne istniejące biblioteki, których rozwój jest martwy lub nie całkiem martwy, wybrałem OpenTK
Zalety OpenTK:
- Pozwala na wykorszystanie OpenGL 1.1, 2.0
- Jest bibliotką niskiego poziomu
- Posiada API do przechwytywania danych z klawiatury, myszy, josticka
- Możliwość tworzenia okna przy użyciu OpenTK
- Przykładowe programy.
Wady OpenTK:
- projekt nie jest aktywny, ostatnia stabilna wersja datowana jest na 6-10-2010 (choć pojawią się nocne paczki)
- nie wspiera najnowszych wersji OpenGL
- Duża ilość śmieciowego kodu, oznaczonego jako deprecate