RL Engine

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:

Dwarf_Fortress_world_generation
Dwarf Fortress
adom_000
Adom

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.

cartman

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.

Dungeons of dreadmore
Dungeons of dreadmore
king_conga
Crypt of necrodancer
maxresdefault
Darkest dungeon
ss_9b26bb93397ea5bbb7906950c4ffa0d6e9203f7d.600x338
Risk of rain

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:

  1. Kobyła pokroju Unreal engine czy Unity3D – wszystko co tylko byśmy chcieli i czego byśmy nie chcieli…
  2. 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

  1. Pun intended.
  2. Uczelnie robią z tego zajęcia – zajebiste!
  3. Polecam gorąco wanikani
  4. Subiektywnie

3 Comments

  1. 7 March 2016
    Reply

    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 😛

      • 9 March 2016
        Reply

        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 😉

Leave a Reply to Bartłomiej Rogowski Cancel reply