Update // Mise à jour 13/03/17

Update // Mise à jour 13/03/17

Resume :

Hi everyone! I know it’s been a long time since I posted a new update of my game. However, the reason is simple. Since the holidays, I spent 2 months looking for new technics and studying for concepts to apply in my game. Also, I learnt how to make basic server, which took me a lot of time. I decided that I would wait for my game to grow more before posting an update. However, even if I spent a lot of time learning, I also worked on my game!

Here’s a short list of the new things we can find in my game:

-Now 3 playable classes of mage (fire, grass and water)
-20 skills
-7 unique monsters*
-A quadtree to check collisions
-A new concept to manage the entities and the projectiles
-A new interface
-A second mini game (very simple!) where I used a system of client/server to make it work.

*Take note that the adjective unique means that each of my monster has his own way to interact in the world. Without wanting to bash on games with the following concept, I think that games with a lot of monsters, but no real difference between them lack of something. In these games, whenever we are in combat with a monster, it only tries to attack us with a simple basic attack. Each combat is almost the same. However, in my game, I try to add variants to the monsters so each one of them as a unique mechanic to defeat it.

Here are some explanations on certain things:

-For the people wondering what is a quadtree, it is a method used to cut the world in small squares. This way, I only need to check for each entity if it collides with any other entity within the same square. This method reduces greatly the management of collisions and reduces the lag in the game, since I don’t need to check collisions between all the entities. I will add a photo in the commentary section for the visual people!

-Next, my new concept to manage the entities and the projectiles gave me the opportunity to push my game a little more. First, here’s a rough explanation of the problem I had. When my game was running, sometime it would take a bit of memory form the computer to allocate it a variable (everything is fine up t now). However, when my game didn’t need the memory anymore, it would just keep it and not give it back to the computer. It would eventually lead to a crash of the game. To translate this in reality, let’s take a bucket full of sand and imagine it is the memory of a computer. My game would then be the hole in the bucket from which the sand can flow. The more the game is running, the less there is available memory in the bucket. Only this error took me 1 week and an half to revise. However, it is now way easier to add new things in my game, because the parts of my game are less connected between each other and are easier to modify.

-The new interface brought a more dynamic and more neat health bar for the player. Also, it is now possible to see the damage, the armor, the speed, the attack speed, the max health and the cooldown reduction the bottom left corner of the screen. This allow the player to know whenever any of these stat changes and how much it did.

-The mini game that I talked about is only a test to try out my knowledge on servers. Up to now, I can easily send informations between a client and a server and I also created a system of identification that allows the player to create an account on my game. However, my computer isn’t enough fast to run both my client and my server at the same time, so I can’t continue the development of my server. Also, I must read more about delays between players and lag compensation before introducing a server into my big game.

In the future :

My goal now is to modify my code so my game can run smoothly and to correct any bug so I can publish a sample of my game. I think it will take around 1 month to do so, since I also want to add other things to make my game more attractive.

My thoughts? Firstly, I think I’m learning quickly since I only started programming in September this year. However, I am doing a lot of mistakes that take some time to correct. Also, I am developing the game alone, so I must learn everything. I can face huge problems at some moments, and also need to experiment some concepts before using them in my game.

Finally, a big thank you to everyone that are still encouraging me in any way.

Résumé :

Bonjour tout le monde! Je sais que je n’ai rien publié depuis un moment. La raison est fort simple. Depuis le temps des fêtes, j’ai passé un bon 2 mois à regarder des techniques de programmation et à étudier certains concepts. De plus, j’ai appris comment faire des serveurs, ce qui m’a pris un temps fou! J’ai donc décidé d’attendre que mon jeu progresse davantage pour publier une mise à jour. Cependant, malgré tout, j’ai beaucoup avancé!

Voici un décompte rapide de ce qu’on peut trouver de nouveaux dans mon jeu:

-Maintenant 3 classes de mage jouables (feu, herbe et eau)
-20 sorts
-7 monstres uniques*
-Un quadtree pour les collisions
-Une nouvelle vision de la gestion des entités et des projectiles
-Une nouvelle interface de base
-Un deuxième petit jeu (vraiment simple!) où j’utilise un système client/serveur

*Prenez note que l’adjectif unique signifie que chaque monstre à sa façon d’interagir dans le monde. Sans vouloir dénigrer les jeux avec le concept suivant, on retrouve souvent des jeux avec plusieurs monstres, mais aucune différence entre eux. Lorsqu’on est en combat avec eux, ils ne font que nous attaquer avec une attaque de base. Or, dans mon jeu, j’essaye le plus possible d’ajouter des variantes aux monstres afin que les combats entre chaque monstre soient les plus dynamiques et les plus différents possibles!

Voici quelques précisions sur certains éléments de la liste :

-Pour ceux qui se demandent ce qu’est un quadtree, c’est une méthode pour diviser le monde en petit carré. De cette façon, il ne suffit que de regarder pour chaque entité les collisions possibles avec les autres entités dans le même carré. Cela diminue grandement la gestion des collisions, car on n’a plus besoin de regarder entre chaque entité du jeu à chaque fois! Je vais ajouter une photo pour les personnes visuelles en commentaire!

-Ensuite, la nouvelle vision de la gestion des entités et des projectiles a permis de pouvoir pousser mon jeu un peu plus loin. Tout d’abord, expliqué vulgairement, j’avais un problème où mon jeu utilisait la mémoire de l’ordinateur afin de créer des variables, ce qui est tout-à-fait normal jusqu’à présent. Cependant, lorsque le jeu avait fini avec la mémoire, il ne la rendait pas à l’ordinateur! Pour vous faire une image, la mémoire de l’ordinateur est comme un seau rempli de sable et mon jeu était un trou dans le sceau. Plus l’on jouait, moins il y avait de la mémoire de disponible. Seulement cette petite erreur m’a pris 1 semaine et demie à corriger. Malgré tout, maintenant, il m’est beaucoup plus facile d’ajouter de nouveaux concepts dans mon jeu, car les parties de mon jeu sont moins interreliées et plus faciles à modifier dû aux grands changements apportés!

-La nouvelle interface est tout simplement constituée d’une nouvelle barre de vie plus dynamique et texturée afin d’afficher la vie du joueur au-dessus de lui et d’un affichage des informations utiles du joueur en bas à gauche de l’écran. On peut donc savoir en tout temps les dégâts, la vitesse de mouvement, la vitesse d’attaque, la vie maximum, le temps de rechargement des sorts et l’armure du joueur. Cela est très pratique afin de savoir si un sort à réellement apporté un bonus et combien est le bonus apporté.

-Le petit jeu dont j’ai parlé n’est seulement qu’un test pour expérimenter mes connaissances sur les serveurs. Jusqu’à présent, je peux facilement envoyer de l’informations entre les ordinateurs et j’ai pu créer un système d’identification afin de pouvoir créer un petit compte unique à chaque personne pour le jeu « test ». Malheureusement, mon ordinateur n’est pas assez puissant pour pouvoir faire marcher le client et le serveur de mon jeu, donc je dois attendre de me procurer un nouvel ordinateur pour continuer les serveurs. De plus, je dois encore lire sur les délais entre les joueurs et la compensation du « lag » avant de pouvoir intégrer un serveur dans mon gros jeu.

Pour le futur :

Mon objectif présentement est d’améliorer les concepts de mon jeu et de le rendre plus « beau » afin de pouvoir le mettre disponible en ligne. Vous pourrez alors le tester et me donner vos opinions. J’estime que cela me prendra encore 1 mois avant de pouvoir le rendre disponible, car je veux aussi ajouter quelques petits trucs pour le rendre plus amusant.

Mes impressions jusqu’à maintenant? Premièrement, pour avoir commencé la programmation seulement au début septembre, je trouve que je progresse vite. Cependant, j’apprends de mes erreurs et celles-ci me coûtent souvent très cher en temps afin de les régler! Évidemment, je suis seul pour faire mon jeu, donc je prends mon temps et les imprévus ralentissent aussi beaucoup le développement. De plus, lorsque j’expérimente de nouveaux concepts comme les serveurs, je me heurte à de gros défis et je dois prendre plus de temps pour comprendre les choses et optimiser le jeu qu’une personne ayant déjà les connaissances requises!

Sur ce, un gros merci pour tout ceux qui m’encouragent encore d’une manière ou d’une autre!

– Nicolas



Leave a Reply

Your email address will not be published. Required fields are marked *