Page 1 sur 2
PB 4.31 - Oldskull 2 Revamped !
Publié : mar. 25/août/2009 13:46
par kelebrindae
Bonjour,
Pendant les vacances, j'ai joué avec un petit soft très sympa pour faire des cartes/niveaux de jeux 2D: TileStudio.
Le truc bien avec TileStudio, c'est que l'on peut écrire des petits scripts pour générer du code à partir du niveau construit. J'ai donc écrit un script pour générer du code PB, en prenant pour base le code de scrolling parallax d'Ollivier.
Et pour le mettre au point, j'ai choisi de "re-vamper" l'excellent jeu de Huitbit, à savoir OldSkull 2. (bref: j'ai pompé sur tout le monde...

)
Voici le résultat. Ce n'est pas très optimisé par endroit, mais bon, c'est les vacances... C'est probablement un peu trop dur, aussi...
Scénario: alors qu'il installait un chauffe-eau géothermique dans la cave de la Oldskull Tower, Oldskull s'aperçoit qu'il a percé une poche de magma, lequel commence à envahir le bâtiment. Vite! Oldskull doit se rendre au poste de commande, au sommet de la tour, pour arrêter la pompe! Et comme en plus ça tombe en pleine invasion de chauve-souris géantes, cela risque d'être plus dur que prévu... Serez-vous à la hauteur?
Jeu:
http://keleb.free.fr/codecorner/downloa ... skull2.zip
[EDIT]
j'ai mis a jour le zip avec la version "plus facile" (cf plus bas)
[EDIT 28\08]
mise à jour du zip avec menu corrigé (j'espère)
[EDIT 31\08]
Mise à jour: lave plus jolie et animée
[EDIT 21/09]
AJout du score et des bonus
(Je posterai le script TileStudio dans un autre post...)
A+
Publié : mar. 25/août/2009 16:23
par Huitbit
Wahou !
Quelle bonne surprise pour mon retour de vacances !
Quelques observations
Le menu de fin (continuer, quitter,...) a des petits problèmes chez moi.
Le ventilo se met en marche assez rapidement, est-ce normal ?
La lave est un peu triste comparée au reste du décor !
Hasta la vista !
Publié : mar. 25/août/2009 19:40
par kelebrindae
Merci!
Pour répondre à tes observations:
- Oui, c'est vrai que la lave est un peu "cheap"; j'aurais pu ajouter quelques sprites pour la rendre plus jolie...
- Pour le ventilo, je ne sais pas; ça veut probablement dire que le programme tire beaucoup sur le CPU et/ou la carte graphique, mais comment y remédier?
- Peux-tu me décrire les problèmes que tu rencontres sur le menu de fin ?
Publié : mar. 25/août/2009 23:39
par Huitbit
Cette version est plus dure, les chauve-souris ont mordu un cycliste du Tour ?
- Pour le ventilo, je ne sais pas
No problem, C'est pas la première fois que ça arrive avec mon PC
- Peux-tu me décrire les problèmes que tu rencontres sur le menu de fin ?
Quand je perds, rien ne se passe, j'appuie donc sur Echap et le menu apparaît mais sans la tête de mort, alors le choix se fait au pif !
Une fois le choix effectué, la tête apparaît.
[EDIT]Problème de collision Oldskull~plateforme
Blocage d'Oldskull sur une plateforme

C'est arrrivé plusieurs fois, l'écran se met à trembler et la tête reste bloquée sur la plateforme.
[EDIT]
En tout cas, bon boulot, comme d'hab' !
Hasta la vista !
Publié : mer. 26/août/2009 17:39
par beauregard
superbe, je vois se profiler un travail en commun, continu !

( peut être trop de chauve souris au début)
Publié : jeu. 27/août/2009 9:27
par kelebrindae
J'ai mis à jour le zip pour ajouter 2 "cheats" au jeu:
- en appuyant sur F1, on stoppe la lave. Un 2ème appui, et elle repart.
- en appuyant sur F2, on supprime 3 ou 4 chauve-souris prises au hasard.
ça devrait faciliter un peu les choses; le jeu était vraiment trop dur...
@HuitBit:
J'ai un peu modifié le menu, pour utiliser un sprite plutôt qu'un sprite3D pour la tête de mort. Tu peux ré-essayer s'il te plaît?
(pour les blocages dans les plateformes, je l'ai aussi, mais ça n'empêche pas de bouger: en sautant, on repasse sur la plateforme. J'essaierai de corriger prochainement)
Problème linux!
Publié : jeu. 27/août/2009 10:06
par meganet
Salut, j'ai essayé de compiler ton jeu sous Debian avec pb 4.31, mais il bloque sur la fonction UseBuffer(). Dans la doc il y a pourtant marqué : Windows (DirectX), Linux (SDL).
J'ai bien activé le subsystem opengl (-s opengl), et j'ai bien tout ce qu'il faut d'installer pour sdl et pb en générale, mais il me dit qu'il connaît pas la fonction UseBuffer(). Est-ce qu'il y a un bug du style si on utilise opengl ont peut pas utiliser sdl? Parce que si c'est ça, ça serai bien de le signaler!
Publié : jeu. 27/août/2009 15:04
par Huitbit
Toujours le même problème avec le menu de fin (Suis-je le seul ?

)
En cas d'optimisation...
-Le startdrawing() pour la lave est très gourmand. Un sprite de la largeur de l'écran ne changerait rien au programme
-Tu peux animer uniquement ce qui est visible (plateformes, chauve-souris) sur l'écran (et un peu le voisinage si nécessaire)
Hasta la vista !
Publié : jeu. 27/août/2009 18:09
par Anonyme
+1 pour huitbit
sinon super sympa

Publié : jeu. 27/août/2009 23:22
par Ar-S
Même problème en cas de mort, la tête de mort disparait des qu'on bouge.
Y'a aussi une espèce de scintillement genre freezing lors de sa disparition.
Un petit raccourcis clavier pour terminer le programme serait le bienvenu en attendant la solution car ctrl alt suppr c'est un peu barbare
Sinon c'est excellent ! avec la petite rotation de la tête de mort

j'adore
Publié : ven. 28/août/2009 11:35
par Anonyme
C'est vrai qu'il faut revoir la lave
je te propose ceci :
une p'tite animation de quelques frames à rajouté au sommet de la lave
tu la joue en 50 ou 75ms ca devrais le faire.
tu as même une particule. tu peut t'en servir dès lors qu'une bulle explose
evidement tu joue l'animation aléatoirement , pas en boucle.
Tu divises la surface de la lave en 32 pixels
se qui te donne un nombre ( nombre de bulles potentielles )
tu le met sous forme de tableau , avec un joli random() tu exploses les bulles ( descend le sprite de +2 pixels ) avec un petit jet de particules , tu verras , ca aura de la gueule !

Publié : ven. 28/août/2009 12:32
par kelebrindae
Merci à tous!
Pour l'optimisation:
Tout à fait d'accord avec vous, il y a des trucs assez nuls dans le code. Exemple: je fais 2 boucles sur les plateformes, une pour les déplacer, une autre pour voir si le perso est dessus...
Si j'ai un peu bâclé certains aspects, c'est parce que mon but était de voir en combien de temps je pouvais passer du code généré par TileStudio à un jeu qui fonctionne (en gros, une quinzaine d'heures).
Ceci dit, je vais peut-être quand même corriger deux ou trois détails...
=> merci pour la lave, Cpl.Bator; Je vais l'utiliser.
Pour le menu:
bin

alors... Je ne comprends pas trop; jetez un coup d'oeil au code (procedure "actionMenu"), il n'y a rien de bien sorcier: des box et du texte avec un sprite qui se balade par dessus.
Mon hypothèse est que la priorité des sprites/startDrawing n'est pas la même d'une carte graphique à l'autre, du coup, parfois, le sprite est caché par le menu... Bof

... (Quant à l'espèce de scintillement de l'arrière-plan, c'est dû au fait que je "flippe" les buffers sans les re-dessiner; l'écran passe d'une frame d'animation à l'autre, d'où le clignotement.)
Je vais transformer tout le menu en sprites (plus de startDrawing) et on verra bien.
Je vous tiens au courant!
Publié : ven. 28/août/2009 20:22
par kelebrindae
J'ai mis à jour le zip avec une nouvelle version du menu: tout en sprite, plus de startDrawing. (je croise les doigts...)
[EDIT, 2 heures plus tard]
Ajout d'une ébauche de lave animée. Pas encore de particules, c'est juste pour voir ce que ça donne avec les bulles.
Publié : sam. 29/août/2009 19:29
par kelebrindae
Allez, encore une mise à jour...
=> dans le menu, le sprite "oldskull" était chargé en mode "#PB_Sprite_Texture" parce que c'était celui que j'utilisais pour le perso (qui est un sprite3D); c'est peut-être ça qui causait des problèmes dans certains cas...
Publié : dim. 30/août/2009 1:20
par Huitbit

Plus de problèmes avec le menu depuis l'avant dernière MAJ.
Super les bulles de lave !
Tant que tu es chaud
Y aura-t-il :
- des bonus ?
-un score ?
Est-il possible de distinguer la pause de la fin du jeu ?
Par exemple :
-Echap pour la pause (c'est déjà fait)> continuer, rejouer, quitter
-fin du jeu (contact avec la lave)>rejouer, quitter
Voilà un gros gourmand!
Code : Tout sélectionner
StartDrawing(ScreenOutput())
Box(160,lavaLevel-SCROLL_layer()\LevelY,704,scrH,$0000FF)
StopDrawing()
Je sais, j'abuse
En tout cas encore bravo, ça prend tournure!
Hasta la vista !