Gdzie znaleźć kod źródłowy ulubionych gier — przegląd projektu osgameclones
Czasami chcesz zrobić przerwę od pracy, uruchomić lokalnie stary projekt i zobaczyć, jak działa od środka. Ale znalezienie kodu źródłowego legendarnych tytułów nie jest łatwe. Większość z nich jest chroniona prawem autorskim, a ich wnętrze jest zamknięte w korporacyjnych skarbcach. Jednak społeczność od dziesięcioleci tworzy klony, remake'i i silniki open source, umożliwiając uruchamianie klasyków na nowoczesnych systemach.
Repozytorium osgameclones jest bez wątpienia najbardziej kompleksową bazą danych takich projektów. To nie tylko lista linków, ale ustrukturyzowany katalog prowadzony przez społeczność od ponad dziesięciu lat.
Dlaczego jest to przydatne dla programistów
Dla twórców gier to repozytorium jest jak podręcznik anatomii. Jeśli piszesz własny silnik lub chcesz zrozumieć, jak zaimplementowano ekonomię w grach strategicznych takich jak Osadnicy lub fizykę w platformówkach, możesz znaleźć działające przykłady w C++, Pythonie, Rust, a nawet JavaScript.
Oprócz nauki, projekt jest przydatny dla osób, które chcą przyczynić się do Open Source, ale nie wiedzą, od czego zacząć. Baza danych zawiera setki gier: od prostych gier arcade po ogromne RPG-i, a wiele z nich stale potrzebuje pomocy przy naprawianiu błędów lub przenoszeniu na nowe platformy.
Jak zorganizowana jest baza danych
Autorzy projektu przyjęli dokładne podejście. Zamiast wrzucać wszystko do jednego masywnego README, używają plików YAML do przechowywania danych. Repozytorium ma dwa główne foldery:
originals— zawiera informacje o oryginalnych grach komercyjnych.games— zawiera opisy klonów i remake'ów z linkami do repozytoriów, oficjalnych stron i statusu rozwoju.
Ciekawe jest to, że projekt ma ścisły schemat walidacji danych przez schema/games.yaml. Zapewnia to, że w bazie danych nie ma uszkodzonych linków ani śmieci. Jeśli chcesz dodać grę, Twoje PR przejdzie automatyczne sprawdzenia przez GitHub Actions.
Co znajduje się w katalogu
Baza danych zawiera praktycznie wszystko:
- Silniki open source do uruchamiania oryginalnych zasobów (na przykład OpenMW dla Morrowinda lub OpenRA dla Command & Conquer).
- Pełne klony z własną grafiką i dźwiękiem.
- Dema techniczne prezentujące tylko część mechaniki.
Sortowanie jest alfabetyczne, ale jest wyjątek dla ScummVM. To ma sens: ScummVM hostuje tak wiele gier przygodowych, że po prostu zalałyby główną listę.
Jak uruchomić stronę projektu lokalnie
Jeśli nie czujesz się komfortowo czytając pliki YAML przez interfejs GitHuba, możesz wdrożyć projekt lokalnie. Używa poetry do zarządzania zależnościami i starego, dobrego make do budowania.
Dla entuzjastów konteneryzacji dostępny jest Docker. Procedura uruchomienia jest standardowa: najpierw budujesz obraz, a potem uruchamiasz serwer.
make docker-build
make docker-run PORT=3000
Po tym katalog będzie dostępny pod localhost:3000. W kontenerze działa statyczna strona wygenerowana z plików YAML.
Jak pomóc projektowi
Projekt opiera się na współpracownikach. Jeśli znasz świetny klon Diablo lub Dwarf Fortress, którego jeszcze nie ma na liście, autorzy sugerują dwie ścieżki: wypełnienie formularza na stronie internetowej lub utworzenie Issue z szablonu. Ale najlepszym sposobem dla programisty jest bezpośrednia edycja plików w folderach games lub originals i wysłanie Pull Requesta.
Przy okazji, projekt aktywnie uczestniczy w Hacktoberfest, więc to świetna okazja, aby zdobyć osiągnięcie do swojego profilu, robiąc coś pożytecznego.
Repozytorium osgameclones to skarbnica wiedzy dla miłośników gier retro, którzy chcą zagłębić się w ich kod. Sam projekt nie ma skomplikowanej architektury (to tylko generator statycznej strony w Pythonie), ale wartość treści rekompensuje wszystko.
Kto powinien zajrzeć:
- Początkujący projektanci i programiści gier do studiowania mechanik.
- Osoby szukające interesującego projektu Open Source, do którego mogą się przyczynić.
- Entuzjaści historii gier wideo.
Projekt nie próbuje "zabić" gier komercyjnych, ale pomaga zachować ich dziedzictwo poprzez open source. Miło jest widzieć, że baza danych jest aktualizowana od wielu lat.
Powiązane projekty