Aller au contenu principal

Tycoon

Zoo tycoon : recherchez des animaux, gagnez des revenus passifs, élevez, prestige, explorez et échangez.

Privéesv0.1Économie et artisanat
NécessiteTypeWriter0.9.0-beta-177 (BTC build)Entity extensionGUI extensionVaultVehicle extensionfacultatifPacketEventsfacultatifRPG CorefacultatifTemporaryDimension extensionfacultatifMySql extensionfacultatifMiniPlaceholdersfacultatif

Conçue pour le réseau BornToCraft. Cette extension est documentée à titre de référence et n'est pas distribuée.

Vue d'ensemble​

Tycoon est un mode de jeu de zoo. Les joueurs tuent des mobs pour débloquer des catégories de recherche, alimentent un catalyseur et utilisent un objet de combustible pour rechercher des animaux, puis placent leurs animaux dans leur zoo pour gagner un revenu passif. Les animaux gagnent des niveaux, peuvent recevoir un prestige pour des bonus permanents, être envoyés en expéditions minutées, être élevés, fusionnés, échangés sur un marché de joueurs ou remis pour des contrats.

Tout est piloté par les données. Chaque espèce est une Animal Definition, chaque système (catégories de recherche, défis, personnel, décorations, contrats, élevage, boutiques) est une entrée manifest, et les règles de l'économie se trouvent dans une seule Tycoon Economy Config. L'interface du joueur est un menu unique, le Tycoon Control Panel, dont les dispositions sont construites dans le panel web : le code ne fait que remplir les données en direct et associer les clics.

La ressource rare est l'espace du zoo, pas l'argent. La capacité d'un joueur augmente avec son niveau de métier de zoo, chaque espèce coûte un certain nombre d'espaces, et les revenus évoluent avec ce coût. Les animaux placés ne sont affichés qu'à leur propriétaire : tous les joueurs peuvent donc partager un même monde.

C'est une extension privée de la version BTC de TypeWriter (BTC Core, Paper ou Folia), documentée à titre de référence.

Fonctionnalités​

  • Arbre de recherche — les kills de mobs débloquent des Research Categories ; chaque animal nécessite un catalyseur entièrement chargé et un objet de combustible pour le tirage final.
  • Espace du zoo et placement — les espèces coûtent des espaces ; les animaux sont placés sur des positions déclarées d'un Placement Group, un animal par position.
  • Revenu passif — les animaux placés rapportent des revenus au fil du temps, modulés par la rareté, le niveau, le prestige, le bonheur, le personnel et les décorations, avec un rattrapage hors ligne plafonné.
  • Bonheur — de 0 à 100, il multiplie les revenus ; la surpopulation est sa seule pénalité, la nourriture et les décorations l'augmentent.
  • Niveaux et prestige — courbe d'XP et niveau maximal dans la configuration de l'économie ; le Prestige remet un animal au niveau 1 pour un bonus de revenu permanent.
  • Fusion et élevage — Fusion de deux animaux de la même espèce, et Breeding basé sur des recettes avec un temps d'incubation.
  • Expéditions — envoyez un animal en mission passive minutée et récupérez le résultat à son retour.
  • Carte d'aventure — une dimension temporaire clonée à partir d'un monde modèle, explorée chunk par chunk avec une jauge de fatigue, avec des animaux chevauchés comme montures.
  • Économie sociale — Delivery Shop rotatif, marché de joueurs, contrats d'animaux, défis quotidiens et hebdomadaires, personnel du zoo, décorations et un classement.

Installation​

  1. Installez TypeWriter avec la version BTC (BTC Core sur Paper ou Folia).
  2. Installez les extensions requises : Entity (modèles d'animaux et fausses entités) et GUI (le panneau de contrôle).
  3. Installez Vault avec un plugin d'économie. Tous les coûts et récompenses en argent utilisent Vault.
  4. Extensions facultatives : Vehicle avec PacketEvents pour les montures, RPG Core pour le niveau du métier de zoo, TemporaryDimension pour la carte d'aventure (elle nécessite le SlimeWorldManager de BTC Core), et MySql avec Redis pour le classement et le marché inter-serveurs. MiniPlaceholders est nécessaire pour les placeholders.
  5. Placez le JAR de Tycoon dans plugins/Typewriter/extensions/ et redémarrez le serveur.

Premiers pas​

Ajoutez un premier animal et laissez les joueurs le rechercher :

  1. Dans le panel web TypeWriter, ouvrez une page static et ajoutez un Tycoon Data Artifact. Ajoutez aussi un Tycoon Market Artifact si vous voulez le marché de joueurs. Ne modifiez pas leur artifactId.
  2. Ajoutez une Research Category. Définissez displayName, requiredMobKills et, facultativement, trackedMobTypes (vide signifie que tous les mobs comptent).
  3. Ajoutez une Animal Definition. Définissez entityDefinition (le modèle), category (l'identifiant de la catégorie), rarity, spaceCost et baseRevenueRate. Listez les acceptedCatalystItems (un nom de matériau itemId et une powerValue), le catalystPowerRequired et le fuelItem. Ajoutez l'identifiant du nouvel animal aux animals de la catégorie.
  4. Ajoutez un Tycoon Placement Group avec au moins une position, pour que les joueurs aient un endroit où placer l'animal.
  5. Ajoutez une Tycoon Economy Config. Sans elle, les valeurs par défaut intégrées sont utilisées.
  6. Construisez l'interface : ajoutez un Tycoon Control Panel avec ses dispositions et ses vues, et une Tycoon Menu Config avec les modèles d'objets de chaque liste. Ouvrez le panneau depuis une entrée de commande de votre choix.
  7. Publiez. Un joueur tue des mobs jusqu'à ce que la catégorie se débloque, démarre le catalyseur de l'animal depuis l'écran de recherche, l'alimente avec des objets catalyseurs, puis utilise l'objet de combustible (ou vous déclenchez Catalyst Activate) pour tenter la recherche.
remarque

Un modèle de liste laissé vide dans Tycoon Menu Config s'affiche comme un emplacement vide. Rien n'est inventé par le code.

Fonctionnement​

Recherche​

Tuer un mob compte pour chaque Research Category qui suit son type. À requiredMobKills, la catégorie se débloque, sauf si requiredCategory n'est pas encore débloquée (l'action Category Unlock la respecte aussi).

Un animal se recherche en deux étapes. D'abord le joueur alimente des objets catalyseurs : faire un clic droit sur une entité avec un objet listé dans acceptedCatalystItems ajoute sa powerValue. Lorsque la puissance atteint catalystPowerRequired, utiliser le fuelItem déclenche le tirage de la recherche. La probabilité est successChance multipliée par le poids de capture de la rareté. En cas de succès, le joueur obtient l'animal, ou les alternativeRewards s'il possède déjà l'espèce. Le catalyseur est consommé dans les deux cas. Le geste du clic droit ne réagit que pour un animal dont le catalyseur a déjà été démarré (par exemple depuis l'écran de recherche du panneau de contrôle). L'action Catalyst Activate déclenche le tirage de la recherche pour un catalyseur entièrement chargé sans l'objet de combustible.

RaretéMultiplicateur de revenusPoids de captureFatigue de monture (s)
COMMON1.01.0120
UNCOMMON1.50.6180
RARE2.50.25300
EPIC5.00.08480
LEGENDARY10.00.02900

Zoo, espace et bonheur​

La capacité est baseSpaceCapacity plus spacePerZooLevel pour chaque niveau du métier RPG Core nommé dans zooProfessionId (le niveau vaut 1 lorsqu'il est vide ou que RPG Core est absent). maxPlacedPerSpecies limite combien d'individus d'une même espèce se tiennent en même temps. Au-delà de overcrowding.thresholdPercent de la capacité, le bonheur diminue. Le bonheur fait varier les revenus entre revenueMultiplierAtZero et revenueMultiplierAtMax.

Hors ligne, un joueur gagne pendant au plus offlineCatchup.maxHours heures à offlineCatchup.rate du taux en ligne, calculé une fois lors de sa reconnexion.

Niveaux, prestige, fusion et élevage​

maxAnimalLevel et xpCurve définissent les niveaux. Au niveau maximal, le Prestige remet un individu au niveau 1 et ajoute prestigeRevenueBonus à ses revenus, jusqu'à maxPrestige.

La Fusion prend deux animaux de réserve d'une même espèce ayant le même niveau et le même prestige (au moins fusionMinLevel), les retire et démarre une incubation. Le Breeding associe deux espèces parentes (dans n'importe quel ordre) à une recette avec requiredParentLevel, incubationSeconds, cost et consumesParents. À l'éclosion de l'œuf, rarityUpgradeChance de l'action peut relever la rareté d'un cran et cosmeticMutationChance peut donner un skin de mutation.

Personnel, décorations et défis​

Les membres du Staff ont un role (REVENUE_COLLECTOR, CARETAKER, EXPEDITION_GUIDE, RESEARCHER), un hireCost et un upkeepPerHour horaire ; un membre qui ne peut pas être payé est renvoyé. Les Decorations ajoutent happinessBonus et revenueBonus et sont plafonnées par maxPerPlayer. Les Challenges suivent un challengeType sur une période DAILY ou WEEKLY et versent rewardMoney et rewardCommands. Les Animal Contracts demandent des animaux par espèce ou catégorie, niveau minimal et nombre.

Le Tycoon Control Panel est un menu avec des vues. La page définit tout ce que voit le joueur :

  • layoutPool contient un frame racine (ou mainLayoutId le nomme). Les cadres au contenu variable utilisent l'identifiant de disposition @view.
  • views déclare les écrans. Une vue donne sa disposition par cadre, ou selon la convention de nommage <viewId>_<frameId>. defaultViewId est la première vue ouverte.
  • Un emplacement d'onglet porte la balise view:<viewId> ; l'onglet actif est mis en évidence par le style de vue partagé.
  • Les objets de contenu utilisent un buttonType de la forme tycoon_button:TYPE, ou tycoon_button:TYPE:argument. L'extension remplit les données en direct dans les balises de l'objet et associe les clics.
  • Un menu s'ouvre sur une vue avec la cible <viewId> ou <viewId>:<argument> (par exemple un identifiant de catégorie de recherche).

Types de boutons, par écran :

ÉcranTypes de boutons
Zoo et bestiaireZOO_INFO, BESTIARY_ENTRY, BESTIARY_SPECIES_ENTRY, SPECIES_MANAGE_INFO, PLACEMENT_SLOT_ENTRY, SPECIES_LEVEL_ENTRY, BESTIARY_PANEL_ENTRY, PLACED_ENTRY
RechercheRESEARCH_CATEGORY_ENTRY, RESEARCH_ANIMAL_ENTRY, RESEARCH_CATEGORY
Expéditions et monturesEXPEDITION_ENTRY, EXPEDITION_START_ENTRY, MOUNT_ENTRY
AventureADVENTURE_CHUNK_ENTRY, ADVENTURE_INFO
ÉconomieSHOP_ENTRY, PRESTIGE_ENTRY, MARKET_ENTRY, MARKET_MINE_ENTRY, MARKET_SELL_ENTRY, ANIMAL_CONTRACT_ENTRY, STAFF_ENTRY, STAFF_INFO
SocialRANKING_SORT, RANKING_ENTRY, CHALLENGE_ENTRY
Élevage et décorationsBREEDING_PARENT_ENTRY, BREEDING_EGG_ENTRY, BREEDING_INFO, DECORATION_ENTRY, DECORATION_PLACED_ENTRY
ListesLIST_PAGER:<listId>[:<pageSize>] (n'apparaît que lorsque la liste ne tient pas sur un seul écran)

Les entrées ordonnées (les types _ENTRY) affichent un élément par emplacement marqué, dans l'ordre des emplacements. Le modèle d'objet de chaque liste, avec ses balises comme {animal_name} ou {remaining_time}, provient de Tycoon Menu Config. Cette même entrée nomme les vues ouvertes par les catégories de recherche (researchViewId), les emplacements d'expédition (expeditionViewId) et le bestiaire (bestiaryViewId).

Commandes​

Les commandes sont des entrées : leurs noms et permissions se modifient donc dans le panel. Chacune est enregistrée en plaçant l'entrée sur une page.

CommandeDescription
/tycoonadmin give <player> <animal>Donne un animal à un joueur en ligne. Nécessite la permission définie dans permission (tycoon.admin par défaut).
/tycoonadmin remove <player> <animal>Retire l'individu le moins avancé d'une espèce.
/tycoonadmin setlevel <player> <animal> <level>Définit le niveau de chaque individu d'une espèce, borné à maxAnimalLevel.
/tycoonadmin unlockcategory <player> <category>Débloque une catégorie de recherche.
/tycoonadmin info [player]Affiche le profil de zoo d'un joueur.
/tycoonadmin resetfatigue [player]Réinitialise la fatigue d'aventure.
/tycoonadmin spawnshop <shop>Fait apparaître immédiatement un marchand de boutique de livraison.
/tycoonadmin saveÉcrit toutes les données de Tycoon sur le disque.
/collecterRécupère les revenus accumulés. Ouvert à tous sauf si permission est définie.
/visiter <player>Vous téléporte à l'emplacement d'un autre joueur pour visiter son zoo. Ouvert à tous sauf si permission est définie.

Les noms ci-dessus sont les valeurs par défaut de Tycoon Admin Command, Tycoon Collect Command et Tycoon Visit Command ; modifiez commandName pour les renommer. Les commandes d'ouverture de menu (par exemple /zoo) ne font pas partie de cette extension : créez-les avec une entrée de commande de l'extension Basic qui déclenche le Control Panel.

Permissions​

PermissionAutorise
tycoon.adminTout l'arbre /tycoonadmin. C'est la valeur par défaut du champ permission de la commande d'administration et elle peut y être modifiée.

Le champ permission des commandes de collecte et de visite est vide par défaut (aucune permission nécessaire).

Placeholders​

Balises MiniPlaceholders de l'extension tycoon, fournies via TypeWriter. <id> est un identifiant de définition d'animal, <cat> un identifiant de catégorie de recherche, <n> un index d'emplacement d'expédition à partir de 0. Tous lisent le profil du joueur qui regarde.

Totaux​

PlaceholderRenvoie
<tycoon_total_animals>Nombre d'animaux possédés.
<tycoon_total_species>Nombre d'espèces possédées.
<tycoon_placed_animals>Animaux placés dans le zoo.
<tycoon_unplaced_animals>Animaux en réserve.
<tycoon_total_revenue>Revenus totaux gagnés, avec 2 décimales.
<tycoon_total_revenue_raw>Revenus totaux gagnés, sous forme d'entier.
<tycoon_categories_unlocked>, <tycoon_categories_total>, <tycoon_categories_locked>Catégories de recherche débloquées, suivies et encore verrouillées.
<tycoon_milestones_count>Jalons de collection atteints.
<tycoon_prestige_total>Nombre total de prestiges sur tous les animaux.
<tycoon_expeditions_active>Expéditions actives.
<tycoon_expeditions_completed>Toujours 0.
<tycoon_zoo_visitors>Visiteurs du zoo.
<tycoon_active_mount_id>Identifiant de la monture sélectionnée, ou none.
<tycoon_last_revenue_collect>Heure de la dernière collecte (HH:mm:ss).

Catégories de recherche​

PlaceholderRenvoie
<tycoon_category_unlocked:cat>true si débloquée.
<tycoon_category_mobs_killed:cat>Mobs suivis tués.
<tycoon_category_required_kills:cat>Kills nécessaires pour débloquer.
<tycoon_category_progress_percent:cat>Progression en pourcentage.
<tycoon_category_name:cat>Nom affiché.

Animaux​

PlaceholderRenvoie
<tycoon_animal_level:id>, <tycoon_animal_xp:id>, <tycoon_animal_prestige:id>Niveau, XP et nombre de prestiges de l'animal possédé.
<tycoon_animal_owned:id>, <tycoon_animal_placed:id>true ou false.
<tycoon_animal_count:id>, <tycoon_animal_placed_count:id>Individus possédés et placés.
<tycoon_animal_rarity:id>, <tycoon_animal_rarity_color:id>Nom de la rareté et sa couleur hexadécimale.
<tycoon_animal_custom_name:id>Nom personnalisé.
<tycoon_animal_display_name:id>Nom affiché de la définition.
<tycoon_animal_is_mountable:id>, <tycoon_animal_mount_speed:id>, <tycoon_animal_fatigue_capacity:id>Paramètres de monture de la définition.
<tycoon_animal_max_level:id>maxAnimalLevel de la configuration de l'économie.
<tycoon_animal_space_cost:id>, <tycoon_animal_revenue_rate:id>, <tycoon_animal_fusion_level:id>spaceCost, baseRevenueRate, fusionMinLevel.
<tycoon_animal_catalyst_progress:id>Remplissage du catalyseur en pourcentage.
<tycoon_animal_catalyst_power:id>, <tycoon_animal_catalyst_items:id>Puissance du catalyseur et nombre de types d'objets donnés.
<tycoon_placed_happiness:id>, <tycoon_placed_biome:id>, <tycoon_placed_world:id>, <tycoon_placed_coords:id>, <tycoon_placed_chunk:id>Détails de l'animal placé.
<tycoon_prestige_bonus:id>Bonus de prestige de l'animal.

Expéditions​

PlaceholderRenvoie
<tycoon_expedition_count>Emplacements d'expédition utilisés.
<tycoon_expedition_animal:n>Identifiant de l'animal de l'emplacement n.
<tycoon_expedition_remaining_seconds:n>, <tycoon_expedition_remaining_minutes:n>Temps avant le retour.
<tycoon_expedition_duration_hours:n>Durée totale en heures.
<tycoon_expedition_ready:n>true lorsqu'elle est prête à être récupérée.

Entrées​

27 entrées, générées depuis la source de l'extension.

Actions9
Commandes3
Artefacts2
Manifestes13

Dépannage​

Le menu s'ouvre vide. Les modèles de Tycoon Menu Config sont par défaut des emplacements vides, et le layoutPool doit contenir les dispositions nommées par mainLayoutId et views. Consultez le journal pour l'identifiant du menu.

Cliquer sur une catégorie de recherche ou un emplacement d'expédition ramène à la vue d'ensemble. Les identifiants de vues dans researchViewId, expeditionViewId et bestiaryViewId de la configuration du menu (valeurs par défaut tycoon_recherches, tycoon_expeditions, tycoon_bestiaire) doivent correspondre aux identifiants de vos views. Sinon, le moteur se rabat sur la vue par défaut.

Une catégorie ne se débloque jamais. trackedMobTypes est comparé au nom de type d'entité en minuscules ; une liste vide compte tous les mobs. Une catégorie avec requiredCategory ne peut être débloquée par l'action Category Unlock qu'une fois cette catégorie débloquée.

Un animal ne peut pas être placé. Il a besoin d'une position libre dans un Placement Group dont le maxSpaceCost est au moins égal au spaceCost de l'animal, d'assez d'espace libre sous la capacité et d'un niveau de zoo d'au moins requiredZooLevel. Ne réordonnez pas positions sur un serveur en production : les identifiants d'emplacements sont dérivés de leur index.

Les coûts et récompenses en argent ne font rien. Ils passent par Vault. Installez Vault et un plugin d'économie.

La carte d'aventure ou les montures sont indisponibles. Elles nécessitent l'extension TemporaryDimension (avec le SlimeWorldManager de BTC Core) et l'extension Vehicle avec PacketEvents. Sans Redis, le classement et le marché restent locaux au serveur.

Une fusion ou un élevage ne donne rien. La fusion nécessite deux animaux de réserve ayant le même niveau et le même prestige et au moins fusionMinLevel ; les animaux placés sont ignorés. L'éclosion n'est tirée qu'une fois l'œuf prêt, après incubationHours : rarityUpgradeChance et cosmeticMutationChance de l'action Fusion s'appliquent alors.

Extensions associées​

  • BTC Sky — îles et recherche sur la même version BTC.
  • Machine — machines pilotées par les données pour les îles.