This mod is a renewed edition of ReplayInputView and ReplayInputView+ through customized development, specifically designed to display inner game info for Hisoutensoku, which helps players build a insight for general gameplay or mods developing.
To make it simple, we use RIV in the following to represent the term ReplayInputView.
Displays game hitboxes and hurtboxes in replay and local duel, as a convenient and clear approach to visualize and find out what's going on.
Also displays collision box and an position anchor, which is firstly implemented by RIV+.
The original debug info panel is deprecated out of memory leak when using along with giuroll.
View its reworked and superior edition in the following "What's New" part.
This panel splits into 2 part, the upper record of history inputs, the lower panel for real-time directional key and buttons by frames.
Allow key control on battle process of original game.
The delay-adjusting method has becomes invalid due to giuroll's locking framerate to 60f+, so only discrete integer rate steps can be used now, eg.
This is to simply edit assembly value and breaks the hidden-until-2-hits limitation.
This is where this mod began. The idea of re-developing RIV came from inaccurate and missing box display on objects, which sets me off on this long developing journey. Here are the new features that I believe introduce real improvement.
Now you can see them.
The color profile is adjustable in config file, with different colors and styles to tag special box states like invulnerable, parry bullet/melee, yukari gap and so on.
By the way, I also adds boxes for ground heights.
This really marks fake boxes and make box logic more accurate, especially for bullets.
More works are done to filter some other fake box cases.
As shown in the picture, which one is clearer?
Also, you have a choice to only keep the outer most outline, which is considered as "box merging", to make them even more distinguishable between objects and players.
By RIV++, all the functions are now available also in Arcade mode and Story mode.
We can now finally view boxes in story!
Dragon-star armor mechanism now has been fully analyzed. Turn on boxes to view the circles and find out how it works.
Input buffers are now visible if you are in a cancel chain.
The record displayed now has a fade out effect to make later inputs distinguished.
Or we should call it a window now. To enable panels to displays more info as possible, we developed it to be a individual window using D3DAdditionalSwapChain technique.
We also designed a gui system — casually named as layout+ — to manage expanded layout features through xml files, to make it more portable and flexible. Which means, it is even able to be customized if you like.
To also enable object debug, mouse interface is introduced. You can select/deselect anchors in game screen using L/R buttons of mouse and then view its info through the debug window, just like players.
Hint: gui object anchors are rendered as a diamond.
The window has been implemented with extra interfaces of:
- right click on caption, copy a hex string of current selected object address
- double click on caption, reset the position and size of window, and follow game's window again
- mouse hovering on elements would display doc defined descriptions, some as formatted string to display its value
- hotkeys to quickly select/deselect players without using mouse
The original RIV checks input from FKey array, which limits hotkey choice to function keys. And RIV++ turns to direct x input, so any key on keyboard is now usable.
It's annoying that, when game is paused, combo meter doesn’t show the first hit in real time — blame the pop-up animation.
So RIV++ takes over combo meter updating when paused to make another QoL.
🗃️ modules/ReplayInputView++/
- 💾 ReplayInputView++.dll
- ⚙️ ReplayInputView++.ini
- 🔠 CascadiaCode-Mod.ttf
- 🔠 SmileySans-Mod.ttf
- 📄 font-expand-codepage.py
- 📄 Drag n Drop to expand.cmd
- 🧱 ArmorBar.png
- 🧱 ArmorLifebar.png
- 🧱 back.png
- 🧱 hint.png
- 🧱 cursor.png
- 📦 * titlebox and frame images
- 🔢 * number font images
- * icons images
- 🧩 layout.xml
- 🧩 layout_plus.txt
📁 fonts/
📄 ReplayInputView.dat
📁 rivpp/
Lets's start from taking a look at the content of .ini config file.
Hotkeys are editable, it's ok to change to other keys you like.
You can change colors for different box states.
For more details, view descriptions in .ini instead.
Feel free to unpack ReplayInputView++.dat file with shady-cli, and replace files to customize it.
::Unpack Commands For example
REM Unpacking ReplayInputView++.dat to folder
shady-cli -pack -m dir -o "data" "ReplayInputView++.dat"After finishing replacement, make a data -> rivpp -> *Files structured folder and pack it back to .dat file using:
::Re-pack Commands For example
REM Packing folder files back to ReplayInputView++.dat
shady-cli -pack -m data -o "ReplayInputView++_custom1.dat" "data"Then you can change [Assets] File= option in ReplayInputView++.ini to switch between the original and customized .dat files.
The layout+ system are consist of 2 layout file:
- layout.xml; this file is to make use of vanilla layout system. Multiple assets are loaded through this, and then referenced and managed by object
iddefined inside. - layout_plus.txt; this file is the real one that manages to put everything in place, and then enables all customization features.
The mod reads xml structure by raw text to support new tags and unlimited style, so its extension name must be
.txtto avoid being converted in packing process.
The following are detailed introduction for layout+ nodes.
………………………………………………wip………………………………………………
This xml has expanded features out of original soku layout system, implemented by ReplayInputView++ 本布局文件含有非想天则原有布局系统之外的扩展特性(由RIV++负责实现)
继承关系如图:
-
<window width="240" height="600"><window/>Class window: controls the size of debug window by w/h properties. 窗口标签:宽高属性控制窗口大小One version
<textbox>is allowed to put inside to display a generic info. 出于调试考虑添加了版本字符串属性。 -
<fonts></fonts>Class fonts: place a font collection for later reference. 字体组标签:用于放置所有字体标签。 -
<font/>Class font: describes a font with multiple attributes. 字体标签:用多种属性描述字体实例。Available attr: 可用属性:
id, a integer with which text element can get a fontdesc byfont_idand render. ID数字,后续文本元素可以使用font_id属性引用对应的字体进行渲染。name, internal name of a font file; should have been installed, or as a file existed in mod's font folder. (the font file must support current system codepage to be successfully loaded) 名称字符串,目标字体的内部名称;需要字体已被安装,或者放置在font文件夹中。 字体文件必须支持当前的代码页/字符集。stroke, use game's black stroke/shadow 是否增加黑色描边bold, bold font 加粗与否wrap, would wrap with a given textbox, needtextboxto have givenwidthattribute. 换行;内容达到文本框宽度后将自动换至下一行,因此要求显示指定文本框宽度。height, font size (in pixel) 字形大小(像素)color_top/color_bottom, enables vertical gradient color (if these are set and not equal to each other, then it's possible to colorize texts later using color tag in strings) 控制纵向渐变颜色;若二者颜色不同,则在文本中使用color标签时,着色模式由相乘改为叠加。spacing/xspacing, horizontal character spacing 字间距修正值yspacing, spacing between lines 行间距修正值
-
<sublayout></sublayout>Class sublayout: handles inheriting and stacking of grouped elements. 子布局标签;
………………………………………………wip………………………………………………
以下为自定义部分:
2 types of customization are recommended:
<sublayout class="suwako" inherit="Player"><sublayout/>The system will check if there's compatible name for current character, so it's possible to override default layout of a character. Normally you should useinheritattribute to derive the default Player contents. It's case sensitive and make sure you use the internal english name. (the same ones inth123a.dat> data/character).<sublayout class="common.1006" inherit="Object"></sublayout><sublayout class="alice.805" inherit="Object"></sublayout>Also, object can also be derived bycharacter name + actId. It's sometimes useful to tag out their remained time.
Preserved id range in layout.xml
保留id范围(0~99)及用途:
1. `0`: unindexable always-display id;
原版的默认显示id,不可索引;
2. `1`: "copied" hint
鼠标复制的提示图片;
3. `2`: replaced cursor image
光标图片.
To keep compatibility for users, we put used fonts in folder and loads them dynamically.
If you want to use your own font, make sure that:
- Be aware of the real inner name of font file: font loading uses inner font-family name or full name with styles, use advanced tools to check the real name of a font file.
- Make sure the font supports the charset of your game or PC codepage (usually ANSI, related to th123intl setting): even if you only uses ASCII part, codepages not supported still fail font loading and fallback the font to default. We provided a font-forge script in python to allow you to quickly expands your font file to full codepage even without available glyphs. The default "CascadiaCode-Mod.ttf" is literally a example.
Testers: 三回転Tstar@bilibili, monte@discord, miko@QQ;
Technical support: @enebe-nb, @PinkySmile, @Hagb, @S-len;
Community support: @soku-cn community players
Honorable credit to the original authors of RIV(anonymous one) and RIV+(@Shinki, @PCvolt and @delthas), for their pioneering work.
Hates: @ichirin. it tooks us a whole day to find out and fix the problem that your ScoreTracker and PracticeEx has polluted and ruined pd3dDev->EndScene() function by hasty hooks.
just kidding lmao, we love your CIF and other magical mods










