forked from mtcontrib/minetest_treasurer
		
	Delete old README
This commit is contained in:
		
							
								
								
									
										201
									
								
								README
									
									
									
									
									
								
							
							
						
						
									
										201
									
								
								README
									
									
									
									
									
								
							| @@ -1,201 +0,0 @@ | ||||
| = Treasurer’s README file for Treasurer version 0.1 = | ||||
| == Overview == | ||||
| Name:		Treasurer | ||||
| Technical name:	treasurer | ||||
| Purpose:	To provide an interface for mods which want to spawn ItemStacks randomly and | ||||
| 		an interface for mods which create new items. | ||||
| Version:	0.1 | ||||
| Dependencies:	none | ||||
| License:	WTFPL | ||||
|  | ||||
| == Introduction == | ||||
| Problem: | ||||
| There are a bunch of mods which have cool items but they won’t appear in the world by | ||||
| themselves. | ||||
| There are some mods which randomly distribute treasures into the world. Sadly, these only | ||||
| distribute the items they know—which are just the items of the mod “default” most of the | ||||
| time. The items of the other mods are completely missed. | ||||
|  | ||||
| The reason for this is that the distributing mods can’t know what sort of items are available | ||||
| unless they explicitly depend on the mods that defines these. Viewed the other way round, | ||||
| the item-defining mods that also distribute these items into the world are limited in the | ||||
| sense that they only know one means of distributing items. | ||||
|  | ||||
| There is a gap between defining items and distributing them. Every time a mod does both, | ||||
| flexibility is limited and expansion becomes difficult. | ||||
|  | ||||
| To bridge this gap, Treasurer has been written. Treasurer makes it possible a) for mods to define | ||||
| treasures without bothering _how_ these are distributed into the world and b) for mods to distribute | ||||
| treasures around the world without knowledge about _what_ treasures exactly are distributed. | ||||
|  | ||||
| == Technical side of Treasurer == | ||||
| === technical overview === | ||||
| To get a working Treasurer architecture and actually get some treasures into the world, | ||||
| you need: | ||||
|  * Treasurer | ||||
|  * at least one treasure registration mod | ||||
|  * at least one treasure spawning mod | ||||
|  | ||||
| === treasurer registration mod === | ||||
| Firstly, there are the treasure registration mods (TRMs). The task of TRMs is to tell | ||||
| Treasurer which items does it have to offer, which relative appearance probabilities these | ||||
| treasures should have, how “precious” the treasure is considered (on a scale from 0 to 10) | ||||
| , optionally how big the stack of items should be and optionally how much worn out it is. | ||||
| TRMs must depend on at least two mods: On treasurer and on the mod or mods | ||||
| where the items are defined. Technically, a TRM consists of nothing more than a long | ||||
| list of “registration” function calls. While this seems trivial, the task of balancing | ||||
| out probabilties and balancing out preciousness levels of treasures is not trivial | ||||
| and it may take a long time to get right. | ||||
|  | ||||
| It is strongly recommended that a TRM really does nothing | ||||
| more than registering treasures (and not defining items, for example). If you want | ||||
| to make your mod compatible to Treasurer, don’t change your mod, write a TRM for | ||||
| it instead. | ||||
| There is an example TRM, called “trm_default_example”. It registers some items | ||||
| of the default as treasures. Unsurprisingly, it depends on treasurer and default. | ||||
|  | ||||
| === treasurer spawning mods === | ||||
| Secondly, there are the treasure spawning mods (TSMs). The task of a TSM is to somehow | ||||
| distribute the available treasures into the world. This is also called “treasure | ||||
| spawning”. How exactly the TSM spawns the treasures is completely up the TSM. But a | ||||
| TSM has to request Treasurer to get some random treasures to distribute. A TSM may | ||||
| optionally request to filter out treasures outside certain preciousness levels, so | ||||
| it can be  | ||||
| Treasurer can not guarantee to return the requestet amount of treasures, it may | ||||
| return an empty table, for two reasons: | ||||
| 1) There is no TRM activated. There must be at least one to work | ||||
| 2) The preciousness filter filtered out. This problem can be fixed by installing more | ||||
| TRMs or by balancing the existing TRMs to cover as many preciousness levels as | ||||
| possible. It also may be that the range specified by the TSM was too small. It is | ||||
| recommended to keep the requested range at least of a size of 1. | ||||
| Treasurer does, however, guarantee that the returned treasures are always in the | ||||
| requested boundsa. | ||||
| A TSM has to at least depend on Treasurer. | ||||
| Like for TRMs, it is strongly recommended that a TSM does nothing more than spawning | ||||
| treasures. This does not exclude the possibility that a TSM does not depend | ||||
| on any other mod. | ||||
| There are two example TSMs. The first one is a very basic one and called “tsm_gift_example”. | ||||
| It gives a “welcome gift” (1 random treasure) to players who just joined the server | ||||
| or who respawn. The preciousness filter is not used. It does only depend on Treasurer. | ||||
| The second one is called “tsm_chests_example” and pretty advanced for an example. | ||||
| It places chests of the mod “default” between 20 and 200 node lenghts below the water | ||||
| surface and puts 1-6 random treasures into these. The lower the chest, the higher | ||||
| the preciousness. It depends on treasurer and default (for the chests, of course). | ||||
|  | ||||
| === Recap === | ||||
| TRMs define treasures, TSMs spawn them. Treasurer manages the pool of available treasures. | ||||
| TRMs and TSMs do not have to know anything from each other. | ||||
| TRMs and TSMs do not neccessarily have to change any line of code of other mods to function. | ||||
| Treasurer depends on nothing. | ||||
|  | ||||
| Important: It should always only be neccessary for TRMs and TSMs to depend on Treasurer. | ||||
| All other mods do NOT HAVE TO and SHOULD NOT depend on Treasurer. | ||||
|  | ||||
|  | ||||
|  | ||||
| === On rarity and preciousness === | ||||
| ==== rarity ==== | ||||
| Rarity in Treasurer works in a pretty primitive way: The relative rarities of all | ||||
| treasures from the treasure pool are simply all added up. The probabilitiy of one | ||||
| certain treasure is then simply the rarity value divided by the sum. | ||||
|  | ||||
| ==== preciousness ==== | ||||
| How “precious” an item is, is highly subjective and also not always easy to categorize. | ||||
| Preciousness in Treasurer’s terms should be therefore viewed as “utility” or as | ||||
| “reward level” or “strength” or even “beauty” or whatever positive attributes you can | ||||
| think of for items. | ||||
| So, if you create a TRM and your treasure is something you want the player work | ||||
| hard for, assign it a high preciousness. Everyday items that are already easy to | ||||
| obtain in normal gameplay certainly deserve a lower precious than items that are | ||||
| expensive to craft. | ||||
| If your treasure consists of a powerful | ||||
| item, assign it a high preciousness. When in doubt, try to value gameplay over | ||||
| personal taste. Remember that TSMs can (and will!) filter out treasures based | ||||
| on their preciousness. | ||||
| For TSM authors, consider preciousness this way: If the trouble the player has | ||||
| to get through to in order to obtain the treasure is high, better filter | ||||
| out unprecious treasures. If your TSM distributes many treasures all over the world and these | ||||
| are easy to obtain, filter out precious treasures. | ||||
|  | ||||
| TSMs also can just completely ignore preciousness, then the given treasures base | ||||
| on sheer luck. | ||||
|  | ||||
| ==== Recap ==== | ||||
| Rarity determines the chance of a treasure, whereas preciousness determines | ||||
| the difficulty to obtain it. | ||||
|  | ||||
| == Overview of examples == | ||||
| - trm_default_example - registers items of default mod | ||||
| - tsm_chests_example - spawns chests (from the default mod) | ||||
| - tsm_gift_example - gives one treasure as a “welcome gift” to joined or respawned players | ||||
|  | ||||
| == Treasurer API documentation == | ||||
| === API documentation for treasure registration mods === | ||||
| The API consists of one function, which is called “treasurer.register_treasure”. | ||||
|  | ||||
| 	treasurer.register_treasure - registers a new treasure | ||||
| 		(this means the treasure will be ready to be spawned by treasure spawning mods. | ||||
|  | ||||
| 	parameters: | ||||
| 		name:	name of resulting ItemStack, e.g. “mymod:item” | ||||
| 		rarity:	rarity of treasure on a scale from 0 to 1 (inclusive). lower = rarer | ||||
| 		preciousness: subjective preciousness on a scale from 0 to 10 (inclusive) | ||||
| 			higher = more precious. | ||||
| 		count:	optional value which specifies the multiplicity of the item. Default | ||||
| 			is 1. See count syntax help in this file. | ||||
| 		wear:	optional value which specifies the wear of the item. Default is 0, | ||||
| 			which disables the wear. See wear syntax help in this file. | ||||
| 	note: | ||||
| 		This function does some basic parameter checking to catch the most obvious | ||||
| 		mistakes. If invalid parameters have been passed, the input is rejected and | ||||
| 		the function returns false. However, it does not cover every possible | ||||
| 		mistake, so some invalid treasures may slip through. | ||||
| 	note: | ||||
| 		Rarity does not imply preciousness. A rare treasure may not neccessarily a | ||||
| 		very precious one. A treasure chest with scorched stuff inside may be very | ||||
| 		rare, but it’s certainly also very unprecious. | ||||
|  | ||||
| 	returns: | ||||
| 		true on success, | ||||
| 		false on failure | ||||
|  | ||||
| === data formats === | ||||
| format of count type: | ||||
| 	A count can be a number or a table  | ||||
|  | ||||
| 	count = number	 | ||||
| 		--> it’s always number times | ||||
|  | ||||
| 	count = {min, max}	 | ||||
| 		--> it’s pseudorandomly between min and max times, math.random() will be | ||||
| 		    used to chose the value | ||||
| 	count = {min, max, prob_func} | ||||
| 		--> it’s between min and max times, and the value is given by | ||||
| 		    prob_func (see below) | ||||
|  | ||||
| format of wear type: | ||||
| 	completely analogous to count  | ||||
|  | ||||
| format of prob_func function: | ||||
| 	prob_func = function() | ||||
| 	parameters: | ||||
| 		(none) | ||||
| 	returns: | ||||
| 	--> a random or pseudorandom number between 0 (inclusive) and 1 (exclusive). | ||||
| 	notes: | ||||
| 		prob_func is entirely optional, if it’s not used, treasurer will | ||||
| 		default to math.random. You can use prob_func to define your own | ||||
| 		random function, in case you don’t wish your values to be evenly | ||||
| 		distributed. | ||||
|  | ||||
| === API documentation for treasure spawning mods | ||||
| The API consists of one function, called “treasurer.select_random_treasures”. | ||||
|  | ||||
| 	treasurer.select_random_treasures - request some treasures from treasurer | ||||
| 	parameters: | ||||
| 		count: (optional) amount of treasures. If this value is nil, treasurer assumes a default of 1. | ||||
| 		minimal_preciousness: (optional) don’t consider treasures with a lower preciousness. If nil, there’s no lower bound. | ||||
| 		maximum_preciousness: (optional) don’t consider treasures with a higher preciousness. If nil, there’s no upper bound. | ||||
| 	returns:  | ||||
| 		a table of ItemStacks (the requested treasures) - may be empty | ||||
|  | ||||
		Reference in New Issue
	
	Block a user