Moteur de rpg en ligne

Soyez le premier à donner votre avis sur cette source.

Snippet vu 19 877 fois - Téléchargée 27 fois

Contenu du snippet

Vous avez déjà joué aux Baldur's Gate ? Icewind Dale ?
Ce "moteur" est une imitation de l'InfinityEngine, le moteur de ces jeu, en Javascript, c'est à dire jouable en ligne.
Ce n'est qu'un timide début ne vous attendez pas à un vrai jeu, mais vous pouvez déjà avoir un aperçu de ce que je cherche à faire.
Démo ici : http://gravytea.com/florian/ForgotEngine/

Source / Exemple :


//(fichier core/game/game.inc.js)

////////////////
//FICHIER GAME//
////////////////

//à terme vous devriez pouvoir adapter le moteur à vos besoin en utilisant ce seul fichier
//pour l'instant ça me semble délicat, cependant vous pouvez déjà voir ici un exemple d'utilisation basique du moteur

//PARAMETRES
//Le "Volumetric Lights" est une sorte de blur, c'était au début un bug et j'ai trouvé que ça rendait pas mal sur les toits/arbres
//ça rame pas mal par contre
OverMask = 0;				//"Volumetric Lights" activé
OverMaskOpacity = 0.2;		//intensité (immonde lorsque > 0.4)

ScrollSpeed = 50;			//vitesse de défilement de la map
StaticZone = 0.4;			//sensibilité pour le scroll, 0 < StaticZone < 0.5
BorderLim = 0;				//affiche une bordure autour de la map, plutôt laid en fait
DynCursor = 1;				//change l'apparence du curseur pendant le scroll
DefInterval = 5;			//temps par défaut pour les setTimeout

WinOpacity = 0.9;			//opacité des fenêtres
WinLightDrag = 1;			//annule l'opacité des fenêtres pendant les dragndrop

Locator = 0;				//affiche map

GamespaceBg = 'url(img/map/bg/fog.gif)';	//map de fond
MapBg = 'img/map/bg/AR3300.jpg';			//map

function StartGame() {
	CreateGamespace();		//crée un div prenant tout l'écran où sera crée la map
	CreateMap(5120,3840);	//crée la map de tailler 5120*3840 (attention pour l'instant l'image MapBg sera ETIREE si elle est trop petite)
	StartGamespace();		//démarre le tout
	
	//CreateChar(400,900,'Elemental, Water',17,0.65);
	
	CenterView(2060,2260); //cadre la vue sur ces coordonnées (assez peu précis en fait)
	
	//CreateChar est aussi utilisé pour crée des objets tels que la fumée ou de l'eau...
	//C'est assez illogique la fonction changera bientôt de nom	
	CreateChar(2510,3035,'FOUNTN',2,0.7);
	//créer l'objet FOUNTN aux coord 2510,3035 avec l'id 2 et une opacité de 0.7
	//veiller à ne pas créer 2 objets avec le même id
	
	CreateChar(1940,355,'CHIMSMK',3,0.4);
	CreateChar(2585,1125,'CHIMSMK',4,0.4);
	CreateChar(1325,1045,'CHIMSMK',5,0.4);
	CreateChar(4752,2425,'CHIMSMK',6,0.4);
	CreateChar(930,2560,'CHIMSMK',7,0.4);
	CreateChar(795,2710,'CHIMSMK',8,0.4);
	CreateChar(4476,2553,'CHIMSMK',9,0.4);
	CreateChar(4738,2571,'CHIMSMK',10,0.4);
	CreateChar(4490,2419,'CHIMSMK',11,0.4);

	CreateChar(3005,1713,'BUTRFLY',12);
	CreateChar(3657,993,'BUTRFLY',13);
	CreateChar(3275,995,'BUTRFLY',14);
	CreateChar(4492,1084,'BUTRFLY',15);
	CreateChar(1539,970,'BUTRFLY',16);

	CreateChar(1500,1500,'wyvern',1);
	
	MoveChar(1,2350,2300,5);
	//bouge l'objet d'id 1 (la wyvern) vers le point 2350,2300 à la vitesse 5.
}

//les fonctions "Action" sont appelés lorsque certains évenèment ont lieu

function ActionClick() {
	MoveChar(1,MouseXCoord(),MouseYCoord(),5);
	//MouseXCoord()/MouseYCoord() retourne les coordonnées du curseur, tenant compte de la position de la map sur l'écran
}

function ActionMove() {
	window.status = Math.round(MouseXCoord())+'/'+Math.round(MouseYCoord());
	//affiche en status les coordonnées de la souris, pratique pour placer de nouveau objet
}

function ActionOver(Id) {
	document.title = Elmt[Id];
	
	//ci-dessous, un petit essaie d'intégrer Ajax au moteur... très basique.
	//pour essayer décommenter aussi l'elemental d'eau
	/*if(Id == 17) {
		CreateDialog(100,100,'<img src="img/spinner.gif">',18);
		//crée un div de dialogue au point 100,100, d'id 18, contenant l'image spinner.gif
		
		StickDialog(18,17);
		//"colle" ce div à l'élémental
		
		AjaxRequest('test.php','CreateDialog(100,100,Request.responseText,18);');
		//appelle en arrière plan la page test.php, quand le résultalt arrive place dans le div de dialogue le contenu du fichier
	}*/
}

function ActionOut(Id) {
	
	
	
}

//pour modifier le menu regarder dans le fichier index
//CreateWin(350,350,WinAbout(),'About');
//crée une fenêtre déplaçable d'id 'About' au point 350,350
//de contenu WinAbout(), fonction définie dans le fichier game/win/options.win.js

Conclusion :


Le fichier étant un peu gros, vous trouverez la dernière version ici : http://gravytea.com/florian/ForgotEngine/fe.zip
Carte et persos sont inclus.

A voir également

Ajouter un commentaire Commentaires
Messages postés
51
Date d'inscription
dimanche 14 mars 2004
Statut
Membre
Dernière intervention
4 décembre 2012

Bon ça a prit légèrement plus de temps que prévu, mais voilà une démo de la prochaine version:

http://lumakey.net/labs/battleground/demo1/
Messages postés
13
Date d'inscription
dimanche 1 avril 2007
Statut
Membre
Dernière intervention
15 juin 2009

Excellent rendu sur FF. C'est très prometteur. Bon courage pour la suite!
:-)
Messages postés
450
Date d'inscription
samedi 16 avril 2005
Statut
Membre
Dernière intervention
18 avril 2007
2
DELTA38 >> Bin ça c'est constructif... C'est quoi le rapport avec la source ?
Messages postés
9
Date d'inscription
mardi 6 février 2007
Statut
Membre
Dernière intervention
14 février 2007

comme certain l'on dit plus aux internet explorer c'est nul :)
Messages postés
14
Date d'inscription
lundi 13 mars 2006
Statut
Membre
Dernière intervention
27 février 2007

J'ai hate de voir l'évolution du projet, comptes-tu permettre aux utilisateurs de se voir sur la map? J'ai testé sur Opera, c'est pas compatible. Enfin bonne chance, je suis sur que ce projet peut aboutir à quelque chose de sympa, mais il te faudra beaucoup de temps.
Afficher les 23 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.