PB 4.31 - Oldskull 2 Revamped !

Programmation avancée de jeux en PureBasic
kelebrindae
Messages : 579
Inscription : ven. 11/mai/2007 15:21

PB 4.31 - Oldskull 2 Revamped !

Message 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... :wink: )

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?

Image

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+
Dernière modification par kelebrindae le lun. 21/sept./2009 13:49, modifié 4 fois.
Avatar de l’utilisateur
Huitbit
Messages : 940
Inscription : jeu. 08/déc./2005 5:19
Localisation : Guadeloupe

Message par Huitbit »

Wahou !
Quelle bonne surprise pour mon retour de vacances !
:P

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 !
kelebrindae
Messages : 579
Inscription : ven. 11/mai/2007 15:21

Message 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 ?
Avatar de l’utilisateur
Huitbit
Messages : 940
Inscription : jeu. 08/déc./2005 5:19
Localisation : Guadeloupe

Message 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 :roll:

- 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
Image
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 !
beauregard
Messages : 1307
Inscription : dim. 08/juil./2007 18:32
Localisation : Toulouse

Message par beauregard »

superbe, je vois se profiler un travail en commun, continu ! :)
( peut être trop de chauve souris au début)
kelebrindae
Messages : 579
Inscription : ven. 11/mai/2007 15:21

Message 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)
meganet
Messages : 317
Inscription : jeu. 20/janv./2005 22:00

Problème linux!

Message 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!
Avatar de l’utilisateur
Huitbit
Messages : 940
Inscription : jeu. 08/déc./2005 5:19
Localisation : Guadeloupe

Message 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 !
Anonyme

Message par Anonyme »

+1 pour huitbit

sinon super sympa :D
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Message 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 :D

Sinon c'est excellent ! avec la petite rotation de la tête de mort :) j'adore
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Anonyme

Message par Anonyme »

C'est vrai qu'il faut revoir la lave
je te propose ceci :

Image

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 !
:wink:
kelebrindae
Messages : 579
Inscription : ven. 11/mai/2007 15:21

Message 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!
kelebrindae
Messages : 579
Inscription : ven. 11/mai/2007 15:21

Message 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.
kelebrindae
Messages : 579
Inscription : ven. 11/mai/2007 15:21

Message 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...
Avatar de l’utilisateur
Huitbit
Messages : 940
Inscription : jeu. 08/déc./2005 5:19
Localisation : Guadeloupe

Message par Huitbit »

:P Plus de problèmes avec le menu depuis l'avant dernière MAJ.

Super les bulles de lave !

Tant que tu es chaud :lol:
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! :lol: :lol:

Code : Tout sélectionner

  StartDrawing(ScreenOutput())
      Box(160,lavaLevel-SCROLL_layer()\LevelY,704,scrH,$0000FF)
    StopDrawing()
Je sais, j'abuse
:roll:


En tout cas encore bravo, ça prend tournure!

Hasta la vista !
Répondre