Créer son jeu pour 0 € ou le blog d'un créateur indépendant fauché.

Créer son jeu pour 0 € ou le blog d'un créateur indépendant fauché.

Par krys64 Blog créé le 21/11/10 Mis à jour le 04/11/15 à 21h48

Pourquoi s'embêter à monter un studio de jeu vidéo à coups de millions et d'équipes surdimensionnées alors qu'il est si simple de tout faire soi-même ?
Vous suivrez sur ce blog les aventures d'un créateur indépendant qui va édifier petit à petit son projet de jeu afin de conquérir le monde.

Ajouter aux favoris
Signaler

Maintenant que j'ai mon hamburger, je vais lui donner quelques actions. Pour cela dans Unity 3D :

-Je créé un objet vide sur la scène : gameobject>create empty
-En drag and drop je prend le hamburger dans la Hierarchy et je le place dans le Gameobject que je renomme BigBurger. J'ai donc l'objet enfant "hamburger" dans l'objet parent "BigBurger". Si je clique sur "hamburger", on constate dans l'inspector que j'ai un composant meshcollider. J'enlève ce dernier.
-Sur l'objet "BigBurger", j'ajoute un sphere collider en cliquant dessus et dans le menu : Component>physics>sphere collider.
-Dans l'inspecteur je coche  sphereCollider> is trigger. Ainsi mon composant de collision existe toujours mais on peu passer à travers.
-Et pour finir, j'ajoute ce script à mon objet "BigBurger" :

var sparks:Transform; // objet étincelles

function OnTriggerEnter (other : Collider) { // fonction qui détecte l'entrée d'un collider dans le collider
    if (other.gameObject.name=="Player1"){ //Si le nom de l'objet poprtant le collider est "Player1"
        Instantiate (sparks, transform.position, transform.rotation); // on fait apparaitre les étincelles
        Destroy(gameObject); // et on détruit le BigBurger
    }
}

Voilà, avec ceci je vais pouvoir dicéminer des hamburgers tout le long du parcours et partir à la récolte comme vous pouvez le voir sur la vidéo. Ceci est en fait la base pour faire apparaitre/disparaitre des objets dans Unity3D.

A suivre...

Ajouter à mes favoris Commenter (0)

Signaler

C'est pas tout d'avoir un skater mais il faut le nourrir de temps en temps et rien de tel que le hamburger comme point de départ de la chaîne alimentaire de notre héros. Pour créer un hamburger dans Unity c'est très simple.

-Designez le dans votre logiciel de dessin préféré.
-Exportez le au format png de 500*500
-Dans Unity , faites dans le menu : gameobject >create other >plane
-Importez votre dessin en faisant : assets>import new asset
-Depuis la fenêtre project, placez en drag and drop votre dessin sur le plane situé dans la fenêtre Scene
-Cliquez sur le plane dans la scene et dans la fenêtre Inspector-meshrender-materials, mettez particles/alpha blended pour recuperer le canal alpha de la texture

Et voilà par miracle notre objet créé et il ne reste plus qu'à lui appliquer des fonctions lorsque notre perso passera dessus. Si c'est pas simple le jeu vidéo quand même ;)

A suivre...

Ajouter à mes favoris Commenter (2)

Signaler

Dans un jeu vidéo, un des gros problèmes est la gestion de la mémoire, c'est-à-dire que plus votre scène contient d'objets 3D, plus l'ordinateur est sollicité. Pour palier à ce problème, il existe le système d'"occlusion culling" dont le principe est de n'afficher à l'écran que les objets qui sont dans le champ de la caméra, ainsi les objets hors champ de vision ou cachés par d'autres objets disparaitront de la scène afin que l'ordinateur ne calcule pas leur géométrie et leur rendu.

Malheureusement, dans Unity 3D, le système d'occlusion culling n'est disponible que dans la version pro. Pour mon jeu qui est à scrolling horizontal, j'ai donc créé un petit système équivalent dont le principe est le suivant :

-je place dans un tableau les références des objets qui doivent apparaitre sur ma scène et au fur à mesure de l'avancée du personnage, je génère ou détruit les objets par rapport à une distance définie. Ainsi j'allège le processeur de calculs inutiles et vous pouvez voir le rendu final dans cette vidéo.

A suivre

Ajouter à mes favoris Commenter (3)

Signaler

Dans la version gratuite d'Unity, vous ne pouvez pas activer le système d'ombres temps réel, mais par contre vous pouvez utiliser un Projector qui permet de projeter une texture sur une surface à la manière d'une lampe torche. L'inconvénient est que le projecteur traverse toutes les surfaces. Pour calculer la distance exacte de la projection, il suffit de calculer la distance située entre le personnage et la surface la plus proche sous ses pieds.

Pour cela, j'utilise le système de raycasting c'est à dire que je projette en permanence un rayon vertical et vers le bas à partir de la position du personnage. Lorsque le rayon touche un obstacle, j'utilise un script qui calcule la distance parcouru et ensuite j'applique ce chiffre au paramètre farClipPlane (en fait la distance de projection) du projecteur.

Je limite ainsi, la projection au premier obstacle et je vous résume le tout en script :

var myTransform:Transform; // personnage principal
var shadow:Projector ; //on variabilise le projector
function Update(){ // on lance une boucle permanente
    if (Physics.Raycast (myTransform.position, - Vector3.up, hit, 100)) // on envoie un rayon de la position du perso vers le bas et à une distance de 100, en cas d'impact, la valeur renvoyée est hit
    {
        //::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
        var dist = Vector3.Distance(shadow.transform.position, hit.point); // on calcule la distance du perso au point d'impact
        shadow.farClipPlane =dist; // on change la valeur de la propriété farClipPlane  du projecteur
        //::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    }
}

Le résultat avant/après :

Ajouter à mes favoris Commenter (2)

Signaler

Étant à la base dessinateur, j'ai toujours trouvé la recherche de l'ultraréalisme très ennuyeux dans les jeux 3D.C'est pourquoi mon jeu est un mélange de 2D et de 3D et certains pourraient me dire que j'aurais pu tout faire en Flash mais le soucis est que la 3D dans Flash ça rame, et qu'Unity apporte des composants de physique, de particules, et de contrôle des personnages.

Cependant, afin de garder un rendu BD, je joue sur les textures et pour le personnage, je créé les animations (saut, course...) sur 16 images. Ensuite je place chaque frame sur une png de 4 images sur 4 et j 'applique ce png à un mesh carré dans Unity. Ensuite grâce à un script, je fait jouer chaque élément du png au rythme du jeu sur le mesh de sorte à donner l'animation

C'est le système du texture tiling qui donne l'illusion de l'animation. Je créé autant de texture que d'état différent et toujours par script je permute les différents mesh.

A suivre...

Ajouter à mes favoris Commenter (7)

Signaler

Oui insensé ! Rendez-vous compte, un jeu de skateboard multijoueur réalisé à la sueur de mes doigts et destiné à une reconnaissnace mondiale.

J'ai commencé à développer le jeu et voici déjà un petit prototype réalisé grace au moteur de jeu Unity 3D. Ce moteur dispose de 2 versions, une gratuite et une payante qui dispose de beaucoup d'options supplémentaires comme des ombres en temps réel.

Comme je suis un gros radin j'ai décidé d'utiliser la version gratuite, et j'utilise des modèles 3D trouvés sur 3d warehouse et exportés en .DAE avec sketchup lui aussi gratuit. Le reste c'est tout du code dont je donnerais des scripts de temps en temps (Hé ! Ho ! C'est mon code d'abord et j'en fait ce que je veux).

Pour les animations de Jason, elles sont faites sur le base d'un perso que j'avais dessiné et animé sous Flash. Mais avec un peu d'astuce c'est réalisable sous Gimp.

Pour l'instant, on peu juste rider comme un fou et le joystick est implémenté.

A suivre...

Ajouter à mes favoris Commenter (1)

Archives