Problem powtarza się od lat, ale został udokumentowany w 2022 r pragnienie Dla warstwy abstrakcji sprzętu/oprogramowania SDL, powszechnej w grach wieloplatformowych, w celu zapewnienia interfejsu API dla abstrakcyjnego systemu plików. Wreszcie stało się to rzeczywistością dzięki dodaniu nowego interfejsu SDL_Storage dla SDL 3.0.
Simple Direct Media Layer (SDL) od lat odnosi ogromne sukcesy w wyodrębnianiu różnych podsystemów, od wideo po dane wejściowe, audio, wątki i inne, w celu pracy na różnych platformach. Ostatnio w SDL_Storage poczyniono wysiłki, aby ulepszyć podsumowanie interakcji w systemie plików. Oprócz wspomnianego powyżej narzędzia do śledzenia problemów, Ten bilet W zeszłym roku podsumowano pragnienia dotyczące API systemu plików SDL:
Okna. Problemem jest Windows.
– Windows chce, żebyś kombinował z ciągami UTF-16 dla ścieżek plików Unicode, a wszystko inne wymaga UTF-8.
– Windows chce, abyś używał interfejsów API Win32, a wszystko inne używa POSIX.
– Windows chce, abyś używał FILETIME (w przyrostach co 100 nanosekund od 1601), a wszystko inne używa POSIX (time_t, Unix Epoch).
– Windows chce, abyś używał „\\”, wszystko inne używa „https://www.phoronix.com/”
– Windows ma litery dysków, wszystko inne ma punkty montowania.
-Windows ma w dzisiejszych czasach powiązania symboliczne, jak zawsze ma to miejsce w przypadku wielu innych rzeczy. Ale niektóre rzeczy w ogóle tego nie robią!
SDL_Storage w końcu rozwiązuje ten problem i udostępnia bardziej popularne interfejsy API systemu plików, które działają w systemach Windows, Linux, macOS i różnych platformach konsolowych. Znany porter gier i programista FNA-XNA Ethan Lee podjął wyzwanie pracy nad SDL_Storage. Wyjaśniono w teraz wbudowanym kodzie SDL_Storage:
To właśnie miałem na myśli w odniesieniu do interfejsów API pamięci masowej; Istnieje wyraźna różnica pomiędzy adresem a pamięcią użytkownika, a to zakłada, że aplikacja w ogóle nie ma swobodnego dostępu do żadnych dysków. Korzystając z tego interfejsu API, możesz założyć, że kod systemu plików powinien działać w izolowanych środowiskach, w granicach rozsądku (tzn. nie mamy w tej chwili zadzierania z prawidłowymi/nieprawidłowymi regułami ścieżek).
Ma to istnieć pomiędzy używaniem prymitywnych interfejsów API systemu plików SDL_filesystem niskiego poziomu a korzystaniem z bibliotek systemu plików wyższego poziomu, takich jak PhysicsFS, które pozwalają na bardziej fantazyjne funkcje, takie jak domyślne formaty systemu plików i obsługa modyfikacji. W przypadku aplikacji, które wymagają jedynie odczytu danych nagłówka, odczytu/zapisu danych zapisu i niczego więcej, powinno to być idealne API.
…
Dołączona jest ogólna implementacja, a także kod pośredniczący dla aplikacji Steamworks, a interfejsy API SDL i SteamRemoteStorage są bardzo podobne, więc jest to zdecydowanie możliwe, wystarczy je napisać. Jest to jednak bardziej przydatne w przypadku konsol, które wymagają jawnego zamontowania systemów plików, aby wykonać tę pracę, ale ponieważ jest to umowa NDA, trudno uwzględnić ją w ramach tej oferty 🙁
Ta prośba o połączenie Dzisiaj uzyskałem dostęp do SDL Git, aby uzyskać wstępną obsługę SDL_Storage, która będzie teraz rozwijana w SDL 3.0.
„Lekarz gier. Fanatyk zombie. Studio muzyczne. Kawiarni ninja. Miłośnik telewizji. Miły fanatyk alkoholik.