Projekt Doom jest sprawdzeniem na jak dużo może pozwolić sobie Arduino. Dzięki technice raycastingu, która była używana w tak kultowych grach jak Wolfenstein 3D, czy Doom oraz optymalizacji programu udało stworzyć symulację poruszania się w 3 wymiarowej przestrzeni i reprezentowaniu tego na wyświetlaczu LCD.
1. Płytka Arduino UNO
2. 4 przyciski monostabilne
3. ekran LCD (użyto SSD1306 128x64)
Projekt o pseudonimie „Doom”, to stworzony pod Arduino silnik graficzny do wyświetlania gier w 3D, za pomocą metody Raycasting’u. Metoda ta pomogła stworzyć wiele kultowych gier jak Doom, czy Wolfenstein 3D. Dzisiaj do projekcji 3D służą bardziej skomplikowane modele matematyczne, lecz wyewoluowały one właśnie z metody Raycastingu, która swa popularność zawdzięczała małym kosztom obliczeniowym.
Krótki wstęp do Raycasting'u:
Tworzymy grę 2D, mapa typu labirynt oraz gracz w środku. Chcemy jednak uzyskać efekt trójwymiarowości. Sprawdzamy zatem za pomocą promieni „wystrzeliwanych” z oczu gracza jak daleko znajduje się najbliższa ściana. Na podstawie odległości wyświetlamy pionową kreskę o odpowiedniej wysokości na ekranie. Obiekty dalekie – krótkie kreski, obiekty bliskie – długie kreski. Po wystrzeleniu odpowiedniej ilości promieni, takie zgromadzenie pionowych kresek daje nam złudzenie perspektywy.
Funkcje programu:
• Możliwość stworzenia, z poziomu kodu, własnej mapy, po której może poruszać się gracz
• Możliwość obracania się kamerą w prawo i w lewo oraz możliwość poruszania się przód, tył
• Wyświetlanie tego co widzi gracz w 3D
Jest to założenia najprostsza wersja tego projektu, którą można rozwinąć pod kątem:
• wyświetlania tekstur, oddzielnych dla sufitu, ścian oraz podłogi
• dodania przeciwników
• dodanie elementów interaktywnych do otoczenia, takich jak drzwi czy broń
Może być to temat większego projektu.
ZIP poniżej
https://www.youtube.com/watch?v=g8p7nAbDz6Y
https://www.youtube.com/watch?v=NbSee-XM7WA
https://www.youtube.com/watch?v=ebzlMOw79Yw
https://www.youtube.com/watch?v=gYRrGTC7GtA