Urodzony w tym samym roku (1970) co John Carmack, twórca Unreal Engine nigdy nie był równie medialną osobą. Sam nazwał się żartobliwie Carmackiem MX (nawiązanie do ubogich wersji GeForce), choć na przełomie millenium ich technologie prowadziły wyrównaną walkę.
Można znaleźć wiele podobieństw tych genialnych programistów prócz daty urodzenia: od rozwoju trójwymiarowych strzelanek, przez posiadanie się kilku Ferrari (lub Lamborghini w przypadku Sweeneya), po eksperymenty z językami funkcyjnymi. Początki były jednak nieco odmienne.
Majsterkowicz
Sweeney jest urodzonym majsterkowiczem. Pierwszy raz rozmontował kosiarkę do trawy mając 5 lub 6 lat. Tim twierdzi, że przyszedł na świat w przejściowym momencie. Gdyby urodził się 5 lat wcześniej, realizowałby się w samochodach czy drag-racingu, gdyby 5 lat później – w komputerach.
Sweeney nigdy nie był zapalonym graczem, interesowało go bardziej jak gry działają niż sama ich treść. Podobno ukończył zaledwie dwie pozycje: Dooma i Portala. 11-letni Tim zaczął programować i obserwować działanie komercyjnych gier. Wykorzystując, mające tryb graficzny 40×24 w 16 kolorach, Apple II, zbudował kopię Adventure wydanego przez Atari.
Kilka lat później, jako 15-latek, Sweeney był już całkiem dobrym programistą. Jak ocenia, przez pierwsze 10 000 godzin rozwijał się samodzielnie i nawet nie miał z kim dzielić swoich osiągnięć:
Byłem dziwnym komputerowym gościem i nikt się mną nie przejmował.
Choć wcześniej zaczął programować, to jako studia wybrał inżynierię mechaniczną. W dzień studiował, w nocy pracował nad swoją pierwszą poważną grą, ZZT.
ZZT
Pierwsza dobrze znana gra Sweeneya powstała podczas pisania własnego edytora tekstu – dostępne wtedy programy nie spełniały jego oczekiwań.
Znudzony Tim zaczął eksperymentować z przemieszczającym się kursorem i znakami ASCII, które mogły poruszać się w różnych kierunkach lub blokować gracza.
Wydany w 1991 roku ZZT był tylko grą tekstową, ale dobrze pokazywał filozofię Sweeneya – gra miała wbudowany edytor poziomów i język skryptowy. To właśnie silny nacisk na narzędzia wyróżniał ZZT i późniejsze dzieła Tima. Ciekawi działania ZZT mogą znaleźć na GitHubie niezależną implementację silnika działającą pod Linuksem – DreamZZT.
Epic MegaGames zostało w 1991 przez Tima Sweeney’a i Marka Rheina – obaj kierują do dziś firmą. Oczywiście sama technologia nie wystarczy do zrobienia dobrej gry. Projektant Cliff Bleszinski, prowadzący już wtedy własną działalność, zrobił na Sweeneyu świetne wrażenie i wkrótce stał się trzecią kolumną Epic.
Tim Sweeney (z lewej) i Cliff Bleszinski
W następnych latach Epic stworzyło kilka niezłych gier jak Jill of the Jungle czy Jazz Jackrabbit. Było też wydawcą, pod swoje skrzydła przyjęło m.in. polskie gry jak The Adventures of Robbo (uwaga: dziś możecie zagrać w remake nazwane GNU Robbo) stworzone przez Janusza Pelca czy Fire Fight grupy Chaos Works. Rozprowadzane w modelu shareware, ZZT zarabiało 100 dolarów dziennie, nowsze Jill of the Jungle potrafiło być nawet dziesięciokrotnie bardziej dochodowe. Sukces prężnie działającego już na początku lat 90-tych Epic MegaGames był niczym w porównaniu do tego co spotkało zespół kilka lat później.
Wpływ Dooma
Doom pojawił się w moim artykule o Valve, jak i w kolejnym, o Johnie Carmacku – musi pojawić się i tutaj. Co stało się w 1993 roku? Po latach Tim Sweeney wspomina:
Kiedy pojawił się Doom, dałem sobie spokój z programowaniem przez rok. To były jakieś niewyobrażalne czary.
oraz:
Gdy id Software pokazało Dooma, powiedziałem: “O mój Boże, wynaleźli rzeczywistość. Poddaje się jako programista, nigdy nie będę potrafił zrobić czegoś takiego.”
Na szczęście “nigdy” trwało może rok i wkrótce Tim zaczął przygotowywać się do wykonania czegoś zupełnie nierealnego.
Początki Unreal Engine
Gdzieś w okolicach 1995 Sweeney rozpoczął prace nad Unreal Engine. Pierwsze dema zostały upublicznione w tym samym roku. Choć inspirowany fantasy rodem z Dooma, świat pierwszych prototypów Unreala był całkowicie trójwymiarowy. Sam silnik został zintegrowany z edytorem poziomów. Co ciekawe wciśnięcie TAB podczas gry pokazywało mapę poziomu, jak w Doomie czy późniejszym Duke’u Nukemie 3D. Z czasem funkcję tę zarzucono.
Demo technologiczne z 1995 roku
W latach 1996 i 1997, konkurencyjne id wydało swoją pierwszą w pełni trójwymiarową grę, Quake, oraz sequel Quake II (obie na id Tech 2). Premiera Unreala wciąż nie była blisko, niektórzy wręcz nadali grze status vaporware. Opłaciło się jednak czekać.
Początkowo za rendering odpowiadał wyłącznie programowy rasterizer. Ten przetrwał aż do wydania oficjalnej wersji gry w 1998 i znacznie przewyższał rozwiązanie z Quake/Quake II – m.in. obsługiwał kolorowe światła (Quake II robił to tylko na OpenGL) i dithering tekstur. Jak zdradził później Sweeney,
przybliżony rendering Dooma wymagał ok. 10 milionów operacji zmiennoprzecinkowych na sekundę. W 1998 Unreal potrzebował miliarda.
Na fali sukcesu 3dfx Voodoo, Unreal Engine został wzbogacony o obsługę API Glide (póżniej również OpenGL i Direct3D) i w tym momencie całkowicie zdeklasował konkurencję. Odbicia, dynamiczne światła, otwarte poziomy czy ostre tekstury sprawiały, że Unreal naprawdę zasłużył na swoją nazwę. Do historii przeszła poniższa okładka czasopisma Next Generation.
Unreal był jedną z pierwszych wysokobudżetowych gier przeniesionych na Linuksa. Dziś fani Nierzeczywistego mogą pobrać aktualną łatkę ze strony OldUnreal.
Unreal Engine vs id Tech 3
Rok 1999 nie był tylko starciem gier Unreal Tournament i Quake 3 Arena, był też pojedynkiem później szeroko licencjonowanych, napędzających ich silników. Wyraźnie starszy Unreal Engine wydawał się na straconej pozycji. Nie obsługiwał, wprowadzonego w tym samym roku przez Geforce 256 i działającego w konkurencyjnym id Tech 3, Transform & Lighting. Oprócz tego, bardziej przyszłościowy silnik id był już zbudowany z myślą o przyszłych procesorach dwurdzeniowych, tymczasem Unreal czy Unreal Tournament potrafią dziś sprawiać problemy na komputerach wielordzeniowych.
Jednak tu należy przypomnieć realia roku 1999. Carmack pisząc całkiem nowy renderer dla Quake 3 postawił sprawę jasno: albo masz akcelerator OpenGL albo nie grasz. Unreal Engine Sweeneya był tutaj znacznie bardziej elastyczny i przygotowany na pofragmentowany rynek kart graficznych. Dzięki modułowej budowie nie tylko obsługiwał OpenGL i Direct3D, ale i własnościowe API jak 3dfx Glide czy S3 MeTaL. Pozwalał graczom używającym popularnych wtedy akceleratorów Voodoo, wykrzesać z nich absolutnie wszystko. W ostateczności, gdy komputer nie miał żadnego z układów przyspieszających, pozostawało użyć rewelacyjnego programowego rasterizera – nawet wtedy grafika wyglądała zadowalająco. Za to dzisiaj można korzystać z unowocześnionych rendererów jak UTGLR, które dystrybuowane są pod postacią zwykłych plików współdzielonych. Ciekawostką jest AAUT wyświetlający Unreal Tournament w konsoli za pomocą znaków ASCII.
Intro Unreal Tournament wyświetlone z użyciem aalib
Siłą Unreal Engine były po raz kolejny narzędzia. UnrealEd (notka: na ówczesnym sprzęcie uruchomienie tego programu potrafiło zająć kwadrans) to jeden z najbardziej zaawansowanych edytorów poziomów w tamtym okresie.
Ostatecznie zarówno Unreal Engine jak i id Tech 3 osiągnęły ogromny sukces pod względem liczby sprzedanych licencji. Z gier korzystających z UE1, na Linuksie pojawiło się też Rune, a niewiele brakowało też to przeniesienia legendarnego Deus Ex.
Unreal Tournament 2003 i 2004
Rok 2004. Przynosisz płytę z grą ze sklepu, wkładasz ją do napędu, a tam oprócz windowsowego instalatora znajdujesz linuksowy? Prawdopodobnie kupiłeś Unreal Tournament 2003 lub 2004 z małym pingwinkiem na okładce.
Nowym grom towarzyszyła premiera silnika Unreal Engine 2. Nie był on rewolucją, a silną ewolucją we wszystkich możliwych kierunkach. Takie podejście opłaciło się Epic i Sweeneyowi, szczególnie, że UE2 był dostępny dla licencjobiorców już w 2001 roku. Dziś trudno wręcz policzyć gry bazujące na Unreal Engine 2 i 2.5. Część z nich, jak dobrze znane linuksowym graczom Killing Floor i Red Orchestra zaczęły swoje życie jako modyfikacje dla Unreal Tournament 2004. Ten ostatni, dopracowany po nieco chłodno przyjętej wersji z 2003 roku, stał się jednym z najbardziej rozbudowanych i najdoskonalszych “arena shooterów” wszechczasów.
Ciekawostka: Unreal Tournament 2004 miał (niczym wersja z 1999 roku), obok Direct3D i OpenGL, programowy renderer. Jednak tym razem stał za nim zewnętrzny duet Sartain i Abrash, o czym wspominałem tutaj.
Unreal Engine 3
W 2005 roku Tim Sweeney przedstawił prezentację obrazującą kierunek rozwoju Unreal Engine w wersji 3. Niech nie zwiedzie was Comic Sans, treść jest całkiem konkretna i dosięga takich rzeczy jak współbieżności obliczeń czy funkcyjnego język Haskell.
Tim przewidywał wtedy, że kilka lat, w 2009 roku procesory komputerów będą miały ponad 20 rdzeni, 80 wątków i 1 TFLOPS wydajności. Dziś wiemy, że nieco się pomylił.
Niestety, w przeciwieństwie do poprzedników, Unreal Engine 3 nigdy nie został wydany na Linuksa. Prace nad portem Unreal Tournament 3 zostały wstrzymane, mimo, że zatrudniony przez Epic, Ryan C. Gordon miał już działającą wersję. Późniejsze gry korzystają z UE3 były przenoszone już przez samych licencjobiorców.
Unreal Engine 4 i nowa polityka
Po fiasku Unreal Engine 3, wielu użytkowników Linuksa straciło wiarę w Epic Games. Dodatkowo, ze strony Unity i Crytek powoli zaczynała rodzić się konkurencja. Tim Sweeney postanowił uderzyć z całą siłą i nie pozostawiać złudzeń.
Unreal Engine 4 nie dość, że jest dostępny niemal na każdą możliwą platformę (w tym Linuksa), to stał się wyjątkowo otwarty. Za 19 dolarów miesięcznie i 5% z zysków można dostać dostęp do najnowszego, pełnego kodu źródłowego przez GitHuba. Wstrzymanie opłacania subskrypcji zamyka tylko dostęp do aktualizacji.
Później wprowadzono jeszcze kwotę wolną 3000 dolarów, która przekroczenie jest konieczne by płacić 5% z zysków. Przy okazji okazało się, że Tim Sweeney nie jest znany nawet na oficjalnych forach Unreal Engine ;)
Epic stawia dziś bardzo mocno na współpracę ze społecznością i na Linuksa – od rozwoju Unreal Tournament 2014 po przeniesienie kompletnych narzędzi. Można powiedzieć, że ta druga operacja już dziś osiągnęła sukces. Kilku zapaleńców przeniosło edytor, a Epic podziękował im z imienia i nazwiska, jednocześnie akceptując zmiany i zachęcając społeczność do dalszych prac.
Unreal Engine 4 na Linuksie – zrzut autorstwa Amigo
Otwarte podejście znane od czasów ZZT wciąż towarzyszy Timowi Sweeneyowi, a z jego kodu korzysta coraz więcej programistów i artystów. Prawdopodobnie wśród nich jest nawet dyrektor techniczny (ściśle współpracującego z Epic) Oculus VR, John Carmack, którego Doom i Quake były inspiracją dla naszego skromnego bohatera.
Źródła i dodatkowe informacje:
- The Quiet Tinkerer Who Makes Games Beautiful Finally Gets His Due
- From The Past To The Future: Tim Sweeney Talks
- Epic Games Founder Tim Sweeney Talks Tech
- The Old Guard: An Interview with Tim Sweeney
- Epic’s Tim Sweeney lays out the case for Unreal Engine 4
- Unreal Engine 4 – Epic programming director Tim Sweeney writes a post explaining why they have moved away from UnrealScript to unified C++
- Unreal Engine 4 and Linux
- History of the Unreal Engine
- Unreal 1 Development History (polecam)
- Unreal/December 1995 Level Tech Demo
- Tim Sweeney on T&L
- Unreal: Epic’s would-be Doom… er… Quake killer
- Skan okładki UT2k4
- Epic’s Rainmakers
- Ryan C. Gordon o porcie UT3
- Epic Wiki: Building On Linux
Bonus:
Bardzo ciekawy felieton. Już po wstępie na stronie głównej wiedziałem kto go napisał ;)
Cóż, obiecałem w którymś z komentarzy, że napiszę, to musiałem napisać. Nie ma lekko.
Mega Games wydawał również polskie Electro Body.
„Oprócz tego, bardziej przyszłościowy silnik id był już zbudowany z myślą
o przyszłych procesorach dwurdzeniowych, tymczasem Unreal czy Unreal
Tournament potrafią dziś sprawiać problemy na komputerach
wielordzeniowych.”
To i tak mało. Carmac już w 1995 roku pracował na 28″ monitorze HD 1080p :-) Link: http://www.geekosystem.com/1995-john-carmack-quake-monitor/
Trzeba tu przyznać, że miał on pewnie i tak niezłe wtyki – już na etapie projektowania silnika wiedział o/przewidział dwurdzeniowe procesory. W 1999/2000 roku była premiera, a sam silnik pisany był wcześniej, więc miał dobre info. Pewnie wielu użytkowników (w tym ja) nie wpadło wtedy nawet na to, że coś takiego mogłoby powstać ;-)
Dziwnym trafem mamy wzmiankę o monitorze w tekście o Johnie http://www.penguingamers.eu/john-d-carmack-czlowiek-ktory-zrewolucjonizowal-gry-kilkukrotnie/ ;)
Tak próbuję sobie przypomnieć realia 1999 roku. Procesorów wielordzeniowych nie było, ale niektórzy entuzjaści mieli dwuprocesorowe płyty z Socket 370 http://www.anandtech.com/show/816/15
http://www.tomshardware.com/reviews/computex,329-10.html