منصوبے کے بارے میں
# Stellaris، Factorio اور دیگر کے لیے LargePageInjectorMods
## تعارف
LargePageInjectorMods میں خوش آمدید! یہ موڈ Stellaris یا دیگر گیمز/ایپلیکیشنز کی میموری مینجمنٹ کو بہتر بنا کر ان کی کارکردگی میں نمایاں اضافہ کرتا ہے۔
دیگر گیمز/ایپلیکیشنز کے لیے سپورٹ انتہائی تجرباتی اور غیر آزمودہ ہے اور شاید کام نہ کرے۔
### میموری Allocator کیا ہے؟
میموری allocator ایک سافٹ ویئر جزو ہے جو پروگرام کے عمل کے دوران میموری کی تقسیم اور واپسی کا ذمہ دار ہوتا ہے۔ Stellaris یا Factorio جیسے گیمز میں موثر میموری allocation انتہائی اہم ہے، کیونکہ اس سے کارکردگی ہموار ہوتی ہے۔ اس موڈ میں متعارف کرائے گئے زیادہ موثر allocator کو استعمال کرنے سے گیم کی کارکردگی میں واضح بہتری آ سکتی ہے۔
### mimalloc کیوں؟
Microsoft کی تیار کردہ `mimalloc` ایک جدید میموری allocator ہے جو عام طور پر رفتار اور میموری fragmentation کی کارکردگی میں معیاری allocators سے بہتر ہوتا ہے۔ اس موڈ کے ذریعے Stellaris، Factorio یا دیگر گیمز/ایپلیکیشنز میں `mimalloc` شامل کرنے سے گیم کو تیز میموری آپریشنز کا فائدہ ملتا ہے، جس سے مجموعی کارکردگی بہتر ہوتی ہے۔ [mimalloc GitHub](https://github.com/microsoft/mimalloc)
### DLL Injection کے بارے میں
DLL (Dynamic Link Library) injection ایک طریقہ ہے جس میں کسی دوسرے process کے address space میں کوڈ چلانے کے لیے اسے ایک dynamic-link library لوڈ کرنے پر مجبور کیا جاتا ہے۔ LargePageInjectorMods میں ہم DLL injection استعمال کرتے ہیں تاکہ گیم کی executable فائلوں میں تبدیلی کیے بغیر Stellaris کے ڈیفالٹ میموری allocator کو `mimalloc` سے آسانی سے بدلا جا سکے۔
## کارکردگی میں اضافہ
LargePageInjectorMods کافی حد تک کارکردگی بڑھا سکتا ہے (کارکردگی صرف Stellaris کے لیے آزمائی گئی ہے):
- **معیاری کارکردگی میں اضافہ**: 4-5% کا معمولی اضافہ، حالات کے مطابق یہ مکمل طور پر نہ ہونے کے برابر یا کافی زیادہ ہو سکتا ہے۔
- **Large Pages کے ساتھ بہتر کارکردگی**: جب Large Pages فعال ہوں تو یہ موڈ 5-80%+ کارکردگی میں اضافہ دے سکتا ہے۔
- Ryzen 7800X3D کے ساتھ Factorio کا بینچ مارک نتیجہ:
- Large Page Injector Mods کے بغیر [Factoriobox](https://factoriobox.1au.us/result/6ca27dcc-14a9-4484-8d2a-7d6da622462f): 46 UPS
- Large Page Injector Mods اور Large Pages کے ساتھ [Factoriobox](https://factoriobox.1au.us/result/919e6097-5c70-4092-8ecb-4c1ea8cbba1a): 54 UPS
- براہ کرم نوٹ کریں کہ کارکردگی میں اضافہ آپ کی save (گیم میں جتنا آگے بڑھیں گے اور save جتنا بھاری ہوگا، اضافہ اتنا ہی زیادہ ہونا چاہیے)، آپ کے ہارڈویئر (عام طور پر کمزور ہارڈویئر پر زیادہ فائدہ ہوتا ہے)، آپ کے استعمال کردہ موڈز اور دیگر عوامل کے مطابق بہت زیادہ مختلف ہو سکتا ہے۔ آپ کا کارکردگی فائدہ اوپر بتائے گئے کسی بھی عدد سے نمایاں طور پر کم یا زیادہ ہو سکتا ہے۔ کمزور ہارڈویئر رکھنے والے ایک شخص نے 80% کارکردگی اضافے کی اطلاع دی، لہٰذا بڑے فوائد ناممکن نہیں۔
### معیاری تنصیب
1. **موڈ ڈاؤن لوڈ کریں**: [Releases Page](https://github.com/KeinNiemand/LargePageInjectorMods/releases) سے اپنے گیم/گیم ورژن کے لیے ZIP فائل ڈاؤن لوڈ کریں۔
دستبرداری: کچھ Antivirus (بشمول Windows Defender) Injector.exe کو غلطی سے malware قرار دے سکتے ہیں، یہ ایک false positive ہے کیونکہ antiviruses dll injection کو مشکوک سمجھتے ہیں۔ اگر آپ مجھ پر اعتماد نہیں کرتے تو آپ سورس کوڈ پڑھ کر خود compile کر سکتے ہیں۔
3. **گیم Executable ڈائریکٹری تلاش کریں**: وہ ڈائریکٹری تلاش کریں جہاں Stellaris/Factorio/جو بھی آپ آزمانا چاہتے ہیں انسٹال ہے (وہی فولڈر جہاں `stellaris.exe`، `factorio.exe` یا عام طور پر گیم کی executable موجود ہے)۔
4. **فائلیں Extract کریں**: ڈاؤن لوڈ کردہ ZIP فائل کی تمام فائلیں Stellaris کی تنصیب والے فولڈر میں drag کریں۔ اگر پوچھا جائے تو فائلوں کو replace کرنے کے لیے "Yes" پر کلک کریں۔
5. **Stellaris** گیم کو معمول کے مطابق چلائیں، شامل کردہ launcher-settings.json paradox launcher کو Injector چلانے کے لیے کنفیگر کرتا ہے جو پھر گیم چلاتا ہے۔ اگر کامیاب ہو تو گیم کھلنے میں چند اضافی سیکنڈ لگیں گے اور گیم کھلنے سے پہلے آپ کو کامیابی کی نشاندہی کے لیے ایک مختصر beep سنائی دے گی۔ براہ کرم نوٹ کریں کہ گیم اپ ڈیٹ ہونے پر آپ کو launcher-config.json فائل دوبارہ replace کرنی پڑ سکتی ہے۔
**دیگر گیمز** گیم شروع کرنے کے بجائے Injector.exe چلائیں۔
### Large Pages کے لیے اعلیٰ درجے کی تنصیب
Large Pages فعال کر کے کارکردگی مزید بڑھانے کے لیے، یہ مراحل follow کریں:
#### 1. LockPagesInMemory Privilege دیں
پہلے اپنے Windows user کو `LockPagesInMemory` privilege دیں:
##### LockPagesInMemory Privilege کیسے دیں
یہ privilege Large Pages فعال کرنے کے لیے ضروری ہے اور اسے Local Security Policy editor (`secpol`) کے ذریعے دیا جا سکتا ہے:
1. `Win + R` دبائیں، `secpol.msc` ٹائپ کریں، اور Enter دبائیں۔
2. `Security Settings` -> `Local Policies` -> `User Rights Assignment` پر جائیں۔
3. "Lock pages in memory" تلاش کریں اور اس پر double-click کریں۔
4. "Add User or Group" منتخب کریں اور اپنا user account شامل کریں۔
5. تبدیلیاں apply کریں اور یقینی بنانے کے لیے اپنے کمپیوٹر کو restart کریں کہ تبدیلیاں مؤثر ہو گئی ہیں۔
مزید تفصیلی ہدایات کے لیے [Microsoft documentation](https://learn.microsoft.com/en-us/windows/security/threat-protection/security-policy-settings/lock-pages-in-memory) دیکھیں۔
#### 2. Large Pages کے لیے استعمال ہونے والی RAM Variable سیٹ کریں
LargePageInjectormods.toml میں `MIMALLOC_RESERVE_HUGE_OS_PAGES` variable کو 1 یا اس سے زیادہ پر سیٹ کریں (ڈیفالٹ 8 ہے)۔ یہ قدر reserve کیے جانے والے Large Pages کی GB ظاہر کرتی ہے، مثالی طور پر اس RAM سے زیادہ جو عام طور پر آپ کی چلائی جانے والی گیم/ایپلیکیشن استعمال کرتی ہے۔
#### 3. سسٹم کی ضروریات اور سفارشات
- **16GB سے کم RAM**: Large Pages مؤثر نہیں ہو سکتے۔
- **16GB RAM**: environment variable کو 4 سے زیادہ سیٹ نہ کریں۔ کافی مسلسل RAM یقینی بنانے کے لیے PC restart اور غیر ضروری auto-starts بند کرنے کی ضرورت پڑ سکتی ہے۔
- **32GB RAM یا زیادہ**: variable کو 4 سے 8 کے درمیان سیٹ کرنے کی سفارش کی جاتی ہے۔
**نوٹ**: ناکافی مسلسل RAM میموری fragmentation کے مسائل کا سبب بن سکتی ہے۔
## Third-Party Libraries اور Credits
یہ موڈ درج ذیل third-party libraries استعمال کرتا ہے:
- **Mimalloc**: [Mimalloc GitHub](https://github.com/microsoft/mimalloc)
- **Sigmatch**: [Sigmatch GitHub](https://github.com/SpriteOvO/sigmatch)
- **Hooking by Example** (لائبریری نہیں بلکہ میں نے کچھ functions کاپی کیے ہیں) [Hooking By Example Github](https://github.com/khalladay/hooking-by-example)
- **Toml11**: [Toml11 GitHub](https://github.com/ToruNiina/toml11)
### 3rd Party Licenses
- **Mimalloc License**: [Mimalloc License](https://github.com/KeinNiemand/LargePageInjectorMods/blob/master/3rdPartyLicences/MIMALLOC_LICENCE.txt)
- **Sigmatch License**: [Sigmatch License](https://github.com/KeinNiemand/LargePageInjectorMods/blob/master/3rdPartyLicences/sigmatch_LICENSE.txt)
- **Hooking by Example Licence**: [Hooking by Example Licence](https://github.com/khalladay/hooking-by-example/blob/master/LICENSE)
- **Toml11 Licence**: [Toml11 Licence](https://github.com/KeinNiemand/LargePageInjectorMods/blob/master/3rdPartyLicences/toml11_LICENSE.txt)
## Compatibility
### Supported Games
- Stellaris
- Factorio
- Crusader Kings 2 (تجرباتی) - چلانے کے لیے، CK2 کے اسی فولڈر میں فائلیں extract کریں اور گیم شروع کرنے کے لیے injector.exe چلائیں۔ اس گیم کے لیے کوئی کارکردگی ٹیسٹ نہیں کیے گئے۔
یہ موڈ فہرست کے لیے آزمایا گیا ہے لیکن دیگر گیمز کے لیے بھی کام کر سکتا ہے بشرطیکہ وہ 64 bit native applications ہوں اور وہی C Runtime Library استعمال کرتے ہوں۔ جن گیمز/ایپلیکیشنز پر آپ نے اسے کامیابی سے استعمال کیا ہو، ان کی رپورٹس/تجاویز خوش آئند ہیں اور میں انہیں supported فہرست میں شامل کر سکتا ہوں۔
براہ کرم غیر supported applications سے متعلق کوئی Issues رپورٹ نہ کریں جو کام نہیں کرتیں، الا یہ کہ آپ کے پاس کوئی pull request ہو جو انہیں کام کرائے۔
یہ supported گیمز کے تمام دیگر موڈز کے ساتھ compatible ہونا چاہیے۔ اگر آپ کو کوئی compatibility مسئلہ پیش آئے تو براہ کرم اس GitHub صفحے کے "Issues" سیکشن میں رپورٹ کریں۔
### Known Issues
- **Stellaris 4.2**: فی الحال Stellaris کے اس ورژن کے ساتھ incompatible ہے۔
## Configuration File Format
Configuration فائل کا نام `LargePageInjectorMods.toml` ہونا چاہیے۔ نمونہ configs `configs` فولڈر میں فراہم کیے گئے ہیں۔ نمونہ config استعمال کرنے کے لیے اس کا نام بدل کر `LargePageInjectorMods.toml` رکھ دیں۔ Config فائل `Injector.exe` اور چلائی جانے والی گیم/ایپلیکیشن کے اسی فولڈر میں ہونی چاہیے۔
### مثال Configuration (`LargePageInjectorMods.toml`)
```toml
# Path to the game/application executable to launch
LaunchPath = "stellaris.exe" # For Stellaris
# LaunchPath = "factorio.exe" # Uncomment for Factorio
# Modules (DLLs or EXEs) to patch with mimalloc
ModulesToPatch = [
"stellaris.exe", # The main executable
# Add other modules if needed
# "example.dll",
]
# Verbosity level (0-4)
Verbosity = 0 # 0 = Silent, 1 = Errors, 2 = Warnings, 3 = Info, 4 = Debug
# Redirect console output to Injector (true/false)
RedirectConsoleOutput = true # Set to true to enable
# Enable beep sound after injection (true/false)
EnableBeep = true # Set to false to disable
# Environment variables to set
[Environment]
#Amount of RAM in GB allocated to Large Pages set to 0 to disable huge pages
MIMALLOC_RESERVE_HUGE_OS_PAGES = "8"
#Various Mimalloc Env vars which may boost performance
MIMALLOC_ARENA_EAGER_COMMIT = "1"
MIMALLOC_PURGE_DELAY = "10000"
MIMALLOC_RESET_DELAY = "10000"
```
## Contributing
LargePageInjectorMods میں شراکتیں خوش آئند ہیں! اگر آپ کے پاس بہتری یا bug fixes کی تجاویز ہیں تو بلا جھجھک اس repository کو fork کریں اور pull request جمع کرائیں۔
## License
یہ پروجیکٹ MIT License کے تحت licensed ہے - تفصیلات کے لیے [LICENSE](https://github.com/KeinNiemand/LargePageInjectorMods/blob/master/LICENSE) فائل دیکھیں۔
## Acknowledgements
- Stellaris اور ٹیموں کا ان کی دلچسپ گیمز کے لیے شکریہ۔
- Microsoft کا `mimalloc` allocator تیار کرنے پر شکریہ۔
- Sigmatch کے developers کا سافٹ ویئر کمیونٹی میں شراکت پر خصوصی شکریہ۔
## Disclaimer
یہ موڈ Stellaris کے تخلیق کاروں کی طرف سے سرکاری طور پر endorsed نہیں ہے۔ اپنی ذمہ داری پر استعمال کریں۔
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.