connect
 

Description:
Carton Slug Project


By Tibo (aka Lapinou Fou)
& Dam (aka Valryon)

Homebrew pour Nintendo DS, reprenant l'univers de Metal Slug (©SNK) et quelques idées d'autres jeux.

Carton Slug est un jeu d'action/réflexion se jouant sur plusieurs niveaux à travers deux modes de jeu.



Outils : Notepad++, PAlib, DevkitPro, une bonne dose de motivation, une autre de patience !

On utilise aussi Visual C# 2008 Express, et le Framework .NET de Microsoft pour l'éditeur de Maps.
Thématiques:

Projet
Blog
Map
Physique
Editeur
Scénario
Dev
Release

Abonnement aux flux
Flux rss
DevBlog de Carton Slug

21 jui
2008

L'Editeur de Cartes

Pour gérer plus facilement la création de niveaux, nous avons eu l'idée de créer une interface pour les créer et les exporter de telle manière qu'ils puissent être utilisés dans le jeu.

Le langage C# avec Visual C# est très pratique pour ce genre de tâche. L'interface se crée tout à la souris (ou presque), il "suffit" ensuite de coder les fonctionnalités derrière les jolis boutons.

Voici à quoi ressemble l'éditeur dans sa version actuelle :


Oui, ce n'est ni très joli ni très ergonomique. Mais cet éditeur n'est destiné qu'à nous, puisque les maps sont à inclure dans le code source à la compilation...

Revenons un peu sur le fonctionnement des maps que l'on a adopté. Une map de Carton Slug (au niveau du jeu, sur la NDS) est un grand tableau qui contient des entités "Caisses" possédant des propriétés évidentes comme : position x, y, points de vies, etc.

Pour rendre le jeu plus intéressant, il y a différents types de caisses : métal, explosive, donneuse de bonus... Une autre donnée à gérer par l'éditeur.

Il fallait que l'éditeur soit un minimum visuel. Or ce n'est pas facile de programmer un truc où il est possible de faire glisser les éléments pour placer où on veut... Du coup pour le moment, la map est découpée en case de taille et position fixe et en quatre lignes horizontales. On place donc les caisses comme on veut sur ces cases.

L'astuce est qu'une case ne correspond pas forcément à une caisse, sinon on serait limité à des petits caisses de 32x32. Or nous voulons pouvoir faire une grande caisse qui prend tout l'écran si cela nous chante ! C'est pourquoi une case peut contenir un "bout" de caisse, qui est en fait un sprite qui représente seulement une partie de la caisse (le coin supérieur gauche par exemple).
A programmer, c'était répétitif car il a fallu ajouter tous les types (6), et toutes les parties possibles pour chaque type (au moins 6 à chaque fois)...

Une fois la map créée, on la sauvegarde. Cette action a pour but de créer deux fichiers : un ".carton" qui contient des données simples pouvant être chargées dans l'éditeur, et un ".h" qui doit être inclus dans le jeu.

Ainsi on a par exemple :

a.carton
The_lol_map;
Map de test, avec un LOL en caisses en bois;
0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,1,1,1,0,0,0,1,1,0,0,0;
0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,1,0,0,0,1,1,0,0,0;
0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,1,0,0,1,0,0,0,1,1,1,1,0;
0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,1,1,1,1,0,0,0,1,1,1,1,0;

et
a.h
#include <string>
#ifndef the_lol_map_H
#define the_lol_map_H
const std::string the_lol_map_titre = " The_lol_map " ;
const std::string the_lol_map_commentaire = " Map de test, avec un LOL en caisses en bois  " ;
const u8 the_lol_map_ligne1[28] = { 0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,1,1,1,0,0,0,1,1,0,0,0};
const u8 the_lol_map_ligne1_max = 28;
const u8 the_lol_map_ligne2[28] = { 0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,1,0,0,0,1,1,0,0,0};
const u8 the_lol_map_ligne2_max = 28;
const u8 the_lol_map_ligne3[28] = { 0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,1,0,0,1,0,0,0,1,1,1,1,0};
const u8 the_lol_map_ligne3_max = 28;
const u8 the_lol_map_ligne4[28] = { 0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,1,1,1,1,0,0,0,1,1,1,1,0};
const u8 the_lol_map_ligne4_max = 28;
#endif

Ce dernier fichier reprend la syntaxe C++ de tableaux à une dimension. Une méthode permet ensuite de traiter toutes ces données pour construire le niveau comme il faut.

Enfin en théorie, c'est précisément où est arrivé le développement pour l'instant du côté de la gestion des niveaux :P

A bientôt pour de nouvelles aventures !

Dam, Carton Slug developper

Commentaires

Mony :
Hum... cool, je vais m'en inspirer pour mon système de map pour Da Cook's Adventures à mon retour de vacances :)
mATT :
Excellent ! Beau travail cet éditeur ! Sinon j'attends avec impatience la release.
djé :
c# powwa !

faut que je me fasse un bestiau comme ça pour gerer les traductions, tient !

pareil, vivement une release : "lol map", ça allèche :)
Vloz :
A ce que je vois ça carbure, bonne continuation et merci pour les bouts de code/explications, c'est sympa. :)

Retour à l'index
lache tes com dev fr scrutator irc bot
created by Jerome Wax based on LT version 0.3.2 - dev-fr.org 0.4 install