Poszli! Ci wspaniali programiści ku swym latającym klawiaturom.
Daj się poznać 2016 wystartował. W związku z tym pora odkryć kilka kart i przedstawić nasz nowy projekt.
RL Engine
(czyt. real engine 1)
TL;DR – Rougelike game engine
Zanim przejdziemy do setna, zacznijmy od tego skąd wziął się pomysł na taki a nie inny projekt.
Ogólnie pomysłów samych w sobie to miałem całkiem sporą liczbę – przytoczę kilka (może ktoś sobie przygarnie jakiś mały śliczny pomyślik i zaimplementuje – a ja go z cała bezczelnością i satysfakcją wykorzystam już w gotowej wersji).
- Bot do starcrafta (całe API jest już gotowe w C++ tutaj – chętnie bym też zobaczył wrapper dla .NET 2)
- Wtyczka Visual Studio integrująca się z Instanbul – code coverage dla JavaScriptu
- Overtone – biblioteka w Clojure do programowania muzyki (tutaj to można naprawdę wymyślić świetne projekty – ten potencjał!)
- Nauka pisania Kanji – extra level to integracja z Anki
- “Chmurowy” dysk oparty na serwisie chomikuj – podstawowe API już jest (biedne bo scrapuje html’a) a sam serwis świadczy nieograniczone miejsce na dysku, więc why not?
- Kurs/serwis do nauki japońskiego – moje personalne nerdostwo w tej kwestii się objawia. Korzystałem z kilku serwisów 3 ale żaden nie obejmował wszystkich rzeczy. Zwykle to albo Kanji albo słownictwo albo gramatyka. Ogólnie temat rzeka.
- Kolejne moja obsesja – networking, szczególnie w dziedzinie gier komputerowych. Protokoły, kompresje, serializację, lag compensation – cała masa tortu do zjedzenia. Szczególnie, że można znaleźć całą masę bardzo dobrych artykułów na ten temat. (Valve z Source engine, Epic Games z Unreal’em itp.)
Uff, trochę tego się zebrało. A wracając do rougelike…
Dla przypomnienia (vide wikipedia):
Roguelike is a subgenre of role-playing video games, characterized by a dungeon crawl through procedurally-generated game levels, turn-based gameplay, tile-based graphics, and permanent death of the player-character.
Ogólnie od zawsze dużym moim zainteresowaniem cieszyły się gry komputerowe. I mam na myśli dużyyym. Wynikiem tego jest oczywiście mój stan obecny – programista. Dodatkowo od czasu do czasu pojawię się z grupą znajomych na jakimś game jamie. Jakąś grę na swoim koncie też już posiadam – więc temat nie mógł się skończyć na niczym innym jak na projekcie około gamedevowym.
A czemu akurat rougelike?
Hmm… ogólnie patrząc na pionierów w tej kategorii 4:
Pachnie to mocną nostalgią, zakurzonym piwnicznym terminalem Pana Administratora i poziomem skomplikowania, porównywalnym z tym który drzemie w starych systemach bankowych, wyrytych w paleolitycznych jaskiniach za pomocą kamiennych narzędzi zwanych Cobolami.
Sweeett.
Sam gatunek w obecnych dniach jest już bardzo popularny i zdążył nam przynieść masę świetnych gier – nie koniecznie w podanym powyżej surowym opakowaniu.
Np.
I wiele wiele innych.
To dlaczego nie jakąś konkretną grę tylko od razu silnik?
Powodów jest oczywiście kilka:
- Z pisaniem gry bardzo łatwo wpaść w pułapkę “neverending story” gdzie cały czas chcemy coś do niej dodawać i nigdy jej nie skończyć
- Jest cała masa rzeczy jakie są, nie tyle nie fajne, tylko nie ściśle techniczne. Chociażby cały “content” – grafiki, muzyka, fabuła. I o ile z każdym z nich można programistyczne zrobić super rzeczy to zawsze ręcznie dopieszczana treść będzie lepsza. A ciężko pisać posty na temat kolejnego tygodnia projektowania fabuły kampanii (+ gratisowe spojlery)
- Co ciekawe – surowego silnika do rougelike’ów w sumie nie udało mi się znaleźć. Na parę trafiłem, jednak zwykle ograniczają się do obsługi renderowania.
Więc ciekawym aspektem tego projektu będzie to, że nie ma być to silnik w koncepcji do jakiej jesteśmy zwykle przyzwyczajeni. Mówiąc silnik do gier, najczęściej mamy w głowie dwie opcje:
- Kobyła pokroju Unreal engine czy Unity3D – wszystko co tylko byśmy chcieli i czego byśmy nie chcieli…
- Surowy silnik do renderowania np. Allegro albo 3D.js
RL Engine ma być czymś innym, wspaniałym i przełomowym! (Sprzedażowy Bullshit at it’s best! A co!)
Chciałbym aby RL-E kojarzył się raczej z zestawem funkcji – szczególnie przydatnym do gier typu rougelike.
Np.
- Pathfinding
- Shadowcasting
- AI
- Randomizers
- Generators
Nastawiony bardzo na niezależność od platform/silników.
Coś co możesz zassać jako dll/jar/js i wykorzystać interesujący Cię fragment.
Albo wykorzystać w całości i dodać tylko swój content i warstwę prezentacji.
Chcesz użyć Unity3D jako silnika? Super – zasysasz dll z NuGet’a i korzystasz. Chcesz sam shadowcasting do prostej gry w javie? Odpalasz mavena i gotowe. WebGL + js ? I got you covered!
Ale, jak chcesz obsługiwać WSZYSTKIE platformy? Masz zamiar pisać wszystko kilka razy? Coś mi tu śmierdzi…
A no widzisz, tutaj pojawia się druga (pewnie nawet ważniejsza część projektu):
Clojure
A czym jest Clojure? Jakie daje możliwości? I w sumie po co to komu?
Tego dowiemy się w kolejnym odcinku!
Stay tuned.
Github: https://github.com/brogowski/RL-Engine
- Pun intended.
- Uczelnie robią z tego zajęcia – zajebiste!
- Polecam gorąco wanikani
- Subiektywnie
Tylko apeluję, żebyś skończył ten projekt, bo od jakiegoś czasu chcę napisać roguelike’a w Scali albo Clojure, ale zawsze polegałem na etapie szukania silnika do tego 😛
Taki jest plan 🙂
A funkcjonalności Cię najbardziej w silniku interesują?
Akurat nie miałem nic konkretnego na myśli. Po prostu coś, co pozwoliłoby mi zacząć od jakiegoś sensownego poziomu, a nie od zera 😉