CPCSmall3D

 

Microsf01 CpcSmall3D

Voici uns de mes derniers jeu que je suis entrain de developper en VB.net

Il tourne sous le moteur de DirectX avec tzu3D

 

Quelques Screenshots :

Le menu principale

 

 

Enfaite il y a un gros personnage qui passe devant d'ecran c'est Tiny ^^

*

 

C'est un jeu qui se joue en multijoueurs (4 joueurs max <(pour l'instant , c'est déja assez compliqué comme ça !) )

  Il y a le Mode FPS (Vue de l'acteur)

Et RPG (Caméra poursuite)

- - - - - - - - - - - - - - - - - - - - - - - - - - - -

 

Allez un peut de math et vb

Pour le mode RPG :

        ' Determiner une position de la caméra en circulaire autour du personnage

 

Procedure a utiliser  :

{objet}_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseMove

        ' déclarer les variables

        dim ax ,droite ,rayonperso ,nb

         if ax = "" then ax = form1.width / 2 ' placer au centre

         if rayonperso = "" then rayonperso = "200"

         if nb = "" then nb = "10"

        ' Mettre dans une variable décimale (nb) le degré de rotation ( déplacement x de la souris )

        If MousePosition.X > ax Then    ' si la position de la souris est supérieur a l'ancienne position alors on diminue nb
            droite = droite + 0.05
            nb = nb - 0.05
            rota = 0.05
            If droite > 4.2 Then droite = -2
            Perso1.Angles = New Vector3(TZGlobal.DegToRad(-90), droite, 170) ' puis on fait tourner aussi le personnage
            GoTo suit
        End If

        If MousePosition.X < ax Then   'si la position de la souris est inférieure a l'ancienne position alors on augmente nb
            droite = droite - 0.05
            nb = nb + 0.05
            rota = -0.05
            If droite < -2 Then droite = 4.2
            Perso1.Angles = New Vector3(TZGlobal.DegToRad(-90), droite, 170) ' puis on fait tourner aussi le personnage
            GoTo suit
        End If

suit:
        ax = MousePosition.X    ' il faut indiquer à la variable ax la nouvelle position y de la souris

        dr.Text = droite

        ' J'utilise le Cosinus pour deternimer la position circulaire de la caméra grace aux variables  nb et rayonperso
       
        xx = Math.Cos(nb) * rayonperso
        yy = Math.Sin(nb) * rayonperso

 

Schéma :

Pour le mode FPS :

Procedure a utiliser  :

{objet}_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseMove

        ' déclarer les variables

        dim ax ,droite ,rayonperso ,nb

        dim hautperso   ' determiner hauteur (position y) su personnage

         if ax = "" then ax = form1.width / 2 ' placer au centre

         if rayonperso = "" then rayonperso = "200"

         if nb = "" then nb = "10"

        ' Mettre dans une variable décimale (nb) le degré de rotation ( déplacement x de la souris )

        If MousePosition.X > ax Then    ' si la position de la souris est supérieur a l'ancienne position alors on diminue nb
            droite = droite + 0.05 
 
            If droite > 4.2 Then droite = -2
            Perso1.Angles = New Vector3(TZGlobal.DegToRad(-90), droite, 170) ' puis on fait tourner aussi le personnage
            GoTo suit
        End If

        If MousePosition.X < ax Then   'si la position de la souris est inférieure a l'ancienne position alors on augmente nb
            droite = droite - 0.05  
            If droite < -2 Then droite = 4.2
            Perso1.Angles = New Vector3(TZGlobal.DegToRad(-90), droite, 170) ' puis on fait tourner aussi le personnage
            GoTo suit
        End If

suit:
        ax = MousePosition.X    ' il faut indiquer à la variable ax la nouvelle position y de la souris

        dr.Text = droite

 

' Placer la caméra au niveau de la tête du personnage

' <<hautperso + 50>> position y du personnage (hauteur) + 50 <(la tête)
                   myCamera.Position = New Vector3(av, hautperso + 50, gauche)

' Puis faire une rotation de 2.85 ° si la nouvelle position x est supérieure
                   If MousePosition.X > labelx Then myCamera.Rotate(2.85, 0, 0)

'  et  une rotation de -2.85 ° si la nouvelle position  est inférieure

                  If MousePosition.X < labelx Then myCamera.Rotate(-2.85, 0, 0)

 

 

Enfin Voilà , c'était une petite parentèse sur la caméra du jeu

 

La procedure de gestion réseau

,c'est tout con !

Il suffit d'indiquer au jeu le dossier de partage windows dans un serveur local ou internet , dans le jeu X')

 

 

Vous pouvez mettre un serveur locale , un serveur http / https / ftp  ou ip

ex :

http://monserveur/jeux/cpcsmall3D/

http://169.254.168.224/jeux/cpcsmall3D/

\\monserveur/jeux/cpcsmall3D/

et puis il suffit le mettre toutes les 0.01 sec la position d'un personnage du jeu pour qu'un autre ordinateur récupère cette position et le placer dans le jeu

Attention , dans la programmation faites bien attention à bien fermer le fichier après lecture (close #{numéro-fichier}   file.close({numéro-fichier}), sinon un code d'erreur s'annoncerait. /!\

Vous pouvez echaper à l'interruption avec " On error " .

chaques fois que l'ordinateur veut récupérer la position d'un personnage, il alerne et ne fait jamais en même temps sinon il y aura un mini bloquage de 100 ms toutes les secondes et votre fps sera d'en moyenne de 30 à 10 Fps aulieu d'une centaine !!

donc le jeu serais pretiquemement injouable !

donc il aterne genre:

schéma du RPDJ

toutes 5 ms il récupère la position d'un personnage

donc pour 1 rafraichissement il met :

RPDJ(1)  + RPDJ(4)  + RPDJ(3)  + RPDJ(4)           

5      +       5      +       5           

= 20 ms

et une séparation de 10 ms

donc

pour une filière il met 20 ms

pour une filière complète il met 30 ms

et

20/3 = 6,6666666666666666666666666666667

donc l'ordinateur aura ~6 sec pour faires ses autres opération du jeu

et

20 - 6,6666666666666666666666666666667

= 13,333333333333333333333333333334

DONC :

L'ordinateur  travaillera dans le processus du jeu 13.33 ms a placer les personnages du jeu

et

L'ordinateur travaillera dans le procesus du jeu, 6.66 ms a faire des autres opérations du jeu

donc cela fait en moyene un fps entre 400 et 430 fps !!!! .

 

Tout cela se passe dans 1 procedure ( la récéption )

Puis pour l'envoie de la position du personnage,

c'est tout con, toutes les 1 ms l'ordinateur inscrit la position du personnage dans le fichier.

 

Tout les fichiers lue et inscrit son dans le serveur "dossier de partage", il faut faire confiance a la capacité de l'ordinateur et du disc-dure de l'ordinateur qui est propriétaire du réseau, sinon il y aura du lag dans le jeu,

Dans le jeu , je prévois de mettre en place des veicules, donc (en sachant que ca va plus vite qu'un personnage, donc il y aura une 2eme procedure qui concernera tout véicules du jeu) , il aura même fonction pour le schéma du RPDJ du dessu avec le même intervale.

 

Page en cours d'ecriture...

 

 

5 votes. Moyenne 5.00 sur 5.

Commentaires (2)

1. jiji 12/05/2011

super jeu !!

2. le maitre 16/04/2011

Bon commencement !!

Ajouter un commentaire
 

Créer un site gratuit avec e-monsite - Signaler un contenu illicite sur ce site