Entrepreneur Central

Make games! Discuss those games here.

Moderators: Bob the Hamster, marionline, SDHawk

User avatar
Bob the Hamster
Lord of the Slimes
Posts: 7660
Joined: Tue Oct 16, 2007 2:34 pm
Location: Hamster Republic (Ontario Enclave)
Contact:

Post by Bob the Hamster »

If banana is omitted I will riot :)
User avatar
Pepsi Ranger
Liquid Metal Slime
Posts: 1457
Joined: Thu Nov 22, 2007 6:25 am
Location: South Florida

Post by Pepsi Ranger »

TMC wrote:Fruit: Orange, pineapple, blue/black/whateverberry, apple, passionfruit, grape, tomato, pear
Ha, figures you'd pick all the ones that are already in there (save grapes, which I've already decided will make an appearance soon). This, of course, makes me wonder if you've read the design journal and are simply joking.
TMC wrote:Other: (Various) icecreams, yogurt, chocolate/cocoa, almonds, (salted) caramel
I wonder how many of these were popular in the mid-80's (I'm suspicious of salted caramel in this case). Ice cream is already planned. I like the almonds idea; I've already decided peanut butter will be one. Perhaps both can affect peanut allergies.

(Oh yeah, I'm currently working on customer allergies.)
Bob the Hamster wrote:If banana is omitted I will riot :)
Banana will never be omitted. That was the second fruit I designed for this game. Apples were the first.

Anyone else want to take a crack at the fruit list? I don't mind picking them myself, but I'd like to consider the popular ones first.
Place Obligatory Signature Here
User avatar
Bob the Hamster
Lord of the Slimes
Posts: 7660
Joined: Tue Oct 16, 2007 2:34 pm
Location: Hamster Republic (Ontario Enclave)
Contact:

Post by Bob the Hamster »

User avatar
Pepsi Ranger
Liquid Metal Slime
Posts: 1457
Joined: Thu Nov 22, 2007 6:25 am
Location: South Florida

Post by Pepsi Ranger »

Just thought I'd post a quick update on what I've been working on since the last post.

First off, I should mention that, as of today, I now have an official checklist for not only adding new items for purchase (which I wrote way back on February 13, 2012), but also one for adding new shops. This has become necessary thanks to the immensely complicated structure I've created with dynamic shopping and hostile takeovers (and chatty shopkeepers). That bears pretty much no significance to you, the reader, but it should comfort you to know that I am now far less likely to leave shopping bugs behind.

If you ever see the checklists, you'll quickly come to realize how time-consuming it is to implement just one item or shop. The item list involves 20 detailed steps and the shop list requires 41 (for now). Needless to say, I've been doing all of my item and shop additions at once. It still takes days to implement them all completely.

But creating these items and shops has the side effect of giving me new ideas for making the game even more complicated (interesting). For example, remember in the last preview I said I had finalized the side item feature? Well, that's true, but only kinda true. As I was developing new fruits and supplements for the smoothie feature, I realized I'd need serving utensils to make some ingredients accessible (a serving spoon for ice cream, peanut butter, etc. and a serving knife for cutting larger fruits like watermelons). But where would I sell such items? I decided I'd need to build a home wares store (specializing in kitchen equipment presently) to give them a more adequate home. It would also make sense to use this store as a secondary hub for purchasing all of the coffee machines and the blender. But what else? An oven, perhaps? Well, if I allow Buck to buy an oven, then he would need to use it for something. Perhaps he could bake his own cookies, pies, etc. What??? With the right ingredients and skills, he could save even more money by baking his goodies instead of buying them.

But that's just me musing with ideas. It might not happen.

But let's be realistic. It probably will happen.

Anyway, that's not really the point of this update. I wanted to talk about the smoothie feature. Even though I'm still in the process of preparing for it (the seventh outlet used for the blender was implemented several months ago--well from the lease agent's point of view at least), I now have a plan for how they'll work and what you can use in them.

Like coffee, smoothies will come with a number of variables that can be affected by the combination you choose. This entry from my design journal, dated June 22, 2014, explains the system best (and gives you a window into my design process for this game):

"I think the first issue is to decide what the customers want. I don’t think serving smoothies should be quite as mindless as serving coffee is. Customers should have favorites and least favorites when it comes to fruits served. Mixing a favorite fruit into a smoothie should satisfy a customer well, while mixing in a least favorite would harm popularity. But I also have to consider allergic reactions and something not generally considered in coffee preparation: combination preferences.

"Combination preferences should include two factors: number of fruits blended together (anything greater than four would be considered gross by all customers), and how well some fruits go with others (tomatoes, for example, wouldn’t go well with anything non-citrus). Customers should also have a preferred range or combination of fruits. So, on customer generation, smoothie preferences may look like this:

Favorite Fruit: Banana
Least Favorite Fruit: Apples
Preferred Blend Quantity: 3 (This denotes how many fruits should be in the blend)
Preferred Blend Variety: 2 (This decides how many unique fruits should be in the blend; number would never exceed preferred blend quantity)
Optimal Blend Range: Citrus, Tropical
Preferred Supplement: “Wheat” Grass
Allergic To: Peanuts

"So, from this example, the player can deduce a number of things:

1. A smoothie that includes a banana will be better received than one that doesn’t.
2. A smoothie that includes an apple will most likely be hated.
3. A smoothie that has three fruits included (not two or four) will receive a preference bonus.
4. A smoothie that uses two fruit types (two bananas, one lime, for example) will receive a preference bonus.
5. A smoothie that keeps the range of fruit limited to citrus flavors (lemons, limes, etc.) and tropical flavors (bananas, guavas) will be favored to anything that does just citrus fruits or just tropical fruits or ventures into other fruit categories.
6. A smoothie that mixes in “wheat” grass will meet the desired flavor or health benefit. Will sometimes come back as “none.”
7. Including peanut butter (not yet implemented) will cause a serious health reaction to the customer. This value will often come back as “none.”

"Special garnishes or supplements (like aspirin) won’t count toward preference scores. Their job is to affect flavor or health values. Meeting flavor needs will help with popularity and word-of-mouth. Health values can assist in customer control (don’t want the rude guy coming back any time soon, then feed him those peanuts he’s allergic to). Including garnishes or supplements may or may not affect the price.

"Blending the fruits together should check off a series of variables. In this case, all available items will have special values set aside for the blender:

Fruits available: This is just “servfruit,” etc.
Fruit type: Citrus, tropical, etc. (1=citrus, 2=tropical, etc.)
Good with: Citrus, tropical, etc. (same as above) This is where we find out that tomatoes are good only with citrus items.
In Blender: How many of selected fruit are in the blender.
Fruit Total: How many fruits are in blender (helpful for determining unique fruits).
Unique Fruits: The results of comparing individual numbers to totals.
Fruit Used: Checks whether a favorite or least favorite (or allergic) fruit is in the blend.
Supplements Used: Checks whether a specific supplement has been used (only one can be used at a time).

"I may also want to include checks for scoops of ice (fewer = thicker), sugar, and things like that. Also, the use of a straw might affect comfort values.

"So, prices should be affected by amounts used, per tradition. But flavorful combinations should also factor in prices. Of course, satisfying a customer’s preferences should yield the greatest value (though cheapskates and deadbeats might punish you for making a perfect smoothie).

"Due to the cost of fruits per serving, $.40 for low-priced fruits like apples, $1.60 for guavas, smoothies should cost customers double the cost of individual fruits, plus $.20 for ice, plus $.50 for cups, plus variable rate for supplements or garnishes, plus a preference-matching fee.

"So, based on the example listed above, a smoothie that includes two bananas, a lime, and some “wheat” grass would cost said customer:

Bananas: $.80 * 2 = $1.60 * 2 = $3.20
Lime: $.40 * 1 = $.40 * 2 = $.80
Ice: $.20 (assumes one scoop)
Cup: $.50
“Wheat” Grass: $1.00 (this supplement usually increases all items by a dollar)
Flavor Match Bonus: $1.00 * 2 = $2.00 (extra banana)
Quantity Match Bonus: $.50 for quantity / $.50 for two unique fruits = $1.00 (both values have to be met to receive the cash bonus)
Flavor Range Bonus: $1.00 (for using citrus and tropical fruits)

Total Smoothie Cost to Customer: $9.70 (rounded up to $10).

"Note: Using peanut butter in this smoothie might not devalue the smoothie, but there may be a small chance of owing the hospital the customer’s medical bills. There should be some risk of consequence to using an allergic item deliberately.

"So, smoothies should provide a more lucrative business model for the player once they’re implemented, but the customers still have to request them. Like pastries, the customers won’t start requesting them until Buck either attempts to buy a key item (like the blender), or until Chet’s minions attempt to sabotage Buck’s business by telling everyone that they can now buy said items at the Coffee Pavilion (to be implemented in v1.4)."

(end journal entry)

So, there's a sample of how I plan features for this game, and a breakdown of what I'm doing for smoothies. I'm also creating a slushies feature, but that's far simpler and not necessary to explain here.

So, what's the final list of smoothie ingredient options look like? Here's the full planned list (as of today):

Fruits:

Apples (Sweet)
Lemons (Citrus, Sour)
Pears (Sweet)
Limes (Citrus)
Kiwis (Sweet)
Grapefruits (Citrus, Sour)
Oranges (Citrus)
Pineapples (Tropical)
Passion Fruit (Sweet)
Tomatoes (Vegetable)*
Bananas (Tropical)
Blueberries (Berry, Sweet)
Fruit Medley (All)
Guavas (Tropical, Berry)
Grapes (Sweet, Berry)
Cherries (Sweet, Sour)**
Coconuts (Tropical)
Cranberries (Berry, Sour)
Mangos (Tropical)
Watermelons (Sweet)
Peaches (Sweet)
Pomegranates (Berry, Sweet, Sour)***
Raspberries (Berry)
Strawberries (Berry)

Vegetables:

Tomatoes (Vegetable)*
Carrots (Vegetable)
Spinach (Vegetable)
Celery (Vegetable)

Supplements (New Items):

Peanut Butter (Nut, Supplement)
Almonds (Nut, Supplement)
Chocolate (Supplement)
Yogurt (Dairy, Supplement)****
Vanilla Yogurt (Dairy, Supplement)****
Eggs (Supplement)****
Caffeine (Supplement)*****

Supplements (All Items with Benefit Designation):

Sugar (Flavor)
Salt (Flavor)
Cinnamon (Flavor)
Aspirin (Health)
“Wheat” Grass (Health)
Peanut Butter (Flavor)
Milk (Flavor)
Vanilla Ice Cream (Flavor)
Boost Liquid (Health) – acquired from syringe
Placebo Liquid (Health) – acquired from syringe
Caffeine (Health)
Addiction Stabilizer (Health)
Cookie (Flavor)
Almonds (Flavor)
Chocolate (Flavor)
Yogurt (Flavor and Health)
Vanilla Yogurt (Flavor and Health)
Eggs (Health)

*Can be mixed with fruits or vegetables
**Randomly calls up the sweet or sour characteristic
***Has two versions available for purchase: sweet or sour
****Can spoil if not refrigerated
*****Black market item

If you notice the tags for "health," "nut," etc., you'll pick up on another feature that I'm putting together for v1.3: Allergies. The last nugget of information for now is a display of the types of allergies customers might have (if they have any--there's a 50% chance of them having no food allergies) on creation. If someone approaches the line with one of these food allergies (some are normal while others are absurd), you'd best not put an ingredient from that food group in their coffee or smoothie (or feed them that side item). If you do, you run the risk of making them very ill. And that can bear consequences down the road.

Here is the list of possible allergies (so far):

Dairy (1 – Cream, Milk, Ice Cream)
Peanuts (3 – Peanut Butter, Cookies)
Marshmallows (5 – Rice Squares)
Citrus Acid (7 – Lemons, Limes, Oranges, Grapefruits, etc.)
Cinnamon (9 – Cinnamon)
Aspirin (11 – Aspirin)
Wheat (13 – Sandwiches, “Wheat” Grass)
Garbage (15 – Used Filters, Used Cups, Used Powder, Half-eaten Sandwiches)
Tropical Fruits (17 – Bananas, Guavas, etc.)
European Things (19 – Italian Powder, Espresso, Pie)
Spoiled Things (21 – Spoiled Dairy)
Drugs (23 – Syringes)
Salt (25 – Salt)
Sugar (27 – Sugar, Soda, Cupcakes)
Chocolate (29 – Chocolate)
Eggs (31 – Eggs)

If you're wondering, the numbers refer to the random value called at customer creation. If the roulette draws a zero or an even number, that customer has no allergies.

So, that's what's going on with Entrepreneur these days. I'm still a ways off from having v1.3 ready, but the planning is all there at least.

I'll update further once I actually have these features up and running.
Place Obligatory Signature Here
User avatar
Pepsi Ranger
Liquid Metal Slime
Posts: 1457
Joined: Thu Nov 22, 2007 6:25 am
Location: South Florida

Post by Pepsi Ranger »

Thanks to RMSephy creating and uploading a new utility for exporting maps, I thought I'd post the map for Downtown Hybrid City for kicks.

Downtown Hybrid City:

Image

In other news, I'm still working on implementing 130 new items into the game. It's taking me the better part of a month to complete this project.
Place Obligatory Signature Here
User avatar
Pepsi Ranger
Liquid Metal Slime
Posts: 1457
Joined: Thu Nov 22, 2007 6:25 am
Location: South Florida

Post by Pepsi Ranger »

So, it's been a while since I've posted anything about Entrepreneur: The Beginning, probably because it's been a while since I've really worked on it, and I figure that now that summer is here, it's a good time to post some new info on upcoming additions.

One of the things I've been doing behind the scenes for version 1.3 is to expand the city in preparation for future shops and social areas. I'm still building new areas, but I thought I'd share an image of Hybrid City as it stands so far, which includes two new main areas (with a third on the way).

Image

As you can see, there is a new major area out west called "Hybrid Beach." This area will serve as an advanced shopping hub for experimental entrepreneurs in 1.3 (those who want to expand well beyond just coffee sales), and later, a social hub for advancing relationships in version 1.5.

Over to the right, closer to Buck's House, you'll see a new transition map called "Alley of Pines." The main purpose for this map is to line up the other locales, as Buck's House was originally positioned directly over Pine Alley Drive, which was odd on a logistical scale. But it will also serve as the location for a newsstand (placeholder for 1.3, fully active in version 1.4), and a quick path to Hybrid Hospital (which is coming soon).

Note: I made a few graphic changes to existing maps to make sure all the paths line up with each other all across town.

So, Hybrid City is steadily growing into a consistent town that will more and more demand strategic planning when it comes to travel. Eventually, the player will be able to "warp" to shops that he's already visited, but time will still consider distance, so knowing which shops will need visitation will become part of the Prep Time strategy. Of course, maybe someday Buck can hire someone to run his errands for him to save some time. Only time will tell.
Place Obligatory Signature Here
User avatar
Pepsi Ranger
Liquid Metal Slime
Posts: 1457
Joined: Thu Nov 22, 2007 6:25 am
Location: South Florida

Post by Pepsi Ranger »

It's probably no secret that progress on Entrepreneur: The Beginning has been slow, due to my focus on e-books this past year, and due to the numbing grind I've put myself in when I decided to implement 130+ new items into the game. But I wanted to post a quick update to say that I'm finally nearing the end of this massive undertaking. If you've seen my earlier post that breaks down somewhat my item implementation process (or, I could just post the actual list if anyone's interested), you'll also see that adding just one item can take the better part of a day, due to the numerous scripts that are affected (displays, dynamic shops, inventories, consignments, etc.), and that doesn't even include the process necessary to actually use those items. That's another beast entirely, and one I haven't even begun to crack. Needless to say, adding more than 130 items was a terrible idea, and proof that I'm insane, but I think the game will be better for it in the end. Hopefully.

Because this process has taken so much time (I started it in October 2014 for reference), I haven't had much to report in the last year, but now that I'm close, I think I can go ahead and give you guys a fair update on what's on the way.

No screenshots yet, but I do want to show you the list of items I've been working on. Because I've already listed fruits, vegetables, and supplements in an earlier thread, as well as new side items, I'll leave those out. Again, these are nowhere near ready for actual use, but the ability to buy them is just about complete. I've decided that I want to finish all shop related elements first (including updating objects on shelf graphics) before I get back to pavilion gameplay elements, and that may take me into 2017 at the rate I've been going. But I've actually gotten considerable progress behind me in July and this first week of August, so maybe I can wrap it up sooner than that.

Anyway, here's a preview of some of the newest items coming down the pike (you'll have to discover the full list whenever you play the game):

New Standard Coffee Brands:
-Colombian ($40)
-French ($32)
-New York ($20)

New Garnishes:
-Skim Milk
-Soy Milk
-Powdered Cream (doesn't spoil)
-Powdered Milk (doesn't spoil)
-Unpasteurized Milk (contraband item)
-Caramel Syrup
-Hazelnut Cream
-Sweetener
-Kahlua (alcoholic, requires Fake ID)
-Irish Cream (alcoholic, requires Fake ID)
-Whiskey (flask or bottle, alcoholic, requires Fake ID)

(new creams and milks can be whipped and steamed respectively, as well as go bad)

New Perks:

(Coffees, listed from worst to best)
-Detroit Blend
-Antarctica Blend
-Alaskan Blend
-Egyptian Blend
-Himalayan Blend
-Moon Blend
-Atlantis Blend
-Laputa Blend
-Shangri-La Blend
-Xanadu Blend

(Syrups, listed from worst to best)
-Horseradish Syrup
-Vinegar Syrup
-Pumpkin Syrup
-Eggnog Syrup
-Peppermint Syrup
-White Chocolate Syrup
-Ambrosia Syrup
-Love Potion Syrup
-Nectar
-Liquid Sunshine

New Appliances and Furnishings:

-Microwave
-Oven
-Refrigerator
-Pantry (Up to 4)
-Flooring (Up to 20)
-Sofa (Up to 3)
-Grill
-Radio (Non-Trash)
-Television (Non-Trash)

New Equipment:

-Serving Spoon
-Serving Knife
-Cutting Board
-Mixing Bowl
-Cookie Sheet
-Cupcake Pan
and at least half a dozen others

New Storage Containers:

-Cookie Jars
-Plastic Containers

New Cooking, Grilling, and Baking Items:

-Various Meats
-Various Lunchmeats
-Various Breads
-Various Cheeses
-Various Jellies
-Various Mixing Ingredients
-Various Condiments
-Various Picnic Side Items
-Various Grilling Items

And so on. Yes, these things will affect gameplay in a major way. I'll explain more about how once it becomes relevant.

And I am also working on a black market shop, where Buck can purchase less than savory items to help him gain the edge over his opponents. That's the only one I'm still trying to work out the logistics for, as it operates under different conditions than the regular shops throughout the game. But the items are more or less ready to go, and they should make for some interesting gameplay. The Fake ID I referenced earlier in the list is one of the basic items it will offer.

As I said, the complete list is extensive, but this should give you an idea on how much bigger the scope of this game is getting. The road keeps getting longer, it seems, but I'm anticipating fun results.

Oh, and the other reason why I'm posting this now instead of when I have something to show is because I'm entertaining the idea of announcing unstable builds as I upload them to my playtesting site to minimize the wait between official releases, which so far have been about four years apart. If I do this, then I'll be announcing the first public unstable version as soon as I'm finished with the shopping updates. I don't expect this to take me much longer. Unstable versions will retain the previous stable release's number, so the first unstable will be 1.2.something. I won't change it to 1.3 until the official release next year (or whenever I deem it ready). But that's what I've been thinking about. That should expand my range of playtesters considerably, which is probably a good idea for a game like this.
Place Obligatory Signature Here
TMC
Metal King Slime
Posts: 4308
Joined: Sun Apr 10, 2011 9:19 am

Post by TMC »

That's a lot of new stuff! What's the difference between coffee 'blends' like Egyptian and Alaskan that you listed as "perks" and 'brands' like Colombian?

You listed 'Horseradish' as the worst syrup but I protest! This ranking of tastes is totally subjective!

Televisions and sofas? Are these going to be used by customers? Sounds like setting yourself up for a lot of work! I also wonder exactly what function items like the serving knife and plastic containers have: are they optional?


I've just realised Entrepreneur is becoming the Dwarf Fortress of coffee shop simulators. If you could work on this full-time, that's how complex it would get. Naturally it's mainly about things other than coffee, just as DF is mainly about things other than dwarves.

But it really does seem clear that you could have saved yourself a lot of effort if the approach to scripting all the items in the game were different. Basically you should use data, not code, whenever possible. Avoid hardcoding things (e.g. explicitly mentioning specific items in general scripts) to minimise the number of things that need to be changed when the list of items changes. Of course, since you can't really read data files in hamsterspeak, other than data defined in built-in editors, "data" would still take the form of scripts defining long lists of items. And use of fake arrays would be pretty much unavoidable, unfortunately.
User avatar
Feenicks
Metal Slime
Posts: 697
Joined: Tue Aug 10, 2010 9:23 pm
Location: ON THE AIR IN THE AIR
Contact:

Post by Feenicks »

Gonna have to agree with tmc here, as I'm shuddering to think just how terrifying your scripts have to be if simply adding a new item [which really is just a name, some stats, and a description when it comes to most of the stuff there] takes on the order of a day. Even without objects and proper arrays and the like, there's still ways to make things not be quite as terrible to add on to.

I'm also not sure what all these new items really add to the game [as could be said to all the stuff that's beyond the core coffee shop stuff, to be honest], but then again I've never really been sold on it to begin with so take that as you will.
Attachments
This feels fairly janky to myself, but I can't imagine what something that takes a day to fix looks like. There's some menu stuff in addition to this as well, but that's also not that hard to fix up.
This feels fairly janky to myself, but I can't imagine what something that takes a day to fix looks like. There's some menu stuff in addition to this as well, but that's also not that hard to fix up.
0450c651327e73f40f3e88fd2a9b9582.png (18.76 KiB) Viewed 5174 times
User avatar
Pepsi Ranger
Liquid Metal Slime
Posts: 1457
Joined: Thu Nov 22, 2007 6:25 am
Location: South Florida

Post by Pepsi Ranger »

I think arrays would've made this process go a lot faster, yes. And I don't doubt that there are things I could've done to make the process simpler when I started this in 2009 (actually, the process was much simpler back then, as I had far fewer needs per item than I do now). Based on what I have to work with, and based on what each system in the game is supposed to do, adding items, unfortunately, is no longer the straightforward affair it was in the beginning.

I'll go ahead and post my to-do list for items and shops at the bottom of this post. It's long, so don't feel obligated to read through all of it. And it's still incomplete as I plan to add "daily deals" to individual shops soon. Many of the steps are very quick to implement, but a few are time-consuming. The basic gist is that there are two types of items: equipment and consumables. Equipment requires variables and systems that items don't, and vice versa. For example, just because you own a piece of equipment doesn't mean you've set it up yet. Whether it's placed also determines whether or not you're getting charged for power to the outlet it's using. It also affects your shop worth, which is important for the hostile takeovers system. With items, you're not only keeping track of stats, but packages and quantities, states of freshness, current worth for resale, and so on. There are so many systems that track items, and each one needs the item represented somehow. I may be exaggerating the time it takes to implement one item somewhat, but when you've got a bunch going in, it's still a terrible beast.
TMC wrote:That's a lot of new stuff! What's the difference between coffee 'blends' like Egyptian and Alaskan that you listed as "perks" and 'brands' like Colombian?
I'll probably make an adjustment to quality numbers at some point, as the preliminary numbers are starting to feel low. But the main difference between perks and regular coffees is that perks are potentially free (if you order them during one of Mr. Perkins's visits), and their cumulative values sit in between those of coffees you can buy in the regular shops (access to the Perks Outlet, where you can buy these coffees and syrups off the shelf, is possible, but it requires membership, or will whenever I get around to scripting it). The higher tier coffees are better than Colombian, which is the best of the standard coffees (if I'm not mistaken--Italian may still be ranked higher, have to check on that), with Xanadu currently being the best in the game, though I'm pretty sure there will be one higher (Level 6) when all is said and done, inevitably from El Dorado. I need one that's almost impossible to acquire, and it should be that one.

The other difference is that most of the perks coffees, like Detroit Blend, are bought in doubles and triples, rather than singles. (Same with the syrups)
TMC wrote:You listed 'Horseradish' as the worst syrup but I protest! This ranking of tastes is totally subjective!
Yes, it definitely is. I personally prefer pumpkin over most everything on this list, but if I were to base it on sweetness, then I'd have to go in this order, and it's hard to argue that horseradish is sweeter than white chocolate.
TMC wrote:Televisions and sofas? Are these going to be used by customers? Sounds like setting yourself up for a lot of work! I also wonder exactly what function items like the serving knife and plastic containers have: are they optional?
Everything is optional. Don't you know how this game works? :p You can play the entire game on coffees and creams alone and need none of this stuff. But my goal for sofas, for example, is to give the player more customization over the coffee pavilion itself (that's one of my 1.3 plans, to allow for more user input on how the shop looks and works). It also helps with customer satisfaction. Wouldn't you rather chill on the couch with your coffee than wander around in an empty field? It is a lot of work, and I don't yet have an exact system in mind for pulling it off. My goal right now is to get the items in the game. Then I'll figure out how to place them and make them work. (Again, I want to design this so that the player can decide where they go. But we'll see how that works out.) But the nice part about this plan is that I'm finally going to allow you to place coffee machines on whichever tables you want, rather than restrict them to their scripted access points. Sofas and flooring in particular are there to remind me that I want the player to interact with the shop as much as he does with the customers.

The televisions are already in the game. They eliminate customer impatience, which kicks them out of line before they order. As of 1.2, you have to find them in the trash and fix them before you can use them. In 1.3, you'll be able to buy them outright at the homegoods shop.

Regarding serving knives, serving spoons, and so on--these will be required for certain functions like using ice cream as a garnish, slicing watermelon to fit in the blender, and so on. You won't need to select them once they're in the utensil holder (another item you'll have to buy if you want to do everything). They're basically access items. You will, however, have to pre-slice watermelon, or whatever prep tasks are normal for the type of action you want to perform, before you can use it. It's like having a bean grinder for coffee beans. You can't actually use the beans until they're ground into powder. Same thing for fruit and other as-of-yet undetermined items with the serving knife.

Pantries, cookie jars, plastic containers, and other storage items are going into the game because...wait for it...as of 1.3, Buck will have stock limits. I haven't worked out all the numbers yet, but you eventually won't be able to buy up the entire town and carry it with you wherever you go like you can now. Eventually, you'll have to store your excess items if you want to horde your stash of supplies. I do plan to give him a backpack or something to manage a small number of starter items for the first few days of the game. But this will also serve a secondary purpose in allowing Buck to hide contraband items when the inspectors start sniffing around for "comfort" brownies and "pep" cookies and other risky elements.
TMC wrote:I've just realised Entrepreneur is becoming the Dwarf Fortress of coffee shop simulators. If you could work on this full-time, that's how complex it would get. Naturally it's mainly about things other than coffee, just as DF is mainly about things other than dwarves.
Yep, it feels that way every time I open the thing and stare at my own madness.
TMC wrote:But it really does seem clear that you could have saved yourself a lot of effort if the approach to scripting all the items in the game were different. Basically you should use data, not code, whenever possible. Avoid hardcoding things (e.g. explicitly mentioning specific items in general scripts) to minimise the number of things that need to be changed when the list of items changes. Of course, since you can't really read data files in hamsterspeak, other than data defined in built-in editors, "data" would still take the form of scripts defining long lists of items. And use of fake arrays would be pretty much unavoidable, unfortunately.
Yeah, like I said at the top of this post, I agree with you completely here. But I'm not a natural programmer, so a lot of the tricks I could've learned to make this journey easier, unfortunately, I did not do, so now I have to work with the systems I've established, which, also unfortunately, are the equivalent to the map of the human brain.
Pheonix wrote:Gonna have to agree with tmc here, as I'm shuddering to think just how terrifying your scripts have to be if simply adding a new item [which really is just a name, some stats, and a description when it comes to most of the stuff there] takes on the order of a day. Even without objects and proper arrays and the like, there's still ways to make things not be quite as terrible to add on to.
I'm going to follow this post with the item implementation list and the shop implementation list so that you can see why it's not exactly straightforward, even with more sensible systems than the ones I've established. (Though, I will freely admit that I have complicated the current systems beyond what's likely necessary. Again if I had actual programming experience, I'd have some sense on how to tackle this stuff more logically, even in Hamsterspeak.) The important thing, though, is that, complicated or not, the systems work.
Pheonix wrote:I'm also not sure what all these new items really add to the game [as could be said to all the stuff that's beyond the core coffee shop stuff, to be honest], but then again I've never really been sold on it to begin with so take that as you will.
Coffee was always the game's launching product, but it was never exclusive to it. The name of the game isn't Coffee Seller, but Entrepreneur, and a true entrepreneur is a multifaceted businessman, not just a coffee man. The goal of the game is to allow the player to figure out his own path to win the bet against his rival, whether that means selling coffee, smoothies, sandwiches, hamburgers, soft drinks, or doing yard work, or simply buying items low and selling them high (this is actually not a feature yet, but it could be). There's a game that just came out in the last week that reminds me a lot of what Entrepreneur is actually on track to becoming, and is ultimately supposed to be, and that's a sandbox business adventure where the player's job is to make a certain amount of money within a certain time frame, in whatever way he can. The game that just came out is called This Is the Police, and even though I haven't played it yet (I do have it in my Steam library), I know that the two games have a lot in common in ideology (though not at all in execution). I'm also trying to make this game similar to Harvest Moon and Stardew Valley in that it goes beyond just the business. I do plan to implement a social element by 1.5. But, coffee is not exclusive to the game. It's merely the device to get our protagonist into the business mindset. He can branch out to whatever business he wants once he gets some momentum behind him. Ideally. Obviously, that isn't true of v1.2. But it will be true in time.

The next post will show you the steps I take into implementing new items so you can see why it takes me so long.
Last edited by Pepsi Ranger on Tue Aug 09, 2016 3:28 am, edited 1 time in total.
Place Obligatory Signature Here
User avatar
Pepsi Ranger
Liquid Metal Slime
Posts: 1457
Joined: Thu Nov 22, 2007 6:25 am
Location: South Florida

Post by Pepsi Ranger »

Here are the steps I take in implementing a new item into Entrepreneur: The Beginning. This list is not entirely static, as new ideas require the implementation of new steps. For example, I do not yet have a system for implementing store specific daily deals, but I will soon. Likewise I do not yet have a plan for multiple grades of the same item (Level 1 Cream, Level 2 Cream, etc.), but I do want to put one in eventually, and that will also mean updating this list with a new step. It's a growing process not easily simplified. Even with better shell scripts (which I probably should try to implement), I'll still have a lot to do just to implement a single item:


1. Create three or four tags for the item (Have, Shop, and Use are the standards, plus one with just the item name). “Have” and “Use” are necessary for the menus. “Shop” is necessary for the shopping cart. Create a special “Sell” tag for equipment. Note: “Have” items are designed for action menus; normal-named tags are used for inventory items.

2. Create item in item list. This is needed to keep track of inventory when Buck cashes out of each store. The “inventory” tag should be set with the “Shop” item tag.

3. Write text for item description (when Buck browses the items on a table or shelf) and attach it to a choice box marked with the choices “Take” and “Leave,” with Leave triggering the universal choice tag (Tag 60). This box should also call on the official “Buy Item” script for that particular item. The normal practice is to write a textbox for Buck’s inventory (equipment uses the ALL CAPS labels and owned/active statuses while consumable items maintain category labels, counts, and other relevant information), attach it to a companion text that offers quantity breakdowns (if applicable), and attach the final box in the chain back to its respective menu script, then write the “acquired (item)” text (Step 4) and the shop browser text. But the order is less important than the fact that all three textboxes exist for each item.

4. Write a text for “Acquired Item.” Set conditionals that send it to Textbox 122 if Tag 60 is ON, a mandatory set tag that turns Tag 60 OFF, and an add item for the relevant item (equipment only) Buck is trying to buy. Also, if the item is consumable (non-equipment), set an additional tag (with the standard name marking) for the inventory menu.

5. Add three unique global variables for the item: the item name (used for inventory), “trytobuy##” (used to test whether the acquisition is valid), and “trytobuy##post” (used to decide whether Buck can actually buy it). If the item is a packaged item, then it also needs a “serv[item]” variable. If the item is a piece of equipment, then I need to add two more global variables: “[item]daybought” and “[item]daysold” used for calculating equipment age (relevant for the consignment shop). If the item has “owned” and “active” list properties, then it also needs variables for “[item]set” and “[item]active.” Also, if the item can spoil, like cream, milk, etc., it needs an additional seven variables: “good[item]1-7.” Also add a global variable for “[item]trend.” If Chet can buy it, it should also get one called “[item]tracker.”

6. Write a “Buy Item” script that clones every other Buy script. This script will activate whichever choice the player makes regarding the acquisition of the item from the shelf. The “trytobuy##” value will be activated here. Equipment should call the “Extra Equipment” script, general supplies and coffee products should call the “Extra Supplies and Garnishes” script, and health-related items should call up the “Health Supplies” script. (See Step #9)

7. Create an entry for the respective shop script it will be purchased in. This will be headed by the “check item number” and completed with the deletion of the physical item from the shopping cart and the intangible addition of the item to the dedicated global variable assigned to it. Values for persuasion and reputation increases should be calculated based on the formulas outlined in “entrepreneur formulas.txt.” Like the Buy scripts, the entry for a shop item can be cloned from another shop item. Preparation for the item should include adding a “chargeitem” local variable and adding that value to the total cost of items in the shopping cart (near the top of the shop script). Equipment items should have an extra line for setting the [item]daybought variable at the end of the specified section. Items that can spoil also need a line dedicated to adding the serving value to “good[item]1,” usually right before “delete item.” Note: Reputation and persuasion scripting protocol changed January 21, 2016.

8. Create an item entry for “Shop Down Shopping Cart.” This is necessary to test whether Buck is trying to steal the item. Like the official store scripts, this can be cloned from the item preceding it. Unlike the store scripts, this section will reward persuasion and penalize reputation, so it’s important to clone from within the script, not from a shop script, even if the values look almost identical. Needs the same extra lines from the normal shop scripts, though.

9. If buying a piece of equipment (items that should only be owned one at a time, like the coffeepot), add “trytobuy” information to “Extra Equipment.” Again, this can be cloned, with the values altered to suit the current need of that particular item. This script prevents Buck from buying two or more of the same piece of equipment. Consumable items should not be added to this script. For consumable items, this information should be added to “Extra Supplies and Garnishes.” The supplies and garnishes script will rely on information inputted into the “money input” script assigned to that store. (July 3, 2012 Addendum: Some store types don’t cater to Extra Supplies and Garnishes. That script can be cloned for specialty stores like Home and Garden Supplies and Health Supplies.)

10. Add “trytobuy##post” values to the scripts “inventory check before” and “inventory check after.” These are relevant to items that are manually added and removed from the shopping cart.

11. Check for a shoplifting script (can usually be found by scanning for “inventory check” keywords) and add “checktag” entries for each new item’s “Shop Item” tag. Set the persuasion requirements here. Note: Persuasion need is half the cost of the item.

12. If items are bought in packs (as in, a bag of filters charges for the bag but is used up in increments of 40 units) then modify “Serving Counter” and “Reverse Bagging” scripts with the items and their respective quantities. (Entry created July 3, 2012)

13. Add new items to respective inventory menus. Equipment items will need entries in whichever scripts are relevant for listing “owned” and “active” statuses to each piece. Selected menus should already have entries that point to the relevant scripts for similar items.

14. Add physical item to the desired shop using tile graphics and a blank NPC. NPCs should be blank and utilize only the text that points directly to the shop description. Nothing else is needed.

15. Refer to shop window and thief window scripts for recording display values for any newly created item (including placeholder items that are never actually bought or found). Relevant scripts include “record list,” “record prices,” “display shop info,” “persuasion needs,” and “build shopping window.” (Entry created October 1, 2012)

16. Add all new items to the appropriate menus and scripts reserved for the consignment shop. (Entry created July 3, 2012) Don’t forget to add serving-based items to “Overages.” (Entry created December 5, 2012) Note that each item needs to be added not only to the primary value calculations scripts, but also to the call menu scripts and the window display scripts. (Entry created December 6, 2012)

17. Add all new equipment pieces and items to the script “Scanning for Relevance” to activate or deactivate relevant inventory menus and consignment menus to maintain a more streamlined form of menu selection. Double-check that plain item tags are linked to the inventory menu and the “have item” tags are linked everywhere else. (Entry created December 6, 2012)

18. Set “shopitem” variables in store scripts and “Shop Down Shopping Cart,” and add variables to store management scripts (for the lease agent reports). (Entry created December 27, 2012) Do the same thing for “trend items” which track how popular specific items are in the game. (Entry created January 1, 2013) Don’t forget to zero everything out in “store item reset.” Refer to the October 26, 2014 checklist for any shop management script that affects items.

19. Add consumable items to “shop item select display” script as referenced on May 15, 2014. This displays useful information about whether the player should buy an item and how many. New shops should also be added to this script. (Entry created June 10, 2014) Additional “trytobuy” information needed in “locate shop and item.”

20. Write new scripts for spoilable items with the title “spoiled [item] check, unit,” following the same template used for spoiled cream. This will make new perishable items ice chest ready. (Entry created October 25, 2014)

21. Make sure equipment, especially those pieces that can be placed somewhere, is added to Buck’s net worth in “Shop Investments.” This step is somewhat subjective, but should be considered before finalizing the item. (Entry created November 4, 2014) Same thing applies to “Spying on Others.”

And that's the list so far. In the next post, I'll show you what I have to do to implement shops. I'm posting that to show that there's actually more to implementing items than just what's on this list.
Place Obligatory Signature Here
User avatar
Pepsi Ranger
Liquid Metal Slime
Posts: 1457
Joined: Thu Nov 22, 2007 6:25 am
Location: South Florida

Post by Pepsi Ranger »

Here's what I do to implement a new shop into the game. As of now, I'm still developing five shops that are not accessible in v1.2. Note that this is how I build standard shops. Special shops like the Pawn Shop, Sapphire's Consignments, and the upcoming black market follow a different structure.


1. Create an entry in the map editor for the new store. Set the layer count to 4 (with layers 3 and 4 taking the overhead tiles). Create a new tileset using object recolors or new items, starting with walls, floors, doors, counters, shelves, and so on. New objects should be no more than four colors and should blend in with the colors on the floor (8-bit version only). Starting with v1.4, tiles can be of any design or color depth. Once the tiles are drawn, find tile x6, y6 and lay the northwest corner wall. The rest of the store will depend on design needs. Stores rarely run wider than 15 squares or deeper than 10. Stores with many objects to sell may need a back room. Exits to the street should be drawn as 1x2 tile vertical shafts. Create its wallmaps and doors. Door exits should be at the bottom of the exit shaft. Don’t forget to resize the map when finished. Leave at least 7 tiles of empty space around the southern and eastern walls.

2. Create dialogue for the shopkeeper. This can be a complicated process, so it’s important to hit all the key points: First, open with the greeting. This first box (or whichever box ends the initial greeting) will need to trigger in the conditional menu Tag 768 OFF (universal choice 2), the appropriate shopkeeper menu (menu 87 for regular shops or a custom for specialty shops), and a conditional in the “next textbox” field that checks whether Tag 768 is OFF and links to the dialogue branch for purchasing items in shopping cart. Note: This step used to require a Shop/Chat choice box, but that’s been discontinued thanks to the new shopkeeper menu. If shopkeeper opens with more than just casual recyclable dialogue, write an alternative introduction and use the same conditions to link to the usual boxes.

3. The next text box (or text series) should initiate the chat topics. This is where the shopkeeper will ask Buck what he wants to talk about. This box should have conditions set to turn Tag 60 OFF (universal choice 1), Tag 768 ON, calls up the business life menu (Menu 88), and checks whether Tag 768 is OFF in the “next textbox” field and links to the textbox that initiates the “business” conversation.

4. Write the conversation about the shopkeeper’s business. The first box should set conditions that check whether Tag 60 is ON in the “alternative textbox” field (INSTEAD) and links to the textbox that starts the discussion about life, and sets Tag 60 OFF. Doesn’t matter how many textboxes follow.

5. Write a box that follows up the initial conversation. Example: “Anything else on your mind?” This box should have the same exact conditions that were set in the initial shopkeeper box (Step #2). It also needs to set Tag 60 to OFF. The business conversation should terminate on this box.

6. Write dialogue about life. No extra conditions needed. Conversation should terminate on the “anything else” textbox mentioned in the last step.

7. Write text that has the shopkeeper asking Buck what he’s got in his cart. This box should have conditions that check whether Tag 60 is ON in the “alternative textbox” field and links to the business life chat topics (Step #3) if it is, and that turn Tag 60 OFF. The “next textbox” field should trigger that shop’s dedicated shop script. Example: “Shop Down the Street.” Make sure the initial shopkeeper text (Step #2) and its alternative (Step #5) link to this box if Tag 768 is OFF.

8. The following box should have the shopkeeper comment that Buck’s money is good. The conditions should check whether Tag 65 is ON (empty hands) in the “alternative textbox” field and link to a box that informs Buck that his hands are empty.

9. The next set of boxes should involve the shopkeeper reminding Buck that he doesn’t have enough money and should put everything back where he found it. No conditions needed.

10. Textboxes 139 – 142 focus on Buck’s realization that he has stuff in his cart (when he tries to leave the store) and that he has a moral dilemma on his hands. Most of these can be recycled from store to store, but if I ever want to be creative, the basic formula is that the first box gives him a choice to “Do Right Thing” or “Do Wrong Thing” (setting Tag 60 ON) and links to a second box that shows he does the right thing. The second box has a condition that checks whether Tag 60 is ON in the “alternative textbox” field and links to the “wrong thing” text if it is. It also sets Tag 60 OFF and Tag 62 ON (conscience). The next box is an accountability box that reminds the player that the items are still in the shopping cart and that Buck either needs to pay for them or put them back on the shelf. This is triggered if Buck does the “right thing” and then tries to leave again without clearing out the shopping cart. No conditions needed here. The last box triggers the “wrong thing” text and sets Tag 60 OFF and Tag 63 ON (thief). This box is the only one that should be changed from shopkeeper to shopkeeper, and only because some shopkeepers are women. These boxes are triggered in the script “Shop Down Shopping Cart.” For the most part, none of these boxes need to be redone, and this step can be largely ignored.

11. The next series of boxes should focus on Buck’s attempt to get away with thievery. The first box should always be a distraction-theme topic that tries to convince the shopkeeper to turn his back on Buck. The second box should show the shopkeeper’s gullibility and reflect his decision to face the back wall (triggered if Buck’s persuasion is high enough). The third box should show the shopkeeper’s resistance to turn away (triggered if Buck’s persuasion is too low). The final box should be Buck’s reaction to having his shoplifting attempt shut down due to being less than persuasive. Texts 145, 147-148, 149, and 150 are all recyclable responses to the shopkeeper’s reactions. The only one that should be changed depending on shopkeeper gender is 150.

12. Write text that reflects Buck’s “empty hands,” which is what happens when Buck “shops” without having anything in his shopping cart. This should set Tag 65 OFF. Make sure this box is linked to the “money is good” box (Step #8).

13. Write text that has the shopkeeper catching Buck in the act of shoplifting. No conditions needed. This is the text that will trigger if Buck legitimately buys something, and then tries to sneak out with something else without paying for it. This is called up in the script called “Thief Proof.”

14. Create new global variables to represent the shop in the dynamic shopping world. These variables should be labeled “[shop]funds,” “[shop]worth,” “[shop]gain,” “[shop]pop,” “[shop]cost,” “[shop]spent,” “total[shop]spent,” “[shop]lease,” “[shop]popmark,” “[shop]tracker,” “[shop]asset,” “[shop]closeday,” “[shop]invest,” “[shop]owned,” “[shop]percent,” “[shop]nextday,” “[shop]highrisk,” “[shop]lowrisk,” “[shop]investdate,” “[shop]accrue,” “[shop]penalty,” “[shop]nextexpense,” “[shop]investday,” and “[shop]worthdate.” There should also be global variables for “[shop]item#” to account for shop inventory. This value will change with the addition of new items to that shop and will be better added during item construction phases.

15. Create a general script for the shop. Clone the script “Shop Down the Street” and modify the conditions that make it shopkeeper unique. If the new items are already defined, add them in here, too. Conditions that should be modified independently from item building include [shop]owned, [shop]gain, and [shop]pop variables, and textboxes for checking cart (Text 135 in the template, or the boxes created in Step #8) and ability to purchase (Text 138 in template, or the boxes created in Step #9). Note: “Handsome Ted” (Tailor Made) has an additional dialogue set that accounts for a special service it provides. Model this shop for any new shop entry that requires more than the basic “Shop / Chat / Never Mind” structure.

16. Create a script for shoplifting. This can be cloned from “Distraction.” The only thing necessary to modify from shop to shop, besides item checking and persuasion adjustments, which is done during item construction, is the textboxes. This handles the textboxes created in Step #11. Note: The point which the shopkeeper turns his back can be modified according to the text exchange. The original “Distraction” script turns the shopkeeper away after he contemplates the question that Buck presents to him. Not all shopkeepers would respond this way. Modify actions depending on dialogue.

17. Create a script for the shop’s shopkeeper. This can be cloned from “Shop Down Shopkeeper” and should reflect the dialogue written in Step #2 (Text 123) and Step #11 (Text 150) if the shopkeeper is female (or if I want to make each ending uniquely tailored for each shopkeeper). This is also where “Distraction” should be replaced with the name of the new shop’s shoplifting script. Note: Text 2961 handles the Text 150 for women.

18. Update “Thief Proof” with conditions that call out the appropriate “caught shoplifting” text. Update “Shop Down Shopping Cart” if Tag 63 is ON and Tag 64 is OFF with any text that serves as a variant to the “eyes like a hawk” comment used in Text 142.

19. Set map conditions to play a song, place foot offset up 5 pixels, display map name for 50 ticks, autorun script “shopper information,” and run each-step script “scenery sounds.”

20. Create a shopkeeper NPC and define it in the Edit NPC menu. Should be set to “stand still” and a movement speed of 2. Other conditions variable depending on needs for the store. Should be placed behind the cash register graphic. Create an invisible NPC that calls up the cloned “Shop Down Shopkeeper” script. Place it on the cash register graphic.

21. Create three more invisible NPCs. The first should use “Step On” activation and run the script “Shop Down Shopping Cart.” The second should use “Touch” activation, appear only if Tag 62 is ON, and run the script “Shop Down Shopping Cart.” The third should use “Touch” activation, appear only if Tag 63 is ON, and run the script “Shop Down Shopping Cart.” The first NPC should be placed at the top of the vertical shaft exit. The other two should overlap each other on the bottom half of the vertical shaft exit (on the door link tile).

22. Create invisible NPCs for the shop items. This can also be done during the item construction phase. Set them on shelves and refrigeration bays.

23. Build a location for the shop in one of the downtown areas. Make sure the entrance and exit doors link to each other. Storefront should have the shop’s name written over the door. Tile directly above door (most likely the sign) should be an overhead tile.

24. Update “scenery sounds” with the proper map and ambient sound trigger. Can probably be cloned from all the other shop sounds.

25. Update the scripts “activate shop display box,” “activate thief display box,” and “Shopping or Tossing” to include the new map.

26. Create shopkeeper tags. Should include one for “Shopkeeper Stat” and one for “Shopkeeper Closed.”

27. Update shop dynamics. This requires coming up with an initial range of arbitrary numbers to define its idea of success and setting them in “Character Parts.” This also includes creating new entries for “operational costs,” “restocking inventories,” and “other shop expenses.” The tags for “other shop expenses” will correspond with the shop’s “closed” tag. Note: “Restocking inventories” requires items, and is probably better left as an item building step.

28. Clone “customer store buys shop” with information related to the new store. Create a new timer ID exclusive to the dynamic workings for this shop. Add enough “it#” variables to account for each salable item. Tag checks refer to the store’s “shop closed” tag.

29. Continue updating shop dynamics by creating an entry in the scripts for “shop popularity control,” “report store funds,” “charge store expenses,” “shop total assets,” “calculated store worth,” “launch phantom shoppers,” “store utilities and salaries,” “skipping through the work day,” “store closing schedule,” “scheduled reopenings,” “visual closings,” and “new flux.” Note: “Shop total assets” will be updated each time a new item is added to a shop, and is covered in the item adding checklist. “Store utilities and salaries” should be updated whenever a new shelf is added or something changes in the map presentation. The formula that calculates this is fully explained in the January 3, 2013 entry. “Visual closings” requires a closed door graphic on the outside entrance into the shop, so the corresponding tile coordinates should reflect that. “Store closing schedule” should set store funds at the lowest value of that shop’s “Character Parts” range.

30. Make sure “trending sales” has a spot dedicated to the new store. This is another area that the item construction checklist may cover in better detail, but neither checklist is complete without adding a map check to this script. Likewise for “discovered discount.”

31. I don’t really plan on adding any new shops to Chet’s itinerary, but if I do err on the side of good business sense and decide to show it, I’ll need to add the new shop to “chet tracking.” The amount of time it takes him to get from one store to another (by timer) should depend on where the shop is located. I won’t be able to address this step until after the store physically exists. I’ll also need to update “chet shopping.” This is lengthy, but important. Again, this assumes the new shops are important to his cause. Most of them shouldn’t be.

32. Write seven textboxes for the lease agent’s shop report. The first can be cloned from Textbox 2560 (or any from that block). Search: “Mack Green.” The second box will reflect the shop’s closing status (if it’s closed) (Textbox 2581). The third reflects investments. Net worth will call the variable for [shop]worth. Current investment will call the variable for [shop]invest. With the exception of shopkeeper’s name and the store’s name, and whatever else is clearly in need of context, everything else can remain the same (Textbox 2607). The fourth box will be a clone of the first, but the bottom line will change to reflect ownership (Textbox 2621). The fifth textbox is the shop’s “restructuring” message that reflects its closing during its bankruptcy period (Textbox 2635). The sixth handles the shopkeeper’s financial change from the day before and deals with the buy request (Textbox 2661). The last handles an overview of dollar stats and gives the request to sell (Textbox 2680). Note: Clones of 2607, 2661, and 2680 will need choice enabled with options for “Yes” (sets Tag 60 ON) and “No.”

33. Update Menu 21 “Customer Reports” to include the shopkeeper’s name as a selection. Each addition should run script “Actions for Business,” set its respective “Shop Stat” tag ON, and close menu if selected.

34. Update “Spying on Others” and “Shop Investments” to include new shop(s). The top level checktag condition refers to the shop’s “Shop Stat” tag and the next level refers to the shop’s “Shop Closed” tag. The textboxes should call up the shop information that was written in Step #32.

35. Update “Try to Invest” using the “Shop Stat” tag and clone the others using exclusive global variables. Do the same for “Try to Invest High.”

36. Follow up with update to “calculate investments.” This script has two halves: one for high risk investments and one for low risk.

37. Update additional investments related scripts, including “owner discount” and “income values.”

38. Update “Hostile Takeovers.” Follows the same basic template as “Shop Investments.” Follow with an update to “Try to Takeover,” which is called from the Hostile Takeovers script.

39. Update “Sell Shares.” Same rules apply as above. Follow with update to “Try to Sell.”

40. Update end game scripts “end game compiles” and “check buck ownership” with new shopkeeper information.

41. Update advanced store window display with new shop information. Can be found in the script “shop item select display, shop, item.”

So, there you go. This is why I've spent the better part of a year just making items. If I had worked on the game consistently, I could've finished in a month, but that's still a long time.

Hope that gives you guys some insight on how much effort goes into making this game awesome.
Place Obligatory Signature Here
TMC
Metal King Slime
Posts: 4308
Joined: Sun Apr 10, 2011 9:19 am

Post by TMC »

Well Pepsi, you're notorious for verbosity, but this takes the whole selection of cakes, muffins, ham sandwiches and all else on display too, and is the longest thing you've put in front of me since the changelog for The Adventures of Powerstick Man. I've left checking SS until pretty late today, so I don't have time to read all of this right now.
But the main difference between perks and regular coffees is that perks are potentially free (if you order them during one of Mr. Perkins's visits), and their cumulative values sit in between those of coffees you can buy in the regular shops
Not sure what "cumulative" here means (you may be misusing the word), and I'm also not sure what Mr Perkins has to do with free stuff; I think I'm unaware of of have forgotten some mechanic...
I personally prefer pumpkin over most everything on this list, but if I were to base it on sweetness, then I'd have to go in this order
OK, now I have to raise a serious rather than joking complaint: what does sweetness have to do with taste or quality? That sounds a lot like what's wrong with the modern food industry! (OK, hypocritically I do tend to put a lot of sugar and cocoa in coffee, but only to mask the taste of bad coffee; usually I complain about 'disgustingly sweet' food and drink)

I can see that letting the player add sofas and other such personalisations is just about the first thing that most game developers would want to do if designing a coffee stall simulator -- in the vein of The Sims and so forth. And I missed (or possibly forgot) that you could actually use the televisions you repair. (I don't think I ever managed to repair one).

But... utensil holders? Serving spoons and knives? When I asked whether they were optional, I meant whether explicitly buyign a spoon was a requirement to do anything, rather than just a way to impress customers, but it seems they are actually requirements for various things. Which does worry me too. You're trying to be completely realistic, which is a design tendency I have as well until someone like Hawk tells me I'm being absurd. Now, actually a hyper-realistic business sim could work in my opinion... but only with the right interface (go extreme enough and you're going to want something like VR with hand-tracking gloves). You don't want to be crawling through long menus with non-obvious requirements to do anything, unless over-the-top complexity is a joke.

----

I know that I'm 100% to blame for Hamsterspeak not having arrays and other features (and James is blameless, since I've been saying I would work on these things for years), which would make any endeavour like this vastly less painful. I'm still hoping to get to it this year, but it's August already and been 5 months since I worked on it.

Building up a complex program like this from without even basics like arrays, and doing it in a clean way, is something that only people with programming experience can be expected to do. No, it's not good enough that it works, if it works so inefficiently that you would save time rewriting parts of it from scratch rather than extending them (if you knew how to). Inefficiencies like that just keep building up and make problems worse. But I'll look over your checklists tomorrow and maybe have some suggestions. (I always regret spending so much time working around engine limitations rather than working on engine limitations, though.)

How Feenicks suggested defining data, using 'switch, case' blocks, is also what I usually do.
User avatar
Pepsi Ranger
Liquid Metal Slime
Posts: 1457
Joined: Thu Nov 22, 2007 6:25 am
Location: South Florida

Post by Pepsi Ranger »

TMC wrote:Well Pepsi, you're notorious for verbosity, but this takes the whole selection of cakes, muffins, ham sandwiches and all else on display too, and is the longest thing you've put in front of me since the changelog for The Adventures of Powerstick Man. I've left checking SS until pretty late today, so I don't have time to read all of this right now.
Bear in mind that the second and third post are lifted directly from my design journal, so the info was always there. I'm just posting it here for the benefit of those who don't know how to access the playtest file.
TMC wrote:Not sure what "cumulative" here means (you may be misusing the word), and I'm also not sure what Mr Perkins has to do with free stuff; I think I'm unaware of of have forgotten some mechanic...
I meant combined values, not cumulative. You're right. I wrote this late at night.

Mr. Perkins is the guy who rewards your accessibility score by allowing you to choose free items that you can use at your shop (like out of season holiday coffees). You probably don't remember him because he only gives you financial reward in v1.2. It was my intention for him to also provide exclusive items that you can't get anywhere else but through him. I decided to base a shop around him for those who might want to buy his wares instead of waiting every five days to receive only one item. I'll more than likely expand his goods to beyond coffee and syrup, but not likely before a later update. I want to get the systems in first.
TMC wrote:OK, now I have to raise a serious rather than joking complaint: what does sweetness have to do with taste or quality? That sounds a lot like what's wrong with the modern food industry! (OK, hypocritically I do tend to put a lot of sugar and cocoa in coffee, but only to mask the taste of bad coffee; usually I complain about 'disgustingly sweet' food and drink)
I have to base these flavors on something to justify their changes in price. It's mostly arbitrary though. The key here is that quality is based on values, and the values are chosen by how likely these flavors might succeed in real life. I doubt horseradish or vinegar flavored coffee would do as well as pumpkin, eggnog, peppermint, or white chocolate (aka the holiday coffees). The higher tier syrups (ambrosia, love potion, nectar, and liquid sunshine) are going to be used for affecting customer statuses, so they are more expensive, even though they may not do much for flavor.

But yeah, I agree that too sweet is just as bad as too bitter. That's why you can ruin coffee in Entrepreneur: The Beginning!
TMC wrote:I can see that letting the player add sofas and other such personalisations is just about the first thing that most game developers would want to do if designing a coffee stall simulator -- in the vein of The Sims and so forth. And I missed (or possibly forgot) that you could actually use the televisions you repair. (I don't think I ever managed to repair one).
It's one of my favorite parts about business and life sims, so I want to make sure I have some element of that in this game. But yeah, you'll be able to purchase televisions and radios soon enough, so you won't need to repair them anymore, unless you want to go the repairman route. FYI, the microwave will also serve dual purpose as a purchasable and a junk item to repair that can be used at the pavilion (for reheating cold coffee).
TMC wrote:But... utensil holders? Serving spoons and knives? When I asked whether they were optional, I meant whether explicitly buyign a spoon was a requirement to do anything, rather than just a way to impress customers, but it seems they are actually requirements for various things. Which does worry me too. You're trying to be completely realistic, which is a design tendency I have as well until someone like Hawk tells me I'm being absurd. Now, actually a hyper-realistic business sim could work in my opinion... but only with the right interface (go extreme enough and you're going to want something like VR with hand-tracking gloves). You don't want to be crawling through long menus with non-obvious requirements to do anything, unless over-the-top complexity is a joke.
I might set an option for realism vs. just play. We'll see. I also want this game customizable to the player's preferences as much as possible, and that could be one area of customization worth implementing (I'll write it down in my notes today as a to-do item). I like the idea of enforcing a spend money to make money tug-of-war system to ensure that Buck doesn't mop the floor with Chet by Day 10, and requiring certain purchases to achieve certain tasks helps me to do that. But this can be open to discussion during playtesting. If it's obnoxious, I can do away with the requirement and use it to increase Buck's shop value exclusively (owning these things will increase his shop value regardless, making it harder for others to buy him out in the later game). But I'm going to give it a try. So far, no one has complained about the bean grinder, so I think this will be okay.

Regarding the utensil holder, that's just another storage item. You don't have to own it to keep the utensils, but it will eliminate the smaller utensil items from clogging up your global inventory limits if you do own it. And it will increase your shop value.

EDIT: Another thing I could do is to allow the player to scoop ice cream with his hand to the detriment of quality, and at the risk of inciting a visit from the health inspector. This can make the utensils *less* required but still necessary. Same thing with trying to brew coffee straight from the beans (though I'm less likely to change that particular mechanic). How does that sound?
TMC wrote:I know that I'm 100% to blame for Hamsterspeak not having arrays and other features (and James is blameless, since I've been saying I would work on these things for years), which would make any endeavour like this vastly less painful. I'm still hoping to get to it this year, but it's August already and been 5 months since I worked on it.

Building up a complex program like this from without even basics like arrays, and doing it in a clean way, is something that only people with programming experience can be expected to do. No, it's not good enough that it works, if it works so inefficiently that you would save time rewriting parts of it from scratch rather than extending them (if you knew how to). Inefficiencies like that just keep building up and make problems worse. But I'll look over your checklists tomorrow and maybe have some suggestions. (I always regret spending so much time working around engine limitations rather than working on engine limitations, though.)

How Feenicks suggested defining data, using 'switch, case' blocks, is also what I usually do.
I've already decided that if Hamsterspeak ever achieves the types of programming codes or abilities that I would need to simplify the development of this game, I'll adopt it straightaway and update the old systems to match it. I don't mind rewriting things from scratch. I treat this game like a playground--something I enjoy visiting whenever the mood strikes, something I don't have to finish tomorrow, nor do I want to finish tomorrow. I'll spend a few extra months rewriting scripts to work more sanely. I have no problem with that. Bring it on. I just don't want to do it if Hamsterspeak is still inefficient in key areas. I still have contentions with the notion that scripts enforce limits on how many local variables can be defined at a time. I just discovered last night that I have to rewrite (split in pieces) a script I wrote years ago because the local limit went down from 255 to 99. I've done that with two others. Truthfully, for my needs, even 255 is too limiting. Fortunately, I can (hopefully) get away with splitting them up, but it's more work for me to figure out whether the system can still work as intended. Well, no, it can. It's just more work and more logistics to get it to work, which means more time devoted to planning and scripting.

I'm sure there's a good reason for limiting the use of local variables per script, so I won't debate it. I'll just work around it. But it is troublesome for a game like this. I'm trying not to overuse my global variables. I've already got close to 8000 in play.

Regarding switch/case, I do use those. Most of my scripting insanity comes from needing arrays and not having them.
Last edited by Pepsi Ranger on Tue Aug 09, 2016 6:12 pm, edited 1 time in total.
Place Obligatory Signature Here
TMC
Metal King Slime
Posts: 4308
Joined: Sun Apr 10, 2011 9:19 am

Post by TMC »

Alright. So you have some extra documents (a howto for implementing items) that aren't in the playtesting kit? I don't see it in there (although I see you uploaded it yesterday).

Oh, I remember Mr Perkins and prizes, but not perks items as prizes (him name makes much more sense now!)

Hadn't heard of "holiday coffees" coffees before; is that a real thing?
I might set an option for realism vs. just play.
...
EDIT: Another thing I could do is to allow the player to scoop ice cream with his hand to the detriment of quality, and at the risk of inciting a visit from the health inspector. This can make the utensils *less* required but still necessary.
Well, that would be still hyper-realistic, but amusing and less frustrating (as when you didn't know you needed to buy a spoon and now you can't serve icecream). All this realism should have at least some benefit for the experience, like amusing results, so, sure, that's an improvement. But it's still a lot of work to add spoons and clawing ice cream with your hand, so I don't see how it would even come close to being worth the work.

I like the idea of a option to turn off aspects of the realism. It would be an easy mode. Again, it does create more work to implement and test.

You're the second person to mention that they've hit the 99 local limit. The limit is a bit arbitrary, it's just that 128 or more locals may be difficult to support in the new script interpreter.

This is ugly, but here's another possible very easy work-around:

Code: Select all

script, foo, begin
  variable(a, b, c, d, e, f)
  # ...
end

becomes

script, foo, begin
  variable(a, b, c)
  subscript, inner foo, begin
    variable(d, e, f)
    # ...
  end
  inner foo
end
You can nest them to get up to about 396 locals IIRC.

I started working on the new script interpreter again. I had forgotten what a lot of work there is left to do on it.
Last edited by TMC on Wed Aug 10, 2016 10:47 am, edited 3 times in total.
Post Reply