• Advertisement
Sign in to follow this  

Trouble developping data heavy modifiers

This topic is 1373 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hi, I have been learning game development using LibGdx and Java. 

I am making a game similar to Lemonade Tycoon and Papa Hot Doggeria.
 

The idea of the game is to make recipe for a queue of clients. They ask for something, you have to click and drag things around to prepare the food and sell it to them. The best you do, the more money you get.

 

I have been able to make the core game mechanic so it is possible to prepare the food. Now I am hurting my head finding a clean and flexible way to incorporate contextual modifier element (as I call them)

 

One precise contextual element is the location element. When getting more and more money, the player can relocated, in exchange of some gold, in a busier street and be able to sell more hot dog. The location element have many state representing different location with different attributes. Say I would like my game to spawn Client at a speed depending on the location state and have a score/payment modifier because in USA people pay more (...).

 

At first it look easy, keep track of location in a class or some variable and use is everywhere in different conditional statement when needed. The problem raise when more and more contextual element exist, list of ingredients, list of clients preference, location, employees effects.

Would it be a good Idea to create a Modifier class which knows about all contextual modifier and provide modifier for everything. For exemple, I have calculate a score, then I want to apply the location modifier about score, in USA People pay more for food for example, I would call the modifier class scoreModifier(score) function that would return a modified score? Or should my score calculating element know directly the location element?

 

hope it make some sense to someone, thank you very much,

Share this post


Link to post
Share on other sites
Advertisement

I don't see what single vs multiplayer has to do with anything.

 

Just make a data class that contains the values needed for stuff (e.g. clients come in at 1.5x the base rate, stuff costs 3x times as much, etc...).

 


At first it look easy, keep track of location in a class or some variable and use is everywhere in different conditional statement when needed.

 

I don't understand the need for a "conditional statement". Won't there always be a "location element"? Even if there isn't, it just means you have a location with default modifers (e.g. 1x, no extra ingredients, etc...).

 


I would call the modifier class scoreModifier(score) function that would return a modified score? Or should my score calculating element know directly the location element?

 

I would do the latter, unless you have different logic to calculate the the new values for different locations. Then you could encapsulate that in the "location element" rather than in the code that calls the "location element".

Share this post


Link to post
Share on other sites
Well group it up logically. When are you going to use all these modifiers? Are they displayed somewhere? Are they only going to be used in a method called to pay you for delivering an order or something? Usage is one of the best ways to dictate design pattern.

You can keep in mind the is-a/has-a idea, for instance a customer has a region they are in, that can either be specified by perhaps the payment method checking what region the player is currently in and then getting the relevant modifier information for that from some class that has some form of listing of the different rates.

If the thing isn't like a region and instead is like their background or something(maybe they like certain drinks more and will pay a better price or something) then you may want to set that information when the customer is created and spawned in the game. Just think about it step by step really.

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement