Bon alors évidemment avec la présence d'SFML je fais tache, mais tout de même j'ose croire que je touche un publique encore différent, celui des projets vraiment vraiment simples.
Car SFML a beau s'appeller "Simple..", ca commence à devenir assez gourmand en dépendances. (et opengl ne tourne pas chez tout le monde)
Mon moteur ne dépend que d'SDL: pas SDL_image, pas SDL_gfx, pas SDL_ttf, pas libfreetype, même pas boost. Par contre vs aurez besoin d'SDL_mixer si vous voulez compiler le manager de son.
Autre problème, vs ne pouvez charger que des BMP sans RLE. Il ne gère pas les inputs, a vous de le faire. Pas de roto-zoom non plus, mais vous pouvez dessiner toutes les rotations de votre sprite dans le même BMP en respectant une certaine disposition, et le moteur a une interface pour régler l'angle. Ainsi qu'un systeme pour animer les sprites.
Transparence classique sur la couleur rose.
Et point fort du moteur: gestion des interesections Rect/Oriented Rect/Cercle/Rayon sur des objets statiques avec partitionnement binaire de l'espace.
Pareil que SFLM, je fournis quelques outils de base, timer haute resolution mac/linux/windows, perf profiler, freelist, circularlist, vecteur2d, rects...
Le moteur a été écrit pour Extreme Carnage à la base.
Puis ré-utilisé pour Nuclear Age.
le helloworld ressemble a ca:
Ce qui vous affiche le sprite hello.bmp au milieu de la fenetre, en 640*480 par defaut. (configurable a la construction de spm).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 #include "carnage-engine/spritemanager.hpp" namespace ce = carnage_engine; // let's not bother with gigantic prefixes. int main(int, char**) { // creates a manager, will create a window if there is no window yet. ce::SpriteManager spm; int h = spm.LoadSprite("hello.bmp"); // let's use helper functions to center the sprite: spm.Move(h, ce::GetScreenCenterX(spm.GetW(h)), ce::GetScreenCenterY(spm.GetH(h))); spm.Draw(h); // blit sprite h spm.Update(); // flip surfaces getchar(); // wait for keyboard in the console and quit the program }
ce qui affiche ceci dans le package de demo:
Je suis en train de coder une petite demo, en 230 lignes j'ai un mini jeu de plateforme avec un bonhomme qui marche vers la gauche ou la droite, qui saute quand il est au sol, et qui ne traverse pas le plancher ni les murs:
Bon je vais la perfectionner pour montrer un peu tous les aspects du moteur (la demo fait office de documentation).
J'avais des interrogations quant au bien fondé de lui programmer en option de démarrage un moteur de rendu sous jacent opengl, mais vu qu'il y a SFML je pense que ca sera pas la peine. Par contre pensez vous que se serait une bonne idée de fournir en option de compilation des fonctions roto-zoom et chargement de jpg/png.. qui demanderait sdl_gfx en dependance supplémentaire ?
page source forge avec le moteur et la demo:
https://sourceforge.net/projects/carnage-engine/files/
j'espère que ca pourra servir a quelqu'un !
Partager