Invité
| Sujet: bien doser la difficulter des combats. [resolu] Mar 27 Jan 2009 - 12:22 | |
| bonjour bonjour, alors apres quelque temp a fouiller sur le net, a tripoter (pas sexuellement hein ...) le logiciel , a tester et a m'exploser la cervelle .... j'arrive a comprendre le systeme d'evenement (et celui des evenement commun..) les interrupteur , les variables , j'ai reussit l'implantation de 2-3 script qui devrait m'aider dans mon idée de scenario (gameplay mix zelda/ffx... vaut mieux pas chercher a comprendre, c'est pour mon pti frere.. si ya pas certain systeme de combat/enigme, il aime pas ...) par contre, la base de donnée me pose de serieuse question ....en fait, je me demandait comment reussir a bien doser les caracteristique des ennemis/competence/heros/objects pour que les combat represente un certain challenge, sans pour autant etre impossible a gagner sachant que je compte utiliser le systeme de combat normal de rmvx .. quelque information suplementaire sur le project. le jeu sera en +- 2 partie(ou + si on compte les boss/donjon de transition comme une partie xD) (un peu comme zelda ocarina of time enfant/adulte...) a la premiere partie l'equipe "normal" (comprendre l'equipe suposer puisque le 4eme membre n'est pas automatiquement dedans) est composer de 3 heros qui ne change pas (guerrier,pretre,voleur) , et d'un 4eme (mage) variable qui est adapté au donjon dans lequel il apparait (comprendre mage de lumiere pour boss d'ombre par exemple). lors de la 2eme partie du jeu, le-dit mage est plutot la pour faire joli (attaque automatique ou a peu pres..) en attendant 10% de la vie des boss pour finir les combat... pour finir l'equipement sera fixer pour chaque personnage, donc une fois configurer l'equipement de depart, il n'y aura casiment (changement d'equipement lors de la seconde partie) pas besoin de toucher a la puissance des ennemi en fonction de l'equipement que le heros est "suposer" avoir puisque cette variable est fixe difficulter suplementaire et c'est la ou reside tout le probleme... je souhaiterai que les-dits boss soit affrontable dans n'importe quel ordre (enfin presque, dison 7 dans n'importe quel ordre et 3 de plus dans un ordre precis a la suite des 7 premiers..) et donc que la puissance des ennemis rencontrer par les heros soit proportionnel au niveau de l'equipe.... sachant que les boss sont suposer etre gerable a partir d'une equipe lvl 10 complete lors de la premiere partie du jeu, et d'une equipe lvl 20 lors de la seconde..... |
|
Invité
| Sujet: Re: bien doser la difficulter des combats. [resolu] Mar 27 Jan 2009 - 14:29 | |
| Salut a toi. J'ai peut-etre trouver un script qui semblerait t'aider. Je l'ai trouver sur RPG Créative, Le voici: Auteur : DrakoShade Fonction : Ce script permet de mettre une difficulté des combats selon le niveau des héros. Le héros pourra gagner un montant d'expérience et d'argent plus important selon son niveau. Image(s) : Aucune Ressource(s) : Aucune Démo : Aucune Remarque : Testé. L'auteur demande de le mettre dans vos crédits si vous utilisez ce script. Utilisation non commercial. Nombre de scripts : 1 Installation : Ouvrez l'éditeur de script (F11). Créez en un nouveau au dessus de "Main" et collez le code ci-dessous. Utilisation : Les propriétés de l'ennemi peuvent être configuré vers la ligne 19 dans le module. Les explications sont dans ce script en commentaire (en anglais) Code : - Code:
-
#============================================================================== # ** Dynamic Difficulty #------------------------------------------------------------------------------ # By: DrakoShade # Version 1.1 # Last Updated: 17 March, 2008 #------------------------------------------------------------------------------ # Version History: # V. 1.1: Updated the note-parsing methodology to work as described by "loam" # of RMXP.org. This script's use of the Note field will no longer # interfere with or be confused by other notes. Also, pointless # methods for the difficulty setting have been removed. #============================================================================== =begin Here, you get a chance to set the defaults for your creatures. Any creature for which the Note tab doesn't include a modification will use the numbers you set here. Instructions follow. =end module RPG class Enemy def get_default_gains @maxhp_gain = 50 #Default 50 @maxmp_gain = 10 #Default 10 @atk_gain = 1.25 #Default 1.25 @def_gain = 1.25 #Default 1.25 @spi_gain = 2.5 #Default 2.5 @agi_gain = 2.5 #Default 2.5 @hit_gain = 0 #Default 0 @eva_gain = 0 #Default 0 @exp_gain = 0 #Default 0 @gold_gain = 0 #Default 0 @variance = 15 #Default 15 @min_level = 1 #Default 1 @max_level = 99 #Default 99 end end end
=begin ======================================================================== || Using the Note Field to your advantage. || =============================================================================== The defaults that you set above are fine if you want every single enemy in the game to follow the same growth pattern. If that's the case, you don't have to use the Note field at all for this script. If you want your enemies to grow in different ways from one another, then the Note field is where you make it happen.
To do anything in the Notes with this script, you will need to include two special lines in the box: "=begin dynamic difficulty" "=end dynamic difficulty" Don't put quotes around them. Those are simply here so that this explanation won't mess with the commenting in the script itself. Anything that falls between those two lines will be evaluated just after the individual enemy looks up the defaults above. Thus, if you include
@gold_gain = 200
then that specific enemy will be worth an extra 200 gold for every level it gains, no matter what default you have set. If, instead, you use the line
@gold_gain *= 2
then the enemy is worth twice the gold-per-level of your standard. If the standard stays at 0, of course, then it's still worth 0 a level, but you know what I mean.
=============================================================================== || The Minimum and Maximum Levels || =============================================================================== In the defaults, you may have noticed the defaults for @min_level and @max_level. A creature for which @min_level = 1 and @max_level = 99 will gain power as long as your party's average level is above 1, and won't stop gaining power until level 99, which can't normally be exceeded anyway. This works well if you intend the enemy to scale no matter what level it's encountered at, but you can do it differently.
An enemy for which @min_level = 10, for example, will be at the power you set in the database any time it's encountered by a party of level 10 or lower. When said party hits level 11, that enemy will gain only 1 level, rather than the 10 that anything else would gain. In this way, you can create enemies that are never incredibly weak, but still get stronger.
@max_level is similar, but for the other end of the spectrum. An enemy for which @max_level = 30, for instance, would scale as normal up until the party reached that level. but if the party were level 40, it would still only grow as if the party were level 30. Thus, this enemy stops gaining power when the party's average level hits it's @max_level.
=============================================================================== || Game Difficulty || =============================================================================== At any point, you can set the value of the game's difficulty with a simple script call. Since it's an attr_accessor, all you have to do is one of these: $game_system.difficulty = x $game_system.difficulty += x $game_system.difficulty -= x Etcetera, so on, and so forth.
This script uses the difficulty to determine the level of the enemies, mostly like the party's average level, but with a small difference. When setting how powerful a monster is, for its maximum HP, attack and defense, etc. the script will add the difficulty to the party's level. However, when determining the rewards of experience and gold returns, the script ignores this value.
Example: An enemy at level 8 and game difficulty of 2 will be just as hard to beat as the same enemy at level 10 and game difficulty 0, but will give rewards the same as if you'd beat it at level 8 and difficulty 0.
=============================================================================== || General Advice || =============================================================================== When designing your enemies, take into account the level at which you want them to be a real challenge for your party. Their stats should be roughly similar to those of a party member at their @min_level wearing the equipment you'd expect your party to have at the target level.
In this way, although the enemy scales down to match a party whose level is lower than expected, he still fights as if he were equipped to take on the stronger party. The ability to defeat him will, at this point, hinge more on your party's equipment than their level. Of course, the act of balancing is purely up to you. My default numbers are set so that enemies will scale with a new actor's default gains in the database. You could retool them to scale with equipment as well, or factor how well-equipped your enemy is into his stats at minimum level. The choice is yours.
I hope you enjoy using this script. Happy creating.
=============================================================================== || That's it. On to the rest of the script. || =============================================================================== =end #============================================================================== # ** Game_System #------------------------------------------------------------------------------ # The actual difficulty of the game as a whole is added into this class. #============================================================================== class Game_System attr_accessor :difficulty #New public instance variable. #---------------------------------------------------------------------------- # * Aliasing the Initialize method. #---------------------------------------------------------------------------- alias drakoshade_dynamic_difficulty_initialize initialize def initialize drakoshade_dynamic_difficulty_initialize @difficulty = 0 end end #============================================================================== # End modifications to Game_System. #==============================================================================
#============================================================================== # ** RPG::Enemies #------------------------------------------------------------------------------ # Most of the magic happens here. New methods are created which allow the # enemies to gain levels, based on a combination of both the party's average # level and the new $game_system.difficulty. #============================================================================== module RPG class Enemy #-------------------------------------------------------------------------- # * Public Instance Variables #-------------------------------------------------------------------------- attr_accessor :base_maxhp, :base_maxmp, :base_atk, :base_def, :base_spi attr_accessor :base_agi, :base_hit, :base_eva, :base_exp, :base_gold attr_accessor :maxhp_gain, :maxmp_gain, :atk_gain, :def_gain, :spi_gain attr_accessor :agi_gain, :hit_gain, :eva_gain, :exp_gain, :gold_gain attr_accessor :min_level, :max_level #-------------------------------------------------------------------------- # * Set_Bases #-------------------------------------------------------------------------- def set_bases @base_maxhp, @base_maxmp = @maxhp, @maxmp @base_atk, @base_def = @atk, @def @base_spi, @base_agi = @spi, @agi @base_hit, @base_eva = @hit, @eva @base_exp, @base_gold = @exp, @gold get_default_gains eval(@note[/(?<==begin dynamic difficulty)(.*?)(?==end dynamic difficulty)/m].to_s) end #-------------------------------------------------------------------------- # * Update Level #-------------------------------------------------------------------------- def update_level levels = [([$game_party.ave_level, @max_level].min - @min_level), 0].max diff = $game_system.difficulty @maxhp = generate_stat(@base_maxhp-1, @maxhp_gain, (levels + diff)) + 1 @maxmp = generate_stat(@base_maxmp-1, @maxmp_gain, (levels + diff)) + 1 @atk = generate_stat(@base_atk-1, @atk_gain, (levels + diff)) + 1 @def = generate_stat(@base_def-1, @def_gain, (levels + diff)) + 1 @spi = generate_stat(@base_spi-1, @spi_gain, (levels + diff)) + 1 @agi = generate_stat(@base_agi-1, @agi_gain, (levels + diff)) + 1 @hit = generate_stat(@base_agi, @agi_gain, (levels + diff)) @eva = generate_stat(@base_eva, @eva_gain, (levels + diff)) @exp = generate_stat(@base_exp, @exp_gain, levels) @gold = generate_stat(@base_gold, @gold_gain, levels) end #-------------------------------------------------------------------------- # * Generate Stat #-------------------------------------------------------------------------- def generate_stat(base, gain, levels) result = base + (gain * levels) result *= (rand(@variance*2)+(100-@variance)) result /= 100 result = [result.to_i, 0].max return result end end end
#============================================================================== # ** Game_Party #------------------------------------------------------------------------------ # I'm adding a method here that will allow this script (or any other) to # determine the average party level. #============================================================================== class Game_Party def ave_level level = 0 for i in @actors actor = $game_actors[i] level += actor.level end level /= @actors.size return level.round end end
#============================================================================== # ** Scene_Title #------------------------------------------------------------------------------ # Methods that load the database need to be altered so that the enemies set # their bases. #============================================================================== class Scene_Title #---------------------------------------------------------------------------- # *Alias the Load Database method. #---------------------------------------------------------------------------- alias drakoshade_dynamic_difficulty_load_database load_database def load_database drakoshade_dynamic_difficulty_load_database for i in 1...$data_enemies.size $data_enemies[i].set_bases end end #---------------------------------------------------------------------------- # *Alias the Load Battle Test Database method. #---------------------------------------------------------------------------- alias drakoshade_dynamic_difficulty_load_bt_database load_bt_database def load_bt_database drakoshade_dynamic_difficulty_load_bt_database for i in 1...$data_enemies.size $data_enemies[i].set_bases end end end
#============================================================================== # ** Game_Troop #------------------------------------------------------------------------------ # The modification here allows for greater versitility than modifying the # battle scene in this situation. Enemies will load into the troop with # updated stats. #============================================================================== class Game_Troop #---------------------------------------------------------------------------- # *Alias the Setup method. #---------------------------------------------------------------------------- alias drakoshade_dynamic_difficulty_setup setup def setup(troop_id) for i in 1...$data_enemies.size $data_enemies[i].update_level end drakoshade_dynamic_difficulty_setup(troop_id) end end Tu me dit si il ne marche pas et si il te conviens |
|
Invité
| Sujet: Re: bien doser la difficulter des combats. [resolu] Mar 27 Jan 2009 - 17:03 | |
| merci pour ce script mais a vrai dire, je l'ai deja, sauf que voila, il est utilisable sans probleme pour les ennemi normaux (comprendre ceux qui iront du lvl 1 au lvl 99 en meme temp que l'equipe), mais pour les boss, sachant que les caracteristique que je leur donne doivent correspondre au MINIMUM a une equipe de lvl 10/20.. jsuis perdu... suis suposer determiner comment la puisance qu'il faut donner a un monstre pour qu'il corresponde a un certain niveau des hero ? caracteristique hero*4 ? |
|
Invité
| Sujet: Re: bien doser la difficulter des combats. [resolu] Mar 27 Jan 2009 - 23:22 | |
| MMM.... aucune idée. Il faudrait mieux un scripteur pour t'aider. |
|
Invité
| Sujet: Re: bien doser la difficulter des combats. [resolu] Mer 28 Jan 2009 - 16:33 | |
| [Double post mais j'ai du new] Tiens, j'ai trouver autre chose, un script d'amélioration en maniement d'armes de ASHKA Ze Siouper Lien |
|
| Sujet: Re: bien doser la difficulter des combats. [resolu] | |
| |
|