Moteur de rpg en ligne

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

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.