Smalltown Grocery – DevLog 2

This week I’ve managed to come closer to terms with my limitations.

While trying to prototype grid-based pathfinding (using the gamemaker mp- and path functions) I have realized I will not be able to use small sized walls (4 x 4) in conjunction with larger objects (32 x 32).  When I tried it, the customer would travel too close to objects, overlapping them.  Plus, it causes major headaches when trying to map out a grid, having to adjust for the 4 pixels of the wall then start counting by 32’s again.  It’s probably do-able, but not by me!  No, thank you!  So I’ve determined/decided that a 32 x 32 square will be my grid cell size.  Thereafter, all objects will need to be placed so that the unused cells will allow for pathfinding.

Many of my shelves (Produce, Cold Cases, Freezers, Dairy Coolers) are 32 x 32 and they will work fine, as long as I don’t double park these on two or four different grid cells.  I must make sure they line up with the grid cells perfectly when I create the store layout for the game.

The regular store shelves are 32 x 16.  These are a little tricky.  I need to make sure the fronts of these shelves are adjacent to an open cell, otherwise they won’t be reachable by the pathfinding.  This leaves me with a slight dilemma of unused space behind the shelf if I want to put these against a wall. (You can see what I mean in the gif below.)

I found some graph paper and began scrawling out a level.  This was a good move on my part because it helped me begin to visualize what I was wanting to accomplish a bit better.  On graph paper, I mapped out an entire store.  But right now, I just wanted to figure out pathfinding from shelf to shelf.  A small prototype room of walls and shelves and a customer is what I need.

So, after throwing out a bunch of code and starting over, I was able to make a small (un-animated) prototype of a customer wandering to randomly chosen shelves, grabbing an item, then moving on.  Not great progress, but progress nonetheless.  Baby steps, man, baby steps.

The numbers on the shelves represent the amount of items on that shelf.  The black dot is a debug item I made to show the intended destination of the current path. (The coordinates were off a bit at first, so this was how I helped myself to see it better, along with the debug text at the top-left.)  The way it works is — it finds all the available shelves, randomly chooses one of them, finds the grid cell coordinates of the open grid cell in front of the chosen shelf, and then creates the path to those coordinates.  There’s a delay between paths with a toggle to grab an item from the shelf at that location.

After putting this together, I’m contemplating how to give different shelves (items) popularity factors.  With a high popularity factor, that item has more of a chance to be chosen as the next path destination.  I’m debating whether to give the shelves item types also (canned food, baking goods, pet food, etc).  This also gave me other insights as to what sort of stats I’ll need for the customer.  Stuff like:  number of items needed, perhaps types of items (produce, dairy, meat, etc), and customer satisfaction (if a desired item is unavailable).  I’m really going to have to give this a good, healthy think.  I don’t want to get bogged down in a bunch of unnecessary features, but I don’t want it to be too generic, either.

Looks like I’m going to have to get serious about writing out some game design elements and features on paper.  I’m pretty sure that is my next step, as I can’t really write code for features and ideas that are not fully formed.  😛

Smalltown Grocery – DevLog 1

I haven’t had a lot of time to work on this game, but I’ve done a few things.

Thanks to a few people from the GMC, I have a few game title suggestions to make the game sound more fun/exciting:  “Cleanup In Aisle 3”, “Attention Shoppers”, and “Checkout”.  I haven’t made up my mind about the title, whether keeping it as “Smalltown Grocery” or changing it, but the suggestions definitely help get the thought processes flowing.

Mostly, I’ve been working on sprites.  I’ve started an ‘art assets needed’ list and have been working through it, though slowly.  I’ve made a customer sprite and an employee sprite by modifying the person sprite in two different ways.  I’m not perfectly happy with it — I feel like I could make parts and pieces more interchangeable and modifiable if I separate them out more.  For instance; leg sprites, upper body sprites, head sprites — then combine them and color-blend them with code for variety.  But for now, I have a brownish customer and a black & white employee.  I also created a shadow to help contrast against the floor.  Now I’ll have to give everything else shadows — doh!


I’m a little stuck with how I want to go about coding the game, as far as laying out the store’s floorplan.  My shelves will fit into 32 x 32 grid squares, so I was thinking of using grid collision and pathfinding.  However, I don’t want my walls to be 32 pixels thick.  I want them to be 4 pixels thick.  So, I’m trying to figure out how to manage the two different sizings, but I really have no clue about where to begin.  I found a write-up about using something called HAA* pathfinding to do this, but it was beyond my ability.  Trying to read and comprehend it was turning my brain to mush.  Maybe with more study and patience I will find a solution, but for now I think I’ll keep working on sprites.

So, that pretty much sums up my progress.  Not much this week.  Probably not much next week, either, but we’ll see.

2017 Project – Grocery Store Game

The Goal – New Year’s Resolution

Since it’s a New Year, I’ve decided to pursue a single game project with the goal of having a complete and polished game by the end of 2017.  I made this decision on the 2nd of January and I’ve already started creating art assets for the game.  I will be writing about my progress here with this blog, and probably make a WIP page for the game as well.  Perhaps even a WIP page on the GMC, too.

Working title:  “Smalltown Grocery”

I’ve titled the game “Smalltown Grocery”, but that is subject to change.  The game will be a grocery store management sim/tycoon type of game, but with a heavy focus on day-to-day tasks instead of economics.  So far, some of the features I want to include in the game are:  employees, store hours, departments (meat, produce, bakery/deli), customers, Random Events, and Actionable Tasks.  This is also subject to change as I iron out the design over the next few weeks.  I believe this will be a good game for me to make since I’m currently working in a grocery store and have become familiar with its operation.  I will be using the store I work in as a model after which I will base the game.

Features and Predictions

The economic aspect will be there (bills and revenue, profits and loss), but I want to try making the economics of the game more streamlined, minimized, and generalized.  I don’t want to fuss with itemizing each and every item a grocery store might sell, and I believe a player won’t want to, either.  We want to play a game, not become an accountant, right?  I haven’t made a GDD for this game yet, but I’ve mulled it over in my head for a few months and have started making notes and concepts on paper.  The possible major programming obstacle I can foresee with this project might be the pathfinding, as I’m not too sure of myself in that area.  However, I have successfully experimented with pathfinding a few times so I think I can work out whatever needs to be done.

“Actionable Tasks” are all the duties that must be performed in a grocery store by various employees.  Things like:  stocking shelves, facing product, cashiering, cleaning, department work (meat, produce, bakery prep), updating price tags, recieving product shipments.  In the game, employees will be given tasks that they are supposed to perform automatically, but you (the player) can click an employee and send them to any task at any time, overriding their task queue.  For instance, if there is a long line of customers waiting, call for another cashier.  If a shelf goes empty, have it filled now instead of waiting for it to be reached and filled automatically by a working employee.

Employees will have stats governing their efficiency and performance.  Some stats, like skills, may improve over time with experience, depending on the ‘character’ of the employee.  Employees can be hired and fired.

Random Events can include:  product breakage causing spill that needs cleaned, cooling unit malfunction, furnace malfunction, employee calls in absent (sick or otherwise), power outage, etc…

Well!… That’s a start to some design aspects, anyway.  I think a lot of this may get cut out, or at least cut down, as some of it is beginning to feel a bit like feature creep.  I find myself thinking it would be great to be able to build your own store from the ground up (buying space, creating rooms, adding/moving around shelves, cashier stations, etc) but stuff like that will have to wait for “Smalltown Grocery II” or “III”.  That may be a really long wait.  lol!

Here’s a little screenie of some art I’m starting to work on.  Floor tile, different types of shelving, person and cart…

Bernie’s Run – Release Version 1

Complete, playable version 1 of Bernie’s Run is now available.  Read about it, see screenshots, and download the game from it’s webpage.