প্রকল্প সম্পর্কে
# Stellaris, Factorio এবং আরও অনেকের জন্য LargePageInjectorMods
## ভূমিকা
LargePageInjectorMods-এ স্বাগতম! এই মডটি মেমরি ম্যানেজমেন্ট অপ্টিমাইজ করে Stellaris বা অন্যান্য গেম/অ্যাপ্লিকেশনের পারফরম্যান্স উল্লেখযোগ্যভাবে বাড়ায়।
অন্যান্য গেম/অ্যাপ্লিকেশনের জন্য সাপোর্ট অত্যন্ত পরীক্ষামূলক এবং অপরীক্ষিত, কাজ নাও করতে পারে।
### মেমরি অ্যালোকেটর কী?
একটি মেমরি অ্যালোকেটর হলো একটি সফটওয়্যার কম্পোনেন্ট যা প্রোগ্রাম চলাকালীন মেমরির অ্যালোকেশন এবং ডি-অ্যালোকেশন পরিচালনার জন্য দায়ী। Stellaris বা Factorio-এর মতো গেমে দক্ষ মেমরি অ্যালোকেশন অত্যন্ত গুরুত্বপূর্ণ, কারণ এটি মসৃণ পারফরম্যান্স নিশ্চিত করতে পারে। এই মডে প্রবর্তিত অ্যালোকেটরের মতো আরও দক্ষ অ্যালোকেটর ব্যবহার করে গেমের পারফরম্যান্স লক্ষণীয়ভাবে উন্নত করা যায়।
### কেন mimalloc?
মাইক্রোসফট দ্বারা বিকশিত `mimalloc` একটি উন্নত মেমরি অ্যালোকেটর যা সাধারণত গতি এবং মেমরি ফ্র্যাগমেন্টেশন দক্ষতায় স্ট্যান্ডার্ড অ্যালোকেটরগুলির চেয়ে ভালো পারফর্ম করে। এই মডের মাধ্যমে Stellaris, Factorio বা অন্যান্য গেম/অ্যাপ্লিকেশনে `mimalloc` সংযুক্ত করে গেমটি দ্রুততর মেমরি অপারেশনের সুবিধা পায়, যা সামগ্রিক পারফরম্যান্স বাড়ায়। [mimalloc GitHub](https://github.com/microsoft/mimalloc)
### DLL ইনজেকশন সম্পর্কে
DLL (ডাইনামিক লিংক লাইব্রেরি) ইনজেকশন হলো একটি পদ্ধতি যা অন্য প্রক্রিয়ার অ্যাড্রেস স্পেসে কোড চালানোর জন্য ব্যবহৃত হয়, যেখানে প্রক্রিয়াটিকে একটি ডাইনামিক-লিংক লাইব্রেরি লোড করতে বাধ্য করা হয়। LargePageInjectorMods-এ আমরা DLL ইনজেকশন ব্যবহার করে গেমের এক্সিকিউটেবল ফাইল পরিবর্তন না করেই Stellaris-এর ডিফল্ট মেমরি অ্যালোকেটরকে `mimalloc` দিয়ে সহজে প্রতিস্থাপন করি।
## পারফরম্যান্স বৃদ্ধি
LargePageInjectorMods উল্লেখযোগ্য পারফরম্যান্স বৃদ্ধি দিতে পারে (পারফরম্যান্স শুধুমাত্র Stellaris-এর জন্য পরীক্ষা করা হয়েছে):
- **স্ট্যান্ডার্ড পারফরম্যান্স বৃদ্ধি**: ৪-৫% ছোট পারফরম্যান্স বৃদ্ধি, পরিস্থিতির উপর নির্ভর করে সম্পূর্ণ নগণ্য বা উল্লেখযোগ্যভাবে বড় হতে পারে।
- **লার্জ পেজেস সহ উন্নত পারফরম্যান্স**: লার্জ পেজেস সক্রিয় করলে মডটি ৫-৮০%+ পারফরম্যান্স বৃদ্ধি দিতে পারে।
- Ryzen 7800X3D-এ Factorio-এর বেঞ্চমার্ক ফলাফল:
- Large Page Injector Mods ছাড়া [Factoriobox](https://factoriobox.1au.us/result/6ca27dcc-14a9-4484-8d2a-7d6da622462f): ৪৬ UPS
- Large Page Injector Mods এবং লার্জ পেজেস সহ [Factoriobox](https://factoriobox.1au.us/result/919e6097-5c70-4092-8ecb-4c1ea8cbba1a): ৫৪ UPS
- অনুগ্রহ করে মনে রাখবেন যে পারফরম্যান্স বৃদ্ধি আপনার সেভ (গেমের শেষের দিকে এবং সেভ যত ভারী হবে তত বেশি পারফরম্যান্স বৃদ্ধি হওয়া উচিত), আপনার হার্ডওয়্যার (সাধারণত দুর্বল হার্ডওয়্যারে বেশি পারফরম্যান্স লাভ), আপনি কোন মড ব্যবহার করছেন এবং আরও অনেক কিছুর উপর নির্ভর করে নাটকীয়ভাবে পরিবর্তিত হতে পারে। আপনার পারফরম্যান্স লাভ উপরে উল্লিখিত যেকোনো কিছুর চেয়ে উল্লেখযোগ্যভাবে ছোট বা বড় হতে পারে। দুর্বল হার্ডওয়্যারযুক্ত একজন ব্যক্তি ৮০% পারফরম্যান্স বৃদ্ধির রিপোর্ট করেছেন, তাই বড় লাভ অসম্ভব নয়।
### স্ট্যান্ডার্ড ইনস্টলেশন
১. **মড ডাউনলোড করুন**: [Releases Page](https://github.com/KeinNiemand/LargePageInjectorMods/releases) থেকে আপনার গেম/গেম সংস্করণের জন্য ZIP ফাইল ডাউনলোড করুন।
দাবিত্যাগ: কিছু অ্যান্টিভাইরাস (Windows Defender সহ) Injector.exe-কে ভুলভাবে ম্যালওয়্যার হিসেবে শনাক্ত করতে পারে, এটি একটি মিথ্যা পজিটিভ কারণ অ্যান্টিভাইরাসগুলি dll ইনজেকশনকে সন্দেহজনক মনে করে। আপনি যদি আমাকে বিশ্বাস না করেন তবে সোর্স কোড পড়তে এবং নিজে কম্পাইল করতে পারেন।
৩. **গেম এক্সিকিউটেবল ডিরেক্টরি খুঁজুন**: Stellaris/Factorio/আপনি যা চেষ্টা করতে চান তা যেখানে ইনস্টল করা আছে সেই ডিরেক্টরি খুঁজুন (যে ফোল্ডারে `stellaris.exe`, `factorio.exe` বা সাধারণভাবে গেমের এক্সিকিউটেবল অবস্থিত)।
৪. **ফাইল এক্সট্র্যাক্ট করুন**: ডাউনলোড করা ZIP ফাইল থেকে সমস্ত ফাইল Stellaris ইনস্টলেশন ফোল্ডারে ড্র্যাগ করুন। অনুরোধ করা হলে ফাইল প্রতিস্থাপন করতে "Yes" ক্লিক করুন।
৫. **Stellaris** গেমটি স্বাভাবিকভাবে চালান, অন্তর্ভুক্ত launcher-settings.json প্যারাডক্স লঞ্চারকে Injector চালানোর জন্য কনফিগার করে যা পরে গেম চালায়। সফল হলে গেম খুলতে কয়েক সেকেন্ড অতিরিক্ত সময় লাগবে এবং সফলতা নির্দেশ করতে গেম খোলার আগে একটি ছোট বিপ শব্দ শুনতে পাবেন। অনুগ্রহ করে মনে রাখবেন যে গেম আপডেট হলে আপনাকে launcher-config.json ফাইলটি আবার প্রতিস্থাপন করতে হতে পারে।
**অন্যান্য গেম** গেম শুরু করার পরিবর্তে Injector.exe চালান।
### লার্জ পেজেসের জন্য অ্যাডভান্সড ইনস্টলেশন
লার্জ পেজেস সক্রিয় করে পারফরম্যান্স আরও বাড়াতে, এই ধাপগুলি অনুসরণ করুন:
#### ১. LockPagesInMemory প্রিভিলেজ প্রদান করুন
প্রথমে, আপনার Windows ব্যবহারকারীকে `LockPagesInMemory` প্রিভিলেজ প্রদান করুন:
##### LockPagesInMemory প্রিভিলেজ কীভাবে প্রদান করবেন
এই প্রিভিলেজ লার্জ পেজেস সক্রিয় করার জন্য প্রয়োজনীয় এবং Local Security Policy এডিটর (`secpol`) এর মাধ্যমে প্রদান করা যায়:
১. `Win + R` চাপুন, `secpol.msc` টাইপ করুন এবং Enter চাপুন।
২. `Security Settings` -> `Local Policies` -> `User Rights Assignment`-এ যান।
৩. "Lock pages in memory" খুঁজে বের করুন এবং ডাবল-ক্লিক করুন।
৪. "Add User or Group" নির্বাচন করুন এবং আপনার ব্যবহারকারী অ্যাকাউন্ট যোগ করুন।
৫. পরিবর্তনগুলি প্রয়োগ করুন এবং পরিবর্তনগুলি কার্যকর হয়েছে তা নিশ্চিত করতে আপনার কম্পিউটার পুনরায় চালু করুন।
আরও বিস্তারিত নির্দেশনার জন্য, [Microsoft documentation](https://learn.microsoft.com/en-us/windows/security/threat-protection/security-policy-settings/lock-pages-in-memory) দেখুন।
#### ২. লার্জ পেজেসের জন্য ব্যবহৃত RAM ভেরিয়েবল সেট করুন
LargePageInjectormods.toml-এ `MIMALLOC_RESERVE_HUGE_OS_PAGES` ভেরিয়েবলটি ১ বা তার বেশি সেট করুন (ডিফল্ট ৮)। এই মানটি সংরক্ষিত লার্জ পেজেসের GB প্রতিনিধিত্ব করে, আদর্শভাবে আপনি যে গেম/অ্যাপ্লিকেশন চালানোর চেষ্টা করছেন তার সাধারণত ব্যবহৃত RAM-এর চেয়ে বেশি হওয়া উচিত।
#### ৩. সিস্টেম প্রয়োজনীয়তা এবং সুপারিশ
- **১৬GB-এর কম RAM**: লার্জ পেজেস কার্যকর নাও হতে পারে।
- **১৬GB RAM**: এনভায়রনমেন্ট ভেরিয়েবল ৪-এর বেশি সেট করবেন না। পর্যাপ্ত ধারাবাহিক RAM নিশ্চিত করতে PC পুনরায় চালু এবং অপ্রয়োজনীয় অটো-স্টার্ট নিষ্ক্রিয় করার প্রয়োজন হতে পারে।
- **৩২GB RAM বা তার বেশি**: ভেরিয়েবলটি ৪ থেকে ৮-এর মধ্যে সেট করার সুপারিশ করা হয়।
**দ্রষ্টব্য**: অপর্যাপ্ত ধারাবাহিক RAM মেমরি ফ্র্যাগমেন্টেশন সমস্যা সৃষ্টি করতে পারে।
## থার্ড-পার্টি লাইব্রেরি এবং কৃতিত্ব
এই মডটি নিম্নলিখিত থার্ড-পার্টি লাইব্রেরি ব্যবহার করে:
- **Mimalloc**: [Mimalloc GitHub](https://github.com/microsoft/mimalloc)
- **Sigmatch**: [Sigmatch GitHub](https://github.com/SpriteOvO/sigmatch)
- **Hooking by Example** (লাইব্রেরি নয় কিন্তু আমি কিছু ফাংশন কপি করেছি) [Hooking By Example Github](https://github.com/khalladay/hooking-by-example)
- **Toml11**: [Toml11 GitHub](https://github.com/ToruNiina/toml11)
### থার্ড-পার্টি লাইসেন্স
- **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)
## সামঞ্জস্য
### সমর্থিত গেম
- Stellaris
- Factorio
- Crusader Kings 2 (পরীক্ষামূলক) - চালানোর জন্য, CK2-এর একই ফোল্ডারে ফাইল এক্সট্র্যাক্ট করুন এবং গেম শুরু করতে injector.exe চালান। এই গেমের জন্য কোনো পারফরম্যান্স পরীক্ষা করা হয়নি।
এই মডটি তালিকার জন্য পরীক্ষা করা হয়েছে তবে অন্যান্য গেমের জন্যও কাজ করতে পারে যদি সেগুলি ৬৪-বিট নেটিভ অ্যাপ্লিকেশন হয় এবং একই C Runtime Library ব্যবহার করে। আপনি সফলভাবে যে গেম/অ্যাপ্লিকেশনে এটি ব্যবহার করেছেন তার রিপোর্ট/পরামর্শ স্বাগত এবং আমি সেগুলি সমর্থিত তালিকায় যোগ করতে পারি।
অনুগ্রহ করে অসমর্থিত অ্যাপ্লিকেশন সম্পর্কিত কোনো সমস্যা রিপোর্ট করবেন না যেগুলি কাজ করে না, যদি না আপনার কাছে সেগুলি কাজ করানোর জন্য একটি pull request থাকে।
এটি সমর্থিত গেমগুলির জন্য অন্যান্য সমস্ত মডের সাথে সামঞ্জস্যপূর্ণ হওয়া উচিত। যদি আপনি কোনো সামঞ্জস্য সমস্যার সম্মুখীন হন, অনুগ্রহ করে এই GitHub পৃষ্ঠার "Issues" বিভাগে রিপোর্ট করুন।
### পরিচিত সমস্যা
- **Stellaris 4.2**: বর্তমানে Stellaris-এর এই সংস্করণের সাথে বেমানান।
## কনফিগারেশন ফাইল ফরম্যাট
কনফিগারেশন ফাইলের নাম অবশ্যই `LargePageInjectorMods.toml` হতে হবে। `configs` ফোল্ডারে নমুনা কনফিগারেশন প্রদান করা হয়েছে। একটি নমুনা কনফিগারেশন ব্যবহার করতে, এটির নাম পরিবর্তন করে `LargePageInjectorMods.toml` করুন। কনফিগারেশন ফাইলটি অবশ্যই `Injector.exe` এবং যে গেম/অ্যাপ্লিকেশন চালু করা হয় তার একই ফোল্ডারে থাকতে হবে।
### উদাহরণ কনফিগারেশন (`LargePageInjectorMods.toml`)
```toml
# চালু করার জন্য গেম/অ্যাপ্লিকেশন এক্সিকিউটেবলের পাথ
LaunchPath = "stellaris.exe" # Stellaris-এর জন্য
# LaunchPath = "factorio.exe" # Factorio-এর জন্য আনকমেন্ট করুন
# mimalloc দিয়ে প্যাচ করার মডিউল (DLL বা EXE)
ModulesToPatch = [
"stellaris.exe", # প্রধান এক্সিকিউটেবল
# প্রয়োজনে অন্যান্য মডিউল যোগ করুন
# "example.dll",
]
# ভার্বোসিটি লেভেল (০-৪)
Verbosity = 0 # ০ = সাইলেন্ট, ১ = এরর, ২ = ওয়ার্নিং, ৩ = ইনফো, ৪ = ডিবাগ
# Injector-এ কনসোল আউটপুট রিডাইরেক্ট করুন (true/false)
RedirectConsoleOutput = true # সক্রিয় করতে true সেট করুন
# ইনজেকশনের পরে বিপ শব্দ সক্রিয় করুন (true/false)
EnableBeep = true # নিষ্ক্রিয় করতে false সেট করুন
# সেট করার এনভায়রনমেন্ট ভেরিয়েবল
[Environment]
# লার্জ পেজেসে বরাদ্দ RAM GB-এ, হিউজ পেজেস নিষ্ক্রিয় করতে ০ সেট করুন
MIMALLOC_RESERVE_HUGE_OS_PAGES = "8"
# বিভিন্ন Mimalloc Env var যা পারফরম্যান্স বাড়াতে পারে
MIMALLOC_ARENA_EAGER_COMMIT = "1"
MIMALLOC_PURGE_DELAY = "10000"
MIMALLOC_RESET_DELAY = "10000"
```
## অবদান
LargePageInjectorMods-এ অবদান স্বাগত! যদি আপনার উন্নতির পরামর্শ বা বাগ ফিক্স থাকে, নির্দ্বিধায় এই রিপোজিটরি ফর্ক করুন এবং একটি pull request জমা দিন।
## লাইসেন্স
এই প্রকল্পটি MIT লাইসেন্সের অধীনে লাইসেন্সপ্রাপ্ত - বিস্তারিত জানতে [LICENSE](https://github.com/KeinNiemand/LargePageInjectorMods/blob/master/LICENSE) ফাইল দেখুন।
## স্বীকৃতি
- Stellaris এবং দলগুলিকে তাদের আকর্ষণীয় গেমের জন্য ধন্যবাদ।
- `mimalloc` অ্যালোকেটর বিকাশের জন্য মাইক্রোসফটকে কৃতিত্ব।
- সফটওয়্যার কমিউনিটিতে তাদের অবদানের জন্য Sigmatch-এর ডেভেলপারদের বিশেষ ধন্যবাদ।
## দাবিত্যাগ
এই মডটি Stellaris-এর নির্মাতাদের দ্বারা সরকারিভাবে অনুমোদিত নয়। নিজ দায়িত্বে ব্যবহার করুন।
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.