Categories
Game Design Game Development Geek / Technical

Freshly Squeezed Progress Report – Starting to Create Floating Numbers

As I reported last week, I settled on the features that would make the sewing specialist unique and implemented them in Toy Factory Fixer. Namely, this worker automatically crafts Good Toys assuming there are parts in your inventory for the type of toy they specialize in.

Related to this new feature, I wanted to continue working on some enhancements to communicate a few things to the player.

Sprint 43: Training levels

Planned and Incomplete:

  • Make sewing worker unique
  • Create floor training levels/tutorial

For many sprints, I always planned to get more accomplished than I actually could, and it was kind of demoralizing, so I decided to not pretend I was going to work on the tooltips functionality.

My sprint plan was supposed to be very manageable. Now that I have a third worker type, I wanted to create a level that introduces that worker. And to really finish the creation of this third worker, I basically wanted to communicate two things to the player that I didn’t need to communicate before:

  • If the worker is idle and can’t craft due to missing parts, I want the player to know this fact instead of wondering why this worker isn’t crafting.
  • When the worker starts crafting, I want to make it clear that toy parts disappeared from the inventory, something that wasn’t necessary when the player was manually deciding when toys were being crafted.

That’s it. Two visual indicators of some kind and a new level, and I figured the level would take the most effort to design and play test.

But last week was very unproductive for me. I only did game development for a total of 2 hours, which is very low even for my normally very, very part-time efforts. The last time I did so few hours was the first week of January, and, you know, it was the holidays.

Between the day job and other commitments, I found myself struggling to make time or have the energy to work on this project. It was kind of demoralizing, especially since the previous week was also a low productivity sprint.

So what did I accomplish? Well, nothing I can show yet, but I started working on showing floating numbers to indicate that toy parts are getting removed from the inventory. When the turn starts and a sewing specialist starts crafting, I want to see “-1” float up and then hover above each of the toy parts that make up the new Good Toy being crafted.

I figure these numbers can show up when you manually craft toys as well.

And some feedback I’ve gotten is to have floating numbers appear to indicate how much money you’ve earned when you ship a Good Toy.

I hope this coming week will be more productive.

Thanks for reading!

Want to learn when I release updates to Toytles: Leaf Raking or about future Freshly Squeezed games I am creating? Sign up for the GBGames Curiosities newsletter, and get the 24-page, full color PDF of the Toytles: Leaf Raking Player’s Guide for free!

Categories
Game Design Game Development Geek / Technical

Freshly Squeezed Progress Report – Introducing the Sewing Specialist

Last week, I reported that I fixed a major defect and finished creating a level that introduces the strong worker, and I started thinking about ways to make the third worker type more interesting.

I had less development time on average both that sprint and this latest sprint.

Sprint 42: Training levels

Planned and Completed:

  • Make sewing worker unique

Planned and Incomplete:

  • Show tooltips during game based on triggers
  • Create floor training levels/tutorial

For clarity, that planned work to create floor training levels? It consisted of a few separate subtasks, each of which is creating a specific level with a specific purpose.

The last task is to create a level that introduces the third worker, the sewing specialist.

Which means I needed to finalize my plans for what exactly the sewing specialist is supposed to be.

As I said with the strong worker, originally the only difference between the workers was stats and unique art. So strong workers were great at separating Bad Toys but terrible at crafting Good Toys, sewing specialists were great at crafting and bad at separating, and normal workers were average at both tasks.

After some play testing with the level in which I introduced the strong worker, I found that the strong worker wasn’t actually compelling as an option, so I changed things. Now strong workers can work on two Bad Toys at once, making them even more excellent for that task compared to the normal worker and justifying their increased cost. Nice!

Now the sewing specialist could similarly be granted the ability to craft more than one toy at the same time, but…BOOOOOORRRRRIIIIING!!!!

Also, hard. Strong workers just pick up more than one toy if it is possible, and I had to change how those toys get rendered, but that’s pretty much it.

But how do you tell a sewing specialist to craft more than one toy at a time? I would need to change the existing UI significantly for this to work, and I would need to worry about how confusing it would be for a player.

There were a lot of questions about how to implement crafting more than one toy at once, and so I decided to do something else.

I decided that not only are sewing specialists really fast at crafting Good Toys, but they’ll do it automatically. You just tell them what kind of toy to specialize in, and they’ll focus on it. If the parts are available, they’ll immediately start crafting it when the next turn starts.

Toy Factory Fixer - selecting a sewing specialist

Toy Factory Fixer - selecting a sewing specialist

Toy Factory Fixer - selecting a sewing specialist

You can also change the specialist’s specialty whenever the worker is idle:

Toy Factory Fixer - changing specialties

What’s funny is that this way of assigning work was something I was toying with as an idea for all of the workers, partly out of concern that it is tedious to need to continually tap to tell workers to craft toys. Now it is a feature that helps to differentiate a particular worker.

The only downside? I decided that they MUST have a crafting specialty at all times, and they will NOT work on separating toys.

My thinking was that this was the big tradeoff you were making when hiring a sewing specialist: a faster worker you don’t have to micro-manage, in exchange for not expecting this worker to pick up any Bad Toys that pass them by on the conveyor belt.

And now I have three very unique worker types that I hope are each compelling.

Unfortunately, I ran out of time to actually create a new level for this worker, but I can focus on it next time, as well as some visual indicators to make it clear when this worker is idle and unable to craft new toys in their current specialty.

Thanks for reading!

Want to learn when I release updates to Toytles: Leaf Raking or about future Freshly Squeezed games I am creating? Sign up for the GBGames Curiosities newsletter, and get the 24-page, full color PDF of the Toytles: Leaf Raking Player’s Guide for free!

Categories
Game Design Game Development Geek / Technical

Freshly Squeezed Progress Report – New Training Level and Fixed Defect

In the last sprint report, I reported that I had made strong workers more valuable by giving them the ability to separate two toys at once, which was a more interesting way of balancing them against normal workers than merely modifying some stats.

I continued to work on creating the level that introduces them in this past sprint.

Sprint 41: Training levels

Unplanned and Completed:

  • Defect: Workers seem to hold onto toys long after they should have been separated, eventually letting them go

Planned and Incomplete:

  • Show tooltips during game based on triggers
  • Create floor training levels/tutorial

I spent less time on game development last week than I have since May, and it was one of my top four least productive weeks of the year according to my records.

And since I needed to spend time actually figuring out what tooltips will look like and how they will function, and I needed to figure out how the third worker type will be unique, the lack of time dedicated to it wasn’t great.

That said, I did manage to finish creating the third training level, which introduces the strong worker, and while play testing it, I discovered a serious bug that had a silly cause.

Investigating and resolving a major defect

At one point I noticed that some of the workers would hold on to a Bad Toy they’ve separated. They should immediately toss the parts into your inventory, but they wouldn’t.

I added some debugging text to figure out if it was a weird issue with the health of the bear or the type of worker or something, but eventually I figured out that it was due to the fact that toys now have unique IDs.

Since workers can now work on separating multiple toys, I needed a way to tie the toys they were working on to the worker and vice versa, mainly for rendering the correct things on the screen. Toys already knew which worker was holding them, but workers now knew which toys they were holding onto by their unique IDs.

Which is fine when those IDs are, in fact, unique, but weird things happen when two toys are on the screen with the same ID.

Which happens when I configure a level’s production runs by reusing toys that I add to the dispenser.

So basically on the third level, around production run 8, there are a set of toys that are dispensed and I wanted the same type of toys to get dispensed shortly afterwards, and basically I accidentally put toys with the same ID on the screen at the same time.

So a worker would work on, for example, a toy with ID 85, but another toy with ID 85 would be on the conveyor belt elsewhere. The worker would finish separating toy #85, but when the code looked to see which toys were finished being separated, somehow it would find the non-separated and pristine toy #85, and so the worker wouldn’t let go of the toy.

So the easy fix was to just configure the level with unique toys, but the risk is still there if I forget and do the otherwise easy-to-make mistake of re-adding toys that were already created.

Eventually I was happy with how well the third training level worked, and I started working on the fourth training level, which introduces the third worker, the sewing specialist.

Making the third worker also unique

One thing I liked about giving the strong worker the ability to work on multiple toys at once was that it made the strong worker more than a mere change in stats from the normal worker. They are truly two different types of workers.

Originally the strong worker was very strong at separating and very weak at crafting, and the sewing specialist was very strong at crafting and very weak at separating.

The obvious thing to do with the third worker was to allow them to craft two toys at once, to mirror the strong worker’s ability to separate two toys at once. It was a bit more challenging a task since I would need to change the crafting menu somehow to make it easy for the player to communicate that they want two toys to be crafted, and I would need to figure out what UI challenges to overcome there.

But the more I thought about it, the more I wanted to make this worker type similarly unique and not a mere mirror of another worker type. It just wasn’t compelling enough to me to have a worker that can merely craft two toys at once.

Toy Factory Fixer - notes for designing the third worker

I thought about how crafting serves a very different purpose from separating, and how important it gets towards the end of a level when you are no longer getting more parts in your inventory but are instead trying to get as many toys put together as possible.

Maybe the sewing specialist can take two compatible Bad Toys and instantaneously turn them into Good Toys? I liked this idea, but the problem was that the toys coming down the conveyor belt wouldn’t always be compatible. So should this worker pick up two incompatible Bad Toys and try to separate them? Or should they only pick up one Bad Toy at a time unless they can pick up two compatible toys? There was a lot of complexity here.

Then I reflected on how tedious it can be to tap on a worker, tap on a button to tell that worker to craft, and repeat.

I thought about having the worker instantly craft an arbitrary number of Good Toys at once, based on parts in inventory and the worker’s capacity (2, 3, or even 10?), with a potentially long cooldown period in which that worker couldn’t do anything. I still like this idea, but then I thought of another.

What if the sewing specialist’s unique ability is to be told to craft a certain toy type once, and they will continue to craft until the parts inventory is empty for that type, and will continue once those parts are available again?

It kind of reminds me of games like Cookie Clicker, in which you manually do some tasks, but eventually you can earn enough to purchase things that automate those tasks for you. Maybe there is value in giving an option to avoid the otherwise tedious activity? Which makes the tedious activity less of a design defect and more of a purposeful part of the game?

So what’s the downside to having this worker automatically crafting toys? Maybe you would prefer to choose a different worker in a different location to craft a particular toy, but you can’t stop this worker from doing so first, which might mess with your strategy if you were trying to finish a level in the fewest turns.

More obviously this worker can’t pick up and separate Bad Toys when crafting, but should this worker not have the ability to do it at all? Is there no such thing as this worker being idle, or can the worker be idle if there are no parts to craft and so is available to collect Bad Toys on the conveyor belt?

And if the worker is assigned to crafting a single type of toy, what if you want to switch them to a different type? Should there be a cost to reassigning the task? Is the cost money, or a worker who can’t do anything for a few turns?

Some of the work I have ahead of me is figuring out how to communicate to the player which kind of toy this worker is trying to craft when they are otherwise looking like they are idle.

But the role of this third worker clearly needs more time to marinate.

Thanks for reading!

Want to learn when I release updates to Toytles: Leaf Raking or about future Freshly Squeezed games I am creating? Sign up for the GBGames Curiosities newsletter, and get the 24-page, full color PDF of the Toytles: Leaf Raking Player’s Guide for free!

Categories
Game Design Game Development Geek / Technical

Freshly Squeezed Progress Report – Now Separating Two Bad Toys at Once

In the previous sprint’s report, I made it clearer how much a toy is worth when you ship it, and I spent time designing and thinking about some aspects of the game’s levels and UI.

This past sprint I focused on changing the way the Strong Worker behaves.

Sprint 40: Training levels

Planned and Completed:

  • Make strong worker able to work on two toys at once

Planned and Incomplete:

  • Show tooltips during game based on triggers
  • Create floor training levels/tutorial

There was a lot going on at the day job as I wrapped up a project there, so I once again didn’t put in as much time on this project as I would have liked.

As I mentioned a few sprints ago, I realized that the Strong Worker wasn’t as valuable as hiring two Normal Workers. I could try to tweak the hiring costs to balance things, but then the Strong Worker would be merely a variation on the Normal Worker, which did not feel very interesting at all.

So I decided to enhance the Strong Worker by giving them the ability to separate two Bad Toys at the same time.

And it turned out to be a bit more complex than initially anticipated, even though I spent a bit of time anticipating.

Originally toys knew if they were held by a worker, but they didn’t know whether they were being crafted or separated. Workers didn’t know about the toys they held, but they knew if they were crafting or separating. And somehow this worked fine.

But now workers had a capacity for how many Bad Toys they could separate, which meant they needed to know what toys they were holding at once. And rendering the toys required knowing if they were being held by a worker who was holding another toy so that they toys would be offset from each other.

And I noticed that when the worker threw both toys at the inventory that you couldn’t easily see it, so I added variations to the arcs of the throws.

And then I had to fix the problems I introduced in which toys would disappear if they were technically still considered “held by” a worker who didn’t think they were working on any toys resulting in messed up math.

But in the end, it looks relatively good, and now I can see how much impact on the balance of the game there is to have a Strong worker who can do the job of potentially two Normal Workers.

Toy Factory Fixer - Strong Workers separating two toys at once

Which of course got me thinking about what could make the third worker special and unique.

Thanks for reading!

Want to learn when I release updates to Toytles: Leaf Raking or about future Freshly Squeezed games I am creating? Sign up for the GBGames Curiosities newsletter, and get the 24-page, full color PDF of the Toytles: Leaf Raking Player’s Guide for free!

Categories
Game Design Game Development Geek / Technical

Freshly Squeezed Progress Report – Communicating Good Toy Value

In the previous sprint report, I had created a number of enhancements to make Toy Factory Fixer easier to understand and play. More importantly, I got some great insight into how the Strong Worker actually works and decided I wanted to change it.

I had some big ambitions for this past week’s sprint, but other priorities took over.

Sprint 39: Training levels

Planned and Completed:

  • Show Good Toy rewards in crafting menu

Planned and Incomplete:

  • Make strong worker able to work on two toys at once
  • Show tooltips during game based on triggers
  • Create floor training levels/tutorial

While I managed to put in more game development hours than I normally do, the lion’s share of that time was actually spent on updating Toytles: Leaf Raking, my leaf-raking business simulation game.

Both Google and Apple have updated their requirements for apps in their stores, and so I needed to update the game to work on the latest Android and iOS devices. I have been putting it off, but with autumn starting in the northern hemisphere soon, and since the game is about running a business raking leaves, I wanted to ensure the game works for everyone.

Which meant that I didn’t get to make much progress on Toy Factory Fixer.

I did spend a bit of time trying to make it clearer to the player how much Good Toys are worth AND make it clear that they need to be shipped to get that value.

So after some good advice from people on Twitter, I ended up changing how money was shown in the game in order to create as concise a visual formula as I could.

If you recall from last time, I added the new pigeon gold coin, and any monetary amounts were shown next to that coin. The problem was that the icons to show “ship something to get XYZ money” were getting kind of long and awkward.

Well, rather than have the money amount next to the coin icon, I decided to put the amount on top of the coin.

Which meant I needed to change the saturation so that the letters read better. Here’s what it looked like before:

Toy Factory Fixer - coins in UI

And here’s what it looks like now:

Toy Factory Fixer - updated coin text

And now here’s the crafting menu with the formula shown:

Toy Factory Fixer - Good Toy value formula

I think the shipping chute could use some more work to make it clear what it is. I was thinking about changing it into a van or truck, so the toys jump off the conveyor belt into the back of it, and so a small truck icon should read more clearly.

And of course, if there is a truck, it should drive away at the end of the level, right?

I otherwise spent time working on designing tooltips. First-time players seem to struggle with understanding what to do in the game, and so I think it makes sense to throw in some animated arrows or word bubbles that basically say “Tap here next!” at the appropriate times.

I was also thinking about the level design, wondering if I could create two or three separate levels using the same level layout. Basically, in an attempt to make the game challenging, I might have made it too difficult. And my first few levels are called “training levels” so maybe it makes sense for them to go easy on new players. Maybe I can make three levels and call them 1st shift, 2nd shift, and 3rd shift, and each gets progressively more challenging. Then you can move on to the next level layout’s three shifts.

And of course, I would love to implement the ability of strong workers to work on separating two Bad Toys at once. I have also been thinking about what that means for the uniqueness of the Quick Sewing Worker. Should they be able to work on multiple Good Toys at once? Is it enough that they work on one Good Toy very fast compared to Normal Workers? Should they be able to do something else entirely, such as throw Bad Toys at the nearest idle worker?

And at what point is it feature creep as opposed to merely trying to make sure this game makes a good impression when it is finally released?

Thanks for reading!

Want to learn when I release updates to Toytles: Leaf Raking or about future Freshly Squeezed games I am creating? Sign up for the GBGames Curiosities newsletter, and get the 24-page, full color PDF of the Toytles: Leaf Raking Player’s Guide for free!

Categories
Game Design Game Development Geek / Technical

Freshly Squeezed Progress Report – More Enhancements and Level Design Insights

Last week, I gave a report for two sprints in which I fixed a few defects, added a few enhancements to the user experience, and worked on new training levels.

My plan was to continue creating training levels this past week.

Sprint 38: Training levels

Planned and Completed:

  • Show current production number
  • Disable hire button if no workers can be hired
  • Create gear icon for Options menu in game

Unplanned and Completed:

  • Add delay when the production run button is available
  • Defect: Special effects can stay on screen if level reset while active

Planned and Incomplete:

  • Create floor training levels/tutorial
  • Show Good Toy rewards in crafting menu

You know how sometimes when you are play testing your own game that you wish you had more insight into what is going on? And you can always add debug text to help, but other times it is something that any player might want?

Yeah, I found it annoying that my levels have 9 production runs but that there is no indication which production run is currently in play. That is, I can see how many toys I’ve shipped compared to how many toys are possible to ship, but I had no in-game way to know which of the production runs I was in and which one would be next. So I added an indicator, which also has the nice bonus of giving the lever indicator a home to anchor to so it didn’t look like it was floating separate from the dispenser.

Toy Factory Fixer - production run indicator

Due to how the turn order operates, if there is a lot going on, there is a natural delay between turns. That is, if workers are grabbing toys, crafting toys, separating toys, and dropping toys on the conveyor belt in a single turn, there might be a substantial delay. But if none of those things are happening, then going from one turn to the next takes very little time.

Which is annoying when you are trying to tap the “next production run” button because you want to launch the next run early and get the sweet, sweet monetary bonus for doing so.

And in play testing, I see that people don’t generally realize they can tap that button. So I made it flash each turn, which should help highlight it to players, and I ensured that the flash will last a certain amount of time. If other things are happening, then the flash will likely be over before the turn is. If nothing else is happening, then the next turn won’t start until the flash ends.

Toy Factory Fixer - production run button flashing

It’s one of those kill two birds with one stone kind of things.

Addressing playtester feedback

Speaking of birds, I wanted to add pigeons to my games. Because I like pigeons. I also remember back when the N64 was new that every game had a penguin, and I figure there is a precedent for adding arbitrary birds to games.

While I had pictured a pigeon flying around the toy factory floor, periodically landing when the game is paused or stopped, but I couldn’t justify the time to do something like that when there is so much I still needed to do.

BUT! I decided that I could at least do something about how the cash in the game doesn’t really have any visual indicator except for the text “Money” in the UI.

While creating a visual money indicator meant that it would be easier for me to show what the reward for shipping different Good Toys would be, the real reason is because I wanted pigeons in the game.

So I created a gold pigeon coin:

Toy Factory Fixer - Gold Pigeon Coin

Blown up at full size, it looks a bit ugly and rough, but shrunk down, the coin looks decent enough.

Toy Factory Fixer - coins in UI

Toy Factory Fixer - coins in UI

Unfortunately, I wasn’t able to finish the work of indicating to the player how much a Good Toy is worth because I didn’t know a good way to do so. If I put it in the main inventory boxes, it could look like I was saying you had that much coin in there. If I put it in the crafting menu, it might look like I was saying that you would earn that money for merely crafting the Good Toys.

Maybe I needed to create a separate overlay that appears if you tap on the crafting formula or the inventory? Maybe I just put in some initial help text? I don’t know. I’m going to ask for advice from colleagues who might have more experience with UI development.

I disabled the “hire” button if you can’t afford to hire any workers, partly because I noticed that my wife would focus so much attention on managing the workers that she missed the fact that she had earned enough money to hire more workers to make it easier. So now, if the button is dark and unlit, you know it isn’t possible, but if it is orange and lit, you know you can.

I also replaced the options button with a gear icon. I’m not exactly happy with it. It doesn’t look like the other buttons, which is good because it clearly looks different enough that you won’t get confused with a regular in-game button, but now it might not look like you can press it at all.

Toy Factory Fixer - new gear icon

Learning more about the nature of strong workers

In the previous sprint, I had almost finished up work on a third training level which introduced the strong worker, who can separate toys much faster than normal workers but can’t craft as fast.

And the level seemed to work great as I did my own playtesting. Depending on how many workers I hired and where I placed them, I found more than a few strategies I could employ.

Then I decided to replay the level and not hire any strong workers at all, and I was disheartened to find out that it was actually easier to do very well without them. Whoops.

Part of this is because I didn’t do any real balancing yet. I had lowered the cost of hiring a normal worker when creating the first two levels, but I didn’t change the cost of hiring the strong worker yet. So it cost more than twice as much to hire a strong worker than a normal worker.

But strong workers aren’t twice as good at separating Bad Toys. I mean, they do take one turn to separate a small toy while a normal worker takes two turns, but you could always hire two normal workers instead of one strong worker, still be 10 pigeons ahead (haha, now my game has its own slang for money), and having two normal workers means you stop two Bad Toys from advancing while one strong worker still only stops one toy.

On top of it all? The strong worker’s role comes early in the game. That is, you want strong workers to grab toys as soon as they get dispensed, so you’ll place them near the beginning of the conveyor belt. If you want to get the best grades, you want to use as few turns as possible, so you don’t want workers near the beginning of the belt to do much crafting because then Good Toys have to travel a lot more around the conveyor belt, and therefore using more turns, before getting shipped.

But I found that the end of the level requires a lot of crafting, as your inventory is fairly full, so you’ll use your normal workers at the end of the conveyor belt to do that work, and your strong workers are fairly idle.

It makes me think that introducing strong workers should come after the workers who are experts at sewing.

I obviously need to lower the hiring cost of the strong worker, and I can model some in-game economics better in order to come up with a better number.

But I also wonder if the strong worker should have a special ability to work on two Bad Toys at once. Having a single worker who can be placed in an optimal position AND can do the work of two normal workers? And if I can create a fun animation, like the strong worker slamming the two Bad Toys together like a bouncer dealing with rowdy patrons? It seems so satisfying and fun. At least, in my head.

And this is when I worry about the difference between feature creep and must have.

I can imagine a future version of this game in which you can train workers to “multitask”, so it costs money to essentially upgrade a worker with the ability to work on two toys at once. I already have the ideas of training and purchasing items as things that won’t go into this version of the game.

But I think it would let the strong worker have more character if they aren’t just a normal worker with a different piece of art and slightly different stats. Merely lowering the hiring cost might not make them interesting enough, but having them be able to tackle two Bad Toys at once? That’s interesting.

Anyway, it’s September now, and the game is still continuing to get better and better yet hasn’t gotten to the point where I feel good releasing it yet.

Thanks for reading!

Want to learn when I release updates to Toytles: Leaf Raking or about future Freshly Squeezed games I am creating? Sign up for the GBGames Curiosities newsletter, and get the 24-page, full color PDF of the Toytles: Leaf Raking Player’s Guide for free!

Categories
Game Design Game Development Geek / Technical

Freshly Squeezed Progress Report – More Training Levels and Minor Fixes

I missed my sprint report last week due to being on a long weekend vacation with my family, so here’s double the report!

Two weeks ago, I reported fixing some major game play issues and getting the first level of the game into a finished state.

I continued working on the levels and addressing things as I saw them.

Sprint 36: UI enhancements and training levels

Planned and Completed:

  • Worker menu should allow other workers to get picked
  • Unpause after leaving a menu that auto-paused

Unplanned and Completed:

  • Defect: Hire menu doesn’t update when money is added
  • Defect: Clicking disabled button in crafting menu takes you to place worker menu, which crashes the game when used

Planned and Incomplete:

  • Create floor training levels/tutorial

Sprint 37: Focus on creating training levels

Unplanned and Completed:

  • Defect: Color changing doesn’t affect worker eyes, making them look weird

Planned and Incomplete:

  • Create floor training levels/tutorial

As I mentioned in the last sprint report, I made some changes to the flow of the game based on play tester feedback. One of those things was automatically unpausing the conveyor belts once you leave a menu that paused it.

Now, I’m worried it is a bit clunky, but I think part of the problem is that there is no visibility into whether you are merely paused or actually stopped. You can see the presence of the Stop button as a clue, but I think it is too subtle.

So I decided to revisit the lever widget I made, which sits on top of the dispenser sprite to indicate if the game has stopped or is playing. I want to make an intermediate state that shows the game paused instead.

I finished this work, which shows that the state is “paused” as opposed to “stopped.”

Toy Factory Fixer - paused indicator

I fixed a defect in which the hire menu would not update the buttons if you happen to earn enough money to hire a worker. Basically, when you bring up the menu, it checks the current state of the game and enables buttons if you can afford to hire a worker. But once you earned more money, you would need to exit and reopen the menu, which was ridiculous and also an easy fix.

I also apparently introduced a defect in which one of the crafting buttons, if disabled, was not using the correct value, so tapping on it would cause the wrong thing to happen, and in this case could lead to a crash. I fixed that issue as well.

One thing I found annoying was that I might be in a menu, and decide to tap on one of the workers to go to their crafting menu, but I couldn’t. I would need to exit a menu, THEN open the crafting menu. I changed it so that so long as the worker was visible on the screen, you could tap on them at any time, which made the game feel a lot less clunky to play.

And a minor defect that was really bothering me was that the blinking eye animation that I added to the workers was not changing colors with the rest of the worker. The changing color was an indicator that the worker was idle and could craft something, but since the eyes weren’t also changing color, it just looked wrong. It looks a lot better now.

Otherwise, I focused on putting together actual playable levels rather than the test levels I was using. I managed to get two training levels completed, introducing the different toy sizes and two of the three worker types.

Toy Factory Fixer - new training levels

My main challenge in creating these levels is that I want it to be possible to get A+ in each of the three grading criteria if you play perfectly, yet also get an OK grade if you make at least some effort. And I’m still figuring out what “playing well” looks like.

In one level, I set a target shipment deadline of 190 turns, and then I realized I had forgotten to add a ninth production run of toys, so I thought I would need to increase the required number of turns. Shortly afterwards I also discovered a new optimal way to place the workers which helped cut down the number of turns substantially enough that I got the level finished in 186 turns! So I kept it at 190 and did not put it at 186 because I figured a player would feel more delighted about doing better than the game suggests they could do.

I am finishing up work on the third training level that introduced the stronger workers who can separate Bad Toys faster. It mainly involves testing the game play and seeing if it needs to be more or less challenging, and then I’ll work on the fourth level which introduces the faster crafting workers.

Unfortunately, I don’t have a plan for the number of levels I want to release the game with. Perhaps I’ll add one more level with all of the elements in place.

Meanwhile, my wife play tested some of these levels, and she helped me uncover a few UI issues that I want to fix before the official release, such as how hard it is to realize you have enough money to hire more workers if you are busy paying attention to everything else.

It’s also perhaps too hard, especially for what are supposed to be “training” levels.

I had originally intended that the game play would be the opposite of frantic. It is technically turn-based, but I find that you still have to be fast to do well, stopping the advancement of turns at the right time. So it isn’t quite as forgiving as I wanted it to be, and I’m still figuring out how to address it.

The adage about the first 90% of the work being hard and the last 90% of the work being harder has some truth to it.

Thanks for reading!

Want to learn when I release updates to Toytles: Leaf Raking or about future Freshly Squeezed games I am creating? Sign up for the GBGames Curiosities newsletter, and get the 24-page, full color PDF of the Toytles: Leaf Raking Player’s Guide for free!

Categories
Game Design Game Development Geek / Technical

Freshly Squeezed Progress Report – UI Enhancements and Training Levels

In last week’s sprint report, I added more effects to make the workers seem more alive, streamlined the player’s start to the game, and updated the grading criteria for the end of the game. I also started work on creating the first level of the game.

My plan for the last week was to continue creating and tweaking the training levels as well as addressing some issues I noticed during recent play tests.

Sprint 35: UI enhancements and training levels

Planned and Completed:

  • Prevent worker menu from showing actions that aren’t possible
  • Make Options menu clearly separate from game play menus

Unplanned and Completed:

  • Defect: Prevent player from commanding worker until after turn is finished processing
  • Unpause after leaving a menu that auto-paused

Planned and Incomplete:

  • Create floor training levels/tutorial
  • Worker menu should allow other workers to get picked

So having other people participate in play testing is invaluable for a game’s development. I might regularly dive deep into an aspect of the game, but even if I come up for air and try to get a sense of the whole of it, I know too much.

I play the game based on my own understanding of it, which is much more comprehensive than someone hasn’t been working on it almost daily for 35 weeks.

All this is to say that it was very eye-opening to see what areas of the game made someone struggle that I wouldn’t have noticed, such as not knowing where to tap on the screen, knowing what to do at any given time, or even getting frustrated when trying to do something only to have the game simulation catch up and take the option away.

I watched my wife play the game for the first time in weeks, so there were a lot of enhancements since her last play test, and this was the first time she played on what is a candidate for a final version of a level that will make it into the game.

One thing she uncovered turned out to hide an insidious bug that I thought I had already addressed.

Preventing workers from doing two things at once

Basically, the game runs in turns. A turn runs in phases, such as moving all of the toys down the conveyor belt, or allowing idle workers to pick up nearby Bad Toys, or letting workers do their jobs, etc.

After a turn starts, it continues through the phases until it is done. So even if you tap on a button or a worker and open up a menu, the turn continues until all phases are done.

What was frustrating my wife was that she sometimes wanted to tap on a worker to open up its crafting menu, but before she could tell it to craft anything, it would pick up a Bad Toy and so would be unavailable to craft anything. Doh!

So I made a note to try to address that problem.

But what I uncovered in my own experimenting with it is that you can, in fact, tell the worker to craft a Good Toy while it is simultaneously grabbing a Bad Toy, which means two toys end up being held by the worker.

Oddly, due to how crafting and separating work, the very next turn would show the worker throwing a Good Toy on the belt, and I have no idea where the Bad Toy went.

So a minor annoyance was actually hiding a major defect.

I ended up making workers show as busy when a turn is progress, but as soon as the turn is over, the crafting menu will appear if it is available. So now it is impossible to get into that state, and despite my worries, it actually doesn’t feel terribly arbitrary.

You tap a worker, open up its menu, and you see “Worker is currently busy” for a moment, and then either the worker stays busy or the crafting menu appears.

It occurred to me only now as I write this sprint report that it is possible for certain phases to allow a pause. The reason why the turn phases finished no matter what was because when I didn’t have them do so, I ran into a similar defect. When you opened the worker menu, the crafting menu would appear, but one of the phases checks to see if a worker is idle and is ready to pick up a Bad Toy. So if you told the worker to craft after that phase, the worker would be seen as eligible when it really wasn’t, and so you would see the worker hold two toys (and sometimes lead to a crash).

But perhaps some phases, such as one before checking worker eligibility for picking up Bad Toys, could allow you to command a worker, so at the start of a turn the worker is idle, but partway through the worker would be busy, and so long as the change happens at safe times within a given turn, it would be fine AND might feel more responsive.

Well, maybe I’ll try that approach if I get more feedback about it or if the current approach starts to bother me enough.

Clearer UI and menus

I also noticed that it isn’t always clear which button to press, so I made a number of changes.

Before, the options menu looked like it was part of the game, which kind of hid the fact that it was basically asking you to quit the game.

Toy Factory Fixer - old options menu

The new options menu makes it very clear that it is separate and asking some very big questions:

Toy Factory Fixer - New options screen

I also changed the “Back” button and “Options” buttons to be more iconic and gave them a different color, which might help with communicating that they are different. I also made sure that the back button was in the same location on each menu, as before it was inconsistent, which means a player can’t use muscle memory and also means the game feels inelegant and awkward.

The back button was now a big X, which required updating the helper code that creates those standard looking buttons to allow me to pass in an arbitrary font.

And since I did so, I might a well make the bigger buttons use a bigger font.

Also, I added bigger buttons to certain menus to make it clear what the player is encouraged to do next.

Here’s the old level configuration options menu:

Toy Factory Fixer - Level Configuration

And here’s the new menu, with a bigger and clearer call to action:

Toy Factory Fixer - updated level configuration menu

Even the main menu, which already had a large button, now looks better with a bigger font:

Toy Factory Fixer - Game Play

vs

Toy Factory Fixer - enhanced main menu

A simple thing like making the font bigger on the bigger buttons really adds to the clarity of the game.

Automatically unpause the game

Another play tester gave me this same feedback across multiple builds, so I decided to experiment with a change that might address it.

The game runs in turns, but to avoid tedium, the player doesn’t have to advance turns manually. There is a Go button that starts the turns, and the turns will advance until the player hits the Stop button. Then the current turn will finish, and the next turn won’t start until the player hits Go again.

I wanted the game to be more about thinking than about dexterity, and so the expected way someone would play is that they might tap a button to open a menu, and when that happens, the continuous turns would stop automatically. Then the player can plan, tell a few workers to craft something, or even hire a worker, and do so on their own time. When they are ready, the player can hit Go.

But my play tester found that it broke the flow of the game. Basically, when he opened a menu, the game seemed to pause, but when he was done with the menu, either by taking an action or hitting back, he expected that the game would start back up again instead of requiring him to hit the Go button each time.

So I thought, “Why not?” and tried to implement a pause/unpause. So instead of a menu resulting in the continuous turns stopping, the turns would be paused, and exiting the menu would unpause. I changed the turn update code to only advance if the turns were advancing AND the game was not paused.

I needed to make sure that turns started advancing again once you unpaused, which introduced a problem.

Let’s say you have three idle workers. If you tap on one, you can tell the worker to craft a Good Toy. But as soon as you do, the next turn advances, and so you might find yourself wasting turns as you quickly try to tell the other workers to craft something.

So I decided to add the Go/Stop button to every menu, which required rearranging some things for some menus.

If the turns weren’t advancing, the Go button would be disabled in those menus, waiting until the player would get to the main in-game menu to hit Go. But if the game was merely paused, the player had the option of also stopping turns from advancing entirely.

Toy Factory Fixer - new crafting menu

Now, I’m worried it is a bit clunky, but I think part of the problem is that there is no visibility into whether you are merely paused or actually stopped. You can see the presence of the Stop button as a clue, but I think it is too subtle.

So I decided to revisit the lever widget I made, which sits on top of the dispenser sprite to indicate if the game has stopped or is playing. I want to make an intermediate state that shows the game paused instead.

Unfortunately, even though I updated the art and have all of the pieces pretty much in place in terms of code, I didn’t finish the implementation it by the end of the week.

So, expect to see it next week.

I got straight As for the first time!

On a side note, while playing the game myself, I’ve been struggling with balancing the first training level in a way that allows a player to actually ace it.

I had updated the grading criteria in the previous sprint, and I updated the level’s configuration to try to make it possible to not only ship all possible toys but also do so within a target number of turns and get a great Return on Investment.

And a few days ago, I got close to a perfect level:

Toy Factory Fixer - almost perfect grades

I know I missed those last few toys because it was impossible to get all of them with the workers I had hired and their placement. A player would not be happy to realize that it wasn’t possible, so as a developer, I need to tweak it so it isn’t impossible.

But I did recognize that I wanted to replay the level to try to get all A+ grades, which was a nudge telling me that this aspect of the game is important.

Thanks for reading!

Want to learn when I release updates to Toytles: Leaf Raking or about future Freshly Squeezed games I am creating? Sign up for the GBGames Curiosities newsletter, and get the 24-page, full color PDF of the Toytles: Leaf Raking Player’s Guide for free!

Categories
Game Design Game Development Geek / Technical

Freshly Squeezed Progress Report – Worker Polish and Training Levels

In my previous sprint report for Toy Factory Fixer‘s development, I had added some enhancements that make it clearer to the player (and potential viewers of a future Let’s Play or even just a family member watching over the player’s shoulder) that the Bad Toy parts get thrown into the inventory.

For this past sprint, I wanted to focus on continuing to make workers seem a bit more than static robots, as well as start work on creating actual levels rather than the test ones I have been using since the beginning.

Sprint 34: Worker polish and training levels

Planned and Completed:

  • Make worker eyes follow to nearest toy on belt

Unplanned and Completed:

  • Test feedback: not clear what you need to do (such as hire workers)
  • Finalize grading algorithms

Planned and Incomplete:

  • Create floor training levels/tutorial

I had a very productive week in terms of game development. I mean, relatively productive. I am still doing this work very, very part-time, but I found I was able to focus on the work for longer sessions and so things came together more and I was able to be more thoughtful with my efforts.

I even have to split this report into sections!

Worker Eye Tracking

Anyway, I separated the pupils from the worker sprites so that I could animate them separately, which resulted in some creepy visuals at first as at first I only rendered pupils when the eyelids were blinking:

Toy Factory Fixer - creepy worker eyes

I don’t have a one-to-one correspondence between an in-game object such as a worker and its sprite. The way the game object is rendered is handled separately from the logic related to that game object, which might sound like it is possible to overcomplicate things, but I found that it simplifies the code of each.

Retroactively adding animations such as pupils pointing towards the nearest Bad Toy required adding a way for workers to target a nearby toy, and offsetting pupils properly for each worker type. I got this work done very quickly early in the week, and I was more or less satisfied with the results.

Toy Factory Fixer - worker eyes tracking toys

And getting it out of the way early meant that I could focus on level design, something I’ve been neglecting for arguably way too long.

Intro Level Design

Up until now, I’ve had a few levels that I’ve used to test things out early on, mainly so that the game play had a place to live.

But now I wanted to work on what levels will be in the final, published version of the game.

I don’t have a lot of experience with level design. I think I’ve picked up on social media from other developers that a first level is probably something you should make after you’re almost done with everything else. As a first level, it is the main introduction to the game for your players, and if you’re still tweaking balance or game play, you could end up doing a lot of rework.

At the same time, I know that I want to introduce the game gradually to the player, so a stripped down first level seems easier to start with. And since game development is an iterative process anyway, I can start by roughing out levels and expect to come back to them as a feature of the work and not a mistake.

So I added a level configuration that limited what workers would show up as available to hire in a level. On the first level, I’ll only allow one type of worker.

Then, I wanted to make sure that there wasn’t much for the player to do. So I had the entire level consist of two Bad Toys, which the player than crafts into two Good Toys. The idea was that the player gets a super basic intro to how the game works.

Updating Grade Calculations

And then I saw the end of level performance review, which grades the player on three things.

One is based on whether or not you let any Bad Toys get shipped, which you pretty much can’t in this level. So, an easy A for quality.

Another is based on whether you completed the level quickly. Basically, I compare how many turns it takes a player to how many turns I think are optimal. This level is small, and I was able to figure out an optimal number of turns for it manually, add it to the level configuration, then change the shipping deadline option to match it as an optional challenge for the player rather than the arbitrary deadline options I had before, and even fix the grading so that it calculated it correctly (whoops, it has been wrong for weeks!).

But the third thing the player was graded on was Return on Investment. Basically, did you spend less than you earned? By how much? I needed to tweak how the grade was calculated here as well. It was failing the player (uh, mainly me) for what I thought were respectable ROI numbers. So now it’s not quite linear in that anything less than 0% ROI is a failing grade, anything under 100% is a C, and you get better grades now for doubling or tripling your ROI.

With the way the level was currently designed, it was impossible to get a passing grade here. You always spent more hiring the worker than you could earn from two Good Toys shipping successfully.

So what are my options?

  • I could get rid of ROI. I have struggled with grading the player on how well they can do by hiring fewer workers, partly because of the commentary on labor that it introduces. Then again, I think it adds a strategic element to the game.
  • I could get rid of ROI for the training levels only. So you will be graded on quality and optionally (at the player’s discretion?) speed but not on how much money you earn because, you know, the factory is paying for your training.
  • Make the training toys worth more? That way, the math works out that you ace the ROI artificially, but then that would be confusing for future levels. I’d probably need to communicate that these are special training toys, and that seems like a lot of extra work.
  • Add more toys. Basically, this goes from being a quick training level to being a full-fledged introductory level.

I decided to flesh out the level, adding more toys. It’s still limited in that it gives the player only one worker to worry about, and there are only small toys, but instead of being short and sweet and potentially boring, it gives the player more credit by making it a challenge to ace all three grading criteria while still allowing the player to get passing grades even with mediocre play.

Basically, instead of one production run of only two toys, there are now multiple production runs that gradually increases the number of toys dispensed in a row, and eventually introduces toys dispensed together in a single batch.

The nice thing about having the ROI grading criteria more nailed down is that it gives me a rough sense of how many production runs and toys a given level should have. Basically, expect that perfect play means you will get at least 300% ROI. While I still find level design is complicated, with needing to figure out the effects of conveyor belt layout, production run configurations, starting money, and more, having the A+ == 300% ROI gives me at least one thing to anchor the design to.

Toy Factory Fixer - training floor level 1

Toy Factory Fixer - end of tutorial grading

I’m finding that I am tweaking things such as the cost to hire a worker, both to make it easier to hire more workers (it is more fun to see lots of workers than fewer workers) and get a good ROI (getting a good grade is more fun than not).

As I said, I probably should have been doing a lot of this work earlier, but I am glad I got to focus on it as much as I did last week. There were a lot of questions that came up that had no wrong answers and a lot of potential areas to explore, such as how long a given level should take or how optional some of the grading criteria should be.

Streamlining New Player Experiences

Finally, as I was trying to play the game as if I was completely new it, I decided to address a concern pretty much every tester brought up more or less directly: it is not clear what you’re supposed to do when you first play the game.

The very first thing you should do is hire a worker, but it is easy to miss the “Hire” button. I could add tooltips, or a bouncing arrow pointing at the hire button, or otherwise make it clear you should go there right away.

Or, what I ended up doing was changing the default menu to the Hire Worker menu instead of the main in-game menu. So right away, the player knows to hire a worker, instead of being expected to figure out that they should do so AND how to do so.

I even disabled the “Go” button until there is at least one worker hired, so if the player exits out of the hire menu, they can’t really start the level until they go back to it and hire a worker.

Summary

The game has a little bit more polish, some tweaks to how it rewards the player’s performance, and a more streamlined introduction to the game play that doesn’t leave the player wondering what to do.

I also gained a lot more insight into what the level design work is going to look like going forward.

That’s not bad for a week’s worth of part-time work.

Thanks for reading!

Want to learn when I release updates to Toytles: Leaf Raking or about future Freshly Squeezed games I am creating? Sign up for the GBGames Curiosities newsletter, and get the 24-page, full color PDF of the Toytles: Leaf Raking Player’s Guide for free!

Categories
Game Design Game Development Geek / Technical

Freshly Squeezed Progress Report – More Worker and Inventory Animations

Last week, I reported that I focused on enhancing the workers by animating their arms, which helps make Toy Factory Fixer just a little more enjoyable to play. I wanted to continue making the workers more interesting in the next sprint.

Sprint 33: Worker polish and training levels

Planned and Completed:

  • Move toy parts towards inventory

Planned and Uncompleted:

  • Make worker eyes follow to nearest toy on belt
  • Create floor training levels/tutorial

A big part of what the workers do is separate Bad Toys into parts. I had the toy parts merely fall off the bottom of the screen, but the inventory count on the right would increase. Yet, it was not very clear that there was a connection.

So I fixed it. Toy parts now fly from the worker’s hands to the inventory, making it clearer that the parts are added to the inventory.

I even animated the icons in the inventory so that you knew which ones were getting increased.

And I made the toy parts rotate because everyone loves things flipping through the air.

Toy Factory Fixer - throwing toy parts at inventory

I decided to try adding particle effects, because why not?

I wanted to create a cartoony cotton fluff to represent the stuffing coming out of the toy parts, but trying to draw them from real references was awkward. I ultimately ended up looking at Winnie the Pooh and the Honey Tree.

But my cotton fluff looks more like a dust cloud, especially since it fades over time. I’m not entirely pleased with how it looks, and so I think I’ll change it.

Ultimately, I spent all of my time on getting the toys to move to the inventory and getting things to animate that I didn’t get to other worker enhancements such as eye movement. The arms move, but they still look dead inside, and I would like to make them look more emotional.

But more importantly, and perhaps in hindsight what I should have been doing for many months, I need to focus on creating levels.

I’ve been tweaking a few things as I have been play testing, especially once I added the new worker types a few weeks ago, but I need to create a few solid intro levels.

In the meantime, I’ve gotten more play tester feedback, and some of the things I want to do to address that feedback seems critical for a first public release.

It feels simultaneously like I am so close to creating that first publishable version and also so far away because it takes me weeks of part-time effort to do what would probably take me mere days if I was focused on it full-time.

Thanks for reading!

Want to learn when I release updates to Toytles: Leaf Raking or about future Freshly Squeezed games I am creating? Sign up for the GBGames Curiosities newsletter, and get the 24-page, full color PDF of the Toytles: Leaf Raking Player’s Guide for free!