Pink Petal Games

PyTFall => PyTFall: Game design => Topic started by: Xela on April 24, 2016, 03:03:57 PM

Title: Simulated Exploration
Post by: Xela on April 24, 2016, 03:03:57 PM
Lets discuss...

We want it to:

- Have travel time to and from with an option to set up a teleporter to the location (for a price).
- Offer loot and gold.
- Offer items.
- Have hazards.
- Teams in the same location helping one another.
- Meet other teams?
- Locate/Capture chars/rchars.
- Build reports:
    *Single Event Report(s) to display in the guild.
    *General Report (Job ND report upon return).
- Manageable Risk (of Death vs Moar loot).
- Fighting Mobs.
- Fighting other teams.

Added to the original list:

- Daily Camping.
- Check button to attack other teams for loot.
- Unlocking areas on conditions (for quests/events).
- Area and Main Area bosses.
- Rescuing stranded teams.


What else? This is an area from our previous version:

Code: [Select]
{"id": "Burial Grounds - lv 2",
"area": "Northern Route",
"desc": "Inner area of the overgown burial site, where barely any sunlight reach through the trees and where the dark presense feel the strongest.",
"unlocked": false,
"travel_time": 1,
"mobs": {"Dark Mage": [5, [1, 0.2, 2],[1, 1, 1]], "Phantasm": [10, [1, 0.2, 2],[1, 2, 2]], "Skeleton Warrior": [50, [1, 0.3, 4],[2, 3, 3]], "Skeleton": [20, [1, 0.2, 3], [3, 3, 3]]},
"hazard": {"health": 0, "mp": 5, "vitality": 0},
"unlocks": {},
"cash_limit": 120,
"items_limit": 0,
"items": {"Woodcutting Axe": 0.05,"Short Bow": 0.05,"Leather Cape": 0.05,"Dagger": 0.05, "Huntsman Hat": 0.02,"Scarf": 0.02, "Short Sword": 0.22,"Leather Armor": 0.22,"Silver Necklace": 0.2,"Leather Boots": 0.22,"Leather Gloves": 0.22,"Linen Cape": 0.22,"Tanned Leather Boots": 0.26,"Tanned Leather Gloves": 0.26,"Obsidian Choker": 0.22,"Rogue Cape": 0.08,"Running Boots": 0.06,"Bullwhip": 0.1,"Ornate Gladius": 0.1,"Claws": 0.2,"Spiked Collar": 0.22,"Long Sword": 0.24,"Minor Reflector": 0.07,"Slave Shackles": 0.08, "Bone Knife": 0.2,"Darksome Trophy": 0.2},
"img": "content/gfx/bg/locations/fg_areas_burial_2.jpg"
},
Title: Re: Simulated Exploration
Post by: Xela on April 24, 2016, 03:07:21 PM
Switching to SimPy, we at the very least should use units like KM (from the city). I wanted that initially but it was too costly to setup in terms of code, now SimPy is taking care of that stuff.
Title: Re: Simulated Exploration
Post by: DarkTl on April 24, 2016, 04:06:50 PM
- I don't remember what mean mobs values in the old SE. At very least we need to set levels range and chances to encounter. The game probably should build parties by itself.

- Events, sometimes unique, sometimes generic. Like, "you found a chest" with 5% probability which with 50% will be a mimic and a random weapon from a preset otherwise, as example of generic one. I suppose there should be a file for events, every event will have a name, and these names should be tied to locations.

- Camping every day or almost every day to restore some vitality and stuff? Probably as an event too.

- Fighting other teams seems interesting, ie they attack teams that don't belong to MC if you allow them to. A bad way to get loot  :)
Maybe not to death, characters just lose all items if defeated.

- Perhaps battle reports? I showed you those screenshots, every battle there has its own report if player wants to look at it.

And what are cash and items limit fields?
Title: Re: Simulated Exploration
Post by: DarkTl on April 25, 2016, 03:33:52 AM
- Maybe better support for areas that are part of one big area. In your example Burial Grounds - lv 2 is a part of Burial Grounds. I imagine there could be a possibility to move between unlocked levels.

- I recall you had to beat low levels to unlock high ones in the old SE, that's what unlocks and unlock fields are for. However, there should be support for advanced conditions, for example during a quest. I suppose either there should be flags checks, or simply some function that locks or unlocks location X when you call it.
As an example of non quest advanced conditions + unlocking, some secret area could be found with 20% chance if someone in the team has 50+ int.

- There is the chance to encounter mob in a battle, and there is a chance to actually encounter a battle. In some deep areas there should be more enemies ie higher chance to initiate a fight, and the other way around in other areas. Basically a chance to find enemy groups.
Title: Re: Simulated Exploration
Post by: Xela on April 25, 2016, 03:45:53 AM
- I don't remember what mean mobs values in the old SE. At very least we need to set levels range and chances to encounter. The game probably should build parties by itself.

Those are increases in power from base difficulty level of an area and encounter chances (I think). I will soon get to that code and see what's what, those values are prolly documented somewhere, either in the code or on forum.

We'll have all of those things and game is already capable of building mobs but I'll prolly use range levels you've added to them as well.

- Events, sometimes unique, sometimes generic. Like, "you found a chest" with 5% probability which with 50% will be a mimic and a random weapon from a preset otherwise, as example of generic one. I suppose there should be a file for events, every event will have a name, and these names should be tied to locations.

Ok... I think these will work just like any other events in the jobs, I'll cook up that system once core code for SE is up and running (maybe after interface is adapted as well).

- Camping every day or almost every day to restore some vitality and stuff? Probably as an event too.

Excellent... I did not think of this (or I have long time ago but failed to code it without SimPy).

- Fighting other teams seems interesting, ie they attack teams that don't belong to MC if you allow them to. A bad way to get loot  :)
Maybe not to death, characters just lose all items if defeated.

Ok, this will be a thing then :) I like the idea as well.

- Perhaps battle reports? I showed you those screenshots, every battle there has its own report if player wants to look at it.

Yeah, we already have those (click test BE logical on Main Screen).

And what are cash and items limit fields?

Limits on finding gold directly and limits of item prices for items that can be found in SE in general but not in the items lists (usually very generic items, maybe all loot as well, I don't remember).



- Maybe better support for areas that are part of one big area. In your example Burial Grounds - lv 2 is a part of Burial Grounds. I imagine there could be a possibility to move between unlocked levels.

We'll have to add something like "sub_area" or "local_area"... why would you want to move between levels? There is only so much that we can relay to the player effectively and you're sending your crew to explore an area and they go somewhere else, I am not sure that I like that idea.

- I recall you had to beat low levels to unlock high ones in the old SE, that's what unlocks and unlock fields are for. However, there should be support for advanced conditions, for example during a quest. I suppose either there should be flags checks, or simply some function that locks or unlocks location X when you call it.
As an example of non quest advanced conditions + unlocking, some secret area could be found with 20% chance if someone in the team has 50+ int.

I think that we already had such support, even if not, we will have that for sure.

- There is the chance to encounter mob in a battle, and there is a chance to actually encounter a battle. In some deep areas there should be more enemies ie higher chance to initiate a fight, and the other way around in other areas. Basically a chance to find enemy groups.

This we already have I think, I'll get back to the issue once I found the post or comments in code or just read the code that generates mobs/encounters.


====>>
I also want some difficult to beat pit bosses with great loot (+ One area boss with unique item per area)... not sure if it is for Beta or final but we need those. It's not difficult to code so I really, really want this for Beta :D
Title: Re: Simulated Exploration
Post by: DarkTl on April 25, 2016, 05:28:35 AM
Hm. Limits of item prices seem reasonable.

As for gold, most gold probably should come from events, like finding chests and caches. And these events will have their own limits, I suppose.

Another way is by beating intelligent enemies, like some humanoid mobs and other teams. I think we could add drop_gold field to some mobs indicating range of gold they can drop when defeated in SE (not arena).
Title: Re: Simulated Exploration
Post by: DarkTl on April 25, 2016, 08:09:26 AM
- Bestiary should be tied to SE to reveal encountered mobs. Possibly show how many mobs of every type were killed in total.

- Enforced camping for days if health/vitality is close to 0 without restoration items.

- Rescue teams to help a team in need, or collect loot and items remained after team was killed.

Should be enough suggestions for beta  :)
Title: Re: Simulated Exploration
Post by: Xela on April 25, 2016, 11:53:18 AM
As for gold, most gold probably should come from events, like finding chests and caches. And these events will have their own limits, I suppose.

Maybe... not sure about this one, feels like there should be a generic gold method that is always working and events on top of that, would have been my first instinct anyway.

Another way is by beating intelligent enemies, like some humanoid mobs and other teams. I think we could add drop_gold field to some mobs indicating range of gold they can drop when defeated in SE (not arena).

Maybe a difficulty scale from 1 to 10... and everything else calculated from there. I fear that this will become into unmanageable, impossible to balance sh!tstorm otherwise, although maybe I am just tired, tis been a long day + I am still planning to write some code tonight.
Title: Re: Simulated Exploration
Post by: Xela on April 25, 2016, 11:57:57 AM
- Bestiary should be tied to SE to reveal encountered mobs. Possibly show how many mobs of every type were killed in total.

- Enforced camping for days if health/vitality is close to 0 without restoration items.

- Rescue teams to help a team in need, or collect loot and items remained after team was killed.

Should be enough suggestions for beta  :)

- Counter is a decent idea but unlocking info on defeat by none MC... 50/50 about this one.

- We'll see, there are other decent ways to do this.

- I love the rescue team idea...

===>>
We can lay out stuff that is not meant for beta as well I guess, so we take that into account.

I am heavily leaning towards adjusting jobs/simpy system to enable running tests and give out rewards in real time instead of when the final report is built. It makes more sense but will also require good deal of extra code.
Title: Re: Simulated Exploration
Post by: DarkTl on April 25, 2016, 01:08:34 PM
- Inventory may be limited in SE, making inventory management super important. The more potions you take, the less items you can bring, unless the team used or dropped them. Also prevents taking 1000 full restoring potions which would make SE a cakewalk most of the time.
- The max duration of expedition may be based on amount of provisions. Meaning the longer the expedition, the more money it costs. But also meaning you can increase the duration if you willing to spend more money.
- Every team has a leader which makes decisions, probably based on stats and MPTraits. In case of her death team only can return back to the base.
Title: Re: Simulated Exploration
Post by: Xela on April 25, 2016, 01:17:58 PM
- Inventory may be limited in SE, making inventory management super important. The more potions you take, the less items you can bring, unless the team used or dropped them. Also prevents taking 1000 full restoring potions which would make SE a cakewalk most of the time.

Always hated capacity crap of any kind...

- The max duration of expedition may be based on amount of provisions. Meaning the longer the expedition, the more money it costs. But also meaning you can increase the duration if you willing to spend more money.

Yeap, that we can do post beta I think. I was also thinking about expeditions to other lands, over seas and etc.

- Every team has a leader which makes decisions, probably based on stats and MPTraits. In case of her death team only can return back to the base.

Teams always have leaders (first one in is the leader).
Title: Re: Simulated Exploration
Post by: DarkTl on April 25, 2016, 02:05:28 PM
Always hated capacity crap of any kind...
That doesn't really solve the issue with taking 1000 full healing potions.
Title: Re: Simulated Exploration
Post by: Xela on April 25, 2016, 02:16:37 PM
That doesn't really solve the issue with taking 1000 full healing potions.

I do not see an issue, having 1 000 000 potions does not ensure a victory in BE. It is very costly and if balanced correctly, it will plainly cost more than the rewards received from the area if characters are not up to scratch.

If you're concerned about this, we could merge this into idea where we introduce "provisions" concept that will have finite capacity but I don't want it to extend to carrying stuff, that would just be yet another balancing cluster fuck we'll have to worry about.
Title: Re: Simulated Exploration
Post by: Xela on April 25, 2016, 02:29:59 PM
Ghm... what about events (of any sort)? What goes where?

My thoughts atm:

- ND Building/Business report: General business info, teams exploring, teams back from exploration, workers idle, workers resting and so on...
- Job Report upon return: Every little detail of what has happened.
- Guild GUI: ???
*This one is a bit confusing... we obviously want all combat + battle reports here. All special events? All encounters and char/rchar capture events... what else?
- Main/Sub Area info: Items/Mobs/Counters and all of that crap.

=====>>>
Man... this is a lot of code/logic/tracking :D
Title: Re: Simulated Exploration
Post by: DarkTl on April 25, 2016, 02:49:43 PM
Wait. I already have a universal countermeasure, all potions can have a cooldown. In fact those for restoring vitality already have it, because it was too easy to use them instead of rest. Even if it's one day, you already cannot spam potions all the time.

Battle reports should be separated from others, since they are not very important as long as you won. In my example you actually should select a fight to show its log.

We don't show what kind of items you can find in SE areas, it's too easy. Just mobs, probably their levels.

We probably should show only basic things about SE at the next day screen, ie a team is in trouble (rescue needed), died or returned. Other stuff could be inside the guild.

Events in the game I used as example are happen in real time, SE there is a side minigame, exploration goes parallel to the main gameplay. Meaning there is no difference between report upon return and events log, the game just adds events to the log as they happen, and stops doing it when exploration is finished. The log remains until team begins a new adventure.
Even though we don't use real time, it changes nothing for this concept.
Title: Re: Simulated Exploration
Post by: Xela on April 25, 2016, 03:05:12 PM
Wait. I already have a universal countermeasure, all potions can have a cooldown. In fact those for restoring vitality already have it, because it was too easy to use them instead of rest. Even if it's one day, you already cannot spam potions all the time.


This is an exellent idea, we might even have a function that checks if an item can be used. This is a bit troublesome for auto-equip method we're using but since I don't recall it ever causing infinite recursions and we had this mechanic for a very long time, we prolly anticipate something like this already.
Title: Re: Simulated Exploration
Post by: Xela on April 25, 2016, 03:19:31 PM
Hmm... Gismo's design assumes Area (with bg) + logical levels (without bg) while our own design assumed Main Area (with bg) + Sub Areas (with bg). Which one are we rolling with?

==>>
Finished going over old FG code, there are some thing we can use but not much :(

I am going to do the interface first because I need to be able to visualize data structures and reports for a system this complex. Still don't have proper time for coding but I seem to have established a routine that works for me, allowing coding bit by bit.

Once the interface is up and running, I'll start with super simple skeleton code stuff and build up from there.
Title: Re: Simulated Exploration
Post by: DarkTl on April 25, 2016, 03:24:02 PM
Nah, we can live without separated pics for sub areas.
Title: Re: Simulated Exploration
Post by: Xela on April 25, 2016, 03:27:57 PM
Nah, we can live without separated pics for sub areas.

I loved CWs setup... ok, maybe I'll find a good way to make that optional, if not, we'll just stick with levels.
Title: Re: Simulated Exploration
Post by: DarkTl on April 25, 2016, 03:32:30 PM
It means more searching for images, while sub locations are not that different from each other.
Title: Re: Simulated Exploration
Post by: Xela on April 26, 2016, 12:13:27 AM
It means more searching for images, while sub locations are not that different from each other.

Yeap, I was thinking that we might revive our super simple walkabout at some point in the future so I liked the moar images idea, but we'll prolly go with something else in the end anyway (when did we ever chose the "simpler" path? :D).
Title: Re: Simulated Exploration
Post by: DarkTl on February 17, 2017, 05:36:11 AM
Code: [Select]
{"id": "Burial Grounds - lv 2",
"area": "Northern Route",
"desc": "Inner area of the overgown burial site, where barely any sunlight reach through the trees and where the dark presense feel the strongest.",
"unlocked": false,
"travel_time": 1,
"mobs": {"Dark Mage": [5, [1, 0.2, 2],[1, 1, 1]], "Phantasm": [10, [1, 0.2, 2],[1, 2, 2]], "Skeleton Warrior": [50, [1, 0.3, 4],[2, 3, 3]], "Skeleton": [20, [1, 0.2, 3], [3, 3, 3]]},
"hazard": {"health": 0, "mp": 5, "vitality": 0},
"unlocks": {},
"cash_limit": 120,
"items_limit": 0,
"items": {"Woodcutting Axe": 0.05,"Short Bow": 0.05,"Leather Cape": 0.05,"Dagger": 0.05, "Huntsman Hat": 0.02,"Scarf": 0.02, "Short Sword": 0.22,"Leather Armor": 0.22,"Silver Necklace": 0.2,"Leather Boots": 0.22,"Leather Gloves": 0.22,"Linen Cape": 0.22,"Tanned Leather Boots": 0.26,"Tanned Leather Gloves": 0.26,"Obsidian Choker": 0.22,"Rogue Cape": 0.08,"Running Boots": 0.06,"Bullwhip": 0.1,"Ornate Gladius": 0.1,"Claws": 0.2,"Spiked Collar": 0.22,"Long Sword": 0.24,"Minor Reflector": 0.07,"Slave Shackles": 0.08, "Bone Knife": 0.2,"Darksome Trophy": 0.2},
"img": "content/gfx/bg/locations/fg_areas_burial_2.jpg"
},

Code: [Select]
    {
        "id": "Northern Route",
        "main": true,
        "unlocked": true,
        "img": "content/gfx/bg/locations/fg_areas_northern.jpg"
    }
Alright, about json structure for SE...

1) Mobs field should be changed. First of all, there is a chance to encounter a mob party, with random amount of mobs inside. Then, inside the party, there is a chance to encounter specific mob - using weighted choice. So it should be something like
Code: [Select]
"fight_chance": 25,
"mobs": {"Dark Mage": 5, "Phantasm": 10, "Skeleton Warrior": 50, "Skeleton": 80},
Then we need base level for all mobs in the location. While all mobs should have different levels to make rare ones stronger, we need base level to judge location difficulty. Maybe we will even show it in SE gui to make sure player understands how difficult locations are.
Code: [Select]
"base_mob_level": 30,And then we need differences in mobs level based on base level. So mobs field becomes like
"mobs": {"Dark Mage": (5, 10), "Phantasm": (10, 5), "Skeleton Warrior": (50, 5), "Skeleton": (80, 0)},[/code]Where the second number is bonus to base level. So Dark Mage max level is 30 + 10 = 40.

Now, we don't have to make every Dark Mage lvl 40, in fact it might be too predictable. Instead it can be randint, so the level will be from 30 to 40. And in case of Skeleton it's always lvl 30.

If there will be bosses with high, fixed levels, we will introduce a special field for them, since they shouldn't be encountered all the time anyway, while mobs field assumes that encounters are unlimited.

The remaining numbers in the mob field used to show how thing escalate when exploration takes enough time, making mobs stronger over time. They are not needed. We still can make mobs stronger over time, but they all will use the same logic, there is no need to make it unique for every single mob.

2)
Code: [Select]
"hazard": {"health": 0, "mp": 5, "vitality": 0},Hazards can also support penalties to AP. Since AP is widely used in SE, hazard": ("AP": -1) may reduce it by one every turn, so it would take much more time to explore the location.

3) Different locations have different sizes, ie require different time to be explored. By default it could be 100, but also can be changed manually by
Code: [Select]
"location_size": 50,
4)
Code: [Select]
"cash_limit": 120,
"items_limit": 0,
Since explorations are limited by time (max 2 weeks or something), there is no need to limit stuff like this. It would make sense if we limit inventory inside SE, but we don't.

5) Events, items and gold.

As I imagine it, there should be events inside SE, and items and gold should be obtained mostly, if not only, via events.

For example, party found a chest with randint(A, B) gold inside which requires X agility to be obtained.
So I create somewhere an event called chest_1 with all required logic and lines which we need to show in the log.
Then in location json I write
Code: [Select]
"events": {"chest_1": [A, B, X] }Maybe I also write the chance to find this event, maybe it will be checked right inside the event.
Then I create an event where party finds a healing shrine or something, and everyone restore A health.
So then we get
Code: [Select]
"events": {"chest_1": [A, B, X], "healing_shrine": [A] }
And so on. Unless you have a better idea how to handle it.

6) Unlocking.
Code: [Select]
"unlocks": {"area_1": 0.4, "area_2": 0.9, "area_3": 1},The numbers represent how much the area should be explored to unlock these areas.
If we want some kind of secret areas, then it probably should be done via events.
Title: Re: Simulated Exploration
Post by: Xela on February 21, 2017, 02:33:55 AM
1) We might want bosses as well. Maybe also mob drops? If you want to mess with that.

2) AP... I found that converting AP to some form of "Job points" is practically a must. We can always convert back.

3) Noted, if not already there.

4) You prolly misunderstood the fields. They limit what you can find, not the total limit. Like you will never find more than 120 gold per one iteration of OLD SE (1 AP per character spent). New SE does not use this at all. Same with items, it's basically a limit for the price of random items.

5) Ok, I think we talked about this in the chat.

6) Yeap. This one is a must as well.


I'll resume coding for pytfall tonight, gonna start tiers/jobs/balancing thing implementation. If only to write skeleton code to make sure my plan is sound. I can either hack on that (assuming that it is sound) or code SE first so you can start designing content.
Title: Re: Simulated Exploration
Post by: DarkTl on February 21, 2017, 08:53:25 AM
Maybe also mob drops? If you want to mess with that.
Dropping something other than gold is problematic. If we allow items to freely drop from mobs, soon they will depreciate.

They could drop something less useful, like crafting ingredients - we have tons of such icons in db. But that requires crafting of some kind in the first place, preferably interesting one. That's way post beta.
Title: Re: Simulated Exploration
Post by: CherryWood on March 16, 2017, 04:10:24 PM
I'm still interested in working on this type of content, so If you decide on how the new fields should look, just give a word and I try to update the locations for it, even if just for a test.
Title: Re: Simulated Exploration
Post by: Xela on March 16, 2017, 04:38:02 PM
I'm still interested in working on this type of content, so If you decide on how the new fields should look, just give a word and I try to update the locations for it, even if just for a test.

Heu!

We still don't know what to update them to... SE is operational and most of the (new) interface is working for it. So you can basically just setup a JSON as you see fit in this thread, include Dark's stuff from above and after a bit of discussion, we can ok the design for beta and all the locations can be updated to it.