JeuWeb - Crée ton jeu par navigateur

Version complète : [En cours] La vallée des larmes
Vous consultez actuellement la version basse qualité d'un document. Voir la version complète avec le bon formatage.
Pages : 1 2 3 4
Citation :sinon même si je n en suis pas encore à la partie combat, est ce que tu peux développer un peu (ici ou ailleurs) ton analyse ? ça m 'intéresse bien 2

Mais bien sur 2

Je vais illustrer cela par un exemple.

Imaginons un joueur X il est de niveau 1

X achete un enchantement appeler Augmentation des dégâts, qui augmente c'est dégâts de 10% chaque fois qu'il attaque.

X est faible, il ne fait que 10 points de dégâts de base, si on ajoute sont bonus, il gagnera 1 point de dégâts, autant dire rien du tout. => réaction négative de sa part ("Ce sort sert a rien etc.")

X évolue et devient fort, il frappa a présent a 100 point de dégâts. Il dispose toujours de sont sort, mais en plus d'une compétence qui augmente ces dégâts de 20% de plus. Il n'inflige plus 100 dégâts, mais 130...

Bref un système en pourcentage n'avantage que les joueurs qui inflige déjà des dégâts conséquent, un joueur faible n'en tire aucun bénéfice...
Je déterre encore une fois ce sujet pour donnée quelques nouvelles de mon projet.

Bien que j'ai de plus en plus de mal a trouver du temps pour coder, le projet avance toujours a bon rythme, le premier changement majeur a été d'utiliser la base de donnée pour stocker chaque case de la map. J'utilise pour cela 2 tables: une qui stocke chaque type de case, et une autre qui stocke les map en elle même en associant la case a un type de case. Basic mais efficace.

Je suis également sur le point de finir totalement les compétences des personnages qui ne sont pas encore évolué, cela fait quand même 60 sorts/compétences + ceux qui sont disponibles à toutes les classes. Bref sa fait un bon paquet. Cela dit sa ne fera jamais que le tiers de ce qui est prévus 66

Le système de PvP devra également voir le jour dans les mois a venir, avec a la clée des donjons a contrôler.

Sur ce bonne journée à tous 16
Bonjour à tous, voici quelques nouvelles de l'avancer du projet:

Pour commencer, il faut signaler que toute les classes en dessous du niveau 10 dispose de toutes leurs capacités, il y a en tout 89 sorts/compétence/enchantement qui sont disponible.

Je signale aussi que l'ensemble de la carte de la vallée des larmes à été terminer, du moin graphiquement car toutes les villes ne sont pas encore sur la carte.

Voici la carte complète de la vallée des larmes.

Pour le moment, les ville situé dans le coin supérieur gauche ne sont pas disponible, et il est fort probable quelle ne le seront pas avant l'ouverture de la version final du jeu, histoire de laisser quelques surprises aux testeurs actuels.
Bonjour à tous,

Voici quelques brèves nouvelles:

La vallée des larmes vient enfin de passé un grand cap dans son développement: tout les sorts sont disponible. Cela fait en tout 190 sorts à raison de 20 sorts par classe de personnage. A cela s'ajoute les sorts qui ne sont pas réserver a une classe de personnage en particulier ou qui sont des sort spéciaux résultat d'une quête.

Bref, vous l'aurez comprit, c'est un travail monstrueux qui vient de s'achever et je ne suis pas mécontent de pouvoir passer à la phase d'équilibrage du jeu.

Beaucoup de chose vont changé dans la version final du jeu: J'ai décidé que les personnages ne pourront pas dépasser le niveau 20. Pour garder un certain intérêt au jeu, les personnage seront mortel: il disposeront de point de résurrection qu'il obtiendrons en sacrifiant de l'expérience dans le temple d'un dieux. S'il meurt alors que leur compteur de points de résurrection est à 0, le personnage sera mort pour de bon. Un personnage niveau 20 ne gagne plus d'expérience, sa mort sera donc inévitable.
Bonjour à tous,

Si certain d'entre vous suivent le projet, ils auront surement remarqué que le jeu est fermé mais que je donne quand même de nouvelle.
J'ai en effet décidé de mettre fin au bêta test. Après plus de 2 ans, je me retire pour coder dans mon coin la version finale de la vallée des larmes.

Il est maintenant temps de faire un petit point sur la situation et de donner quelques conseil surement déjà donnée ailleurs 16:

- Je viens de finir la carte complète de la vallée, cela représente 40416 case, autant dire que c'est énorme 1. Sa ma prit beaucoup de temps pour tout mettre en place et en ordre, j'avais demandé au joueur de crée eux même les cartes car faire ce travail tout seul, c'était fatigant.
Certain ce sont vraiment lâché avec l'éditeur que j'avais mit en ligne, parfois un peu trop, il m'a donc fallut corriger toutes les cartes une à une.

- J'ai fini il y a quelques temps la nouvelle interface du jeu. Elle est entièrement en Ajax. Noter que sa ne pose pas de problème pour le référencement, les pages du jeu ne doivent pas être indexée.
Cette interface est beaucoup plus intuitive, et au finale relativement facile à mettre en place grâce au librairie javascript (personnellement j'utilise jQuery).

J'ai par contre constaté que ce n'étais pas vraiment plus léger pour le serveur, en effet, quand un fragment de page ce charge, ils doit relancer la session, ré-inclure les fonctions etc. Bref, c'est plus léger pour le navigateur (pas grand chose à modifier sur la page) mais le serveur souffre un peu plus.

En parallèle a cette interface, j'ai développé moi même (enfin avec l'aide de certain membre du forum aussi 10) à partir de jQuery un système d'infoBulle et un système d'affichage de box (style lightBox). Ceux que sa intéresse peuvent me contacter, je leur donnerais sans problème le code.

Quelques conseils:

Ne vous attendez pas a de grande théorie sur la programmation 60

La fonction qui affiche la map:

Je ne sais pas comment vous faite, mais personnellement j'ai une fonction qui s'occupe de charger ma carte. J'ai constaté quelques petites astuces:

Mes map font plus de 400 cases, sa fait donc une jolie boucle de 400, pour optimiser la vitesse d'exécution, j'ai trouver une petite astuce:
Mettre les cases qui s'affiche le plus en début de programme. En effet, la fonction "return" stop l'exécution de la fonction, il faut donc mettre les cases "rare" en bas et les cases "populaire" en haut, la fonction ne perd aussi pas de temps a vérifier si la case est une case rare 16. C'est bête mais il fallait y penser.

Prendre des notes, sa paraît bête mais c'est rapidement indispensable, avoir un petit fichier "note sur mon jeu", car on a toujours une bonne idée quand c'est pas le moment. Ou alors on a une bonne idée mais on est occuper avec une autre partie du jeu. Si on ne la note pas, on l'oublie.

C'est sur ce que je vous laisse, merci de m'avoir lut 41
Bonne chance pour ta version finale 16

Aurais-tu un aperçu de ce que tu as fait avec JQuery ?
Citation :Aurais-tu un aperçu de ce que tu as fait avec JQuery ?

J'ai pas de démo en ligne, et je peux pas te mettre des screenshot tu verras pas les animations...

Voici les codes, fait en ce que tu veux 16:

Infobulle
    Code JAVASCRIPT
(function($) {
	$.valmetips = {	
 
 		/** Initialisation de la variable de freeze */
 		freeze: false,
 
		//Affichage de l'info-bulle
		over_tips: function(ths, message, title) {
 
			var moveHandler = function(e) {
 
				var posFooter = $("div.footer").position().top;
				var taille = $("div#tips").height();
 
				/** Calcule de la position de la bulle */
				if (sourisTop > (posFooter-taille))
					$("div#tips").css({top: (sourisTop-10-taille)+"px", left: (sourisLeft+10)+"px"});
				else
					$("div#tips").css({top: (sourisTop+10)+"px", left: (sourisLeft+10)+"px"});
			};
			//On vide les piles
			var outHandler = function() {
				jQuery(ths)
				.unbind("mousemove",moveHandler)
				.unbind("mouseout",outHandler);
			};
 
			//je pointe sur le lien où est la souris
			if (!$.valmetips.freeze)
				{
					//Injection du message
					$("div#tips").html("<div class=\"flote_droite\">"+
										"<div class=\"flote_gauche\">"+
										"<div class=\"flote_haut\">"+
										"<div class=\"flote_bas\">"+
										"<div class=\"flote_coin_sup_gauche\">"+
										"<div class=\"flote_coin_sup_droite\">"+
										"<div class=\"flote_coin_inf_gauche\">"+
										"<div class=\"flote_coin_inf_droite\">"+										
										"<div class=\"flote_text\"><h4>"+
											title+"</h4>"+message+
										"</div>"+
										"</div>"+
										"</div>"+
										"</div>"+
										"</div>"+
										"</div>"+
										"</div>"+
										"</div>"+
										"</div>");
 
					jQuery(ths)
					//à chaque fois que la sourie bouge, j'exécute moveHandler
					.bind("mousemove", moveHandler)
					//quand je quitte le lien, j'exécute outHandler qui va enlever les actions 
					.bind("mouseout",outHandler);
 
 
 
					//On affiche
					$("div#tips").stop().fadeTo("slow",1);
				}
		}
		,
		cache_tips: function() {
			if (!$.valmetips.freeze)
				{
					//On la rend invisible
					$("div#tips").stop().fadeTo(0,0);
					//On vide la div.
					$("div#tips").empty();
				}
		}
		,
		click_tips: function(ths, message, title) {
			//on zappe tout.
			jQuery(ths).unbind();
 
			//cachage de la div rapide
			$("div#tips").stop().fadeTo(0,0);
 
			$("div#tips").html("<div class=\"flote_droite\">"+
								"<div class=\"flote_gauche\">"+
								"<div class=\"flote_haut\">"+
								"<div class=\"flote_bas\">"+
								"<div class=\"flote_coin_sup_gauche\">"+
								"<div class=\"flote_coin_sup_droite\">"+
								"<div class=\"flote_coin_inf_gauche\">"+
								"<div class=\"flote_coin_inf_droite\">"+										
								"<div class=\"flote_text\">"+
									title+message+
								"</div>"+
								"</div>"+
								"</div>"+
								"</div>"+
								"</div>"+
								"</div>"+
								"</div>"+
								"</div>"+
								"</div>");
 
			//on affiche la div
			var posFooter = $("div.footer").position().top;
			var taille = $("div#tips").height();
 
			/** Calcule de la position de la bulle */
			if (sourisTop > (posFooter-taille))
				$("div#tips").css({top: (sourisTop+5-taille)+"px", left: (sourisLeft-5)+"px"});
			else
				$("div#tips").css({top: (sourisTop)-5+"px", left: (sourisLeft-5)+"px"});
 
			$("div#tips").stop().fadeTo("slow",1);
 
			//On active le freeze
			$.valmetips.freeze = true;
 
			$("div#tips").mouseleave(function() {
				$.valmetips.unclick_tips();
			});
		}
		,
		unclick_tips: function() {
			//On la rend invisible
			$("div#tips").stop().fadeTo("slow",0);
			$("div#tips").empty();
			//On désactive le freeze
			$.valmetips.freeze = false;
		}
	}
 
	//Accès rapide
	over_tips = function(message, title) {
		$.valmetips.over_tips(this, message, title);
	}
	cache_tips = function() {
		$.valmetips.cache_tips();
	}
	click_tips = function(message, title) {
		$.valmetips.click_tips(this, message, title);
	}
	unclick_tips = function() {
		$.valmetips.unclick_tips();
	}
 
})(jQuery);


Box
    Code JAVASCRIPT
(function($) {
	$.valmeBox = {
		openBox: function(url, type, callback) {
			cache_tips();
			unclick_tips();
			if (type == "ajax")
				{
					$.ajax({
						url : url,
						dataType: "html",
						beforeSend: function(){
							$("div#popup").fadeIn("slow");
							$("div#popup").css({
								top: (sourisTop-100)+"px",
								left: (posCenter.left)+"px"
								});
							$("div.main_table").fadeTo("slow",0.4);		
							},
						success : function(reponse){
							$("div#popup").html("<div class=\"flote_droite\">"+
												"<div class=\"flote_gauche\">"+
												"<div class=\"flote_haut\">"+
												"<div class=\"flote_bas\">"+
												"<div class=\"flote_coin_sup_gauche\">"+
												"<div class=\"flote_coin_sup_droite\">"+
												"<div class=\"flote_coin_inf_gauche\">"+
												"<div class=\"flote_coin_inf_droite\">"+										
												"<div class=\"flote_text\">"+
												"<p class=\"closeBox\"><a o<strong></strong>nclick=\"closeBox();\">X Fermer</a></p>"
													+reponse+
												"<p class=\"closeBox\"><a o<strong></strong>nclick=\"closeBox();\">X Fermer</a></p>"+
												"</div>"+
												"</div>"+
												"</div>"+
												"</div>"+
												"</div>"+
												"</div>"+
												"</div>"+
												"</div>"+
												"</div>");
						},
						error : function(){
							$("div#popup").html("<p>Erreur.</p>");
						}
					});
 
					return false;
				}
			else if (type == "popup")
				{
					$("div#popup").fadeIn("slow");
					$("div#popup").css({
						top: (sourisTop-100)+"px",
						left: (posCenter.left)+"px"
						});
					$("div.main_table").fadeTo("slow",0.4);
					$("div#popup").html("<div class=\"flote_droite\">"+
										"<div class=\"flote_gauche\">"+
										"<div class=\"flote_haut\">"+
										"<div class=\"flote_bas\">"+
										"<div class=\"flote_coin_sup_gauche\">"+
										"<div class=\"flote_coin_sup_droite\">"+
										"<div class=\"flote_coin_inf_gauche\">"+
										"<div class=\"flote_coin_inf_droite\">"+										
										"<div class=\"flote_text\">"+
										"<p class=\"closeBox\"><a o<strong></strong>nclick=\"closeBox();\">X Fermer</a></p>"
											+url+
										"<p class=\"closeBox\"><a o<strong></strong>nclick=\"closeBox();\">X Fermer</a></p>"+
										"</div>"+
										"</div>"+
										"</div>"+
										"</div>"+
										"</div>"+
										"</div>"+
										"</div>"+
										"</div>"+
										"</div>");
				}
			callback();
 
		},
 
		closeBox: function () {
			$("div#popup").fadeOut("slow");
			$("div.main_table").fadeTo("slow",1);
		}
	}
 
	//Accès rapide
	openBox = function(url,type, callback) {
		$.valmeBox.openBox(url,type, callback);
	}
 	closeBox = function() {
		$.valmeBox.closeBox();
	}
})(jQuery);
Bonjour à tous,

Je suis toujours sur le codage de la version final du jeu, j'avance lentement mais surement. J'ai eu plus d'examen de passage que prévu, c'est chrono-phage les étude mine de rien 60.

L'interface de la vallée des larmes est a présent passer aux stade de RC, elle est disponible ici:

http://fenius.homelinux.com/vallee_des_larmes/

Note: il s'agit d'un serveur @home ce sera peut être un peu lent 10

Je suis en ce moment en train de convertir mon système de connexion qui date du tout début du site, il est vraiment moche. Cela impacte malheureusement tout le jeu, il faut donc que je regarde partout pour ne rien oublier.

Cela souligne encore l'importance de choisir à l'avance comment on va développer sont jeu et stoker ses données. Et surtout de ce tenir a sont modèle, car tout changer implique beaucoup de problème...

J'attends vos retour sur l'interface. Le jeu en lui même est jouable mais rien n'est prêt.

Merci de votre attention.
problème de charset en ce qui me concerne...

Citation :Si la page affiche des caractères de ce type : "�"
=> Les données ont été enregistrées au format ISO, et le navigateur les affiche en pensant avoir affaire à de l'UTF-8.
tiré de http://electron-libre.fassnet.net/utf8.php
Oui, je suis au courant, je dois tout passer en UTF-8 mais c'est un bug classé dans "mineur" 2
Pages : 1 2 3 4
URLs de référence