Partage
  • Partager sur Facebook
  • Partager sur Twitter

Creation War Of Gods (MMORPG)

en cours

    23 janvier 2006 à 21:23:00

    Bonjour à tous :) (enfin, bonsoir :D )

    Il y'a quelques mois j'ai commencé à créer un mmorpg, mais sans la partie reseau pour le debut, donc un rpg basic ^^
    Mon jeux en est qu'au debut, mais vraiment debut, j'ai just commencé à coder la class character, et la class map.
    C'est un jeux à theme medieval-fantastique. Vous pourrez trouver plus de details ici . Il y a pas mal de truc a enlever si on y reflechi bien, genre pas mal d'anachronisme.

    • type : mmorpg en 2d
    • langage : C++
    • lib graphique : SDL
    • licence : GPL


    Donc pour le debut je maintient de faire comme si c'était un rpg normale, c'est à dire de ne pas s'occuper de la partie reseaux.
    Pour ceux qui desiraient voir le code source, c'est par ici .

    Donc s'il y a des interessés pour m'aider à reprendre le developpement du jeux je suis ouvert :)
    Contacter moi par mp pour de plus amples details ou sur mon msn , voir dans mon profils pour ce dernier.
    • Partager sur Facebook
    • Partager sur Twitter
      23 janvier 2006 à 21:33:14

      Si ça doit être un _MMO_RPG, tu as intérêt à faire ça en prévoyant le côté réseau depuis le début selon moi ; le gameplay est différent d'un RPG classique et les considérations (autres joueurs) aussi.
      De toute façon, je ne fais pas de C++. Voilà tout.
      • Partager sur Facebook
      • Partager sur Twitter
        23 janvier 2006 à 21:47:20

        C'est pas parce que je ne code pas la partie reseau que je n'y tient pas compte ;)
        J'essaye que le code que je fais soit le plus modulable possible et reustilisable n'importe ou.

        Mais pour le moment, là ou j'en suis, c'est pas hyper important, mais j'y pense de plus en plus à la partie reseau quand meme.
        • Partager sur Facebook
        • Partager sur Twitter
          23 janvier 2006 à 22:07:27

          Une petite question : ou as tu apris à te servir de la sdl ?
          • Partager sur Facebook
          • Partager sur Twitter
            23 janvier 2006 à 22:10:18

            Sur le tas.
            J'ai regardé le nom des fonctions et leurs utilitées avec la doc officiel de la sdl, et je me suis debrouillé avec ;)

            Et je precise que c'est super simple :)
            • Partager sur Facebook
            • Partager sur Twitter
              23 janvier 2006 à 22:12:16

              Super simple, bof, surtout avec la doc, les invévitables problèmes de trainée de couleur et autres plantage de programme viennent rapidement.
              • Partager sur Facebook
              • Partager sur Twitter
                24 janvier 2006 à 7:32:47

                Ca y est on commence à voir les premiers topic mmorpg apparaitre ....
                La partie réseau est loin d'etre la plus facile surtout si tu veux faire un _MM_ORPG, j'ai essayé de faire un système de server/client basique, et cay pas super facile.Je te conseille plutot de voir pour gérer la partie réseau en plus, et ensuite de gréfer la partie affichage/interface dessus :)
                • Partager sur Facebook
                • Partager sur Twitter
                  24 janvier 2006 à 12:59:04

                  La partie réseau est la premiere a faire puisque la gestion du coté RPG est effectuée par le serveur et non par le client, donc ca doit etre plutot dur de faire un client et de tout modifier pour l'adapter avec un serveur ..
                  • Partager sur Facebook
                  • Partager sur Twitter
                    24 janvier 2006 à 13:37:03

                    Bah pas si tu codes proprement, en sachant ce que tu vas vraiment faire derrière, hein.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      24 janvier 2006 à 17:28:27

                      J'essaye de dissocier au plus les differentes parties.
                      J'ai essayé que le tout soit le plus modulable possible.
                      Par example, la partie graphique est à part, enfin presque. Il y aura toujours quelque lien etre les differentes partie, mais j'essaye qu'il y en ai le moin :)

                      TosPos : pour les trainées, tu n'as pas le choix, tu es obligé d'effacer l'ecran entierement avant de redessiner ce que tu souhaites.
                      • Partager sur Facebook
                      • Partager sur Twitter
                        24 janvier 2006 à 19:18:18

                        Hum, ya pas moyen de changer que ce qui va bouger ?
                        • Partager sur Facebook
                        • Partager sur Twitter
                          24 janvier 2006 à 19:42:27

                          Citation : Bougie

                          J'essaye de dissocier au plus les differentes parties.
                          J'ai essayé que le tout soit le plus modulable possible.
                          Par example, la partie graphique est à part, enfin presque. Il y aura toujours quelque lien etre les differentes partie, mais j'essaye qu'il y en ai le moin :)

                          TosPos : pour les trainées, tu n'as pas le choix, tu es obligé d'effacer l'ecran entierement avant de redessiner ce que tu souhaites.


                          Oui mais si je veux y blitter une image de fond sur cet écran, je vais pas l'éffacer :( ?
                          • Partager sur Facebook
                          • Partager sur Twitter
                            24 janvier 2006 à 20:04:05

                            Citation : TosTos

                            Citation : Bougie

                            J'essaye de dissocier au plus les differentes parties.
                            J'ai essayé que le tout soit le plus modulable possible.
                            Par example, la partie graphique est à part, enfin presque. Il y aura toujours quelque lien etre les differentes partie, mais j'essaye qu'il y en ai le moin :)

                            TosPos : pour les trainées, tu n'as pas le choix, tu es obligé d'effacer l'ecran entierement avant de redessiner ce que tu souhaites.


                            Oui mais si je veux y blitter une image de fond sur cet écran, je vais pas l'éffacer :( ?


                            Que tu blittes un carré noir, ou une image, ca n'a pas d'importance, le tout es tde le faire avant tout dessin :)
                            • Partager sur Facebook
                            • Partager sur Twitter
                              24 janvier 2006 à 20:33:29

                              Je vois pas trop ce que tu entends par dessin... pour l'instant je ne dessine pas directement dans la fenêtre, je blit mes images et je ne vois pas comment mettre une image de fond et bouger une bonhomme dessus sans avoir la trainée... car si j'efface l'image de fond, et bien on ne la voit plus et c'est pas ce que je veux !
                              • Partager sur Facebook
                              • Partager sur Twitter
                                24 janvier 2006 à 21:10:07

                                Bah il faut tout effacer, deplacer ce que tu veux deplacer, et tout reafficher ensuite.
                                Je vois pas trop d'autre solution, et c'est celle que j'utilise dans mon jeux.
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  24 janvier 2006 à 21:44:54

                                  En gros, pour afficher quelque chose, tu fais comme ca :
                                  - effacer l'écran
                                  - blitter le fond
                                  - affiche tes trucs
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                  Anonyme
                                    25 janvier 2006 à 21:26:36

                                    On peut pas arranger le problème de devoir tout éffacer avec le double-buffering ? Il me semble avoir entendu parler de la fonction :

                                    SDL_Flip(SDL_Surface);

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      26 janvier 2006 à 7:12:06

                                      Je crois que SDL_Flip permute juste les deux buffers, et n'efface en rien la scène. Enfin je suis pas expert de la SDL :D
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        26 janvier 2006 à 18:02:36

                                        Tu as raison asmanur.
                                        DSL_Flip ne fait que permuter les deux buffers, et si le double buffering n'est pas activé, SDL_Filp revient à faire un SDL_UpdateRect()
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          26 janvier 2006 à 18:03:47

                                          SDL c'est super. Pour le fenêtrage, pour charger des images, pour la gestion des events, c'est vraiment bon ( enfin y'a QT qui est pas mal du tout non plus ).
                                          Mais je pense qu'il est préférable pour les graphismes, l'affichage, d'utiliser OpenGL.
                                          C'est simple, portable, très utilisé, et le rendu est autrement plus rapide et meilleur, pour aussi des millions de fonctions permettant une foule d'effets impressionnants.
                                          DOnc je te conseille de te mettre à OpenGL pour ton mmorpg, ou, si tu ne veux pas, renseignes toi quand même, c'est vraiment bien ;).
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            26 janvier 2006 à 19:12:42

                                            Je connai opengl, mais pour mon jeux, j'en vois pas trop l'utilité.
                                            Et j'ai pas non plus envi de tout recoder depuis le debut :p

                                            Et pour de la 2D, je sais pas si c'est effectivement plus rapide.
                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              26 janvier 2006 à 19:32:25

                                              Surtout qu'on peut utiliser openGL depuis la SDL si on le souhaite (et pour le rendu 3D).
                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                26 janvier 2006 à 19:34:41

                                                Je me permets de profiter de ce topic pour demander une réponse à la question que je me pose depuis des jours, je n'arrive toujours pas malgré vos indications à :

                                                - Déplacer un objet (sImage) sur un fond (sFond) qui est lui blitté sur l'écran de base (sEcran); le tout sans faire de trainée ni effet de scintillement ou autre.

                                                Voila mon code, si quelqu'un peut y apporter la modification magique et me l'expliquer il serait cool :


                                                // Le header de SDL
                                                #include <SDL.h>

                                                // Les surfaces
                                                SDL_Surface * sEcran;
                                                SDL_Surface * sImage;
                                                SDL_Surface * sFond;

                                                void init()
                                                {
                                                    // Initialisation
                                                    SDL_Init(SDL_INIT_VIDEO);
                                                    sEcran = SDL_SetVideoMode(800, 600, 32,SDL_HWSURFACE|SDL_DOUBLEBUF|SDL_FULLSCREEN);
                                                    SDL_ShowCursor(0);

                                                    // Chargement de l'image
                                                    sImage=SDL_LoadBMP("img.bmp");
                                                       sFond=SDL_LoadBMP("img2.bmp");
                                                }

                                                void Quit()
                                                {
                                                    SDL_FreeSurface(sImage);
                                                     SDL_FreeSurface(sFond);
                                                    SDL_FreeSurface(sEcran);
                                                    SDL_ShowCursor(1);
                                                    SDL_Quit();
                                                bool exit(0);
                                                }

                                                int main(int argc, char *argv[])
                                                {

                                                    init();

                                                    SDL_Rect rect; // Source
                                                    SDL_Rect dest; // Destination
                                                    SDL_Event event; // On en aura besoin plus tard

                                                    rect.x=0;
                                                    rect.y=0;
                                                    rect.w=80;
                                                    rect.h=80; // L'image fait 80x80
                                                   
                                                 dest.x=200;
                                                    dest.y=260;
                                                    dest.w=200;
                                                    dest.h=200;

                                                    // Boucle principale
                                                    while(true)
                                                    {
                                                               SDL_FillRect(sEcran,NULL,0);
                                                                   
                                                Uint8 *keys;
                                                keys = SDL_GetKeyState(NULL);



                                                        if(keys[SDLK_UP])
                                                        {
                                                                         SDL_FillRect(sFond,NULL,0);
                                                                                   dest.y-=5;
                                                                    if(dest.y<0)
                                                                        dest.y=0;
                                                                       
                                                        }
                                                                if(keys[SDLK_DOWN])
                                                        {
                                                                SDL_FillRect(sFond,NULL,0);
                                                                        dest.y+=1;
                                                                    if(dest.y>519)
                                                                        dest.y=519;
                                                        }
                                                                if(keys[SDLK_RIGHT])
                                                        {
                                                                SDL_FillRect(sFond,NULL,0);
                                                                    dest.x+=1;
                                                                    if(dest.x>719)
                                                                        dest.x=719;
                                                        }
                                                                if(keys[SDLK_LEFT])
                                                        {
                                                                SDL_FillRect(sFond,NULL,0);
                                                                                   dest.x-=1;
                                                                    if(dest.x<0)
                                                                        dest.x=0;
                                                        }
                                                        // Tant qu'il y a des evennements
                                                        while(SDL_PollEvent(&event))
                                                        {
                                                            // Si c'est un message SDL_QUIT
                                                            if(event.type==SDL_QUIT)
                                                            {
                                                                Quit();
                                                            }
                                                            // Si c'est un évennement clavier
                                                            else if(event.type==SDL_KEYDOWN)
                                                            {

                                                                // Si c'est la touche Echap
                                                                if(event.key.keysym.sym==SDLK_ESCAPE)
                                                                    Quit();
                                                                if(event.key.keysym.sym==SDLK_SPACE)
                                                                {
                                                long posYinit = dest.y;
                                                               while ((posYinit - dest.y) < 200)
                                                               {
                                                                    dest.y--;
                                                                    long sleep(5000);
                                                                    }
                                                                }
                                                            }
                                                        }


                                                 SDL_BlitSurface(sFond,NULL,sEcran,NULL);
                                                         SDL_Flip(sEcran);
                                                         SDL_BlitSurface(sImage,&rect,sFond,&dest);
                                                        SDL_Flip(sFond);

                                                    }

                                                    return 0;

                                                }
                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  26 janvier 2006 à 19:36:39

                                                  Citation : Bougie

                                                  Je connai opengl, mais pour mon jeux, j'en vois pas trop l'utilité.
                                                  Et j'ai pas non plus envi de tout recoder depuis le debut

                                                  Et pour de la 2D, je sais pas si c'est effectivement plus rapide.



                                                  OpenGl gère très bien la 2D et c'est largement plus rapide que SDL, il n'y a pas photo.
                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    26 janvier 2006 à 19:42:59

                                                    Mouais, après faut voir si le gain vaut le coup. SDL est *simple*. Et puis ça reste un driver graphique du programme, si on veut changer plus tard, suffira de recoder le driver graphique. (D'où l'intérêt de coder de manière extensible)
                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      26 janvier 2006 à 21:01:03

                                                      Citation : loacast

                                                      Citation : Bougie

                                                      Je connai opengl, mais pour mon jeux, j'en vois pas trop l'utilité.
                                                      Et j'ai pas non plus envi de tout recoder depuis le debut

                                                      Et pour de la 2D, je sais pas si c'est effectivement plus rapide.



                                                      OpenGl gère très bien la 2D et c'est largement plus rapide que SDL, il n'y a pas photo.



                                                      Comme je l'ai dit plus haut, tu peux coder depuis la SDL en utilisant openGL pour la partie graphique. La différence de vitesse devient donc négligeable (et c'est pas mal plus simple que prendre openGL et se démerder pour trouver les autres fonctions portables et tout).
                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                        27 janvier 2006 à 14:17:16

                                                        Oui, Perso j'utilise le couple SDL/OpenGL pour toutes mes applications ( mais j'envisgae de passer à QT qui me parait mieux enfin ca reste a prouver ). rz0 -> SDL est simple ? Ca alors :). Avec les blits, les flips les surfaces et tout, c'est beaucoup plus complexe qu'OpenGL a mon avis.
                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                          27 janvier 2006 à 19:46:33

                                                          Un petit up pour mon problème :( ?
                                                          • Partager sur Facebook
                                                          • Partager sur Twitter
                                                            28 janvier 2006 à 13:58:26

                                                            On te l'as dis comment faire.
                                                            Maintenant, c'est à toi de recoder ce que tu veux pour que ça fasse ce que tu veux.
                                                            Tu peux aussi regarder mon code pour voir comment ça marche.

                                                            Par contre, je te conseil de mettre toutes tes SDL_Surface dans un container pour pouvoir les rebliter dans l'ordre ;)
                                                            • Partager sur Facebook
                                                            • Partager sur Twitter
                                                              28 janvier 2006 à 14:21:32

                                                              C'est bon j'ai eu réponse à ce que je cherchais depuis ;) mais bon j'ai eu un nouveau problème : j'arrive pas à décomposer un mouvement, pour faire faire un saut à mon personnage par exemple, il passe directement en haut de l'écran sans faire un mouvement fluide
                                                              • Partager sur Facebook
                                                              • Partager sur Twitter

                                                              Creation War Of Gods (MMORPG)

                                                              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                                              • Editeur
                                                              • Markdown