هذا محاكي Steam الذي يحاكي ميزات Steam Online على LAN. إنه يعمل على كل من Linux و Windows. للحصول على readme حول كيفية استخدامه ، انظر: إصدار README
يمكنك استبدال API Steam .dll أو .SO مع MY (للاطلاع على خطوات كاملة ، انظر الإصدار ReadMe) ، وبعد ذلك يمكنك وضع Steam في القمامة ولعب ألعابك إما في لاعب واحد على LAN بدون Steam (على افتراض أن الألعاب لا تحتوي على DRM واستخدام Steam for Online).
إذا كنت مطورة في لعبة وترتكب خطأً في الاعتماد على API Steam وترغب في إصدار إصدار من لعبتك بدونها ولا ترغب في إعادة كتابة لعبتك ، فهذا مناسب لك. إنه مرخص LGPLV3+ ، لذا فإن رمز المصدر الوحيد الذي تحتاج إلى نشره هو الكود المصدري لهذا المحاكي (وفقط إذا قمت بإجراء تعديل عليه).
استبدل steam_api (64) .dll (libsteam_api.so على Linux) من اللعبة مع الألغام. بالنسبة لـ Linux ، تأكد من أنه إذا كانت واجهة برمجة التطبيقات الأصلية هي 32 بتات ، فأنت تستخدم بناء 32 بت وإذا كان 64 بتات تستخدم بناء 64 بت.
ضع ملف steam_appid.txt الذي يحتوي على AppId للعبة مباشرة بجانبه إذا لم يكن هناك واحد بالفعل.
إذا كانت لعبتك تحتوي على steam_api الأصلي (64) .dll أو libsteam_api.so أقدم من مايو 2016 (على Windows: Properties-> التوقيعات الرقمية-> الطابع الزمني) ، فقد تضطر إلى إضافة steam_interfaces.txt بجانب مكتبة المحاكي الخاصة بي إذا لم تكن اللعبة تعمل. يوجد برنامج نصي Linux لإنشاءه في مجلد البرامج النصية في هذا الريبو.
لمزيد من المعلومات ، راجع: إصدار ReadMe
يمكنك تنزيل أحدث بنيات GIT لـ Linux و Windows على موقع GitLab Pages والإصدارات المستقرة في قسم الإصدار من هذا الريبو.
أحد الأسباب التي جعلت هذا الرمز مفتوح المصدر هو أنني أريد المساهمات. ما لم يكن الرمز الخاص بك مرتبطًا بالأشياء التجريبية التي يحتاجها للعمل على كل من Linux و Windows. الحصول على سلوك دقيق أكثر أهمية من جعل الألعاب تعمل. قد يكون وجود سلوك غير دقيق إصلاح لعبة واحدة ولكنه سوف يكسر الآخرين.
#goldberg: matrix.org
التبعيات: protobuf-lite
قم بتثبيت protobuf-lite (حزمة DEV) و protoc (أو protobuf-compiler أو أي شيء يطلق عليه في توزيعاتك) باستخدام مدير الحزمة الخاص بك.
ثم افعل: make
وسيقوم ببناء بناء الإصدار (لا تنس إضافة شيء مثل -j8 إذا لم يكن جهاز الكمبيوتر الخاص بك قطعة من القرف وتريد أن تبنيها بسرعة لائقة).
لبناء بناء التصحيح: make debug
تمتص Makefile الخاصة بي ، لذا قد تحتاج إلى القيام بذلك: make clean إذا كنت ترغب في إنشاء بناء التصحيح بعد إنشاء بناء الإصدار أو العكس.
لبناء الإصدار الخاص بي ، أقوم بإنشاءه على Steamos باستخدام البرنامج النصي build_steamos.sh . من أجل العمل ، تحتاج إلى إصدار x86 من protobuf مثبت على: ../protobuf/prefix_x86/ وإصدار x64 مثبت على ../protobuf/prefix/
أول شيء يجب عليك فعله هو تثبيت Git لنظام التشغيل Windows. GIT لنظام التشغيل Windows
ثم قم بتثبيت أدوات بناء Visual Studio: أدوات بناء Microsoft (تأكد من تثبيت أدوات إنشاء C ++. فقط حدد C++ build tools في المثبت واضغط على تثبيت.)
قم بإنشاء مجلد جديد في مكان ما على جهاز الكمبيوتر الخاص بك.
اذهب في هذا المجلد ثم انقر بزر الماوس الأيمن فوق فتح موجه أوامر GIT. (انقر بزر الماوس الأيمن في المجلد-> باش git هنا)
قم بتشغيل الأوامر:
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
هذا يجب أن يبني وتثبيت جميع التبعيات واستنساخ الريبو. قد يستغرق بعض الأوامر مثل bootstrap-vcpkg.bat وتثبيت VCPKG بعض الوقت.
ثم لبناء الإصدار التجريبي التصحيح: build_win_debug_experimental.bat
لبناء إصدار الإصدار تشغيل: build_win_release.bat
إذا كنت ترغب لسبب ما في تعيين دلائل Protobuf على شيء مختلف ، يمكنك تحرير: build_set_protobuf_directories.bat
اذهب في مجلد Goldberg_emulator ثم انقر بزر الماوس الأيمن فوق فتح موجه أوامر GIT. (انقر بزر الماوس الأيمن في المجلد-> باش git هنا)
قم بتشغيل الأمر:
git pull
يتم تضمين الأهداف التالية في تكوين CMake لهذا المشروع:
في حين يتم تضمين جميع الأهداف لجميع المتغيرات المنصات/البناء ، هناك بضع نقاط للملاحظة:
يتضمن تكوين CMake لهذا المشروع أيضًا تثبيت دعم. سيؤدي تثبيت المشروع إلى مجموعة أنظف من ملفات الإخراج (من ملفات الإنشاء الخام) وسيقوم بنسخها عبر READMES والأدوات وملفات الدعم الأخرى من دليل المشاريع. هذا التثبيت منظم على النحو التالي:
+ 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-staticيتضمن هذا الريبو ملف cmakesettings.json يحتوي على تكوينات للمنصات المستهدفة التالية وإنشاء المتغيرات:
يجب تحميل هذه التكوينات تلقائيًا عند فتح مجلد Goldberg_emulator في Visual Studio. لمزيد من المعلومات حول كيفية استخدام هذه التكوينات (ومشروع Cmake في Visual Studio بشكل عام) ، يرجى الاطلاع على: https://docs.microsoft.com/en-us/cpp/build/cmake-projects-
سيتم إخراج 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 EG
cmake .. -DVCPKG_TARGET_TRIPLET:STRING="x64-windows-static" -DCMAKE_TOOLCHAIN_FILE:STRING="..vcpkgscriptsbuildsystemsvcpkg.cmake" -DEMU_EXPERIMENTAL_BUILD:BOOL=ON
لبناء تكوين cmake تم إنشاؤه مع النينجا:
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"
إذا كنت لا ترغب في إعداد دليل التثبيت مسبقًا أثناء خطوة التوليد ، فيمكنك أيضًا استخدام أداة إنشاء أو كتابًا محددًا لنظام التشغيل ، بعض الأمثلة على ذلك:
nmake install prefix="<Custom Installation Directory>"make DESTDIR="<Custom Installation Directory>" install أعتقد أن الطريقة التي يكون بها محاكيات البخار الأخرى لديها INI عندما تقوم بتعيين كل شيء على إعداد اللعبة أمر غبي. الأشياء الوحيدة التي يجب تعيينها على إعداد كل لعبة هي الأشياء الخاصة بتلك اللعبة مثل AppID و DLC و MODS وإصدارات الواجهة ، إلخ ...
يجب تعيين الباقي مثل اسمك في مكان عالمي لأنني لا أحب الاضطرار إلى ضبط كل اسم سخيف للجميع في INI لكل لعبة أسسها إلى الأشخاص عندما أرغب في نسخ ألعابهم للعب على LAN.
تم تصنيع الاتحاد الأوروبي بطريقة يمكنك فقط تثبيتها على لعبة ثم نسخ اللعبة إلى الناس وليس عليهم تغيير أي شيء.
أوافق على أن حقيقة أن لدي ملفات متعددة قد تكون غبية لكنها في الواقع ليست كذلك. نظام الملفات الخاص بك هو قاعدة بيانات ، فلماذا يجب عليك تكرار ذلك عن طريق إنشاء ملف تكوين واحد عندما يمكنك الحصول على الكثير فقط. من الأسهل بكثير إدارة الترميز الحكيمة.
لا يوجد فرق في الوظيفة بين إصدار Windows العادي وإصدار Linux. يحتوي Windows على بناء تجريبي يحتوي على ميزات لا معنى لها إلا على Windows.
اقرأ هذا إذا كنت تريد أن تعرف ما هو عليه: README التجريبي
إنه غير قانوني مثل النبيذ أو أي محاكي وحدة التحكم في HLE. كل هذا يفعل هو إزالة التبعية البخارية من ألعاب Steam الخاصة بك.
لا يكسر أي DRM. إذا كانت اللعبة تحتوي على حماية لا تتيح لك استخدام API Steam API مخصص ، فيجب تصدعها قبل استخدام المحاكي الخاص بي. البخار هو DRM بقدر أي واجهة برمجة تطبيقات هو DRM. يحتوي Steam على DRM الفعلي يسمى SteamStub والذي يمكن تصدعه بسهولة ولكن هذا لن يكسره لك.
لا ، لا يهمني جعل هذه الألعاب تعمل لأنها تستخدم واجهات برمجة التطبيقات مثل منسق اللعبة الذي لا يستخدمه أي لعبة أخرى. أيضا الصمام يستمر في تغييرها.
ومع ذلك ، إذا كان شخص آخر يضيع وقته لجعلهم يعملون وسأقوم بدمج عمله بسعادة.