Bees of a Different Shape

Well… it’s been longer than I hoped before getting back to blogging here.  I anticipated a hiatus, but HOPED it would not be a long one.

I suppose I should explain the answer to that question: “where the heck have you disappeared to for so long??”

I’ve been (and still am) teaching a Unity & VR course with Make School and Upload VR!  The course ends mid August, so, Imaginary Reader, expect my posts to be infrequent until then, BUT rest assured, I do plan to start posting again regularly after the course ends.

I also want to take a brief aside to say: teaching this course (as is always the case with teaching for me) has taught ME a lot about development.  In writing tutorials for the course, I started thinking not only about how to DO things in Unity, but how to explain them, and that question “Why” wrt “the heck would I do it way A vs way B.”  I found that often my go-to way felt like a better idea until I started trying to explain it in the context of a tutorial, and then I realized that, actually, way B, which is simpler anyway, is a much better way of doing things.

The best example I can think of of this is how I create Prefabs.

I USED to create Prefabs by loading them in via (GameObject)Resources.Load(“[PrefabName]”), which meant I had to have a folder structure like this:

Screen Shot 2016-07-17 at 10.23.36 AM

(I had to put Prefabs into a Resources folder, or a child thereof — Unity lets you have infinitely many Resources folders, by the way (a thing I didn’t know until I started asking myself questions about structure and started doing more research into the area!))

This felt really cool when I first started doing it because I was all like “Look at me never dragging and dropping stuff in the Editor to set up Prefabs, I have my OWN way to do it that’s BETTER” but… my old way involves passing parameters of type string†, which means I’m more likely to make typos than if I were to just drag and drop (the way I plan to do things from now on).  ALSO whenever I change names of Prefabs, because the arguments are strings in the old version, I had to go through and change.

†In general, I hate passing arguments of type string, not only because of the typo problem, but because I get runtime errors vs compile time errors, and I prefer compile time, because then the compiler will say “hey, do this thing” rather than the game crashing and me having to try to reproduce the problem.

I’m also starting to rethink the way I grab Components of Game Objects.  My goto way is via a Utility function I wrote that uses a callback to get the component if it exists, or add it if specified, to prevent that very common thing of:

Foo foo = fooObj.GetComponent<Foo>();

if (!foo) {

foo = fooObj.AddComponent<Foo>();

}

but… now I realize, I may as well just create “foo” in this case as a public variable of type Foo rather than “fooObj” as a public variable of type GameObject.  I do still like how my old way way lets my components be rather agnostic of whether or not the component exists, and I don’t even care that much that I have, like 100 calls to GetComponent, which is, like, O(N) or whatever, because N is small.  I just think the other way is simpler, and I’m gonna try to use it from now on.

But what of Floral Kombat??

I showed someone at Make School the game, and, as many people say, he said he found it rather confusing.  Something new he pointed out was that the bees don’t really look like bees… recall the old bees.  Let’s just use some old screenshot:

May 19, 2016 13:53

Okay fine, a gif.  Because I love those things too much.

Notice how the bees are, like, just basically yellow circles.  Yes, it’s not the final art, but this sort of stuff matters in terms of conveyance, and it REALLY matters when you’re all zoomed out, as the game is.  Like these bees might work okay zoomed in, but, far away?

Screen Shot 2016-05-09 at 7.48.55 AM

Hardly recognizable.

So… I went with his suggestion to change the shape.

Does it help?

Jul-17-2016 10-25-09

I think that now they at least read a little more like “insect.”  It’s unclear if they’re wasps or whatever, and I’ve gotta tweak that.  And MAYBE the whole game needs to be zoomed in more.  It could be tat it’s too far away right now and I need to get a hair closer.

In any case, I think this is a step in the right direction.

Most pressingly, though, I’ve got to get rid of that pesky confusion.

In taking time away from the game, I see the confusion now more than before.

Everything’s all moving and pulsing and shiny and animated and really I need to direct the players’ eyes better.

Because it’s on my mind, I’m gonna relate my problem to a Steven Spielberg quote mentioned by a VR speaker we’ve had at the Academy:

“I think we’re moving into a dangerous medium with virtual reality… The only reason I say it is dangerous is because it gives the viewer a lot of latitude not to take direction from the storytellers but make their own choices of where to look”

I wonder if authors had this fear when film first came out, that audiences could now had an ENTIRE PLANE to look at, rather than just lines at a time (isolated moments).  I think that the new challenge that faces 3d film makers is a lot the same challenge they face today — “how do I direct an audience?” — just with another dimension.  It’s a difficult problem in 3d, but it’s also challenging in 2d.

I don’t think film makers should fear the new medium, I think they should try new things and see what works.  Or maybe they’ll learn to tell stories that don’t rely so much on direction and control.

Anyway, for my next steps, I’d like to create a good flow that shows players how to play, without relying on text (because they haven’t been reading anyway), and instead relies on directing the eye to the important things at any given time.

Until next time,

~Zach

Standing, Sitting, Lying Down

A LATE post and a SHORT post… because this past week/this current week, my focus was/will be on final prep for my 3-month full-time position.

Weeeeell…

I’ve been doing that working-while-standing thing long enough that now I associate standing with productivity and sitting with not-productivity.

I feel I can get into a better “flow state”† standing than I used to be able to sitting down, though this does mean that when I’m sitting, it’s generally more difficult for me to get into that state.

†ugh… I really hate how pretentious that sounds… like, it sounds super pretentious.  Though, maybe I’m complaining about the wrong thing.  Like, just look at the subject matter about which I chose to write…

If my body ever tells me “hey, I want to sit down,” it’s generally a sign that I’ve stopped being productive and should do something else, e.g. sleep.  Whenever I do that, it’s a lot easier to get work done at some later point.

I feel I used to be fairly productive lying down, like, in high school.  Possibly that’s because high school involved completing assignments that had finite ends rather than working on art that has no such thing.  Like, I could look at a homework assignment and pretty easily estimate when it would be done.  If I couldn’t there was a deadline, anyway, that would help me say “okay, someone at least thinks this thing shouldn’t take me more than a night, and if I don’t finish it by then… it’s still gonna be done anyway.”  It’s difficult to do that with art, which is why I find imposing deadlines to be pretty helpful.

If this coming week plays out the way I anticipate it will, I expect another post like this for this coming week, but I still think making posts like this help me.  It ensures that, even on weeks when I cannot do indie dev work, the game’s still on the tip of my brain.

Until next time,

~Zach

Hey Look! Arrows!

Jun-02-2016 17-28-42

Look at all that progress I made this week!  Astounding!

The part-time work that I’m doing is about to turn into full-time work until ~Sept.  Needless to say, this week, it already started doing that.

Have I reached my goal of having Floral Kombat feature complete at this point?  Well…

The game does have all the features I want it to have at this point.  It lacks important things like menus… and audio… and… polish… but I’m actually pretty happy with where it is right now, all things considered.

My upcoming schedule until Sept is going to be much different than it has been the past few months, but I do want to keep up development (even if greatly reduced, like what happened this week) and I want to keep posting here, because it’s a good reminder that “hey, there’s this thing.”

Between now and September, my highest priority should be ensuring that the game does a good enough job of teaching players how to play it, be that via a tutorial, images, text, gameplay elements like arrows, whatever works.

The fancy features, like different insect types, different terrain types, stage unlocking, etc can all get de-prioritized until I have the game in a state where I can hand it to nearly anyone, and that person can play it without me saying anything and without requiring the person to be super-dedicated to the game (i.e. I don’t want people to just read tutorial text because they feel bad not, since I’m a friend, and not reading it seems rude; I want this to be pick-up-and-play-able by a stranger who doesn’t care about me necessarily).

Until next time, and so that I encourage myself to do it soon, let’s say “next time” will be a week from today,

~Zach

 

i <3 Editor Scripts & Adventures in 3D!

Man, writing Unity Editor scripts is addictive.

One of the things I’ve come to really like about Unity is the ability to write Editor Scripts, i.e. scripts that modify the behaviour of the editor itself to allow some pretty neat optimization and… may or may not take more time to write than the optimization they provide.  But… but… writing them feels so good… and… and then once you have one…

mrmmmrmmm

To be fair, I’m getting faster at it, so, like something something opportunity cost isn’t approaching zero?

This week, I decided to convert the Stages system over to something a little more structured than what it was before.  Previously, I’d just hard-coded levels into the game in a switch statement, and this worked, but… it had this annoying problem where creating a level involved more than one step 😦

To get a bit more specific, I implemented each level as a scene in Unity.  Unity lets you load new scenes to basically refresh the set of Game Objects that are active, do clean-up, etc etc.  Unity ALSO lets you load scenes additively, which is where you have some scene, and then load another into it.  That’s how I do my levels.  I have one Play scene with shared functionality that makes gameplay do its thing, and then individual level scenes that contain the arrangement of objects that make up the environment.

In order a load scene, Unity requires you to add that scene to the build settings (this only has to happen once, it’s, like, associated with the project, not associated with an instance of your running game), and if you forget to do this, you get a bunch of angry messages in the console telling you that you’re a worthless individual and forgot to add the scene to the build settings, probably because you’re just human garbage.

I decided to scriptify this!  Now Unity automatically adds scenes in certain folders to my build settings in a process I don’t want to go into right now that involves writing them to an XML file.

This worked pretty seamlessly (I’d done this previously, so I wasn’t just inventing it for this), but things got complicated when I wanted to add new fields to the XML file without ever having to do anything that might result in a typo (I’m really good at maikng tpyos).

I tried to find a way to read in metadata from files, like the tags files can have in certain versions of OS X.  I spent probably far too long on this and resolved, nope, not able to do that (at least not in an obvious way), so I decided to tell the script to write in fields I could fill in later.  The tricky part involved making sure not to overwrite existing fields, but to add them if they didn’t exist.

The good news is, my code looks beautiful!  Actually no.  It doesn’t.  It never does.  But it MAKES pretty things!

Screen Shot 2016-05-26 at 2.05.38 PM

Okay, so maybe YOU don’t think so.  But like…

 

 

WHATEVER, IT’S PRETTY, GET OVER IT

Anyway, it feels reeeeeeally good to add scenes and not have to worry about that build settings error any more, and also to be able to have all my stage data in one spot.†

†it was pretty much in just two spot before: one section of code + the file system.  Now it’s just in the file system, and this XML gets generated based off that.  I will have to go into the XML occasionally, to enter specific data into fields other than the stage name, like the display name etc etc.  If I could figure out how to encode that data in the files, in theory, I wouldn’t ever have to open the XML file, but… some other time I’ll work on that… maybe…

Okay okay, I haven’t had any pretty pictures yet.

So… you know what time it is!

Sprite Cover in 2D

Screen Shot 2016-05-26 at 2.07.36 PMScreen Shot 2016-05-26 at 2.07.21 PM

An issue that’s been bothering me for a while is that, because of the way I’ve implemented flower sprites (i.e. each flower is made of multiple sprite stacked at various zorders), sprites from different flowers would cover each other up in what would appear to a player weird or broken ways.  Since the face was on the top layer, for example, it would ALWAYS appear on top of a face sprite, even if that face sprite was an opponent’s… so if you stood behind an opponent, your face would appear on top of your opponent’s petals…

This week, I finally fixed that issue!  How did I do this?

3D!

May 26, 2016 14:40

Although I’m building a 2D game, Unity’s still a 3D engine, and I can still use a lot of the 3D stuff to my advantage.  In this case, I was able to set the z coordinate of any objects I so desire in the scene based off their y coordinates.  I had to be sure to account for camera distance too, otherwise objects would seem to disappear if they ever passed behind the camera.

The sort of wonky (and cool) thing about this is that there are two other ways I’m determining which object gets drawn on top: zorder and layer order.  Layer order takes precedent over zorder which takes precedent over z coordinate.  As long as I keep that all in mind though, all should be good.

Also, this is much better than what I was thinking of doing; I was considering writing a shader to do draw all the textures in the proper order, then apply zorder to those shaded sprites.  Not only is setting the z coordinate easier (for me) to think about, because it’s more visually confirmable, but also it may be more efficient than doing this via a shader.  Not sure though.  Anyway, I’m not getting huge performance hits I don’t think.

Meeeeeeet Grassly

May 26, 2016 14:08

With my newfound solution to layering sprites, I was able to pretty easily add a new tile type: grass you can walk through.

If I like it enough, I may make it taller and make it rustle as you move through it, so you can only see where you are based on the rustling.  Maybe bees can also hide in it.

Stage Select

May 26, 2016 13:59

I’ve also started making the stage selection screen look a little better.  Ideally, it’ll have a larger image and name too.

I quite like the look of this guy, and may take some inspiration from it.  It’s pretty clean and not too flashy.

Stage Unlock

Screen Shot 2016-05-26 at 2.56.50 PM

Also, and this may have been apparent from the XML, stages can now be unlocked by playing matches!  The UI I’ve added to show the player this is meant to show up after a match, but I also save the “do show” and “did show” data, so that the UI can appear to players who haven’t yet seen the message but have earned the unlock, in case of power outage or whatever.

That’s all for this week

Until next time,

~Zach

 

Wasps and Pretty Lines

I quite liked posting on Thursday of last week.  Let’s do it again!

I have a feeling the game won’t, in fact, be feature complete by the deadline I set, but… that doesn’t mean I won’t try anyway!

This week included adding some new features and some playtesting at Boston Indies, which met on Monday.

The biggest flags I noticed on Monday were:

  • Nearly every player tried to suck pollen out of the male flowers or out of spent bees
  • Common phrases I still hear are “I don’t know what I’m doing” and “Oh, I guess I won!”
  • A few people guessed that the left stick was the movement control and, upon approaching a bee cluster without first reading the tutorial, thought they missed something important when it advanced to the next step
  • New players often say there’s no point in interacting with opponents†
  • 2-player matches can be LOOOOOONG (a possible remedy for this, not yet implemented, was some sort of timer system: a traditional timer, or a timer than pulses up game stats to make each point count more)

†I’m not sure whether or not this is true, given the rebalancing I did of bursts.  Certainly when I played 3-player before, a Burst Troll could cause a pretty big upset — a good thing to consider though… could that player ever make it to 1st from last?  In any case, I think there are two things going on here. (1) Players perceive that player-v-player interaction isn’t beneficial to winning, and (2) player-v-player interaction might just not be beneficial to winning.  The perception issue is a tricky one; even if the interaction is beneficial, if players think it isn’t, the have little-to-no incentive to interact and find out.

I’m also becoming of the opinion that the speech-bubble tutorial isn’t cutting it (though maybe I’ll change my mind once people who play without it are even MORE clueless), as players still sometimes ask me questions the tutorial was meant to answer.  I’ve also gotten feedback that it’s obnoxiously large and obtrusive.  I must admit; when I play with it on, I try to make it go away as fast as possible.  That’s not a huge issue, as the tutorial is intended only to appear once (unless set on by the player), but I’d like it to not be something players will ignore because of how annoying they find it.

Now that I’ve mentioned a bunch of issues I’ve uncovered… let’s look at all the things I did that didn’t really resolve any of that (mostly) but that I think resolved other issues maybe!

More Rainbow = More Better

May 19, 2016 13:49

I didn’t explicitly mention this above, but a few playtesters asked about the crown.  I’m not sure if this helps, but I wanted to go-big-or-go-home with it (and… of courrse, I really wanted to make it have a rainbow trail).  I added the particle effect to make it more obvious that “hey there’s this thing marking this player,” even when you’re standing still (the crown itself is pretty stagnant), and hope that the rainbow will help make the motion even more apparent.  I have not yet color-blind-tested it, but I want the final version to read for the color-blind as well, of course.

I put the little heart on the head of the trail to mask the edge, but I kinda like the way it looks.

The particles also happy-accident-masked some of the not-so-nice-looking thing that happens to the trail when it passes over itself (you can see slight “creases” in the rainbow — the gif’s not great quality, but if you look, you can see it in this one).

More Pictures in the HUD

Screen Shot 2016-05-19 at 1.47.11 PM

Man, it would be great if I could just convey everything players need to know in the HUD in an unobtrusive way and could just get rid of the tutorial…

Here’s to hoping.

The images here, by the way, don’t exactly convey everything that the tutorial did.  Just as a refresher, the tutorial previously ran through the following steps (approximately):

  1. Approach Bees: Use left stick to move
  2. Attract Bees: Press A near bees to attract them
  3. Get Pollen: Hold A to get pollen from bees
  4. Refill Bees: Bring bees to male flowers to refill bees
  5. Burst Attack: Press X near opponents to make them lose pollen

There was more method to my culling than a lack of space (though… that was a big contributor, not gonna lie).

Unlike the bubble tutorial, this tutorial doesn’t name buttons or say what to do with them, it just shows pictures.  In particular, I think the conveyance of “left stick” was a little weak in the bubble tutorial (I got feedback on that one in particular; a player didn’t know what it meant, and thought it had to do with going to the left; granted this player was playing the keyboard-proxied version, but still… I don’t want people to be confused, and most people figure out that control intuitively).

I’ve condensed the two “A” button steps into a step because no one seemed to care that pressing “A” attracted bees in the abstract.  I changed the phrasing a little too, since I’ve realized that “suck” as a verb implies some hold-down-ed-ness that “get” doesn’t.

I hope that the pictures help, especially the picture next to burst attack.  I really want players to explore that option, if it is, in fact, as fun as I thought it was.

The two things I’ve taken out that I’m most unsure-of are: (1) explicit ordering of steps, and (2) mention that stuff becomes empty.

I won’t be sure until I playtest more just how critical these two things are, but if I can do without them, all the better.

Oh, and I did implement one more thing to help convey the need to refill bees…

Tendrils of Agony

A much more dramatic thing than what I actually implemented, but…

May 19, 2016 13:58

Now when you have insects around you, and the insects don’t have pollen, dotted lines dash out from you to all the male flowers in the field that can accept your spent insects.

hope this tells players “hey, go to this place.”

It’s possible people will just hate it and be more confused though.

Somewhat relatedly, it’s now a little easier to give bees/insects-in-general to male flowers, because, in changing some variable names, I set all bee infatuation times to 0, which means bees never go into an un-steal-able state.

I decided not to change the values back because I noticed players getting confused about when bees could be stolen — and more poignantly, I sometimes would get confused by this unless I was paying attention to the little hearts, i.e. looking for them specifically.

The consequence of this change is that it’s now quite difficult to capture bees from a male flower when it’s attracting, but this is less of a problem than it was before male flowers turned off eventually (by running out of pollen and needing to recharge).

Queen Bees

May 19, 2016 13:52

They’re pretty straightforward; they’re bees that can store more pollen.  That’s about it.

It’s good to have some simple stuff I think.

WASPS!

May 19, 2016 13:53

The much-requestd Wasp has joined the fray!

Before I talk about what they do, by the way, just to let you know, oh Imaginary Reader, according to teh Interwebz, wasps, are, like just total assholes.

Accordingly, and as people had suggested, wasps are just total assholes.

They create Bursts whenever they collide with a flower.  This could be you, or…

May 19, 2016 13:54

…this could be one of the male flowers.

I haven’t play-tested the wasp stage, but I’m interested to see what players think of it, and whether or not they’ll just plain hate it.

Wasps make the just-suck-on-bees game a little more interesting, because you can gift someone a wasp to really mess up the suckage, launch them (they stay on fire for longer than bees), launch them at flowers to make a flower essentially a death trap, use them as a battering ram…

May 19, 2016 13:56

I’m sure they’ve got other uses too.

I haven’t yet combined them with other things, but I’ll bet they’d be really nasty when paired with butterflies.  (Finally you could have a batterfly!  Though… stealing with butterflies is kind of like butterfly subterfuge… so… butterfuge?   Speaking of which, I wonder why I haven’t considered moths yet, if I’m going with the “this is a thing that looks sorta like this other thing”)

I haven’t written much about orbital distance for, like, any of the insects, by the way, but I decided that wasps should orbit a bit farther away than the others.  Butterflies do too, but I think for wasps, it’s especially important that you can hold them at a distance.  Because of this, it is actually possible to suck on bees while holding a wasp without causing a Burst, but you do have to be very careful about it.

Queen Bee/Wasp Stages

I like the idea of making content be level-based, so that content unlocking can just be “you’ve got a new level available, and it has some new stuuuuuuff”

 

 

Screen Shot 2016-05-19 at 1.56.18 PMScreen Shot 2016-05-19 at 1.50.46 PM

I doubt these will be the final stages, but here were the Queen Bee and Wasp stages I made.

The old version of the wasp one actually had an unanticipated consequence of male flower placement I really liked; the wasps would jump between the flower pairs.  Some setting I changed caused that to vanish though, sadly.  Perhaps I’ll revive it if I go with a layout like this.

And now presenting…

Misc. Stuff I Want to Do to Help with Stuff:

  • Make male flowers shut their eyes/shut down in some very visible way when they’re not attracting, and make them sparkle faintly when they are
  • Make full insects sparkle faintly
  • Do a zoom-in on the winner, as was suggested by a playtester, maybe even go all dramatic with a spotlight
  • Try how it feels changing the dotted-lines-to-flowers to moving arrows to better convey “GO THE FUCK HERE” to the player, but, you know, in a subtle way
  • If I do go back to making bees go into infatuation mode, make them go semi-transparent or get covered with the heart or something where the bee itself is occluded to make it look like a thing that can’t be taken.

I think this about sums stuff up for this week.

Until next time,

~Zach

Crowns, Gauges, & Butterflies!

Did I mention I like gifs?  There’s just something so satisfying about them…

At the beginning of this week (in addition to punching myself for postponing last week’s post until Monday), I set a deadline for myself for Floral Kombat for June 3rd, to see if I can add all the basic features I want by then†.

†A very convenient deadline, as I’ll be teaching a 2-month VR course (!) starting around that date, and that will be full-time.  Yes, this means I may need to take a few months’ hiatus.

I don’t expect to have everything in, but I do want to see how far I can get with that deadline in mind.

So what do I plan to add to the game?  Weeeeell…

The simplified list:

  • more insect types that do different things and/or have different stats
  • more simple terrain types (i.e., more than just walls: slow-down patches, rotors, bumpers, etc)
  • design the flow of how more complicated content gets unlocked/taught to the player

Plus, of course, balancing, polish, menus, etc etc.

So what did I do this week?  It’s slideshow time!

CLICK

(Did I mention I like gifs?)

Crowning

May 12, 2016 13:38

Something I noticed when playing 3-player was that it wasn’t always entirely obvious who was in first.  This can allow the player in first to be somewhat sneaky about creeping up to 100%, but I wanted to make that a little more challenging, so I added a crown that zips over to the player in first place.

Crowning has a few unresolved issues.  Because I only want there to be one crown, it was unclear by design what to do in the case of a tie, so I decided the crown should disappear and just stay where it was.  This gives the effect I want, roughly, which is that when a player zips into the lead, the crown zips on over, marking the player as a target.  Ideally, though, it’d be nice to mark all players in first.  Maybe I should just have there be more crowns then?  Or maybe the crown should split?  Maybe a crown’s totally incorrect for the metaphor I want?

Ideally, I think the crown (or whatever it is) should stand out a bit more than it does; yellow appears a LOT in the game already††.  Yellow makes sense for a crown, but could get away with being some other color, and I think that might be better.  I’d also like to add a rainbow trail to it so it makes a rainbow when it zips across the field, maybe even some sparkles’ll rain down, and it’ll have a nice glow…

In any case, I want it to be bolder than it is.

††no, I haven’t set the color palette yet, but I would like to reserve yellow for pollen (and things that make sense as yellow, like bees).

Leech Life

May 12, 2016 13:46

Some players thought that Bursting was giving them pollen, and someone even suggested making it cause pollen to drop onto the field as a pickup.

I decided to see how this idea would pan out.

Admittedly, I’m not too hot on it.  In any case, I’ve made it configurable (more on that at the eeeend), so I can turn it off/on pretty easily.

Flaming Bees!

May 12, 2016 13:39

Why not, right?

A lot of people thought that Bursted bees should have some attack characteristic and one of the most frequently requested features was the ability to launch bees as an attack, so…

Bursted bees get engulfed in flames briefly, and enflamed bees deal the Burst effect (knock-back + pollen damage) to any player who didn’t launch them.

Launching bees is pretty difficult as an aimed attack currently, but you can make pretty okay use of this by bursting an idle bee (the trajectory is much easier to eyeball, i.e. it’s a straight line vs the combination of tangential velocity and burst velocity).

As an unintended side-effect of the way setting bees on fire was implemented, bees also burst when a Male Flower ejects them… so I should probably fix that… or leave it, if people like it?  But probably not (people seemed not to like when male flowers burst when ejecting bees).

May 12, 2016 13:41

 

Burst Juice

It’s not gonna be a gif.  Sorry.

Screen Shot 2016-05-12 at 1.43.50 PM

Based on a suggestion posted on THIS VERY BLOG (:D), I’ve made Bursting expend a meter that refills over time.  This idea attempts to resolve the ability of Burst-trolls to essentially bring a match to a standstill in the previous version.

(and certainly all the configurable buffs I’m trying out on Bursting probably don’t help that issue any… but… but…)

I figured the HUD for this need only be on-screen (i.e. not also on-player).

As an added potential bonus, this may also help teach players how to Burst (I wanted to label the gauge in some meaningful way — I figured “burst juice,” which I figured would make sense only to me — and so putting the control input there made the most sense).

And…

Butterflies!

May 12, 2016 13:47

Ooooo aren’t they pretty?

But what do they do?

At first I thought they should be “batterflies” and orbit around you un-steal-ably and Burst opponents at a distance, but that’s not very butterfly… Then I thought they should shield against bursts… but I wasn’t sure what that would really mean exactly… so…

I decided to make them ATTRACT other insects!

May 12, 2016 13:48

The consequence is that butterfly holders gain the ability to grab insects WHILE MOVING.

The butterflies themselves are also pollen holders, so they can empty out bees for you.

[Fun fact(s?): the way I handle things that have other things orbiting around them is with a component I call BeeSystem — like a solar system, but for bees!  Now that there are more than just bees that can be in orbit, I’ve got to rename it, but, in wanting to keep the initials BS, I plan to rename it BugSystem, which is totally not confusing at all and has no other connotations especially not around computers.  I originally thought of dropping the BS and calling it InsectSystem instead, but “is” is a keyword, so that wouldn’t do… even though, honestly, I dislike the word “bug” with-respect-to insects.  Like, it just feels… it’s like called … well, I can’t think of an equivalent, but it feels imprecise and … OH like the term “outer space” though, honestly, I don’t really mind that one…]

Also, notice above I said that you can grab “insects” while moving.  Yup. You guessed it.

May 12, 2016 13:49

Butterfly chain!

It’s actually significantly challenging (or it was for me, anyway) to get a chain greater than two butterflies long, but I did once manage to get a 4-butterfly chain, and I felt really really cool.

Butterflies are not without… some special issues.  Because of the way orbiting is implemented (i.e., it involves attempting to trace a specific trajectory rather than interacting via some sort of 1/R^2 force), butterfly-butterfly interactions are… well…

May 12, 2016 13:52

I guess it kind of looks like they’re chasing each other?  Or, like, you know, just bein’ butterflies or whatever?

It’s… pretty chaotic.  Ideally, I’d like to get them into a binary orbit, since I think that’s what players might expect instead.  That’s what I did, anyway, before I thought about how I’d implemented it.

Oh, and it doesn’t help that they’re not only both in each others’ “orbits,” but also attempting to flower towards each other at all times, since they’re both attracting.

But, I guess it’s a thing for now.  I would say “it’s not a bug, it’s a feature,” but… they ARE bugs!

Something that really helped me move quickly this week is that I’ve recently gotten into the habit of implementing most new features to be configurable, i.e. able to be turned on or off with the flip of a boolean.  This is great, because it means I do a lot less waffling about “oh, is this change really good?” “Did I do it right?” etc etc.

Coding’s a lot like improv in that you get a lot more done/better results when you disregard your inhibitions.  (A friend recently mentioned a good adage: “Code drunk, debug sober, document high.”  Improv drunk, by the way, I think is actually a bad/dangerous idea, but the idea of not over-thinking it is what applies here)

Those are all the pics/gifs I have for this week!

Until next time,

~Zach

I made a Fun! & New Update Schedule

Basically since this Thursday’s B.U.G. Demo Night I started to get excited that maybe I actually made a fun thing(!), because people seem to want to play more rather than just saying “oh, that’s cute” when they play Floral Kombat.  I’m excited(!!).

Before reviewing this (past) week, just to get to the schedule-y bit, I’d like to propose a NEW UPDATE SCHEDULE for this blog!  I plan to update consistently on or before FRIDAYS each week, i.e. … what I meant to do when I first made this thing… so like… this is mostly me saying “Hey future you! Be accountable for stuff!”  So, okay, that’s done.

This (past) week, by the way, happened to contain two meetups: WIG Boston on Mon (talk) and B.U.G. on Thurs (demo night).  I’m thankful for both.

The talk at WIG was super-inspirational; it was a talk about game design and involved some discussion of what goes into designing a game, which, admittedly is something I really should have, like, just already known, but hadn’t heard formally in the same way.  I left feeling like🌈 I’VE LEARNED SOMETHING🌈 and so, that was good.  As you’ll remember, oh Imaginary Reader, I started Floral Kombat with the notion that I generally spend too much time on cosmetics at the start of my game dev process and wanted to experiment starting with just functionality, BUT (surprise surprise) a BALANCE is required when it comes to designing a game, as I learned from the talk.  Again, this is, like, totally something I should have already known.  Maybe I did.  I’m not sure.  In any case, just hearing it was very good.  In particular, I liked the way games were classified in the talk and breaking down a game into Goal(s) + Mechanic(s) + Theme(s) was helpful.  Basically it was inspirational, reminded me why I go to talks, and yeah.

Also, at WIG, I was able to discuss some of the things that were challenging me with-respect-to Floral Kombat; that discussion really helped me get things to where they were on Thursday.

And on Thursday…

PEOPLE THOUGHT IT WAS FUN

The biggest game changers were: (1) male flowers now have a pollen limit and a pollen re-spawn time — when bees deplete them, the flowers release them and have to wait to recharge before they can attract/refill any more bees; and (2) players now have the ability to “Burst,” i.e. to simultaneously launch all your bees and deal pollen-damage to nearby opponents.

Making male flowers eject bees I think is what finally prevented the gameplay from localizing around the male flowers.  This should have been a no-brainer, but because the male flowers eject the bees, the bees get scattered throughout the stage rather than gravitating around male flowers forever.

Bursting works a little like this:

May 09, 2016 07:53

What’s especially fun about Bursting/what I think makes it work really well is that it’s an offensive action that, by the nature of it, is more advantageous to use the less pollen you have.  Because of the way cool-down timing is set up† players can get into burst fights, but if you’re in the lead, this is generally a losing battle.  Also, with 3 players (as I discovered on Sunday††) Burst fights can also be risky, since they allow players uninvolved in the Bursting chaos to gather more pollen.  BUT if someone’s in the lead… you can bet that player’s gonna be Bursted by everyone else.

†When you Burst, you have to wait 0.5s before you can burst, move, or attract again; when you get caught in a Burst, you lose pollen, get knocked back, and can’t burst or attract for 0.25s, though you CAN move immediately.  This means that generally you can escape a Burst fight, but that, if Bursted, you can also Burst back before your opponent has a chance to get out of the way.  Bursting is pretty powerful, but also pretty high risk because of that.

††I played 3-player Floral Kombat with some friends on Sunday for the first time!  I know I should really have done this sooner, but… something something control ports?  I should really resolve this issue though, like, there exist solutions.

I pretty much thank Bursting exclusively for making the game fun; it upped meaningful player-v-player interactions, it allows people to troll††† if they want to, and (most importantly) it made people LAUGH and SMILE when they played!

†††In most matches (yes, even some 1-v-1) there was at least one person who would exclusively or almost-exclusively Burst, just to prevent other players from winning.  Like, I do want to make it so that trolls can’t bring a match to a permanent stalemate (and really it’s just an issue for 1-v-1, where one troll can really dominate), but, if that’s how people want to play, and they’re having fun, why stop them?  I’d at least like to include an option or setting that can turn Trolling on or off.  This could be (suggestions from Sunday playtesting) as simple as a timer on the match or a timed increment on how much pollen each bee gives you, so that the longer a match goes on, the more likely it is to end (and, of course, I’d like these to be settable by the players).  Both of these are, of course, also exploitable in different ways I suppose, but I do want to do something.

Now that the game is, like, fun (oh man, that makes me feel good to say), it’s become more apparent what things I can do to make maps dynamic.  Already, the 3 maps I have are vastly different.

Screen Shot 2016-05-09 at 7.44.43 AM

Stage 1 has lots of open space, plenty of flowers/dodging channels, and, in general feels pretty… standard?  Play was pretty simple; there was almost always a male flower ready for bees, and almost always a bee ready to be sucked.

Screen Shot 2016-05-09 at 7.48.55 AM

Stage 2’s lack of boundaries (bees collide with the black walls, but not the green ones with faces on them) turned out to make Bursting to eject spent bees a pretty good method of getting them to male flowers quickly.  Also, the tight/pocket-y nature of the stage made going to a flower risky, because you could get cornered pretty easily if you weren’t careful (or even if you were) and have to play a game of ring-around-the-flower to get out.

This was all totally unintentional, but I like it.

Screen Shot 2016-05-09 at 7.51.32 AM

Stage 3 involved a lot of defensive/offensive play because of the large amount of time that both flowers were recharging, and all bees were spent.  Play tended to rotate clockwise or counter-clockwise, and because of the scarcity of pollen, there was a lot more attempted stealing, and ownership of spent bees even became a contested thing (since a spent bee can become a full bee pretty quickly, once a flower opens up).

This was also all totally unintentional.

Now that I know how the stages work, I feel like I can do even more, and I’m also really happy that the stages managed to be this dynamic without introducing any new mechanics to the levels (which I do plan to introduce in future stages; only simple things, like slow-down terrain, rotors, oscillators, etc).

I’ve also done a few cosmetic things to try and help convey what’s going on.  I’ve added numbers to show pollen percentage.  I’ve made the math work out such that stuff always gives/takes away integer percentages of pollen AND such that most of the HUD is pretty easily parseable — oh yeah, the HUD is also new, or at least I haven’t mentioned it blogily, but Bees and male flowers (based off my brother’s suggestion) now have radial meters above their heads.  By making the math work out such that UI is easily parseable, I mean that these radial HUD displays pretty easily visually recognizable fractions, as seen on a pie chart, like 1/4.  When I first implemented Bee meters, by the way, I decided it looked cleaner/clearer to have the meters disappear when the bees were full, but, as someone pointed out at demo night, this made the full bees actually more difficult to see, so I’ve added a yellow mandorla around the full ones.

Other stuff: I had some fun with the percent displays and made them tremble the more pollen you have.  Eventually, I’d also like to make the players’ heads tremble too (which I hope would foreshadow the headsplosion).

May 09, 2016 07:50May 09, 2016 07:49

Uh uh, oh yeah, I also added a tutorial step to mention pressing X to burst, since, as was pointed out on Sunday, it really makes the game.  My rule for tutorial inclusion before was only to include things necessary to play the game, but given how important Bursting is to making player-v-player interactions fun, it just makes sense to include it.

Oh, also, re: tutorials, yeah, after my big long thing about how not to be afraid of them… no one read the tutorial or even noticed it… T_T so… I made the text bigger/bolder/outlined/easier to read, and… I think it worked?  Everyone after that seemed to read the tutorial just fine and to figure everything out without me saying things (except for how Bursting worked, since that wasn’t in the tutorial when most people played).

I’m not certain if everyone actually read the tutorial because they would have or just because I was there, but, either way, it was at least useful to see how confused people were after reading it, which, honestly, was not extremely, which is good.

Weeeeell… I think that’s most things.  All right, cool.

Time to not be bad at things and do stuff so that I can post things on Friday, W00

Until next time,

~Zach

Submitted to BFIG!

I submitted Floral Kombat to Boston Festival of Indie Games† on Friday!

This past week was spent mostly getting the game ready for that.

The game still is less dynamic/compelling than I want it to be, but I hope the judges are forgiving; in the past, they have been.  Either way, I know I can expect good feedback from the judges (all entrants, accepted or not, receive feedback forms).

The submission involved a video, which last year’s submission did not, to pitch the game and dev team.  Thankfully the video production quality isn’t a factor; it seems like this is the alternative to a written form, and I think it’s a nice way to give entrants a personable way to express what they want to express.  I did spend more time making the video than I would have spent filling out a form, but perhaps that’s also for the better.

I came through with this low-production-quality, but (I hope) high-representation-of-my-cares video.

[†by the way, they’ve extended their submission deadline to 5/8/16]

Overcoming Totorialaphobia

I know I have it.

This week, my goal involved overcoming it: making… A TUTORIAL!

(My phobia comes not in small part from what’s implied by some pretty insightful arguments about how effective it can be to design a game itself to teach player(s): teaching players any other way is BAD design.  I’ve realized though that this depends on what the game is teaching.  Design can be very effective at: unveiling story elements, introducing new mechanics, teaching new ways of using old mechanics, and/or simply showing what stuff does in reaction to other stuff; but it’s not very effective at teaching controls or multi-step cause-event chains (like what I have) — and explicit explanations aren’t so inelegant if they can be done quickly and in-obtrusively.)

This weekend I got more playtest feedback that indicated that the game itself isn’t doing enough to show players what is going on†.  Even my verbal explanations weren’t helpful.

[†These were casual in-person tests done without the aid of the bullet-point list I’d created earlier, so it was just the game, and me answering questions.]

Though this can mean that the game mechanics themselves are too complicated, it can also mean that my explanations of those mechanics are insufficient.  So… which one?

BAD Design or BAD Conveyance?

The way I have been pitching Floral Kombat is “a competitive pollination game,” which seems okay, since it usually elicits the response: “How does that work?”

Then stuff quickly falls apart.  My explanation is… well…

“You’re all flowers, and the goal is to fill your pollen meter before your opponent(s).  You get pollen from bees, which get pollen from male flowers, so you have to sort of ferry bees between male flowers to get pollen from them.  Oh yeah, by the way, you’re specifically a female flower of a type of dioecious flower — those are flowers that have sex organs on separate flowers, which is why you can’t cross-pollinate with opponents or self-pollinate and…”

You get the idea.

Until this week, the game included no in-game instructions other than a “Hold FOO” label that would appear whenever you were in-range of a bee (unless you have bees).

Since many people didn’t read the “hold” part, and, since the indicator disappears once you have any bees, many players would grab bees, wander around and then… and then… not really know what to do.  Those who DID figure out that holding causes the bees to give you pollen often didn’t notice that the bees ran out.  Those who figured that out, often weren’t sure how to refill the bees.

Those who eventually got everything were able to play, but thought the game didn’t really pop as much as it could and weren’t enthralled by it.

Bad design or bad conveyance?  You probably guessed the answer, like, just by reading that heading: BOTH.

How do I Fix This?

I’ve got a game with some design flaws, but also LOTS of conveyance flaws.  I have to fix both eventually, but I decided this week to challenge myself to first fix the conveyance to help me overcome my tutorialaphobia.

My brother had said his understanding of the game would have been helped immensely by something as simple as a how-to-get-pollen graphic, so I decided to start there.

 

My goal was to create a graphic I could show people that would explain clearly and quickly the base information needed to play the game — not how to play it well, just how to play it.

To refresh, my previous list of “what is imporant” was:

  • you’re flowers
  • those things are bees
  • those other things are NPC flowers
  • goal = get pollen
  • move with [Foo] inputs

and a suggested last item:

  • pollen comes from bees when you hold down the attract button and have bees around you

Already, there’s a lot on that list that I could just cross off.  The “what stuff is” stuff should be pretty clear at this point… or I should just redo the art.

I’m left with the goal, the movement inputs, and the getting-pollen input.

After more tweaking, I came up with with the following list:

  1. if bees are in range, PRESS [Foo] to get bees
  2. if you have bees, HOLD [Foo] to get pollen
  3. if bees run out, bring them to male flowers

An optional 0th item was added: Input [Bar] to move.

What I came up with was eventually this:

Screen Shot 2016-04-21 at 2.05.26 PMScreen Shot 2016-04-21 at 2.05.40 PMScreen Shot 2016-04-21 at 2.05.50 PMScreen Shot 2016-04-21 at 2.06.06 PM

 

The idea is to make the tutorial be an optional setting you can apply to your character from the character selection screen, and that will be turned on by default until players have played one match (then turned off by default, but still accessible).

What’s cool about this is that any number of players who want can turn on the tutorial option in a match if they REALLY want to, and players can complete the tutorial independent of each other (Originally, I designed a group tutorial that had to be completed by everyone, but I found that confusing.  Like, if someone sequence-breaks, it gets complicated to figure out who it is/who is at what step, as a player).

Screen Shot 2016-04-21 at 2.06.46 PM

Ideally, veteran players will teach newbies, but I want to provide this as an option.  Also, Floral Kombat‘s mechanics are… rather nontraditional.  It’s a racing game, but like… yeah.

Oh yeah, you’ll also notice I tried to follow that Title, Image, Caption format that was suggested to me for graphics.  I think these look good anyway.

I like that the titles all sound like objectives, and the captions don’t tell you TOO much.  Personally, I really like it when a game tells me to press a button, but lets ME figure out what that button did.  Like, I don’t mention “THE BEES GO AROUND YOU IN CIRCLES” because, well, you’ll SEE that when it happens.

I should also mention that, in designing tutorial graphics, I DID cheat a little and change something mechanical about the game.  It’s subtle, but I changed how bee attraction works.  I made bees visibly show when they’re infatuated with a flower by adding hearts above their heads.  A bee with a heart above its head can’t be stolen.  There USED to be a stealing cooldown time that was, well, like, you know, it would uh… when you stole from Male Flowers, they couldn’t steal back for a while, but like, other flowers could, so … and it would apply to all your bees and…

FORGET ALL THAT.

Now, bees become INFATUATED (represented by the heart) when they’re attracted to something new.  When a bee is infatuated, it can’t be attracted to anything else new.

One More Thing

When I was designing tutorial graphics, I started to wonder… how simple could I make the mechanics without losing the core of the game?

I came up with Bee-Ball!

It’s a mode I may or may not add to the game in which you can’t attract, but you CAN bump into bees.  Bees turn into bouncy balls that you get pollen from when you hit them, and that get pollen from male flowers when they hit those.  The game turns into a giant bounce-fest.

I do want to keep attraction as the main game, if I can successfully teach it and if players like it (not in small part because I find orbiting really really pretty), but I don’t see why not to include this as a game mode, especially since it’s pretty easy to implement (or was when I tried anyway).

If players really do prefer Bee-Ball to the primary mode I’m attempting to design, I’ll consider whether or not I should just make that be the main game.

 

I’ll leave with just one more screen shot, because I took it, and I think it looks pretty, even though I have one here that basically already shows the same thing (the new control indicator).

Screen Shot 2016-04-21 at 2.06.29 PM

Until next time,

~Zach