Blog (107)
Komentarze (2.3k)
Recenzje (0)
@webnullSTEAM - co z wersją dla Linuksa?

STEAM - co z wersją dla Linuksa?

11.02.2011 23:39, aktualizacja: 14.02.2011 12:39

Witam, postaram się nie rozpisać za bardzo (wiem, że nie każdy lubi zbyt długie teksty), a jednocześnie opowiedzieć jak to było z tym STEAMem dla Linuksa.

378585

Oferta pracy

Wszystko zaczęło się od oferty pracy na stanowisko Senior Software Engineer w którym jednym z zadań było tworzenie Linuksowego portu gier napisanych dla Windows.

Link do oferty: http://www.valvesoftware.com/job-SenSoftEngineer.html

Archiwalnie zrzut ekranu: http://img145.imageshack.us/img145/3649/valvesoftwareengineer.png

Pojawiło się pełno teorii jako, że Valve Software zamierza wydać oficjalnego klienta jednej z największych platform do grania - STEAM.

Przeportowanie STEAM dla MacOSX

MacOSX tak samo jak systemy oparte o Linuksa używają X11 oraz OpenGL dlatego sprawa z tymi dwoma rzeczami już jest załatwiona, co jeszcze stanęło na drodze portu dla Linuksa?

Oto lista podobieństw oraz głównych różnic tych dwóch systemów:


- Inna biblioteka graficzna (GTK/QT dla Linuksa, "Cocoa/Carbon?" dla MacOSX)
- Inne jądro
- Inny domyślny podsystem graficzny w MacOSX
+ Ten sam podsystem wyświetlania grafiki 3D, mowa o OpenGL
+ Obydwa systemy są Uniksopodobne, podobne założenia, "wszystko jest plikiem"
+ To samo środowisko skryptowe czyli bash jako domyślna powłoka stąd jeden launcher dla dwóch systemów

Jednym z ważnych dowodów na to, że Valve "po cichu" tworzy klienta dla Linuksa był kod skryptu uruchamiającego STEAM dla MacOSX napisany w bashu.


#!/bin/bash

# figure out the absolute path to the script being run a bit
# non-obvious, the ${0%/*} pulls the path out of $0, cd's into the
# specified directory, then uses $PWD to figure out where that
# directory lives - and all this in a subshell, so we don't affect
# $PWD

STEAMROOT=$(cd "${0%/*}" && echo $PWD)

#determine platform
UNAME=`uname`
if [ "$UNAME" == "Darwin" ]; then
   PLATFORM=osx32
   # prepend our lib path to LD_LIBRARY_PATH
   export DYLD_LIBRARY_PATH="${STEAMROOT}"/${PLATFORM}:$DYLD_LIBRARY_PATH
elif [ "$UNAME" == "Linux" ]; then
   PLATFORM=linux32
   # prepend our lib path to LD_LIBRARY_PATH
   export LD_LIBRARY_PATH="${STEAMROOT}"/${PLATFORM}:$LD_LIBRARY_PATH
fi

if [ -z $STEAMEXE ]; then
  STEAMEXE=steam
fi

ulimit -n 2048

# and launch steam
cd "$STEAMROOT"

STATUS=42
while [ $STATUS -eq 42 ]; do
        ${DEBUGGER} "${STEAMROOT}"/${PLATFORM}/${STEAMEXE} $@
        STATUS=$?
        # are we running osx?
        if [ $STATUS -eq 42 -a ${PLATFORM} == "osx32" -a -f Info.plist ]; then
                # are we running from in a bundle?
                exec open "${STEAMROOT}"/../..
        fi
done
exit $STATUS

Powyższy kod jest jednoznacznym dowodem na to, że STEAM był testowany pod Linuksem a także, że Linux jest platformą wpisaną w planach tak jak MacOSX.

Wczesne wersje plików binarnych skompilowanych dla Linuksa

Przez bardzo krótki okres czasu były publicznie dostępne pliki binarne klienta STEAM dla Linuksa pod tym adresem, sam zdążyłem je pobrać pamiętam, że miałem te pliki na pendrive lecz aktualnie już ich nie posiadam dlatego nie jestem w stanie udostępnić ;‑)

Wyjście w konsoli klienta STEAM:

yjwong@yjwong-laptop:~/Documents/steam$ ./steam.sh 
[  0%] !!! Fatal Error: Failed to determine download location for universe 0
[----] Verifying installation...
[  0%] Downloading Update...
[  0%] !!! Fatal Error: Failed to determine download location for universe 0
unlinked 0 orphaned pipes
CellID: Fetching server list from CSDS. . .
CellID: CSDS returned 168 servers.
CellID: Connecting to 62.118.240.140:27031. . .
CellID: Connect to 62.118.240.140:27031 took 524 MS
CellID: New Best!
CellID: Connecting to 209.197.6.226:27031. . .
Shutting down. . .
CellID: Connect to 209.197.6.226:27031 took 326 MS
CellID: New Best!
CellID: Connecting to 203.77.185.186:27031. . .
CellID: Connect to 203.77.185.186:27031 took 286 MS
CellID: New Best!
CellID: Connecting to 69.28.153.109:27031. . .
CellID: Connect to 69.28.153.109:27031 took 380 MS
CellID: Connecting to 79.141.161.2:27031. . .
CellID: exiting!
unlinked 2 orphaned pipes
CAsyncIOManager: 0 threads terminating.  0 reads, 0 writes, 0 deferrals.
CAsyncIOManager: 1657 single object sleeps, 0 multi object sleeps
CAsyncIOManager: 0 single object alertable sleeps, 1 multi object alertable sleeps
yjwong@yjwong-laptop:~/Documents/steam$

Warto zauważyć, że na wyjściu z konsoli nie ma charakterystycznych dla Wine wpisów.

Lecz abyście Mi uwierzyli pokażę zrzuty ekranu czy nawet film wideo w którym widać proces uruchamiania STEAM dla Linuksa.

378604

@edycja 14.02.2011: Dodaję także kilka ważniejszych zrzutów ekranu które pominąłem: Główne okno STEAM Okno nowości Wbudowany czat

Źródła: http://www.phoronix.com/scan.php?page=news_item&px=ODIzMA http://www.phoronix.com/scan.php?page=news_item&px=ODIyOQ

http://www.youtube.com/watch?v=VPWEX23osn0

Drukowalne ciągi znaków odnalezione w kliencie beta dla MacOSX

Przy pomocy narzędzia strings odnaleziono ciągi "Linux" w becie klienta dla MacOSX:

ReadToken overflow 
WIN32 
VISTA 
WIN7
POSIX 
LINUX 
X360 
Assertion Failed: kv

windows 
macos 
linux 
unknown 
macos104 
macos1058 
macos106 
linux22 
linux24 
linux26

Co oznacza, że zapewne w kodzie znajdują się pewnego rodzaju instrukcje być może dla kompilatora pokazujące który kod jest przeznaczony dla jakiego systemu(mało prawdopodobne?) bądź dla statystyk popularności danego systemu wśród użytkowników STEAM.

Odnośnie windowsowej wersji klienta nie znaleziono już tego co pod MacOSX, wyniki bardziej wskazują na hlds, lecz jest jedna wzmianka o kliencie:

webnull@webnull-gentoo-desktop /media/Disk/Gry/STEAM $ strings Steam.exe |grep ux
9uxr
uxWP
ux9u
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\auxdata.cpp
german-luxembourg
french-luxembourg
Bad eCurrentLinuxClientVersion field in CClientConfigRecord
Bad eCurrentLinuxHldsUpdateToolVersion field in CClientConfigRecord
Bad eBetaLinuxHldsUpdateToolVersion field in CClientConfigRecord
Empty eBetaLinuxHldsUpdateToolPassword in CClientConfigRecord
Luxembourg
uxyKNOGJKHKK|

Z tego co widać, że jest wersja klienta Linuksowego (STEAM?) oraz wersja klienta Linuksowego serwera dedykowanego (HLDS - bądź jego aktualizatora?).

Gry w sklepie STEAM dostępne dla platformy Linux

W sklepie STEAM pojawiły się gry które w minimalnych wymaganiach sprzętowych miały podanego Linuksa obok Windowsa i MacOSX - a to dziwne, Valve nie dopuściło by czegoś takiego skoro STEAM nie byłby dla Linuksa przecież nie można okłamywać potencjalnych klientów.

378617

Oficjalna informacja od producenta

There's no Linux version that we're working on right now.

to słowa wypowiedziane przez przedstawiciela Valve Douga Lombardiego, oznaczają one, że nie ma aktualnie w planie żadnej wersji STEAM dla Linuksa nad którą by teraz Valve pracowało.

Oczywiście publiczna wypowiedź przedstawiciela Valve nie oznacza, że klienta Linuksowego nie ma w planach.

Osobiście jestem przekonany, że Valve przynajmniej zamierzało wydać klienta STEAM dla Linuksa - czym może być spowodowana nagła zmiana?

Może Valve specjalnie skłamało aby pozytywnie zaskoczyć społeczność?

Co jeżeli ktoś podłożył te wszystkie dowody? (najmniej prawdopodobne - pliki klienta były dostępne na serwerach oficjalnych platformy STEAM, sam pobrałem te pliki kiedyś - szkoda, że do dziś ich nie posiadam).

Pamiętam kiedyś jak pobierałem pliki binarne klienta Linuksowego to dostępne były także pliki binarne klienta Windowsowego i tego dla MacOSX.

Przykładem dawniej to było: http://store.steampowered.com/public/client/steam_client_linux # 403 (zablokowano) http://store.steampowered.com/public/client/steam_client_windows # 404 (brak) http://store.steampowered.com/public/client/steam_client_macosx # 404 (brak)

Dziwnym trafem akurat katalog steam_client_linux zablokowano, a pozostałe nie istnieją - zostały skasowane. Jakby Valve coś ukrywało w tym jednym katalogu.

@edycja - 12.02.2011 Być może to nie były plotki, a większa firma jak Microsoft opłaciła wycofanie się Valve z tworzenia klienta dla konkurencyjnego systemu operacyjnego?

To jest całkowicie możliwe ponieważ natywny klient mógłby spowodować nagły wzrost popularności Linuksa, bardzo znaczący wzrost...

Zapraszam do udziału w dyskusji na temat STEAMa.

Wybrane dla Ciebie
Komentarze (89)