Screenshot of the month

 

Publicités

Transition en cours…

Donc me voici à tout refaire sous Unity3d…ce n’est finalement pas si décourageant, au contraire. En deux semaines, je pense bien maîtriser les grandes lignes de Unity. J’ai réintégrer le scrolling avec les contraintes de déplacements du joueur ainsi que ses contrôles et un tir basique, les premières bases des NPC, le système de collision AABB des bullets et enfin un début de HUD. Je trouve déjà des avantages à Unity  par rapport à Gamecore : un support des gamepad, des possiblités d’animation via iTween, un plugin venant de l’asset store. Ce dernier peut apporter un gain de temps et d’effort très appréciable.

Lorsque j’ai reporté mon code pour la création des bullets dans Unity, j’ai utilisé le même principe qu’auparavant : ajout dans le monde d’une bullet puis destruction de celle-ci si elle sort de l’aire de jeu ou touche un NPC ou le joueur. Sous Unity cela correspond aux fonctions Instantiate et Destroy. Sous Gamecore j’ai fait des essais montrant que le moteur gère des centaines de créations/destructions sans soucis. Avec le passage sous Unity, j’en profite pour déjà anticiper aux optimisations et je suis tombé sur cet article. L’auteur, lors de la réalisation d’une bullet hell, à noté que l’utilisation récurrente d‘Instantiate peut aboutir à des baisses de performance. L’idée est donc de recycler les bullets qui étaient auparavant détruite, ce qui me renvoie à l’asset store et à Pool Manager2 qui m’a épargné de longues heures.

Bref (jusqu’à présent) Unity c’est bien.

GameCore est mort, longue vie à Unity!

Depuis quelques semaines j’ai fini pas admettre que GameCore3d est mort. Le site est bien de nouveau en ligne mais toujours pas d’annonces ni même d’explications sur les interruptions en fin d’année dernière. J’ai continué à travailler sur mon shoot jusqu’à avoir mon système de scratch fonctionnel mais je n’avais plus la motivation d’aller plus loin.

Du coup je suis allé voir ailleurs. Cette fois je me suis dis qu’il fallait assurer et choisir une valeur sûre avec une prise en main rapide, donc fini les outsiders sympa mais à l’avenir incertain. Mon choix c’est tourné sur Unity3d, cela faisait un moment que j’y pensais mais, basculer sur un autre langage (ici le C#) me faisais craindre le pire. Je me rends compte, pour le moment, que j’ai beaucoup appris en 3ans et qu’avec un peu d’aide (Unity 3.x Game Development Essentials) la transition se fait en douceur.

quoi de neuf depuis…

Alors histoire de donner des nouvelles fraîches et de montrer qu’il y a au moins encore une personne qui utilise Gamecore voici deux, trois infos.

Depuis plusieurs semaines je travaille en dilettante non sans faire de bonnes avancées, comme un problème de synchronisation entre la vitesse de déplacement de la camera et du joueur. Ce bug était présent depuis la première version du script et le problème venait d’UNE variable exécutée au mauvais moment 😦

Le point sur lequel j’ai le plus avancé est le système de création de pattern de tir. Dans cette première version, chaque NPC dispose de 5 slots. Selon le type de pattern voulu, un ou plusieurs slots peuvent être utilisés. Le principe de base repose sur une rotation de la bullet par rapport à son point de départ, rotation qui s’incrémente d’une x valeur à chaque nouvelle création jusqu’à atteindre un maximum. Après soit la rotation est remise à zéro ou inversée. Voici à quoi ressemble la liste des variables pour un slot :

patternType[0].fireRate = 4;
patternType[0].fireRateReset = 4;
patternType[0].patternLoop = 4;
/***********************/
patternType[0].activSlotOne = true;
patternType[0].invOne = true;
patternType[0].slotOneRot = 0;
patternType[0].slotOneRotRst = 0;
patternType[0].slotOneRotVal = 0;
patternType[0].maxOneRot = 0;
patternType[0].minOneRot = 0;

A l’écran voici à quoi ressemble mes premiers essais avec ce script de pattern :

 [vimeo  28306310 w=400&h=245]

Ces nouvelles lignes de codes m’obligent à faire beaucoup de nettoyage, entre du code obsolète, les doublons, les loops qui devraient ne faire q’un tour… Côté level design, je concentre sur un premier niveau et principalement sur le rythme de celui-ci : où et quand envoyer des NPC, quels patterns  les faire tirer, etc…

Enfin, côté design pur c’est toujours le calme plat bien que, tout en travaillant sur le rythme d’un premier niveau, j’essaie différentes façons d’accélérer la modélisation. Au final, la plus évidente est de partitionner les objets pour les assembler ensuite, pourquoi refaire 5 fois la même chose. Il me sera plus simple, et plus rapide, de faire 5 variations d’un fuselage et d’y ajouter les mêmes ailes. Vu de l’extérieur cela peut paraître évident, mais pas pour moi quand j’ai commencé ce projet.

Scratch system

Les premières lignes de code pour le scratching sont en place. Il me reste à y associer le principe des paliers de scratch que je désire pour que le système soit pleinement opérationnel, et par la suite associer des patterns différents à chacun des paliers.

Illustration du Scratch system

The first few lines of code for scratching are in place. I still have to involve the principle of levels of scratch I want to make the system fully operational, and then associate different patterns at each level.