magic_man132
Member
- May 6, 2021
 
- 111
 
- 29
 
- 152
 
It heavily depends on the CGs we have available and the characters I have planned.Since "netorare" is a content toggle, does that mean you intent to also include more exotic fetishes as optional (futa/futa NTR; incest; bestiality)?
Thank you! Hopefully I can meet those expectations, I appreciate your words.this might be the mod/game of the year... i been watching your progress for a long time i just want to say goodluck and keep up the good work..
{
    "entry_type": "keybind",
    "entry_display_name": "$cfg_menu_controls_up",
    "entry_description": "$cfg_menu_controls_up_desc",
    "entry_config_name": "key_up",
    "entry_options": {
        "keybind_combinations": false,
        "keybind_mode": "keyboard"
    },
    "entry_config_context": "sana"
}
	Thank you very much for your work, and I'm looking forward to playing it. One question later: Can I use the mouse instead of the keyboard? English isn't my language, sorry.Input System Devlog
Hello there!
It's been some time since the last devlog, Like I said in previous posts, I have been working on revamping the input system, fixing old code and trying to to bring it into modern standards, hopefully the work I have done is good enough to achieve this.
As a summary of what I have done this past few weeks:
 I have removed all dependencies of the Windows API I implemented a new module that replaces the original RPG Maker key codes and button codes (for gamepad), it covers the whole keyboard and the most common gamepad buttons, this module is called Input Map
 I have added backwards compatiblity translating the original key codes to the new ones. This input map module allows me to create actions (like interact, cancel, move left, move right, etc...) and map a list of key and buttons to this action Each input map has three possible keybinds:
 Main: Main keys/buttons for this action, cannot be removed/cleared, only changed Alt 1: First set of alternate keys/buttons for this action Alt 2: Second set of alternate keys/buttons for this action
 You can map key (and buttons too!) combinations to an input action, for example:
 You can create an input action: "Open Sex Scene Menu" and map it to use: "Left Shift + G"
 This input action will trigger only when both of these key codes are pressed, you can also perform a "exclusive" check in case you don't want this input action to trigger if other keys are pressed.
 For example: "Left Shift + G + H": Won't trigger since H was pressed
 I have created a default input map bindings for the base-game input actions
- These bindings allows the game to be played in several ways, by this I mean you can play the game single-handedly lol
 
- "Left hand only": WASD, Space, Tab, Left Shift, etc...
 - "Right hand only": Arrow keys, Return, Backspace, Right Shift
 - "Both hands" (Main): Default RPG Maker mapping
 - Both left hand and right hand mappings are mapped using the alt 1 and alt 2 keybinds, the "both hands" mapping is the default option
  If you have played RPG Maker games before, this feature makes the RPG Maker F1 menu useless, keybindings are now changed in-game, and are not limited to what RPG Maker offered originally of course. I have plans to modify mkxp-z source code to free F1 and F2 keys (later on development) so they are usable in-game
 Modders are able to register new keybindings and create hotkeys to map their custom actions I updated all windows (and the rest of the original RPG Maker code) to use the new input system I have created a new window to use inside the configuration scene to register the key bindings (compatible with both the keyboard and the gamepad) (A bit technical to understand) I have been modified the selectable window to extract the handler (callbacks) functionality into the base window, in the process, I have changed it to use input mappings and the code is now cleaner
 You can run a callback (handler) inside any window easily when an input map is pressed and the window is active, all you have to do is just register them when creating the window.
 Before this, you had to overwrite several methods from the selectable window, which could result in bugs if the base window method is changed in the future.
How does it looks?
Take a look! (excuse the spam of pictures, I was lazy to record a video lol)
View attachment 5064194
View attachment 5064195
View attachment 5064196
View attachment 5064197
View attachment 5064198
View attachment 5064199
As you can see, the same window works perfectly for both gamepad and the keyboard, it's important to note that, if you want to change a binding for the gamepad, you must have a gamepad connected, otherwise the window won't open because you will be stuck since the window will be waiting for gamepad input.
The window allows two behaviors, setting a combination or keys or a single key, for testing purposes, all pictures has the "combination" flag ON.
There is also two new options: Joystick and triggers dead zone, which allows you to set the deadzone for both the gamepad triggers and joysticks.
The menu also renders which controller you have connected right now, in case you have more than one and don't know which one is active in the game.
These configuration menu entries are created like the other ones I explained before, example:
JSON:{ "entry_type": "keybind", "entry_display_name": "$cfg_menu_controls_up", "entry_description": "$cfg_menu_controls_up_desc", "entry_config_name": "key_up", "entry_options": { "keybind_combinations": false, "keybind_mode": "keyboard" }, "entry_config_context": "sana" }
- New entry type: keybind
 - New entry options:
 
- keybind_combinations: Flag to allow keybind combinations or not
 - keybind_mode: Sets the keybind input mode (keyboard, gamepad)
 
Any downsides?
The main downside is because of the way the configuration module is designed, as you may know if you checked my last devlog, the configuration system is made in a way in which you create each option individually, this means that, if I want to allow users to map the alt. 1 and alt. 2 for an action, I have to create a setting for each ones of these like: "key_up1" and "key_up2", but that's not it, if I want to allow mapping the gamepad controller too, I will need to create yet another two settings: "pad_up1" and "pad_up2", this makes the process of creating settings for the input mappings very verbose, for example if you have 8 input mapping settings and you want to allow the user to map alt. 1 and alt. 2 for each one (both the keyboard and controller) you have: 8 x 2 x 2 = 32 settings just for that.
Honestly I don't think I will work on fixing this downside, since the system does not force you to map alt 1 and alt 2, as long as main is mapped, you are good to go, this is probably a problem for me since modders won't need to allow mapping many keys or buttons with their mods, but I will probably need to spend some time to properly create all settings for each mapping if I want to allow different layouts so you don't have to do it manually (you know? the left hand only and right hand only thing), anyways it's easier than redesigning the whole configuration module, which I'm not going to do because, apart from this downside, it works great.
Is there anything left?
Yep, the work is not finished with the new input system, I still need to solve this problem:
This one is important to fix, take this example to understand:
- Different input actions can have the same combinations of keys/buttons (keybindings conflicts)
 
1. You have two input actions: Confirm and Cancel
2. Confirm is mapped to Z and Cancel to X
3. You map Confirm to X
4. The game won't complain because there is no code that performs this check
5. Now, you have Confirm mapped to X and Cancel to X
6. You cannot interact with anything in the game anymore because as soon as you want to Confirm you will also Cancel the action
I will probably fix this by allowing to set a list of incompatible "actions" for each action, so for example, for the action "Confirm" I can add the action "Cancel" as incompatible, being incompatible means that none of the keybindinds must match between these actions, if anyone matches when binding a new key the game will complain about it, likewise, the Up action is incompatible with the Down action, same happens with Left action and Right action.
Besides of this, I consider the new input system to be good enough to continue development.
What's next?
Once I take care of the keybindings conflicts I explained above, the sex framework is up next and this last one will be the last piece of work I have to do for v0.2
No problem!Thank you very much for your work, and I'm looking forward to playing it. One question later: Can I use the mouse instead of the keyboard? English isn't my language, sorry.
Looks promising! Don't worry too much about taking your time. Would much rather have a dev take a while with honest version numbering instead of pushing out what seems like v.0.8 in a few months but feels like 0.2.-snip-
Thanks! I appreciate your words, gotta thank Ryuna_the_2nd too for stepping in to redraw the game CGs and refusing to stop or drop it out of tiredness for this long, specially since this does not bring any revenueconsistant update and work-life balance is the key.
this man did this mod for free out of love for the game or just hobby.
we do not want fast cash grab update (even if it's free) causing fatigue and burnt out, we just want genuine update within devs time and pace.
we do not entitled to anything but ofc we'd want some update once in a while because this mod is literally the only light in this dark sky.
nowhere for this game out there getting reworked art with engine custom made/update.
even the og dev moved on to another project.
this mod at this point is a remake of SANA game.
as always thanks for the update and stay safe!
Hey, one the major issues I had in mind before creating the Input Map module was related to this, it was that by allowing to remap keybindings the player would make the game unplayable by mistake, that is not a problem anymore since the keybinding conflict problem is solved (hooray!), I still need to finish some details here and there but the most important part of the code is finished.the work is not finished with the new input system, I still need to solve this problem:
This one is important to fix, take this example to understand:
- Different input actions can have the same combinations of keys/buttons (keybindings conflicts)
 
1. You have two input actions: Confirm and Cancel
2. Confirm is mapped to Z and Cancel to X
3. You map Confirm to X
4. The game won't complain because there is no code that performs this check
5. Now, you have Confirm mapped to X and Cancel to X
6. You cannot interact with anything in the game anymore because as soon as you want to Confirm you will also Cancel the action
Thank you very much for your work and good luck!Input System Devlog (Pt. 2)
Hey, one the major issues I had in mind before creating the Input Map module was related to this, it was that by allowing to remap keybindings the player would make the game unplayable by mistake, that is not a problem anymore since the keybinding conflict problem is solved (hooray!), I still need to finish some details here and there but the most important part of the code is finished.
How does rebinding work?
Like you may know already from the previous devlog, input map actions represents the mapping of an action to a list of keyboard keys or gamepad buttons and each of them has three slots (main, alt. 1 and alt. 2), now each input action has new flag attributes:
The unclearable flag makes the input system never allow an input map action to be cleared, meaning that the main slot (both keyboard keys and gamepad buttons) must have a valid combinations of keys/buttons, they won't ever be assignable to UNKNOWN, which is the code used to represent an cleared/unassigned key/button code.
 Unclearable: Determines whether an input map action can be cleared or not
 Defaults to false (by default all actions are clearable) Unique: Determines whether an input map action is unique in the game or not
 Defaults to false (by default all actions are not unique)
Of course, the alternative slots (both alt. 1 and alt. 2) are clearable since they are optional, it only checks the main slot, for both keys and buttons.
I have made it false by default mainly because the vast majority of mods should not use this, since they should allow players to clear their keybindings/hotkeys.
About the unique flag, this flag makes an input action unique in the game, including the input actions provided by mods, the combination of keys/buttons that an unique input action is using cannot be ever used by any other input action.
I have only made unique the essential actions of the game, because if these actions ever conflict with something else, it has the potential to make the game unplayable, for example:
As long as these actions are unique, you can still control the game even though you fuck up the input mappings somehow, to make sure this never happens, I will also add a new console command (resetbindings) that will reset all keybindings to their default value, just in case you break the mappings, even though it is highly unlikely.
 Movement keys
 Main: UP, LEFT, DOWN, RIGHT (ARROWS) Alt 1: W, A, S, D Confirm keys
 Main: Z Alt 1: RETURN Alt 2: SPACE Cancel keys
 Main: X Alt. 1: TAB Alt. 2: BACKSPACE Menu keys
 Main: ESCAPE
Yeah I know, the messages shown when the keybindings conflict may not be easy to understand (like what the hell is "slot: 0"), believe it or not, as many games I have played in my life, sometimes I find hella difficult to write error/info messages like this which are easy to understand and clear enough lol, I'll change the wording to make it clearer.
In case you have not noticed, I've also changed the way clearing a binding works, previously the ESCAPE key was not usable as a normal key because it was reserved by the game to clear bindings, I kinda did not like this so I've changed the behavior of the keybinding window to un-assign when the ESCAPE key is hold during some time, if the ESCAPE key is released before this time, it will be treated as a valid key code.
Funny thing is that, as simple as it sounds, doing this took me a headache due to synchronization issues, I used Ruby fibers for the binding process and doing so bugged out the code of the scene and freezed the windows, took me a week or so to realize what the hell was going wrong.
Other minor changes
I have changed how configuration menus are shown in the settings scene, previously they were inserted without any particular order, meaning that they appeared in the menu in the same order they were created, I thought that sorting them alphabetically would make it easier for players to find a specific menu, specially if they install many mods that provides new config menus, so I modified the code to sort them like that.
Though, I wanted the game config menu to always appear at the top of the list (for ease-of-use), so the only menus that are sorted are the ones added by mods, the game uses the display name to sort the menu in the list, in case the name is localized, it will translate it first before sorting them, so ordering localized menus is doable.
I have also enabled quick scrolling for the config menu windows, if holding down the prev. page or next page actions, the cursor will move up/down as many positions as needed to go to the next menu that is not shown.
As you can see here, Side Stories is shown last due to starting with S:
View attachment 5115758
If you change the display name, it will be shown above others:
View attachment 5115759
No matter how many menus you have installed, the game config menu will always appear on top.
Besides of this, I've also fixed some logic bugs in the Configuration module, which btw are the worst types of bugs because it seems everything is working as it should and suddenly it breaks the game with almost no trace/logs report, though this is kinda technical so I'll skip this part lol.
Due to what I said above and looking ahead to the future, I improved the logging module to create copies of existing log files, in case you find a bug and decide to play the game again instead of reporting it, the log file won't get overwritten, the game now will keep up to 3 copies of previous log files (game_log1.log, game_log2.log and game_log3.log), and one working log file (game_log0.log)
See y'all in the next devlog!
I have nothing substantial to show yet, I had my vacations around mid August and I've been relaxing.It's been over a month since the last update on the project's progress, how are things going?