นี่คือเครื่องจำลองไอน้ำที่จำลองคุณสมบัติออนไลน์ของ Steam บน LAN มันใช้งานได้ทั้ง Linux และ Windows สำหรับ readme เกี่ยวกับวิธีการใช้มันดู: readme release
คุณแทนที่ Steam API .DLL หรือ. ดังนั้นด้วยของฉัน (สำหรับขั้นตอนที่สมบูรณ์ให้ดู ReadMe Release) จากนั้นคุณสามารถใส่ Steam ในถังขยะและเล่นเกมของคุณในผู้เล่นเดี่ยวบน LAN โดยไม่ต้องใช้ Steam (สมมติว่าเกมไม่มี DRM และใช้ Steam สำหรับออนไลน์)
หากคุณเป็นนักพัฒนาเกมและทำผิดพลาดขึ้นอยู่กับ API Steam มากเกินไปและต้องการเปิดตัวเกมเวอร์ชันของคุณโดยไม่ต้องใช้และไม่ต้องการเขียนเกมของคุณใหม่นี่คือสำหรับคุณ มันเป็น LGPLV3+ ที่ได้รับอนุญาตดังนั้นซอร์สโค้ดเดียวที่คุณต้องเผยแพร่คือซอร์สโค้ดของอีมูเลเตอร์นี้ (และเฉพาะในกรณีที่คุณทำการดัดแปลง)
แทนที่ steam_api (64) .dll (libsteam_api.so บน linux) จากเกมด้วยของฉัน สำหรับ Linux ตรวจสอบให้แน่ใจว่าหาก API ดั้งเดิมคือ 32 บิตคุณใช้บิวด์ 32 บิตและถ้าเป็น 64 บิตคุณจะใช้บิวต์ 64 บิต
ใส่ไฟล์ steam_appid.txt ที่มี appid ของเกมอยู่ข้างๆหากไม่มีไฟล์ใด
หากเกมของคุณมี steam_api ดั้งเดิม (64) .dll หรือ libsteam_api.o เก่ากว่าพฤษภาคม 2016 (บน windows: properties-> ลายเซ็นดิจิตอล-> timestamp) คุณอาจต้องเพิ่ม Steam_interfaces.txt ข้างห้องสมุด Emulator ของฉันหากเกมไม่ทำงาน มีสคริปต์ Linux ที่จะสร้างในโฟลเดอร์สคริปต์ของ repo นี้
สำหรับข้อมูลเพิ่มเติมโปรดดู: Readme Release
คุณสามารถดาวน์โหลด Git Builds ล่าสุดสำหรับ Linux และ Windows บนเว็บไซต์ Gitlab Pages และการเปิดตัวที่เสถียรในส่วนการเปิดตัวของ repo นี้
หนึ่งในเหตุผลที่ฉันทำรหัสโอเพ่นซอร์สนี้เป็นเพราะฉันต้องการมีส่วนร่วม เว้นแต่รหัสของคุณจะเกี่ยวข้องกับสิ่งที่ต้องทดลองที่จำเป็นในการทำงานกับทั้ง Linux และ Windows การมีพฤติกรรมที่แม่นยำนั้นสำคัญกว่าการทำให้เกมทำงาน การมีพฤติกรรมที่ไม่ถูกต้องอาจแก้ไขเกมได้หนึ่งเกม แต่มันจะทำให้เกมอื่นแตก
#goldberg: matrix.org
การพึ่งพา: protobuf-lite
ติดตั้ง protobuf-lite (แพ็คเกจ dev) และ protoc (หรือ protobuf-compiler หรืออะไรก็ตามที่เรียกว่าใน distro ของคุณ) โดยใช้ตัวจัดการแพ็คเกจของคุณ
แล้วทำ: make
และมันจะสร้างการสร้างการเปิดตัว (อย่าลืมที่จะเพิ่มบางอย่างเช่น -j8 ถ้าคอมพิวเตอร์ของคุณไม่ใช่ชิ้นส่วนของอึและคุณต้องการให้มันสร้างด้วยความเร็วที่เหมาะสม)
เพื่อสร้าง Build Debug: make debug
makefile ของฉันดูดดังนั้นคุณอาจต้องทำ: make clean ถ้าคุณต้องการสร้างบิลด์ดีบั๊กหลังจากสร้างการสร้างรุ่นหรือตรงกันข้าม
สำหรับการสร้างรุ่นของฉันฉันสร้างมันบน SteamOS โดยใช้สคริปต์ build_steamos.sh สำหรับการทำงานคุณต้องใช้ protobuf เวอร์ชัน x86 ที่ติดตั้งเป็น: ../protobuf/prefix_x86/ และเวอร์ชัน x64 ที่ติดตั้งเป็น: ../protobuf/prefix/
สิ่งแรกที่คุณควรทำคือติดตั้ง Git สำหรับ Windows git สำหรับ windows
จากนั้นติดตั้งเครื่องมือสร้าง Visual Studio: Microsoft Build Tools (ตรวจสอบให้แน่ใจว่าคุณติดตั้งเครื่องมือสร้าง C ++ เพียงเลือก C++ build tools ในตัวติดตั้งและกดติดตั้ง)
สร้างโฟลเดอร์ใหม่บนคอมพิวเตอร์ของคุณ
ไปในโฟลเดอร์นั้นแล้วคลิกขวาเปิดพรอมต์คำสั่ง GIT (คลิกขวาในโฟลเดอร์-> git bash ที่นี่)
เรียกใช้คำสั่ง:
git clone https://github.com/Microsoft/vcpkg
cd vcpkg
./bootstrap-vcpkg.bat
./vcpkg install protobuf --triplet x86-windows-static
./vcpkg install protobuf --triplet x64-windows-static
cd ..
git clone https://gitlab.com/Mr_Goldberg/goldberg_emulator.git
cd goldberg_emulator
สิ่งนี้ควรสร้างและติดตั้งการพึ่งพาทั้งหมดและโคลน repo คำสั่งบางอย่างเช่นการติดตั้ง bootstrap-vcpkg.bat และ vcpkg อาจใช้เวลาสักครู่
จากนั้นเพื่อสร้างเวอร์ชันทดลองดีบั๊กรัน: build_win_debug_experimental.bat
ในการสร้างเวอร์ชันรีลีสรัน: build_win_release.bat
หากด้วยเหตุผลบางอย่างคุณต้องการตั้งค่าไดเรกทอรี protobuf เป็นสิ่งที่แตกต่างคุณสามารถแก้ไข: build_set_protobuf_directories.bat
ไปในโฟลเดอร์ goldberg_emulator จากนั้นคลิกขวาเปิดพรอมต์คำสั่ง GIT (คลิกขวาในโฟลเดอร์-> git bash ที่นี่)
เรียกใช้คำสั่ง:
git pull
เป้าหมายต่อไปนี้รวมอยู่กับการกำหนดค่า CMAKE สำหรับโครงการนี้:
ในขณะที่เป้าหมายทั้งหมดรวมอยู่ในแพลตฟอร์ม/ตัวแปรทั้งหมด แต่ก็มีสองสามคะแนนที่ควรทราบ:
การกำหนดค่า CMAKE สำหรับโครงการนี้ยังรวมถึงการสนับสนุนการติดตั้ง การติดตั้งโครงการจะส่งผลให้ชุดเอาท์พุทชุดสะอาด (กว่าไฟล์บิลด์ดิบ) และจะคัดลอกผ่านตัวอ่านเครื่องมือและไฟล์สนับสนุนอื่น ๆ ที่เหมาะสมจากไดเรกทอรีโครงการ การติดตั้งนี้มีโครงสร้างดังนี้:
+ install-folder
|- (lib)steam_api(64).[dll|so]
|- (lib)steamclient(64).[dll|so]
|- (lib)steamnetworkingsockets(64).[dll|so]
|- Readme_release.txt
|- Readme_debug.txt // Only for debug build's
|- Readme_experimental.txt // Only for experimental build's
|- steam_appid.EDIT_AND_RENAME.txt
|- steam_interfaces.EXAMPLE.txt
|+ lobby_connect
|- lobby_connect(64)(.exe)
|- Readme_lobby_connect.txt
|+ tools
|- generate_interfaces(64)(.exe)
|- find_interfaces.ps1
|- find_interfaces.sh
|- Readme_generate_interfaces.txt
|+ steam_settings.EXAMPLE
|- ... // steam_settings example files
โปรดทราบว่าหากไม่มีการกำหนด CMAKE_INSTALL_PREFIX จะถูกตั้งค่าสำหรับการสร้าง CMAKE (หรือวิธีการอื่นในการตั้งค่าไดเรกทอรีการติดตั้งที่กำหนดเอง) จะใช้ไดเรกทอรีการติดตั้งเฉพาะระบบปฏิบัติการเริ่มต้น
c:/Program Files/${PROJECT_NAME}/usr/localโปรดดูส่วน 'เปลี่ยนไดเรกทอรีการติดตั้ง' ของ ReadMe นี้สำหรับข้อมูลเพิ่มเติม
+ some-top-level-folder
|- vcpkg
|- goldberg_emulator
bootstrap-vcpkg.bat จากโฟลเดอร์การติดตั้งvcpkg install protobuf --triplet x64-windows-static && vcpkg install protobuf --triplet x86-windows-staticrepo นี้รวมไฟล์ cmakesettings.json ซึ่งมีการกำหนดค่าสำหรับแพลตฟอร์มเป้าหมายต่อไปนี้และสร้างตัวแปร:
การกำหนดค่าเหล่านี้ควรโหลดโดยอัตโนมัติเมื่อเปิดโฟลเดอร์ Goldberg_emulator ใน Visual Studio สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการใช้การกำหนดค่าเหล่านี้ (และโครงการ CMake ใน Visual Studio โดยทั่วไป) โปรดดู: https://docs.microsoft.com/en-us/cpp/build/cmake-projects-in-visual-studio?view=vs-2019
Visual Studio สร้างสำหรับการกำหนดค่า Windows และ WSL จากจะถูกส่งไปยังโฟลเดอร์ต่อไปนี้: ${projectDir}out${workspaceHash}build<configuration name>
คุณยังสามารถเลือกที่จะติดตั้งโดยตรงจาก Visual Studio Visual Studio ติดตั้งสำหรับการกำหนดค่า Windows จากจะถูกส่งไปยังโฟลเดอร์ต่อไปนี้: ${projectDir}outinstall<configuration name>
ในขณะที่ใช้การกำหนดค่าเหล่านี้มีสองจุดที่ควรทราบ:
call "<Path to Microsoft Visual Studio Installation Folder>2019VCAuxiliaryBuildvcvars64.bat"
cd "<build folder>"
cmake "<goldberg_emulator src folder>" -DVCPKG_TARGET_TRIPLET:STRING="x64-windows-static" -DCMAKE_TOOLCHAIN_FILE:STRING="<vcpkg installation folder>scriptsbuildsystemsvcpkg.cmake"
โปรดทราบว่าหากคุณใช้เครื่องมือสร้างสำหรับ Visual Studio 2019 เส้นทางไปยัง VCVARS64.bat นั้นแตกต่างกันเล็กน้อย:
call "<Path to Build Tools for Visual Studio 2019 Installation Folder>2019BuildToolsVCAuxiliaryBuildvcvars64.bat"
call "<Path to Microsoft Visual Studio Installation Folder>2019VCAuxiliaryBuildvcvars64.bat"
cd "<build folder>"
nmake
call "<Path to Microsoft Visual Studio Installation Folder>2019VCAuxiliaryBuildvcvars64.bat"
cd "<build folder>"
nmake install
call "<Path to Microsoft Visual Studio Installation Folder>2019VCAuxiliaryBuildvcvars86.bat"
cd "<build folder>"
cmake "<goldberg_emulator src folder>" -DVCPKG_TARGET_TRIPLET:STRING="x86-windows-static" -DCMAKE_TOOLCHAIN_FILE:STRING="<vcpkg installation folder>scriptsbuildsystemsvcpkg.cmake"
โปรดทราบว่าหากคุณใช้เครื่องมือสร้างสำหรับ Visual Studio 2019 เส้นทางไปยัง VCVARS86.BAT นั้นแตกต่างกันเล็กน้อย:
call "<Path to Build Tools for Visual Studio 2019 Installation Folder>2019BuildToolsVCAuxiliaryBuildvcvars86.bat"
call "<Path to Microsoft Visual Studio Installation Folder>2019VCAuxiliaryBuildvcvars86.bat"
cd "<build folder>"
nmake
call "<Path to Microsoft Visual Studio Installation Folder>2019VCAuxiliaryBuildvcvars86.bat"
cd "<build folder>"
nmake install
sudo apt install build-essential )sudo apt install cmake )sudo apt install libprotobuf-dev protobuf-compiler ) cd "<build folder>"
cmake "<goldberg_emulator src folder>"
cd "<build folder>"
make
cd "<build folder>"
make install
หากต้องการตั้ง -G "<Generator Name>" เครื่องกำเนิด
cmake .. -G "Ninja" -DVCPKG_TARGET_TRIPLET:STRING="x64-windows-static" -DCMAKE_TOOLCHAIN_FILE:STRING="..vcpkgscriptsbuildsystemsvcpkg.cmake"
หากต้องการตั้งค่าประเภทการสร้างต่อท้าย -DCMAKE_BUILD_TYPE:STRING="<Build Type>" เช่น
cmake .. -DVCPKG_TARGET_TRIPLET:STRING="x64-windows-static" -DCMAKE_TOOLCHAIN_FILE:STRING="..vcpkgscriptsbuildsystemsvcpkg.cmake" -DCMAKE_BUILD_TYPE:STRING="RelWithDebInfo"
หากต้องการตั้งค่าการสร้างการทดลองต่อท้าย -DEMU_EXPERIMENTAL_BUILD:BOOL=ON เช่น
cmake .. -DVCPKG_TARGET_TRIPLET:STRING="x64-windows-static" -DCMAKE_TOOLCHAIN_FILE:STRING="..vcpkgscriptsbuildsystemsvcpkg.cmake" -DEMU_EXPERIMENTAL_BUILD:BOOL=ON
เพื่อสร้าง cmake config ที่สร้างด้วยนินจา:
cd "<build folder>"
ninja
หากต้องการใช้ทิศทางการติดตั้งที่กำหนดเองต่อท้าย -DCMAKE_INSTALL_PREFIX:STRING="<Custom Installation Directory>" เช่น
cmake .. -DCMAKE_INSTALL_PREFIX:STRING="./install/" -DVCPKG_TARGET_TRIPLET:STRING="x64-windows-static" -DCMAKE_TOOLCHAIN_FILE:STRING="..vcpkgscriptsbuildsystemsvcpkg.cmake" -DCMAKE_BUILD_TYPE:STRING="RelWithDebInfo"
หากคุณไม่ต้องการที่จะตั้งค่าไดเรกทอรีการติดตั้งในระหว่างขั้นตอนการสร้างคุณยังสามารถใช้เครื่องมือสร้างหรือการเขียนทับเฉพาะ OS ตัวอย่างบางส่วนของสิ่งนี้คือ:
nmake install prefix="<Custom Installation Directory>"make DESTDIR="<Custom Installation Directory>" install ฉันคิดว่าวิธีที่ Emulators Steam อื่น ๆ มี Ini เมื่อคุณตั้งค่าทุกอย่างในการตั้งค่าต่อเกมเป็นใบ้ สิ่งเดียวที่ควรตั้งค่าในการตั้งค่าต่อเกมคือสิ่งที่เฉพาะเจาะจงสำหรับเกมนั้นเช่น AppID, DLC, Mods, อินเตอร์เฟสเวอร์ชัน ฯลฯ ...
ส่วนที่เหลือเหมือนชื่อของคุณควรตั้งไว้ในสถานที่ระดับโลกเพราะฉันไม่ต้องการตั้งชื่อทุกคนในทุกคนใน Ini สำหรับทุกเกมที่ฉันคัดลอกไปยังผู้คนเมื่อฉันต้องการคัดลอกเกมเพื่อเล่นบน LAN ของฉัน
EMU ของฉันทำในแบบที่คุณสามารถติดตั้งในเกมแล้วคัดลอกเกมให้กับผู้คนและพวกเขาไม่ต้องเปลี่ยนแปลงอะไรเลย
ฉันยอมรับว่าความจริงที่ว่าฉันมีหลายไฟล์อาจเป็นใบ้ แต่จริงๆแล้วมันไม่ใช่ ระบบไฟล์ของคุณเป็นฐานข้อมูลดังนั้นทำไมคุณต้องทำซ้ำโดยทำไฟล์กำหนดค่าหนึ่งไฟล์เมื่อคุณมีจำนวนมาก มันง่ายกว่ามากในการจัดการการเข้ารหัสที่ชาญฉลาด
ไม่มีความแตกต่างในฟังก์ชันการทำงานระหว่างเวอร์ชัน Windows ปกติและเวอร์ชัน Linux Windows มีงานสร้างการทดลองซึ่งมีคุณสมบัติที่เหมาะสมกับ Windows เท่านั้น
อ่านสิ่งนี้หากคุณต้องการทราบว่ามันคืออะไร: readme ทดลอง
มันผิดกฎหมายเช่นไวน์หรือเครื่องจำลองคอนโซล HLE ใด ๆ ทั้งหมดนี้คือลบการพึ่งพาไอน้ำออกจากเกมไอน้ำของคุณ
มันไม่ทำลาย DRM ใด ๆ หากเกมมีการป้องกันที่ไม่อนุญาตให้คุณใช้ไอน้ำ API DLL ที่กำหนดเองมันจะต้องแตกก่อนที่คุณจะใช้เครื่องจำลองของฉัน Steam เป็น DRM มากเท่ากับ API ใด ๆ ที่เป็น DRM Steam มี DRM จริงที่เรียกว่า Steamstub ซึ่งสามารถแตกได้ง่าย แต่สิ่งนี้จะไม่แตกสำหรับคุณ
ไม่ฉันไม่สนใจที่จะทำให้เกมเหล่านี้ทำงานได้เพราะพวกเขาใช้ APIs เหมือนผู้ประสานงานเกมที่ไม่มีเกมอื่นใช้ วาล์วยังคงเปลี่ยนพวกเขา
อย่างไรก็ตามหากมีคนอื่นเสียเวลาในการให้พวกเขาทำงานและฉันจะรวมงานของพวกเขาอย่างมีความสุข