Lo

Grade : Expert
Inscrit le: 26 Dec 2007, 17:33
|
| Ecrit le: 27 Sept 2008, 15:43 Message non corrigé | |
|
Bah je sais pas si on va pouvoir faire des jeux de se style là, mais si j'en serai capable, je serai déjà bien content.
C'est un jeux gratuit aux quel je jouais sur internet, à part que sur mon PC il lag à mort, je trouves que il est bien fait, il est en pleine évolution.
Evidement, curieux comme je suis, j'ai regarder un peu le code source que je ne comprends pas.
Alors je vous mets juste une partie du main :
#include "pch.h"
#include "engine.h"
void cleanup()
{
cleanupserver();
SDL_ShowCursor(1);
freeocta(worldroot);
extern void clear_command(); clear_command();
extern void clear_console(); clear_console();
extern void clear_mdls(); clear_mdls();
extern void clear_sound(); clear_sound();
SDL_Quit();
}
void quit() // normal exit
{
extern void writeinitcfg();
writeinitcfg();
writeservercfg();
abortconnect();
disconnect(1);
writecfg();
cleanup();
exit(EXIT_SUCCESS);
}
void fatal(const char *s, ...) // failure exit
{
static int errors = 0;
errors++;
if(errors <= 2) // print up to one extra recursive error
{
s_sprintfdlv(msg,s,s);
puts(msg);
if(errors <= 1) // avoid recursion
{
SDL_ShowCursor(1);
#ifdef WIN32
MessageBox(NULL, msg, "sauerbraten fatal error", MB_OK|MB_SYSTEMMODAL);
#endif
SDL_Quit();
}
}
exit(EXIT_FAILURE);
}
SDL_Surface *screen = NULL;
int curtime;
int totalmillis = 0, lastmillis = 0;
dynent *player = NULL;
static int initing = NOT_INITING;
static bool restoredinits = false;
bool initwarning(const char *desc, int level, int type)
{
if(initing < level)
{
addchange(desc, type);
return true;
}
return false;
}
VARF(scr_w, 320, 1024, 10000, initwarning("screen resolution"));
VARF(scr_h, 200, 768, 10000, initwarning("screen resolution"));
VARF(colorbits, 0, 0, 32, initwarning("color depth"));
VARF(depthbits, 0, 0, 32, initwarning("depth-buffer precision"));
VARF(stencilbits, 0, 1, 32, initwarning("stencil-buffer precision"));
VARF(fsaa, -1, -1, 16, initwarning("anti-aliasing"));
VARF(vsync, -1, -1, 1, initwarning("vertical sync"));
void writeinitcfg()
{
if(!restoredinits) return;
FILE *f = openfile("init.cfg", "w");
if(!f) return;
fprintf(f, "// automatically written on exit, DO NOT MODIFY\n// modify settings in game\n");
extern int fullscreen;
fprintf(f, "fullscreen %d\n", fullscreen);
fprintf(f, "scr_w %d\n", scr_w);
fprintf(f, "scr_h %d\n", scr_h);
fprintf(f, "colorbits %d\n", colorbits);
fprintf(f, "depthbits %d\n", depthbits);
fprintf(f, "stencilbits %d\n", stencilbits);
fprintf(f, "fsaa %d\n", fsaa);
fprintf(f, "vsync %d\n", vsync);
extern int useshaders, shaderprecision;
fprintf(f, "shaders %d\n", useshaders);
fprintf(f, "shaderprecision %d\n", shaderprecision);
extern int soundchans, soundfreq, soundbufferlen;
fprintf(f, "soundchans %d\n", soundchans);
fprintf(f, "soundfreq %d\n", soundfreq);
fprintf(f, "soundbufferlen %d\n", soundbufferlen);
fclose(f);
}
void screenshot(char *filename)
{
SDL_Surface *image = SDL_CreateRGBSurface(SDL_SWSURFACE, screen->w, screen->h, 24, 0x0000FF, 0x00FF00, 0xFF0000, 0);
if(!image) return;
uchar *tmp = new uchar[screen->w*screen->h*3];
glPixelStorei(GL_PACK_ALIGNMENT, 1);
glReadPixels(0, 0, screen->w, screen->h, GL_RGB, GL_UNSIGNED_BYTE, tmp);
uchar *dst = (uchar *)image->pixels;
loopi(screen->h)
{
memcpy(dst, &tmp[3*screen->w*(screen->h-i-1)], 3*screen->w);
endianswap(dst, 3, screen->w);
dst += image->pitch;
}
delete[] tmp;
if(!filename[0])
{
static string buf;
s_sprintf(buf)("screenshot_%d.bmp", lastmillis);
filename = buf;
}
else path(filename);
SDL_SaveBMP(image, findfile(filename, "wb"));
SDL_FreeSurface(image);
}
COMMAND(screenshot, "s");
COMMAND(quit, "");
static void getcomputescreenres(int &w, int &h)
{
float wk = 1, hk = 1;
if(w < 1024) wk = 1024.0f/w;
if(h < 768) hk = 768.0f/h;
wk = hk = max(wk, hk);
w = int(ceil(w*wk));
h = int(ceil(h*hk));
}
Si vous voulez avoir tout le code source du jeux, bah le jeux à télécharger qui est bien se trouve à cette adresse, seul problème, le jeux est en Anglais (c'est un style à Quake II) ==>Cliquer ici
Fin je sais pas si ce code peut déjà donner une idée de ce que c'est la création de jeux vidéos, mais est-ce qu'on pourra vraiment créer des jeux de ce genre là ? (ou pas)
Pcq le code source me semble chaud.
________ Parce qu'on ne peut s'exprimer que par nos créations. ^^
|
|
Lo

Grade : Expert
Inscrit le: 26 Dec 2007, 17:33
|
| Ecrit le: 01 Oct 2008, 15:43 Message non corrigé | |
|
Ha wi d'accord u_u, pcq moi j'ai lu le tuto de Matéo 21 sur le c++, ou il nous à montrer comment créer des fichier.h, avec les attributs (private) et méthode (public) comme quand je crée des programmes en Java, mais ici, je vois que c'est plutôt des structures qui sont utilisées. (un truc qui n'existe pas en Java, tout comme les pointeurs et que j'ai mis un moment avant de comprendre.)
C'est vrai que les pointeurs de structures sont plus simple à manipuler que les pointeurs sur les objets comme je l'ai lu dans le tuto de Matéo 21, je sais pas si tu vois ce que c'est, ou il nous à montrer comment lier par exemple une arme à un personnage.
Enfin soit, ça je choisirai bien moi-même la manière que j'utiliserai, enfin soit, je vais jeter un oeuil sur le tutoriel que tu as mis déjà pour les modèles md2.
Mmmh, voilà j'ai tout lu, en fait toutes les informations de bases sont stockées dans un fichier md2 (coordonnées initialses des textures, etc...), ensuite lues, et ensuite on affiche les déplacements des personnages à l'aide de openGL si j'ai bien compris.
________ Parce qu'on ne peut s'exprimer que par nos créations. ^^
|
|