Description

Live Chat: Discord.
Get the latest builds: Patreon.
Public Version for game under development: Here.
Download for Heroine Rumble is at the Heroine Rumble page.

Thursday, May 31, 2018

Modding Support

From the poll, it seems that is an overwhelming interest in modding the game. So I have taken the liberty to implement modding support for equitable items in addition to animations. I believe these two are the most common uses of modding, beyond things like tweaks and “cheats” so it makes sense to start with these two. Of course, I also need to explain how to mod / add new content to the game, so here it is.

However, before I get to that, I like to take a moment to talk about some design considerations on the modding system as it current stands. The most important consideration, believe it or not, is for me to create something that works without spending too much time on it. Why is this the case?

Well, first of all, I still got a game to make, so I don’t want to spent too much time on this detour. Secondly, despite the many responses that express interest in adding content, I am a little skeptical on how much new content will be made. I certainly don’t want to spend months to make a kickass modding system that nobody uses in the end. Hence, it is better to start with a minimal viable product and go from there. Finally, I assume that for those that will actually make new content, they are probably enthusiasts and is willing to work through a little hassle.

At the same time, the mod system can’t be too crude. It also needs to be extensible and flexible, with the ideal that mods created today can work with mods in the future.

For the users/consumers, the “installation” should be as hassle free as possible. Ideally - as simple as dragging a folder into the mod file or perhaps an “install mod” button in the in-game mod browser. But unfortunately, it just isn’t there yet to the self-imposed constraints in time due to the reasons mentioned above.

With all that said, here is how modding v0.00001 works:

Installation:

In the installation directory, you will find a new folder called data. In this folder, there are a bunch of json files:


Note the “_FilesToLoad.json” file. This is an “index” file - it tells the engine which files to load. When you open it, it looks like this:


You might notice that the “XXXXXX.json” entries matches the name of the files in the folder. You guessed it, that’s exactly how it works.

As an example, suppose if our friend PowerModder added some new moves to the game. And the data are in 2 new files, so the data folder now looks like this:

If you just copy and pasted the 2 new files to the data folder, it wouldn’t work. Why? Because the game have no idea these 2 new files existed or what type of data they contain. (At least in v0.0001). So you need to make modifications to the “_FilesToLoad.json”:


Now, assuming the content made by our friend PowerModder here is valid, that is all you need to do. Everything else the game will handle (or tries to).

Data File format:

You might notice that the game currently expects 4 different types of data files - animationsFiles, moveFiles, dialogueFiles and itemFiles. Let’s go over each file type:

ItemFiles contains list of extra items (equipment) the game will load. Individually, they look like this:



This isn’t actually valid JSON, because JSON doesn’t support comments ( // ). The comments are not used in code and are meant for humans to read rather than for computers. Feel free to mess around with the values and reload the game to observe their effects.

Two important fields:
  1. “uid” - this is a unique identifier for each item. Their name if you will. No two items should have the same “uid”. 
  2. “meshId” - this is where to load the mesh/model data from. Here is it “meshes\\platearmor.json.” It means that this particular item uses the model data from “platearmor.json” under the subdirectory “meshes.” Indeed, if you open the “meshes” folder in the “data” folder, you can find “platearmor.json” there. 
This means, an item in game actually requires two separate piece of data: an item description (the json above) and a model file. The model file src is encapsulated in the item description to save you the need to tell the game which models to load in a separate file. Graphically, it looks like this: (where <<----- roughly means “reads from” )

Game <<------ Item Description <<------ Model File

Here is an example. If you want to add say, “black_plate_armor_chest” to game. Step one is simple, we copy the existing json file. Then, you have an important decision to make. Do you want this for personal use or do you want to share it with others? If it’s for personal use, that’s easy, just paste the copied segment directly into the existing json file, like this:



JSONs are comma delimited so don’t forget to add a (,) in between! Use things like code editors and tools such as https://jsonlint.com/ to help spot mistakes!

If you want the possibility to eventually share this new addition with others, DO NOT OVERWRITE EXISTING FILES. Here is what you do instead:

First, we create a new .json file:


Then, under “_FilesToLoad.json”, add a new line to “itemFiles”:



Finally, open your new json file, add an [] pair for JSON array, and copy the item description in, so it looks like this:


Give it a new “uid”, mess some values (here rgb values are 0,0,0 for black) , and tada, you are done :D.

Question: is it possible to use own custom models?
Answer: Yes.

For that, you need to have blender that can export to a .json model file. I will provide a complementary .blend file on the next build with some in game models and animations for people to modify and build on. NOTE: I will not be providing a tutorial on how to use blender or providing support related to “how to do 3D modeling” - way too big of a subject. Then it’s a simple matter of setting a new “meshId.”

MoveFiles are additional move/grab/sex data the game will load. They are analogous for moves as ItemFiles for items. However, there is one big difference, is that move files are key-value pairs rather than an array/list (the type in ItemFiles). Arguably, this is a bad idea because of inconsistency, but it’s something I don’t want to fix at this point.

For clarity, MoveFiles uses this form

{
    “MoveName”: {
        ...
    }
}

Rather than
[
    {
         “Uid”: “MoveName”,
          ...
    }
]

AnimationsFiles are the actual animation data. These files is expected to be generated via blender rather than edited by hand. They are analogous to the mesh/model json files. An an individual animation file can contain many different animations.

Graphically, it looks like this:

Game <<---- Move Description <<------ animation(s) <<---- Animations files

Finally, there is DialogueFiles. There isn’t much cool stuff you can do with it yet. It’s mostly there to facilitate testing threesome moves if you edit a couple of lines ;)

And that’s it for a basic summary of how modding works. I think it’s pretty crude, and documentation thin XD, but hey, its functional (I hope). I am willing to expand it further/ provide better docs if/once people actually started to create cool things with it. But until then, my attention is back on making the game. If you got question on modding or not sure how to do X, feel free to ask in the #modding-related channel on the official discord.

Friday, May 25, 2018

Poll - Modding Support


Implement some simple modding support to import custom animations. TBH I didn't plan to support modding so soon (in terms of development) but some people already made some animations. So here it is.

One additional feature is the ability to select which move you want to use on companions as shown in the picture.

The game can support multiple data source files and as long as different mods dont step on each, an arbitrary number of new custom animations:


So here's a question: how many people are interested in modding at all? Beyond things like "Start with 1000000000000000 lewds."

Respond HERE.

Tuesday, May 22, 2018

[Patreon] v4.3


Patreon LINK.

Refer to previous post for changelogs.

This is primarily a "features" patch introducing new mechanics into the game. As such, it could be pretty buggy. So make sure to report bugs!

I haven't got the chance to address all the issues people brought up on 4.2 yet and there are still lots of work to do in the future, such as a description window when hovering an item on inventory, and move selection.

Monday, May 21, 2018

A Sample of Upcoming Features

Color change

 Hair Change and Futa Potions and new icon based inventory

Wait at Camp

Extra fun at the Camp

Heres the patchnotes:

 - new icon-based inventory with sorting!
 - sortA sorts by name
 - sortB sorts by type then name
 - added sound volume options
 - fixed bug with sound playing at incorrect volumes
 - tweaked some sounds to be quieter
 - reduced the frequency of NPC voices being played
 - fixed a potential issue that cause fullscreen toggle to not work properly
 - you can now use mouse wheel to zoom in/out somewhat
 - to encourage more bug reports, the error log screen no longer shows your filepath
 - defeated enemies with loot now have a sparkles effect
 - added 1366x738 display resolution

 - heat(pink bar) cooling is halved
 - units that escape a grab (via end of escape bar or help by allies) may need additional aid to "stand up"
 - helping an ally up will only heal to up to 50% of max HP instead of full

 - implemented new moveset - throwing
 - implemented range attack inaccuracy
 - implemented AI trajectory calculations
 - implemented headshots - 50% damage boost + extra stagger
 - implemented a more precise (smaller) hitbox for ranged projectiles

 - AI range attackers are slower, more inaccurate and does less damage (until balancing via stats become an option at least)

 - added new dialogue option for companions to wait for you at Camp
 - added new dialogue option to practice grabs on companions in Camp Mode

 - added color sliders (as a tab in the body sliders UI)
 - no restrictions on color - uses full HSL

 - added a new prompt window UI
 - added futa potion and yuri potion that transforms the character they are used on.
 - added new hair change consumable
 - you can use consumables on companions when their "Equipment Window" is open
 - added an new NPC that sell the items above

Right now the build is undergoing testing, and will be available to Patreons soonTM. If you like to participate in the testing process, head to my discord: https://discord.gg/7VrthNa.

Friday, May 18, 2018

How much (lewds) are you willing to pay for a futa potion?


Poll LINK. (for everyone)

Imagine if there's an NPC that sells a potion that can turn you into a futa. Along with all the advantages and disadvantages. How much are you willing to pay for it?

(Picture not related to poll.)

Wednesday, May 16, 2018

Throwing


Throwing is done! The controls should feel pretty similar to other weapon sets - hold LMB to start the throw, release LMB to do the actual throwing. Holding it longer than the minimal throw prepare time have the advantage of projectile speed, damage, accuracy, etc.

With throwing, there are a couple new mechanics:

The first is gravity. As you can see above, the rocks fly in an arc rather than in a straight line. So the player have to aim higher than what's on the cross hair to reach the target. The more complicated part is the AI. The AI needs to calculate the trajectory to throw at to reach the target. Anyways, with some help from the helpful peeps on discord, that works now.

The second is (in)accuracy. All ranged weapons can have an inaccuracy value. The projectile is then fired at a random direction in a circle around the crosshair. The size of circle is governed by the inaccuracy value. The distribution is roughly uniform, that is to say, all points on the circle have a roughly equal chance to be picked instead of say, clustered near the center.

The third is headshots. Seems like the vast majority wants locational damage:

I am not quite ready to utilize full locational damages yet. But headshots are easy. So they are in game now. They grant a modest increase in damage (50% more) and extra stagger. 

The head hitbox respects the sliders, so it does mean smaller heads have the advantage. But it's not something I am too worried about atm. 



Another change is that the hitboxes in game are very generous, and it was very easy to hit with ranged weapons, so the game now uses a smaller and more precise hitbox to check against ranged projectiles (and only ranged attacks).

Finally, AI penalties. In play testing, it turns out that projectiles are extremely potent in the hands of AI mobs. (Their stones will blot out the sun). So mobs have a pretty big penalty to firing speed, inaccuracy and damage to make it less overwhelming.

So with all that, the foundations to implement any ranged weapons is done, sans animations for each weapon type and perhaps ammo. Compared to melee weapons, ranged move sets are definitely much easier to do. Only need 2 animations - charging, and firing to be functional. Whoever suggested to use 3 directions for melee rather than 4 is a godsend. 

But rather than turning towards bows and crossbows immediately, I am going to implement something else for now: a new NPC that offers hair change, coloring, and a very unique and expensive "potion" (and the potion to reverse it's effect just in case...).

Tuesday, May 15, 2018

Locational damage for ranged attacks? (eg headshots)

Patreon Poll LINK.

Pretty much done with throwing projectiles mechanics. But it's getting late, I'll leave the post for the very near future.

In the meantime, I am curious on whether people want locational damage for ranged attacks (eg headshots). Perhaps something like extra damage and stagger on headshot.

It's a fairly easy feature to implement but the last time I asked in discord people seems disinterested. But that could be due to time of day, etc. So here is a poll.

Friday, May 11, 2018

A New Inventory

The save/load feature has exacerbated the inventory management problem. The item drop rate is kinda high, and players generally tends to hoard items. I feel like the inventory UI (one of the earliest feature implemented) is becoming more and more inadequate.

Meet the new icon-based UI: (The icons themselves are still more or less placeholders at this point.)


Here is what an inventory might look like after some use. Note it is possible to leave holes and create your own "island" of items for convenience. It is still pretty messy and hard to find stuff right?

That's where the filters comes in. It darkens/dims non-criteria items rather than creating a sub-list of items that met the criteria (ill explain the rationale at the end).


Better, but we can do better with sorting:


SortA does an alphabetical sort. It's meant to be used in conjunction with the filters:


SortB does a sort by type, then alphabetically:



The motivation behind the dim/highlight approach instead of sub-list approach for filters is because the sub-list approach leads into some non-intuitive and ill-defined behaviors. Let me explain via example:

Suppose if you have an inventory of 10 items. You apply a filter of some sort that leaves you with a window of 4 items. You swap the position of item 1 with item 4 in the filtered view. What should the unfiltered list of items look like? Or even worse, what if you drag item 1 to an empty slot in the filtered view, say slot #7. What should happen once filter is switched off (or changed to a different filter)? Keep in mind that slot#7 in the "real" list is occupied but is empty on the filtered view. It's not very obvious, is it? There are several possible arrangements depending on my implementation.

I believe this un-intuitiveness of filters is the culprit behind many "item disappeared" reports.

The other thing I am doing along with the new inventory UI is an upgrade of the internal inventory system. The original inventory system had some design deficiencies, for example, not able to properly support "holes" in the inventory, among other things. I was able to workaround the problems, but it is getting increasingly cumbersome to support new features. So a refactor is in order. Anyhow, it is almost done, I am only mentioning it in case bugs related to items and inventory pop up in the next build.



Monday, May 7, 2018

Should everyone (including trash mobs) be grabable? (POLL)

Poll LINK.


So, got lots of comments (and confusion) on the fact that currently only Bosses are grabbable. The ability to initiate grab on anyone is certainly doable - HR had it in fact. Curious if that's something people want.

Notes:

If implemented, then probably need another key for grabbing. Else (E) will mean both to lewd and to loot.

There will be out of combat scenes as well, just not implemented at the moment. For example, after high enough relationship with the companion.

Another possibility to still keep grabs to elites + bosses only, but increases the rate that elites are spawned (not that there are any currently), for example, at least 1 elite (grabbable foe) per room.

Friday, May 4, 2018

[Public] demo v4.2

Download LINK.





The demo is finally stable enough and have enough feature from the previous public build to warrant another public release. So here it is!

Also, if anyone wants to get their hands at the latest builds full of "unintended features" (beyond v4.2), join my discord. Always looking for more alpha-testers, non-patrons are welcome too!


Changes (from v4.1):

4.2
  • - implemented sound system (different from HR)
  • - added some basic sounds to the game (many are same from HR)
  • - added experimental camera offset controls via arrow keys
  • - redesigned the Bandit Queen at end of "Bandit Camp" to be treated as an actual boss (meaning she is grabbable)
  • - enemy bodies now despawns faster
  • - fixed bug with enemies not aggroing properly when hit with ranged attacks at far range
  • - fixed culling system not respecting broken state for equipment
  • - applied bandaid fix for "Bandit Camp" not unlocking after load
  • - changed the body sliders changes to be updated per every game tick rather than per slider change - this doesnt solve the flickering problem but is more efficient on resources
  • - upgraded to a new environ sys
  • - fixed bug that cause team members to stop responding to orders after body sliders change


4.1e
  • fixed problem with error msg popping up during Ludas Lair
  • - defeated units no longer knocks the aggressor into the air on grab escape
  • - fixed bug with stackable items on the hotbar being duplicated on load
  • - AI should no longer switch targets while in the middle of an attack
  • - AI units have a penalty to turn rate
  • - game is now paused while the "Options" tab is open
  • - applied a bandaid fix to solve the merchant not having any stock on load (because time isn't saved atm)
  • - added experimental optimization pass -> culling (not drawing) for characters not in camera view + animation LOD.


4.1d
  • fixed another bug that cause bodies to not be lootable (also caused loot amt to be lower than intended)
  • fixed incorrect height calculation that results in non-standard size character to be floating in some animations
  • added experimental Low Quality Graphics toggle - for those with low end graphic cards. Requires restart.
  • added a cap on how many enemies the Boss can summon at once
  • the boss is now vulnerable to grabs more often
  • added experimental save/load functionality for hot keys bar
  • equitable items are now saved with unique identifiers (required to make the hotbar s/l work, I am mentioning this because it's possible this will cause bugs, please report any oddities with item/equipment behaviour)
  • added experimental save/load functionality for quests
  • Merchant-Chan will reward 2 toyguns, one at the first task and another at the last task
  • adjusted barbarian_skirt


Tuesday, May 1, 2018

Ranged Weaponry Part I


With the addition of polearms, I think there are enough melee weapon types in game for now, and it is the time to turn attention into ranged weaponry. For example, throwing, bows and crossbows. Over the weekend, I implemented two additional features:

  • Move and shoot rather than forced to remain stationary.
  • The ability to look up and down and fire at where the cross hair aims at. This allows  projectiles to have an arc/affected by gravity and combat in non-flat terrain or perhaps even flight and aerial targets.
Some might ask, why does the gif feature a gun? Well, two reasons. The first is that there is no need to animate the weapon itself as bow and crossbow would need to. The second is that I have the model available from April 1st post. So it only makes sense to start with a gun to make sure everything works first and build from there.

Anyways, I know there are still some issues with 4.1c, and I will postpone the work on ranged weaponry to fix the bugs first. Notably, another bug that prevents looting of bodies and possibly some mechanism to limit the number of spawns during the Boss fight. Likely to be released tomorrow or the day after.

Let me know if people want to play around with the (probably OP) gun as well or people are "medieval purists" and want to wait for throwing/bows/crossbows.