Journal de bord: création d’un RTS en HTML5, jour 1

Introduction
Il y a une semaine, en discutant avec des collègues d’un petit jeux que j’avait fait en html5, m’est venu l’idée un peu dingue de faire un jeu de stratégie temps réel.
L’idée était de faire un bon vieux RTS à l’ancienne, un peu comme Warcraft: notre madeleine de proust.
J’ai mis les sources sur Github en LGPLv3 afin de permettre d’apprendre de ce projet et de permettre à d’autre de se lancer pour s’amuser ou plus dans le developpement de jeux HTML5.

L’idée du journal
Au vu des soucis que j’ai rencontré en le développant, je me suis dit qu’écrire une sorte de journal de bord serait une bonne idée, que cela pourrait en intéresser plus d’un.
Je vais au fil du développement poster l’état d’avancement du projet ainsi que les problèmes rencontrés et les solutions trouvées.

Jour 1: Présentation du projet
Le projet est assez modeste pour qu’il soit réalisable et aille jusqu’au bout.
Une carte, avec la possibilité de scroller à l’aide de la souris, une miniature en bas à droite pour voir où nous sommes.
Vous débutez avec un personnage et un QG qui permet de créer des nouveaux « batisseurs »
Chaque bâtisseur peut créer l’équivalent d’une barrack warcraft pour créer des unités d’attaque.
Il y a un début de gestion de ressources: vous pouvez envoyer une unité « batisseur » à la mine d’or pour recueillir de l’or, ou aller chercher du bois.
Il y a une gestion de zone connu et inconnu qui evolue au fil de l’exploration.
Lorsque vous construisez un bâtiment, il ne peut être construit que dans la partie visible et libre, un gestion de couleur verte/rouge pour l’indiquer.

Quelques images
rtshtml5
Création d’un batiment
rtshtml52
rtshtml53

Présentation technique
Le projet se décompose en N fichiers:
rts.html : le fichier principal html incluant les fichiers javascripts, canvas…
rts.js: le fichier javascript principal gérant le chargement du jeu, + la boucle de mise à jour
rts_Game.js : la classe du jeu
rts_Build.js: les classes Build et Wood (pour les batiments, mines et arbres)
rts_Unit.js: la classe Unit (pour les unités)
lib3/canvas.js : la classe pour interagir plus facilement avec le canvas

Ce qu’il reste à faire
Gérer un temps de création d’unité et de bâtiment pour qu’ils ne soient plus immédiat.
Gestion d’attaque: une unité armé, doit, à proximité d’un enemie l’attaquer.
Gerer les points de vie + de défense.
Permettre de creer des batiments pour améliorer l’attaque et la défense.
Permettre la sélection multiple.
Création d’ennemie avec une petite intelligence artificielle pour permettre un mode mono joueur « tower defense ».
Créer un moteur de jeux réseau pour faire une partie multi-joueur.
Améliorer les graphismes ;)

Les infos supplémentaires
Le dépot github: https://github.com/imikado/rtshtml5