Tuesday, July 17, 2018

Enemy states and formating

Sorry about the silence. Working on stuff, life stuff, etc.

I've talked before about making a template of some kind for people to use. While I'm not currently working on one directly, I am trying to streamline certain parts of my workflow, and that inherently means making something that's easy to use, but flexible.

Part of  the process of making a game is enemy behavior, or rather, the actions an enemy can perform. There are a few methods for making an entity "do" something in GM.

You can have every action as a different object,

Or all the code can be contained within one object, with each action/state being represented by a number.

Initially, I found it easier to use the first method, as when an object is created it has it's own set of events (create, step, animation end, etc). It also made it easier for me to debug games since an issue with an action could be easily isolated, and messing up an object wouldn't affect the rest.

However, it isn't really practical as games become more complex, and as I've become better at programming my original reasons for using it have become less relevant. GM also added #region which is very helpful for keeping code separated.

That said, for the second method everything an object can do is separated into a state. For example, a simple jump upwards might be state 5. So switching to a jump is essentially just;

state = 5

So, if you wanted a character to do this,

You can separate it into two states
- move until edge (1)
- wait and turn (2)

So, the object hits an edge, changes the state to 2, it plays out the state, and then it's built into state 2 that it returns to state 1 at the end.

This is basically the manual version of the method; every state does something very specific. However, despite the fact that "wait" and "turn" might be a part of other actions, they are combined, and only go back to state 1. This means that if I wanted to add a new move that involves waiting and turning before doing an attack, I need to make a separate set of states.


So instead, you can do things in a sequence. Let's say you have the following states;

- pace (1)
- wait (2)
 - jump back (3)
- jump forward (4)
- melee attack (5)
- neat pose (6)

If you wanted an enemy to jump back, do a pose, jump forward, attack, wait, and then go back to pacing. Instead of programming each state to lead into the next manually, we can program a system that plays them in order based on a simple sequence of numbers. This would be the above sequence.

sequence[0] = [3,6,4,5,2,1]

Thus, that "move" is sequence 0.

By doing this, you can set a sequence to play out, rather than a single state. This also comes in handy for cutscenes, where you need to be able to animate characters quickly and easily.


That said, the question becomes, how much control do I want/need, and how should it be formatted? If you have a state for "jump", what should determine how far, or the direction? For example, you could have each variation be a separate state;

-move around (1)
-shoot (2)
-low jump (10)
-high jump (11)
-low jump back(12)
-high jump back(13)

a low jump back and then shooting would be

sequence[0] = [ 12 , 2 , 1 ]

Or, you could be more complicated with the arrays, such as having modifiers included in the sequence. So instead it might be written like this;

sequence[0] = [[12,5,3],2,1]

With every state having a set of optional modifiers. In this case 12 would be the state, 5 could be jump height, and 3 could be horizontal speed.

In either case, the more more states you eventually have, the more difficult it would be to remember them all. It might make more sense to name states with strings;

sequence[0] = ["jump back", "shoot", "move around"]

Which I guess would looks like this with modifiers

sequence[0] = [["jump back",3,1],["shoot",bullet_1_ob,5],"move around"]

Yikes. Makes sense but probably looks intimidating.

Other formats
Instead of having everything in one array, you could also split controls into multiple optional arrays.

sequence[0] = ["wait","jump","shoot","wait","pace"]
sequence_xspeed[0] = [0,2,0,0,0]
sequence_sprite[0] = [0,0,0,pose_sprite,0]
sequence_time[0] = [10,0,0,50,0]

The first chooses the states to play in sequence,
The second chooses the xspeed modifier for each state,
The third overwrites the sprite that the state displays, with 0 using the default.
The fourth would change the wait time.

Using only sequence[0] with nothing else would use the states with defaults. Could also include states like "jump_back" so that there's a quick and dirty method if more control isn't required.

Of course, it's hard to say how useful so many options would be outside of making a template since; at the end of the day just programming what you want is generally going to be faster for things like enemy specific attacks. Where it would probably be the most useful for me personally is simply creating movement patterns, and for cut-scenes where you definitely need some kind of system.

Words words words...

Anyhow. Let me know if you know of any good standard practice for dealing with states. Maybe something that other engines like RPG maker do particularly well, or stuff you'd like to see when I do eventually make a template.

Back to work...

Saturday, May 12, 2018

What kind of protagonist do you prefer?

Figured I may as well just ask, kind of interested to see.

Content of each option

To give more information; this question assumes that a game would be spending the same amount of time on H content regardless of the type. A female protagonist would have 100% of the time spent on animations that include that female character. A game in which you can choose your gender would have that time split between the two.

In the case of my games, a male protagonist implies 100% of the enemies are female, with few body altering mechanics applying to the protagonist. Mechanics such as romance/affection or pregnancy are available for this type of game, involving enemies or other characters.

A female protagonist can involve mechanics like pregnancy, and while mind altering mechanics (lust, lewidity) are possible on a male protagonist, they are more common with a female one. Enemies can be male or female. Romance/affection mechanics are less appealing on male enemies, but would still be possible with either gender.

I'm also more willing to have a female character turn into a male as a mechanic, rather than vice-versa. That said, in a male/female choice game I would be able to add gender bending mechanics in either direction, as at that point it's basically just up to the player what they want, and the distinction isn't something I have to make.

Viability of each option

Gender bending and futa options assume that the majority of the animations would use the default female character, and roughly 25%, a little more, or a little less, would use the secondary form or attribute.

The easiest options are to have either 100% male, 100% female, or a 25% futa attribute, as none of these require extra sprites.

25% male gender bent requires only sligtly more work, as it would likely be a special "form" in which not all gameplay mechanics are applicable (moveset may be different, items may be different, etc).

Male/Female choice requires the most work, or limits the mechanics without further development time, as if there are sets of clothing, action animations, etc, each gender must have a sprite set for them. If these mechanics are not present, then the work would not be drastically different.

Wednesday, May 9, 2018

Oh hai money

Hwelp, looks like I may have missed a Nutaku payment so I got two at once. Turns out I have plenty of cash at the moment.

For now, I'll get the dental stuff done and go back to working on the game. Will work on the current Patreon animation here and there, but there's no huge rush since I'll be fine for now.

After the final two animations are done, if I still need the Patreon for income I'll switch to a weekly or bi-weekly game. However, I do want to clarify a few things regarding patreon and what I will and wont do;

1. I will not, and will never do any sort of pay-per-month patreon. I will only do pay-per-release models.

2. I will not do any patreon wherein I'm being supported to work on full commercial games (games I'll sell).

What I would do is a pay-per-update game designed solely to be a patreon project. That is, the game would be free to everyone, with patrons getting the updates early along with some kind of voting power. After the game is complete or I stop working on it, it would not be sold.

After Noaika is released, I will likely not do Patreon stuff anymore, as at that point I'll have 3-4 in-progress games to work on and sell. Though if I'm doing a game patreon at that point, I may tie it up into a finished state over the course of a few months and give it closure.

Anyway, all that out of the way, I do need to start thinking a bit more seriously about what I'll actually do for a weekly updated game.

I think that for it to work well, it should be something that is replayable. I've seen projects like Guilty Hell and Unholy Sanctuary that grow over time into a traditional game, but I find that at a certain point it isn't really the same as playing a normal game if you're either replaying the entire game every time an update is released, or experiencing the one new thing and waiting for the next one.

I think that something with some degree of procedural generation and simulation would probably be my best bet. Either a Rogue-Lite meant to be played in sessions, or something in which success comes and goes, even if you slowly progress. Either way it would be a platformer though.

An initial state for the game would probably be a home location, a procedural generated area outside of that home, with the initial goal just being survival

Each update would contain some kind of H content + game content. For example one update would be a new enemy + an animation, while another update might be new items/mechanics + an animation for an existing enemy, or simply an environmental animation.

The main thing I haven't figured out is whether to focus on long term progression or not. A world you "live in" and come back to each day, VS a game where you're meant to play and win or lose within 20 minutes to an hour. Simple pleasures of farming or befriending monsters doesn't really work if none of it is long-term.

A combination of the two might work, wherein there is long term progression, but also the risk of losing progress or assets, either losing aspects of your character, or encountering situations in which the status quo must be taken back over time. Perhaps with leveling your character to further levels requiring you to start from 0 in order to slowly build your persistent base stats, or losing your home location and needing to take it back. Will have to think about it.

Tell me what you guys would like to see from such a game. There's also the matter of the gender of the protagonist, since chances are it wouldn't be viable to do both genders and two sets of enemies, unless the graphics are low res.

Thursday, May 3, 2018

Goings ons

Still working on stuff. Frustrating delay-of-the-day is the need to get some expensive dental work done.

Unfortunately, Aster didn't really sell much on DLsite. They stuck it away in a nebulous shooter section, so it doesn't get the exposure of other action games. While I think that if it were a better game it wouldn't have mattered, it is somewhat frustrating to see it not get a normal chance. Might sell it on Nutaku, but man I really don't want to go through the process of preparing promotional stuff again.

So, I'm currently figuring out what to do. Probably Patreon animations. The dental stuff is time sensitive, so I can't simply wait until a game is finished; which is what I would do if that wasn't the case. Every situation like this kinda just widdles down my patience; I just want to work on games have nothing else to worry about.

After I finish what Patreon animations I need to do, if I need money again I'll probably switch from animations to a patreon game. Even an initial week or two of getting something to a "build on" state would be wasting less time than I do spinning my tires on some of these animations.