Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

1411713 Posts in 69402 Topics- by 58450 Members - Latest Member: FezzikTheGiant

May 21, 2024, 11:11:28 AM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsCommunityDevLogsSylvan Remedies - a pharmacological puzzle/business sim
Pages: [1]
Print
Author Topic: Sylvan Remedies - a pharmacological puzzle/business sim  (Read 3942 times)
Kingel
Level 2
**



View Profile WWW
« on: August 17, 2014, 12:20:03 PM »


Hey, everyone! Grin I figured it was a good time to make a devlog for this project now that I've done a bit of coding for it.

Sylvan Remedies is a crude analogy to pharmacological research. Gather herbs to make potions, then test them on animals, yourself, or unwitting villagers. You also need to treat patients in order to fund your research. The end goal is to complete your recipe book before you run out of money or piss people off. It'll most likely be a short, but difficult game.

Prototyping


I used a simple paper prototype to test the core mechanic with some friends, and it seemed promising. At the point shown in the photo, it was getting a little tricky to keep track of things manually.


Here's the current prototype in glorious ANSI colors. Its simple, menu-based interface allows for easier debugging, an aspect I really appreciate at this stage.

Graphics


Once the prototype has been completed, the next step is a graphical interface. Initially, I wanted to try NES-restrictions for the graphics since it cuts down on color count and resolution, thus saving time in theory.



However, I'd like more room for the GUI, so I'm leaning more towards a high-res variant with a more limited tile count. I may work on this in parallel for variation, although I'm trying not to get distracted from coding for too long. I also need to make enough progress with the prototype to know what I'll need for the GUI.

Any kind of feedback is welcome. Beer!



At the moment, I'm in the process of implementing the potion identification/elimination logic. It's a little hairy, so I'm looking forward to being done with it. After that, I'll probably add resource constraints such as money and reputation before I start working on diseases. Evil
« Last Edit: August 18, 2014, 11:14:37 AM by Arachne » Logged

melos
Level 10
*****


View Profile
« Reply #1 on: August 17, 2014, 12:36:59 PM »

ooh, that's interesting...could comment on present-day epidemics . do you do pharmacological research yourself?  looking forward to see how you figure out the balancing of time/difficulty spent looking for herbs, the puzzle-y nature of the potion making with the disease curing etc.
Logged

play hydlide 2
valrus
Level 3
***


View Profile
« Reply #2 on: August 17, 2014, 02:12:16 PM »

Following with interest!  This is a lot like a game I've wanted to make for some time -- a medical roguelike set around time of Paracelsus -- but never got around to.  I'm glad to see someone is making something similar!
Logged
Kingel
Level 2
**



View Profile WWW
« Reply #3 on: August 18, 2014, 12:07:17 PM »

Glad to hear you like the concept. Smiley

I cleared my bug list for today, which means it's time to implement the last type candidate. The screenshot in the OP shows the first three (healing, poison and protection). Those are the easy ones, relatively speaking.



I should be able to compact it a little, but that's the full list of candidates for elimination. Cry Either I failed to test this correctly in the paper prototype, or it's simply more complex as a text-based representation. A GUI should be much more convenient for this part, but I'm still a little concerned looking at this list. But that's after the basic implementation, of course... Crazy

I also want to start working on some sprites once I get a grasp on this type of perspective.

ooh, that's interesting...could comment on present-day epidemics . do you do pharmacological research yourself?

My branch of study is signal processing, mainly related to medical ultrasound, so it's only tangentially related. I really like that kind of cross-disciplinary work, though, and I've always found medicine and chemistry to be fascinating topics. I've been reading Derek Lowe's blog, which I recommend if you like that sort of thing. It's part of my inspiration for the game.

Quote
looking forward to see how you figure out the balancing of time/difficulty spent looking for herbs, the puzzle-y nature of the potion making with the disease curing etc.

Yeah, the balancing is what I imagine will be the critical part. You'll be deciding what to charge for treatment, so income distribution is going to be a factor. There will be reputation hits for various offenses (such as malpractice, denying treatment or leaving weird, mutated animals roaming the woods) until you're unable to buy bottles from the villagers. Those are the main restrictions you'll be faced with.

Following with interest!  This is a lot like a game I've wanted to make for some time -- a medical roguelike set around time of Paracelsus -- but never got around to.  I'm glad to see someone is making something similar!

That sounds interesting too! One of the nice things about a project like this is that there are so many ways to go about it. I hope this can give you some ideas or inspiration. Smiley
Logged

Kingel
Level 2
**



View Profile WWW
« Reply #4 on: August 22, 2014, 12:58:59 PM »

So it turned out that the transformation candidates were actually fairly trivial to implement. Instead, I spent most of the time trying to sort out the protection/poison logic. Debugging with GDB has made the process fairly pleasant, at least. Smiley



It didn't turn out too bad in the end, despite having to add some additional cases for the protection potions.

I still need to complete a recipe book bug-free before I make the potions expendable. I'll need to streamline the potion making as well, seeing as I'll be making a lot more of them.

Potions

Pixel 18 Poison
Poison is the potion type you're most likely to come across first, as the effect is straightforward. It's also one of the most useful potions in the animal testing stage.

I'm not happy about the words potion and poison being so similar, so I might change that if I can find something more fitting to replace poison/poisoned. Is there a good verb to go with toxin?

Pixel 06 Healing
Healing does what it sounds like and can only be identified using an injured test subject. This is one reason why you want to come across poisons early on. Healing is useful for preventing your test subjects from dying.

At the moment, there is no way to fully identify all the healing potions, as the full effect would only be identifiable in dead subjects. As I may also need to use the strongest poisons for clinical use, I would like to introduce the ability to create a mixture of two potions. The idea is to produce a non-lethal net effect, while still offering the benefits of the individual potions.

Pixel 00 Protection
Protection potions are a little tricky. They protect against one subsequently applied poison effect. Consequently, in order to refute a potential poison effect, the subject must be free of any unknown effects. A known poison is needed for protection identification.

Pixel 11 Transformation
Transformation potions will help you widen your selection of subjects and thus the amount of poisons (see?) potions you can identify. Monsters don't exist in the game world until you create them.



Understandably, the villagers will be unsettled by creatures such as this one (the lowest level of monster), so cleaning up after yourself is advisable (though more costly).

Transformation potions are the only potions whose efficacy is linked to creature level. Although this is the largest group of potions, transformation potions are not suitable for clinical use.
« Last Edit: August 22, 2014, 01:31:02 PM by Arachne » Logged

Kingel
Level 2
**



View Profile WWW
« Reply #5 on: August 28, 2014, 12:13:12 PM »

Not much new this week, although I've revamped the inventory system so it's a bit simpler and more conventient. I'm now listing all the possible potions you can make from the herbs you have. The list becomes pretty long if you have a lot of unique herbs, though. I'll have to see if I can simplify this somehow. For instance, I'm not sure I need the total number of potions you can make from each herb combination since this can be derived from the herb count.



I also tried piping the output into eSpeak, to see how well the prototype would play using text-to-speech. It works, and the prototype is playable, but it's too tedious at the moment. The problem is mainly that the menus are too long and cluttered for this purpose, especially stuff like the symbol vomit I'm using for the type candidate list.

Some of the changes/additions I want to make:
  • No color codes (seems obvious in retrospect)
  • The ability to interrupt a menu listing once a choice has been made (related to the next point)
  • Shorter menus, splitting things into multiple pages or submenus when necessary (may benefit the GUI as well)
  • Making it more descriptive, like announcing state changes, telling the player how many menu options will be presented, etc.
  • Making sure any unusual words, like the compound herb names, are parsed correctly

I like the idea of having two frontends for the game, since I'll be able to take full advantage of my text-based prototype. I also think it'll be interesting to consider the different needs for the two types of interface (audio vs. visual).
Logged

Kingel
Level 2
**



View Profile WWW
« Reply #6 on: September 08, 2014, 11:45:40 AM »

I'm now working on villagers and diseases. Evil The village has been populated with villagers of various income levels. Each day, some of them fall sick and will require treatment. The diseases and treatment should be quite simple, as I think the potion identification step will be complex enough on its own.



Currently, the patients show up at the clinic where the physician diagnoses them with a disease, offers a prognosis (situation next turn) and a prescribed treatment. Then it's up to you to match the prescription as best you can. If you don't have the necessary potions in stock, you may defer treatment to the next day (you'll want to do some triaging here).

Villagers

The villagers are divided into five groups based on income levels. This should make it easier for you to achieve a balance between affordability and profit. The villagers will also be more likely to withstand disease at higher income levels.

The villager classes:

  • Beggar
  • Peasant
  • Artisan
  • Merchant
  • Administrator

Diseases

Cancer grows until it reaches its final stage, after which the patient's health starts to decline. If the cancer is metastatic, it'll also spread at the final stage. This adds another instance of cancer which will grow in the same fashion as its origin. Applying a weak poison will only momentarily halt the cancer's growth. Higher level potions are needed for a cure. If the cancer has reached its final stage and no poison is available, a weak protection potion may be administered to prevent the patient from dying until a cure can be administered.

Infections will simply reduce the patient's health. If the infection is in a contagious phase, the infection will spread to others unless it's cured immediately. A weak poison will cure infections. In the case of severe infections, a strong protection potion may be required to keep the patient alive.

Wounds also reduce the patient's health. In order to cure the patient, a healing potion must be administered. If the patient has an open wound, it may become infected.

In the screenshot, the administrator is the most urgent case. Not only will the patient die shortly, but the disease will also remain contagious. The other patients will live another turn, although the artisan's condition will worsen considerably (final stage cancer plus metastasis).

Before I start including diseases in the potion mechanics, I need to iron out the last few wrinkles in the identification process (mainly cleaning up redundant output and such). Then I'll start working on treatment and accounting (pricing methods). Bottles can be made a limited resource once treatment is profitable.  Hand Money LeftEvil Hand Money Right
Logged

Kingel
Level 2
**



View Profile WWW
« Reply #7 on: October 02, 2014, 10:29:48 AM »

Lately, I've mostly been tidying up code, looking for bugs and tweaking the menus, but I've also spent some time planning upcoming features such as the reputation system and the financial aspect of the game. The reputation system I have in mind will be the first step in making the game feel a little less clinical, so it'll be interesting when I get there. Smiley



Healing wounds is now possible. Next I'll implement using poisons to cure cancer and infections, which is trickier as it involves both known or unknown poisons and known or unknown protection potions.
 
The idea I had about combining potions was too complicated, and it also involved placing restrictions on what you could combine. The main advantage for me was that it could be implemented using the existing potion mechanics, but I want to make the rules and mechanics the player has to deal with as simple as possible. I ended up simply applying potions to the disease first and then applying any remaining effect to the patient.



I made my test subject list persistent and exclusive to animals (except for yourself). The previously applied potion for each animal in the list is displayed if the potion is likely to affect test results. Low level animals are useful when identifying transformation potions, whereas higher level animals are useful for identification of healing and higher level poisons, so they're all needed during testing. I'll either make sure there's a minimum number of animals of each level or just prune a random selection of them each turn. Killing yourself during testing has no effect on the game yet.

I have a few more potion types than the combinations of herbs allow for, so I always include essential potions and choose from the rest at random. I realized it was possible to end up with a potion list entirely free of animal to human transformation potions. These make clinical testing more predictable, so now I've made sure they'll be included in the recipe list. The player could achieve the same result via animal to monster, then monster to human, but that would be twice as expensive.

Bottles are now consumable, so I'll have to do some more extensive testing to find a good starting value once disease curing is fully implemented and I can actually start making money.

Treatment cost

After treatment is implemented, the next step is being able to choose how much to charge for treatment. Instead of having to specify the cost of treatment for each patient each time, you specify two pricing constants. The first constant, a, is the consultation fee. The second constant, m, is a multiplier for the material cost of the treatment.

The resulting charge is mB + a, where B is the number of potions used. If you set m to zero, the potions are free. If you set a to zero, you only charge for the potions used. You'll also be able to make exceptions for each villager class. I'll have to see if it'll be useful to allow for individual exceptions, but for now I'm keeping it simple.
Logged

Kingel
Level 2
**



View Profile WWW
« Reply #8 on: December 22, 2014, 07:03:03 AM »

I decided to take some time to refactor, so now that I'm done with exams I'll have some time to finish what I started. I've had relatively few bugs, but the vast majority was caused by messy code. Tidying up the menu system was especially helpful, as it'll greatly simplify the gameplay changes I have planned.



Some additional information added, such as indicating patients who are in critical condition and how much they'll be charged per potion.



I've implemented a way to configure how much to charge each villager class. Now that the game has a more challenging goal (cure the patients) and my testing sessions last longer (hooray for making money), I can focus more on making the game fun to play.

The main challenge lies in the decision-making. You have to decide which potions to make, how to test the potions, when to start treating patients, which patients to save and how much to charge for treatment. You also have to switch back and forth between trying to make use of the potions you already have and trying to find new ones. This is what I think makes the game interesting, but it also means that the interface must offer all the information you need in order to make the most beneficial decisions. If the player has to spend time hunting down this information, it's going to get tedious quickly.

I'm only about halfway done with the treatment implementation itself, as the protection potions aren't handled yet. I've dreaded delving into this part of the mechanics, but so far it's been less hassle than I imagined. I mentioned the known/unknown cases for poison/protection, but I didn't take into account a third state (unknown previous potion and known current type with unknown level), which has at least one identification case in need of handling. Hopefully, this will just be a minor addition.

I'm also considering adding protection identification through treatment, as in sending the patient home with an unknown potion applied and if the patient's condition when they return is better than the prognosis, it should tell you something about the potion you applied. That's going to add the need to keep track of patient status from day to day. This could come in handy if you're low on money and want to kill two birds with one stone.

Reputation

At the moment, it's tempting to charge patients for ineffective treatment or prolong treatment in order to sell more potions, especially if money is running low. However, the patients expect to receive swift and cost-effective treatment. I've started making a list of all the things a villager might object to, and it's already a long list. Rather than having a number that tells you what the villagers think of you, I'd like to have them talk amongst themselves instead and let you listen in on their conversations. I'm not sure if this will be accurate enough to give you sufficient warning, but it should be interesting to implement.
Logged

QOG
Level 3
***



View Profile WWW
« Reply #9 on: December 22, 2014, 01:46:29 PM »

Looks really nice. I'm wondering how the graphical interface will work, since movement doesn't seem to be a factor, but the top-down setup would suggest that you can indeed move about.
Logged
Kingel
Level 2
**



View Profile WWW
« Reply #10 on: December 25, 2014, 06:48:43 AM »

Looks really nice. I'm wondering how the graphical interface will work, since movement doesn't seem to be a factor, but the top-down setup would suggest that you can indeed move about.

Thanks! Grin Having a geographical distribution of herbs and animals is going to be important later on, as it'll allow me to adjust the difficulty of potion identification by having certain herbs and animals appear closer to your headquarters. I intend to change the current herb list so that lower herb numbers are more likely to produce visible results, and the graphical interface should make the player more likely to pick those herbs before the farther ones.

Recipe categories

I've started adding subcategories to the available recipes in the lab so that it'll be easier to find the right potions to make. The tricky part is finding categories that are useful, but not too narrow. Some of the categories are unlocked as you either confirm or refute potion properties. The categories are hidden if you don't have the required herbs for any of the listed potions, but I think that needs to be a little clearer. I'd like to supplement this menu with some information about known recipes you can't currently make (such as total number of unused recipes remaining), which might help.

New recipes are unused recipes, the simplest category.

Untested recipes are recipes which haven't yet been tested on all three creature types. This is useful if you come across a new transformation potion and would like to try previously tested potions on your newly transformed target.

Harmless recipes are recipes which are neither poisons nor transformation potions. These are potions safe for clinical use.

Instant recipes are potions which aren't protection potions. This is handy if you want to make sure you can refute as much as possible when using subsequent potions, if you've applied an unknown potion to a target and need to clear it.

I added the full list of used recipes to the 'any potion' category to cover categories I'm missing, so that'll be replaced eventually.



Some of these categories still end up being rather large, so I might have to further divide the menu into untested recipe targets and harmless recipe targets, for instance. I'll have to give the recipe book similar treatment, but as its purpose is different (figure out which herbs you need to pick and monitor overall progress), I'll look into that once I have the lab menu figured out and can test the effect on the selection process.


Logged

Pages: [1]
Print
Jump to:  

Theme orange-lt created by panic