GNU General Public License v3.0

技术解读

以下内容由 GitRead 中文社区 编辑团队基于项目 README 与官方资料整理, 结合中文开发者的常见使用场景补充技术选型建议。具体以项目官方文档为准。

深度分析 IllusionMods/IllusionFixes

项目背景与痛点

IllusionFixes 是一个专注于解决 Illusion 公司开发的游戏中常见问题的修复库。针对 Illusion 旗下的《恋人》系列以及其他多款游戏,该项目提供了大量的补丁,以提升游戏体验。游戏中的常见问题包括:UI 界面报错、特定操作卡顿、内存问题以及其他难以复现的小 bug。这些问题如果没有得到及时修复,将严重影响玩家的游戏体验。

IllusionFixes 的推出旨在解决这些问题,通过一条条经过打磨的修复补丁,为玩家提供更为稳定、流畅的游戏环境。为何我们会需要这样一个修复项目?原因在于,尽管 Illusion 公司奋力改进自身产品的质量,但是现实中有些 bug 会在特定场景下出现,或者需要更为深层的数据流处理技术才能发现和修复。用户无法等待漫长的官方修复时间,因此 IllusionFixes 这样的社区修复项目应运而生。

技术核心揭秘

IllusionFixes 的核心思想在于模块化和针对性修复。通过结构清晰、功能具体的模块,该项目能够有效地解决每个问题,而又不与原有的代码库形成依赖关系。其具体实现手段主要依赖于对游戏底层逻辑的理解,以及对核心算法等部分的巧妙补救。

以下是 IllusionFixes 的核心技术架构:

graph TD A[游戏启动] --> B[加载 IllusionFixes 模块] B --> C{"问题处理类型?"} C -->|"修复 UI 界面"| D[UI 修复模块] C -->|"解决内存泄露"| E[内存补丁] C -->|"处理特殊操作"| F[操作修复补丁] D --> G[更新用户界面] E --> H[释放闲置内存] F --> I[优化操作流程]

IllusionFixes 通过建立「模块化修复器」,来逐一解决游戏中每个独立的问题。深入涉及的技术栈包括 C++ 与大量利用多线程技术进行逻辑的优化。同时,在设计模式方面,我们也看到项目采用了装饰器与单例模式。装饰器模式确保了每个修复模块可以根据具体需求被动态加载,而单例模式确保了这些修复模块在整个游戏进程中的唯一性,从而避免了由于过度加载模块造成的资源浪费。

功能亮点与差异

IllusionFixes 的独特之处在于它遵循了「完全独立于游戏本身的运行理念」。通过独立模块化修复,它极大地提升了修复的灵活性与可维护性。与此同时,该项目更突出「社区驱动」的特性。开发者无需担忧修复过程造成代码库相互影响从而带来潜在风险,这使得 IllusionFixes 拥有不同于同类项目的独特优势。

相较于其他竞品,IllusionFixes 的真正差异在于项目的开放性以及持续更新的机制。它不仅单纯修复问题,还持续进化,以适应 Illusion 公司新发布的游戏产品。在维护一个动态修复系统的进程中,开发者们聚集在 IllusionFixes 的旗帜下,不断贡献和维护修复模块,形成了稳定的社区生态。

应用场景与落地建议

在使用 IllusionFixes 项目时,开发者或玩家需要注意该模块的兼容性和自检功能。一方面,确保该模块与 Illusion 公司的新版本游戏更新保持同步,避免因版本错配导致的问题。另一方面,调试时要求开发者主动关停 IllusionFixes 模块以验证基础逻辑的准确性。

此外,IllusionFixes 更适合应用于闲暇时间不定但期望获得长期游戏乐趣的玩家群体。通过观察日志,用户可以更加迅速地捕捉并反馈游戏内部的问题,提供给社区及时的修复反馈。

综合评价

IllusionFixes 项目是一个明显的代码库资产管理向社区与用户协同演进的典型案例。其模块化的设计理念显示了高可拓展性,而社区的积极参与则确保了项目的动态更新与长期维护。然而,作为一款高度依赖游戏逻辑的修复库,当面对全新的游戏版本或者复杂场景时,有时缺乏足够的测试和验证,可能会产生预料之外的问题。

总体来说,IllusionFixes 在维护 Illusion 公司游戏体验方面扮演了重要的角色,同时也展现出优秀的代码管理实践与开发协作模式。

关于

GitHub 原始描述(英文)

A collection of fixes for common issues found in games by Illusion

描述取自 GitHub 官方 API,保持仓库作者书写的原文。

简要分析

热度分
270
价值分
131
活跃状态
活跃

语言占比

C#
PowerShell

Release

README

Illusion Fixes

A collection of fixes for common issues found in Koikatu, Koikatsu Party, EmotionCreators, AI Girl and HoneySelect2

How to install

  1. Install the latest build of BepInEx and latest release of BepisPlugins.
  2. Grab the latest release for your game from releases tab above (Koikatu and Koikatsu Party share the same release).
  3. Extract the BepInEx folder from the release into your game directory, overwrite when asked.
  4. Run the game and look for any errors on the screen, asking you to remove some old plugins. All of the listed plugins have been replaced by their updated versions in this fix pack, and need to be removed after closing the game. Plugins from this pack will not work until all of the old versions are removed.

Note for Koikatsu Party users: You can skip KK_Fix_CharacterListOptimizations.dll as it will not work with party. It can produce an error during load in Koikatsu Party, but the error is harmless and can be safely ignored.

Note for AI-Shoujo Steam users: If you are installing this manually for the first time, follow instructions below in the AI_Patch_SteamReleaseCompatibility section or you will have a bad time.

How to build

Clone the repository and open it in Visual Studio 2022. It should be as simple as building the solution. You may need to install some missing SDKs, e.g. for .NET Framework 3.5 if you don’t have them already. You can find them in Visual Studio Installer under “Individual components” tab.

You can get the latest nightly builds of all plugins from the CI workflow. Open the latest successful run and download the build from the Artifacts section.

Plugin descriptions

CameraMaskResize

(EmotionCreators, KoikatsuSunshine)

Fixes color mask in maker not updating when resolution changes (resizing the window or taking screenshots), resulting in a glow/halo around characters.

CameraTargetFix

(Koikatsu, PlayHome, AI Girl, HoneySelect2, KoikatsuSunshine)

Hides the cursor when the camera target is disabled in Studio. In AI Girl, also makes the camera target option in the game settings work properly for the character maker.

CardImport

(EmotionCreators)

Prevents the game from crashing or stripping some modded data when importing KK cards.

CharacterListOptimizations

(Koikatsu)

Makes character lists load faster.

CenteredHSceneCursor

(Koikatsu)

Fixes the cursor texture not being properly centeres in H scenes, so it’s easier to click on things.

DataCorruptionFixes

(Koikatsu, AI Girl, HoneySelect2, KoikatsuSunshine)

Prevent corrupted config and save files from breaking the game.

DownloadRenamer

(EmotionCreators)

Maps, scenes, poses, and characters downloaded in game will have their file names changed to match the ones on the Illusion website.

DynamicBonesFix

(Koikatsu, EmotionCreators, KoikatsuSunshine)

Fixes dynamic bones oscillating rapidly if FPS is above 60.

ExpandShaderDropdown

(Koikatsu, EmotionCreators, KoikatsuSunshine)

Makes the shader drop down menu extend down instaed of up and expands it. Necessary to select modded shaders since they run off the screen by default.

Eyebrows

(Koikatsu)

Fixes jagged edges around eyebrows caused by incorrect transparency handling.

GarbageTruck

(Koikatsu, KoikatsuSunshine)

Modifies some game functions to be more efficient and produce less garbage, reducing the strain on Unity’s garbage collector.

GravityAdjust

(HoneySelect2)

Adjust physics gravity to match AI-Shoujo,

GuideObjects

(Koikatsu, EmotionCreators, KoikatsuSunshine)

In character maker, fixes accessory guide objects (gizmos you drag with mouse) not having speed and scale sliders applied right after first enabling them and not being on top of everything like studio guide objects.

HairShadows

(Koikatsu, EmotionCreators, KoikatsuSunshine)

Modifies the render queue of front hairs and front hair accessories so that they can receive shadows. Also modifies the render queue of eyes, eyelashes, eyebrows, etc. so they can still show through hair if the option for it is selected.

HeterochromiaFix

(Koikatsu, EmotionCreators, KoikatsuSunshine)

Allows you to load characters with different iris types without them being reset.

InvalidSceneFileProtection

(Koikatsu, AI Girl, HoneySelect2, KoikatsuSunshine)

Adds error handling to scene loading and importing. If a scene is invalid or from the wrong game version then a message is shown and the studio doesn’t crash.

LoadingFixes

(AI Girl, HoneySelect2)

Fixes some studio scenes failing to load (sometimes you can’t load the scene you’ve just saved with the stock game, many scenes on uploader are like this). Also fixes color picker breaking in maker because of a similar issue.

MainGameOptimizations

(Koikatsu, KoikatsuSunshine)

Multiple performance optimizations for the story mode. Aimed to reduce stutter and random FPS drops.

MakerMaleFaceTypes

(AI Girl, HoneySelect2)

Restore face type selection controls in male maker (for use with modded face types since there are no stock ones).

MakerOptimizations

(Koikatsu, EmotionCreators, AI Girl, HoneySelect2, KoikatsuSunshine)

Multiple performance optimizations for the character maker. Can greatly increase FPSMultiple performance optimizations for the character maker. Can greatly increase FPS, makes turning on/off the interface in maker by pressing space much faster (after the 1st press), and more.

ManifestCorrector

(Koikatsu, EmotionCreators, AI Girl, HoneySelect2, KoikatsuSunshine)

Prevents mods that use incorrect data in the MainManifest column of item lists from locking up the game in story mode.

ModdedHeadEyeliner

(Koikatsu, EmotionCreators)

Fixes modded head eyeliners not working on other head types than default.

NewGameShowAllCards

(AI Girl)

Fixes downloaded character cards not appearing in the New Game character selection (so you don’t have to go to maker and re-save them).

NodeEditorUnlock

(EmotionCreators)

NullChecks

(Koikatsu, EmotionCreators, AI Girl, HoneySelect2, KoikatsuSunshine)

Fixes for some questionably made mods causing issues.

PartyCardCompatibility

(Koikatsu, EmotionCreators)

Allows loading of cards saved in Koikatsu Party (Steam release) in Koikatu and Studio.

PersonalityCorrector

(Koikatsu)

Prevents cards with invalid or missing personalities from crashing the game. A default personality is set instead.

PoseLoad

(Koikatsu, AI Girl, HoneySelect2, KoikatsuSunshine)

Corrects Honey Select poses loaded in Koikatsu and prevents errors.

RestoreMissingFunctions

(Koikatsu)

Restore functions missing in some versions of the game.

ResourceUnloadOptimizations

(PlayHome, Koikatsu, EmotionCreators, HoneySelect, AI Girl, HoneySelect2, KoikatsuSunshine)

Improves loading times and eliminates stutter after loading was “finished”.

SettingsVerifier

(PlayHome, Koikatsu, EmotionCreators, AI Girl, HoneySelect2, KoikatsuSunshine)

Prevents corrupted setting from causing issues and forces studio to use the settings.xml file instead of registry.

ShowerAccessories

(Koikatsu, KoikatsuSunshine)

Prevents main accessories from being removed in shower peeping mode. No more gaping holes in the head when using hair accessories.

StudioOptimizations

(Koikatsu, AI Girl, HoneySelect2, KoikatsuSunshine)

Shortens studio startup time (especially if there are many studio mods), and fixes some studio-specific bugs.

UnlimitedMapLights

(Koikatsu, KoikatsuSunshine)

Allows using an unlimited amount of map lights in studio. Not all items support more than 3 lights.

UpdateWet

(HoneySelect2)

Fixes fairly serious nullref crashes in UpdateWet caused by issues in some mods.

WetAccessories

(AI Girl, HoneySelect2)

Propagates the wetness effect to all accessories with shaders that support it. Warning: Some modded accessories use dodgy shaders that can crash the game if their wetness effect is enabled! Use this plugin at your own risk!

Patcher descriptions

AI_Patch_SteamReleaseCompatibility

(Steam release of AI Shoujo / AI Girl)

Allows using plugins made for the Japanese release of the game, and makes it possible to use Studio. To work, the following files/folders have to be copied from the official patch for the Japanese release:

abdata/studio* (folder and all files)
StudioNEOV2* (folder and .exe)
abdata/chara/mm_base.unity3d (rename to mm_base_studio.unity3d, don't replace)
abdata/chara/oo_base.unity3d (rename to oo_base_studio.unity3d, don't replace)

CultureFix

(EmotionCreators, AI Girl, HoneySelect2, KoikatsuSunshine)

Set process culture to ja-JP, similarly to a locale emulator. Fixes game crashes and lockups on some system locales.

LogDespammer

(AI Girl)

Removes some unnecessary debug logging from the game to clean up the logs.

MagicCarrot

(AI Girl, HoneySelect2)

Prevents the game from locking up when starting, for some reason. No one knows why this works, but it does.

评论

暂无评论