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

Vous utilisez un logiciel de type AdBlock, qui bloque le service de captchas publicitaires utilisé sur ce site. Pour pouvoir envoyer votre message, désactivez Adblock.

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

×