Migration de mon projet de Jeu Rol'An'Go VB6 vers PureBasic

Programmation avancée de jeux en PureBasic
Avatar de l’utilisateur
Vetea
Messages : 12
Inscription : mar. 22/mai/2012 19:28
Localisation : 34 Hérault
Contact :

Re: Migration de mon projet de Jeu Rol'An'Go VB6 vers PureBa

Message par Vetea »

comtois a écrit :Un exemple de scrolling avec 2 plans , le perso passe devant ou derrière un arbre en fonction de sa position Y. (c'est l'exemple cité par blendman)

ftp://ftp-developpez.com/comtois/fichie ... P_ARKS.zip
En effet, impressionnant ...
Je serai bien incapable de réaliser ce genre de chose actuellement :oops: !
J'ai remis une petite Maj' pour mon Moteur 2D : Moteur 2D Rol'an'Go

V.
Avatar de l’utilisateur
Vetea
Messages : 12
Inscription : mar. 22/mai/2012 19:28
Localisation : 34 Hérault
Contact :

Re: Migration de mon projet de Jeu Rol'An'Go VB6 vers PureBa

Message par Vetea »

Voici les avancés de l'éditeur de Map HD !

Capture d'écran du développement actuel :

Image

Informations du codage en cours de l'éditeur :

*/ Au démarrage de l'éditeur, il sera demandé de choisir la taille de la carte :
- STD ( standard ) : 32 x 32
- L ( Large ) : 64 x 64
- XL ( Immense ) : 80 x 80
*/ Poursuite du codage des Tiles de bases.
*/ Création de l'objet carte en prévision des sauvegardes.
*/ Scrolling de la carte principale avec des "ScrollBar" pour le moment ...

J'ai pas mal avancé sur le développement ! Le plus long et rébarbatif est le codage des Tiles, chose que je fais en dilettante !
Le codage des outils ( Remplissage, gomme, ... ) est pratiquement terminé ...
La sauvegarde de la map se fera en deux parties : La partie graphique ( en *.bmp ), et la partie DAT ( les données de map )
( Il y aussi le travail d'animation des sprites qui reste à faire, le gros point noir encore vu le temps énorme que cela prend ... )

J'avoue que la migration vers PB n'est pas encore à l'ordre du jour ... Ce qui est positive dans la démarche, c'est que cela me donne une autre manière de réfléchir dans le codage du projet, du coup des méthodes que je ne faisais pas auparavant, sont devenues plus évidentes maintenant ! :)
On verra la migration pour plus tard ...

A bientôt pour d'autres nouvelles !

V.

PS : Si le post vous semble hors sujet par rapport au langage employé ( VB6 ), dites le moi, j'y mettrai fin en attendant de vous proposer mes premiers travaux en PB ... :)
Avatar de l’utilisateur
case
Messages : 1528
Inscription : lun. 10/sept./2007 11:13

Re: Migration de mon projet de Jeu Rol'An'Go VB6 vers PureBa

Message par case »

d’après ce que je vois il est possible d’améliorer grandement l'editeur en ajoutant un système de blocs.

exemple les arbres visiblement tu les pose tile par tile, il serait plus simple de créer pour chaque arbre un bloc qui contient toute les tuiles ainsi au lieu de dessiner tuile par tuile tu sélectionne ton bloc arbre et tu le pose ou tu veux.

pour ce qui est du langage, c'est un forum purebasic, et même si ton projet est très intéressant et que son portage aurait sa place ici , l'avancement du coté visual-basic n'a pas sa place ici en tout cas pas dans cette section, peut être qu'il serait bon de créer un post dans hors sujet ou là rien n’empêche personne de parler d'un projet en VB, asm ou C.

mais l'avis d'un modo/admin serait le bienvenue la dessus et permettrait d'avoir la ligne de conduite officielle a ce sujet :)

petit éditeur vite fait pour montrer mon histoire de block

en mode simple on dessine directement sur la map avec la tile selectionée a droite.
en mode block on dessine avec le block dessine dans la petite grille en bas a gauche.


image a sauver dans le même répertoire que l’éditeur
Image

Code : Tout sélectionner


Declare display()
Declare grid(l,h,s)
UsePNGImageDecoder()
InitSprite()
Structure tile
  sprite.i
  image.i  
EndStructure
Global main=OpenWindow(#PB_Any,0,0,1024,768,"editor test",#PB_Window_ScreenCentered|#PB_Window_SystemMenu)
Global editor=OpenWindowedScreen(WindowID(main),0,0,512,512,0,0,0)
Global tileset=LoadImage(#PB_Any,"inq_-_medieval.png")
Global picker=CanvasGadget(#PB_Any,520,0,480,480,#PB_Canvas_Keyboard)
Global blocked=CanvasGadget(#PB_Any,0,520,128,128,#PB_Canvas_Keyboard)
Global Dim board(32,32)
Global Dim block(8,8)
Global curenttile
Global mode=1
For x=0 To 7
  For y=0 To 7
    block(x,y)=-1
  Next
Next
blockmode=OptionGadget(#PB_Any,160,520,120,20,"block mode")
simplemode=OptionGadget(#PB_Any,160,540,120,20,"simple mode")
clearblock=ButtonGadget(#PB_Any,160,560,120,20,"clear block")
SetGadgetState(simplemode,1)
TransparentSpriteColor(#PB_Default,$ff00ff)
x=0
y=0
StartDrawing(ScreenOutput())
DrawImage(ImageID(tileset),0,0)
Global tilemax=(ImageWidth(tileset)/16)*(ImageHeight(tileset)/16)
Global Dim tiles.tile(tilemax) 
StopDrawing()
For yd=0 To 31
  For xd=0 To 31
    board(xd,yd)=394 ; grass
  Next  
Next
Repeat
  tiles(t)\sprite=GrabSprite(#PB_Any,x,y,16,16)  
  tiles(t)\image=GrabImage(tileset,#PB_Any,x,y,16,16)
  x+16
  If x>=ImageWidth(tileset)
    x=0
    y+16
  EndIf  
  t+1
Until y>=ImageHeight(tileset)
Debug "done"
;-----------------------------------------
Repeat
  ev=WaitWindowEvent()  
  If ev
    If  GetAsyncKeyState_(#VK_LBUTTON)
      
      If WindowMouseX(main)<512 And WindowMouseY(main)<512 
        xs=    WindowMouseX(main)/16            
        ys=    WindowMouseY(main)/16        
        If mode=0
          For x=0 To 7
            For y=0 To 7
              If block(x,y)>=0
                If xs+x<32 And xs+x>=0 And ys+y<32 And ys+y>=0
                  board(xs+x,ys+y)=block(x,y)
                EndIf
              EndIf
            Next     
          Next
        Else
          board(xs,ys)=curenttile
        EndIf
      EndIf
    EndIf    
    Select ev           
      Case #PB_Event_Gadget
        Select EventGadget()
          Case clearblock
            For x=0 To 7
              For y=0 To 7
                block(x,y)=-1
              Next
            Next
          Case simplemode,blockmode
            mode=GetGadgetState(simplemode)              
          Case picker
            Select EventType()
              Case #PB_EventType_LeftClick
                x=GetGadgetAttribute(picker, #PB_Canvas_MouseX)
                y=GetGadgetAttribute(picker, #PB_Canvas_MouseY)
                oldtile=curenttile
                curenttile=(x/16)+((y/16)*(ImageWidth(tileset)/16))
                If curenttile>=tilemax
                  curenttile=oldtile
                EndIf                
            EndSelect
          Case blocked ;editeur de block
            Select EventType()
              Case #PB_EventType_LeftClick
                x=GetGadgetAttribute(blocked, #PB_Canvas_MouseX)/16
                y=GetGadgetAttribute(blocked, #PB_Canvas_MouseY)/16
                block(x,y)=curenttile       
            EndSelect
        EndSelect
    EndSelect
  EndIf
  display()
  FlipBuffers()
  
Until ev=#PB_Event_CloseWindow
End
Procedure display()
  For yd=0 To 31
    For xd=0 To 31
      If IsSprite(tiles(board(xd,yd))\sprite)
        DisplayTransparentSprite(tiles(394)\sprite,xd*16,yd*16)          
        DisplayTransparentSprite(tiles(board(xd,yd))\sprite,xd*16,yd*16)
      EndIf
    Next  
  Next
  StartDrawing(ScreenOutput())
  grid(512,512,16)
  StopDrawing()
  StartDrawing(CanvasOutput(picker))
  px=0
  py=0
  For pick=0 To tilemax
    If IsImage(tiles(pick)\image)
      DrawImage(ImageID(tiles(pick)\image),px,py)      
      px+16
      If px>=480
        px=0
        py+16
      EndIf
    EndIf
  Next  
  grid(480,480,16)
  StopDrawing()
  StartDrawing(CanvasOutput(blocked))
  Box(0,0,128,128,$444444)
  For x=0 To 7
    For y=0 To 7
      If block(x,y)>=0
        If IsImage(tiles(block(x,y))\image)
          DrawImage(ImageID(tiles(block(x,y))\image),x*16,y*16)
        EndIf
      EndIf
    Next
  Next
  grid(128,128,16)
  StopDrawing()
  If WindowMouseX(main)<512
    If WindowMouseY(main)<512
      Select mode
        Case 1; sprites
          DisplayTransparentSprite(tiles(curenttile)\sprite,(WindowMouseX(main)/16)*16,(WindowMouseY(main)/16)*16)
        Case 0 ; block
          For x=0 To 7
            For y=0 To 7
              If block(x,y)>=0
                If IsSprite(tiles(block(x,y))\sprite)
                  DisplayTransparentSprite(tiles(block(x,y))\sprite,(WindowMouseX(main)/16)*16+x*16,(WindowMouseY(main)/16)*16+y*16)
                EndIf
              EndIf
            Next
          Next
      EndSelect
    EndIf
  EndIf
EndProcedure
Procedure grid(l,h,s)
  For x=0 To L/s
    LineXY(x*s,0,x*s,h,0)
  Next
  For y=0 To h/s
    LineXY(0,y*s,l,y*s,0)
  Next  
EndProcedure
ImageImage
comtois
Messages : 5172
Inscription : mer. 21/janv./2004 17:48
Contact :

Re: Migration de mon projet de Jeu Rol'An'Go VB6 vers PureBa

Message par comtois »

Comme indiqué par case tu peux définir des ensembles de blocs allant du simple au plus complexe.
Par exemple pour automatiser la construction de murs, ou de routes, etc .

Code : Tout sélectionner

; --- Initialisation ---
If InitSprite() = 0 Or InitKeyboard() = 0 Or InitMouse() = 0
  MessageRequester("Erreur", "Impossible d'initialiser DirectX 7 Ou plus", 0)
  End
EndIf

; --- Plein écran ---
#ScreenWidth = 1024
#ScreenHeight = 768
#ScreenDepth = 32

If OpenScreen(#ScreenWidth,#ScreenHeight,#ScreenDepth,"Editeur Map") = 0
  MessageRequester("Erreur", "Impossible d'ouvrir l'écran ", 0)
  End
EndIf

Declare ControleTile(x,y,AddTile)
; --- Variables Globales ---
Global SourisX,SourisY,ChoixTile


; --- La Map ---
#TailleTileX = 32
#TailleTileY = 32
#TailleMapX = #ScreenWidth / #TailleTileX
#TailleMapY = #ScreenHeight / #TailleTileY

; --- Tiles ---

Enumeration
  #FondMap
  #FinGauche   
  #FinDroit       
  #Horizontal     
  #FinHaut     
  #CoinHautGauche     
  #CoinHautDroit   
  #TeBas           
  #FinBas         
  #CoinBasGauche
  #CoinBasDroit   
  #TeHaut       
  #Vertical         
  #TeDroit                   
  #TeGauche       
  #Croix   
  #Souris
EndEnumeration

ChoixTile = #Croix

Global Dim Map(#TailleMapX,#TailleMapY)

; --- Charge les tiles ---
;Pour faciliter la diffusion sur un forum ici on dessine les sprites
Couleur = $987654
Fond = $654321
For i = #FondMap To #Croix
  CreateSprite(i, 32, 32)
  StartDrawing(SpriteOutput(i))
  Box(0, 0, 32, 32, Fond) 
  If i = #FondMap
    Box(0, 0, 32, 32, 0) 
  EndIf 
  If i = #Horizontal Or i = #FinGauche Or i = #FinDroit
    Box(0, 0, 32, 4, Couleur)
    Box(0, 28, 32, 4, Couleur)
  EndIf
  If i = #Vertical Or i = #FinBas Or i = #FinHaut
    Box(0, 0, 4, 32, Couleur)
    Box(28, 0, 4, 32, Couleur)
  EndIf
  If i = #FinGauche Or i = #CoinBasGauche Or i = #CoinHautGauche Or i = #TeDroit
    Box(0, 0, 4, 32, Couleur)
  EndIf
  If i = #FinDroit Or i = #CoinBasDroit Or i = #CoinHautDroit Or i = #TeGauche
    Box(28, 0, 4, 32, Couleur)
  EndIf
  If i = #FinBas Or i = #CoinBasGauche Or i = #CoinBasDroit Or i = #TeHaut
    Box(0, 28, 32, 4, Couleur)
  EndIf
  If i = #FinHaut Or i = #CoinHautGauche Or i = #CoinHautDroit Or i = #TeBas
    Box(0, 0, 32, 4, Couleur)
  EndIf
  If i <> #FondMap
    Box(0, 0, 4, 4, Couleur)
    Box(28, 0, 4, 4, Couleur)
    Box(0, 28, 4, 4, Couleur)
    Box(28, 28, 4, 4, Couleur)
  EndIf
  StopDrawing()
Next 

CreateSprite(#Souris, 32, 32)
StartDrawing(SpriteOutput(#Souris))
Line(0, 0, 32, 32, $FFFFFF)
Line(32, 0, -32, 32, $FFFFFF)
StopDrawing()

; LoadSprite(#CoinHautGauche,"tiles\hautgauche.BMP")
; LoadSprite(#Horizontal,"tiles\horizontal.BMP")
; LoadSprite(#CoinHautDroit,"tiles\hautdroit.BMP")
; LoadSprite(#Vertical,"tiles\vertical.BMP")
; LoadSprite(#CoinBasDroit,"tiles\basdroit.BMP")
; LoadSprite(#CoinBasGauche,"tiles\basgauche.BMP")
; LoadSprite(#TeDroit,"tiles\Tedroit.BMP")
; LoadSprite(#TeGauche,"tiles\Tegauche.BMP")
; LoadSprite(#TeHaut,"tiles\Tehaut.BMP")
; LoadSprite(#TeBas,"tiles\Tebas.BMP")
; LoadSprite(#Croix,"tiles\Croix.BMP")
; LoadSprite(#FondMap,"tiles\fondmap.BMP")
; LoadSprite(#FinDroit,"tiles\findroit.BMP")
; LoadSprite(#FinGauche,"tiles\fingauche.BMP")
; LoadSprite(#FinHaut,"tiles\finhaut.BMP")
; LoadSprite(#FinBas,"tiles\finbas.BMP")


; ************************************************************************************
; ***                            LES PROCEDURES                                    ***
; ************************************************************************************

Procedure Souris()
  If ExamineMouse()
   
    DisplayTransparentSprite(#Souris, MouseX() - #TailleTileX / 2,MouseY() - #TailleTileY / 2)
   
    SourisX = MouseX() / #TailleTileX
    SourisY = MouseY() / #TailleTileY   
       
    If SourisX <= #TailleMapX And SourisY <= #TailleMapY
     
      If MouseButton(#PB_MouseButton_Right)
        Map(SourisX, SourisY) = #FondMap
        ControleTile(SourisX, SourisY, #FondMap)
      EndIf
     
      If MouseButton(#PB_MouseButton_Left)
        Map(SourisX, SourisY) = #FinGauche
        ControleTile(SourisX, SourisY, #True)
      EndIf   
     
    EndIf
  EndIf
 
EndProcedure



Procedure ControleTile(x, y, AddTile)
 
  ChoixTile = #FondMap
 
  If Map(x,y) > 0 : centre = #True : EndIf
 
  If AddTile 
   
    If x < #TailleMapX
      If Map(x + 1,y) > 0 : ChoixTile | #FinGauche : EndIf
    EndIf
   
    If x > 0
      If Map(x - 1,y) > 0 : ChoixTile | #FinDroit : EndIf
    EndIf
   
    If y < #TailleMapY
      If Map(x,y + 1) > 0 : ChoixTile | #FinHaut : EndIf
    EndIf
   
    If y > 0
      If Map(x,y - 1) > 0 : ChoixTile | #FinBas : EndIf
    EndIf
   
    If centre = #True
      If ChoixTile = #FondMap : ChoixTile = #Croix  : EndIf
    Else
      ChoixTile = #FondMap
    EndIf
   
  Else
    ChoixTile = #FondMap
  EndIf
 
  Change = ChoixTile <> Map(x,y)
  Map(x,y) = ChoixTile

  If Change = 1 Or AddTile = #FondMap
   
    If x > 0           : ControleTile(x - 1, y, #True) : EndIf
    If x < #TailleMapX : ControleTile(x + 1, y, #True) : EndIf
    If y > 0           : ControleTile(x, y - 1, #True) : EndIf
    If y < #TailleMapY : ControleTile(x, y + 1, #True) : EndIf
   
  EndIf
 
EndProcedure   

Repeat
 
  ClearScreen(0)
 
  ; --- Affiche la map ---
  For j = 0 To #TailleMapY
    For i = 0 To #TailleMapX
      DisplaySprite(Map(i, j), i * #TailleTileX, j * #TailleTileY)
    Next
  Next 
 
  ; --- état du clavier ---
  ExamineKeyboard()
   
  ; --- Gestion de la souris ---   
  Souris()
 
  FlipBuffers()
 
Until KeyboardPushed(#PB_Key_Escape)

End 
 
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Avatar de l’utilisateur
Vetea
Messages : 12
Inscription : mar. 22/mai/2012 19:28
Localisation : 34 Hérault
Contact :

Re: Migration de mon projet de Jeu Rol'An'Go VB6 vers PureBa

Message par Vetea »

Je poursuis l'aventure en VB6, le PureBasic restera au placard ... merci de votre aide !

Cloturez le post si vous voulez !

Dernier travaux :

Image

... et dernier post !

V.
Avatar de l’utilisateur
case
Messages : 1528
Inscription : lun. 10/sept./2007 11:13

Re: Migration de mon projet de Jeu Rol'An'Go VB6 vers PureBa

Message par case »

c'est ton choix, bonne route ,)
ImageImage
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Re: Migration de mon projet de Jeu Rol'An'Go VB6 vers PureBa

Message par djes »

A bientôt ;)
jbernard13
Messages : 1501
Inscription : dim. 18/avr./2004 15:04
Localisation : sud de la france

Re: Migration de mon projet de Jeu Rol'An'Go VB6 vers PureBa

Message par jbernard13 »

salut Vetea

tu es drolement doué en dessin et programation surtout en VB6 .
ça ma donner envie de crée un jeu 2D voir un editeur
j'adorer ton travail
j'espere une chose c'est de voir la suite de ton editeur .....
Jbernard13
Avatar de l’utilisateur
Vetea
Messages : 12
Inscription : mar. 22/mai/2012 19:28
Localisation : 34 Hérault
Contact :

Re: Migration de mon projet de Jeu Rol'An'Go VB6 vers PureBa

Message par Vetea »

Bonjour à tous et meilleurs voeux à toute l'équipe !!

Je vous tiens informé des suites de mon projet ( en basic Vb 6 ) :

Image

Bonjour à tous !!!

Je suis le créateur d'un jeu de rôle & stratégie en tour par tour nommé Rol'An'Go ( disponible sur le site officiel : http://www.rolango.fr mais en arrêt définitif de dév. ) mais aussi de Danny The Boss ( disponible ici : https://hotfile.com/dl/161193120/369529d/Dmo_Danny_The_Boss.exe.html ) ainsi que d'éditeur 2D divers et variés ...

Ce nouveau titre est en fait la refonte de l'original à part qu'il n'aura de ressemblant que le nom ... ^^

Je précise aussi que je développe dans le cadre de mon temps libre en tant que loisir et amateur, l'informatique est une histoire d'amour que je partage depuis plus de 30 ans ( les années 8 bits bien connues ... )


Organisation

Organisation de Rol'An'Go ARENA :
Moi-même, chef de projet & développeur & Game designer & Graphiste 2D & Sound designer

Langage utilisé :
Visual Basic 6 & APIs DirectX8.1. Langage mort et enterré depuis belle lurette mais avec lequel on arrive à sortir encore quelque chose ... Et puis, j'y suis tellement habitué que j'ai du mal à m'en passer !

Softs utilisés pour le développement :
Audacity, IcoFX, Paint, The Gimp, Mario Paint Composer

Genèse

Après l'abandon du projet Rol'An'Go, un jeu qui m'a demandé énormément de travail et aussi causé pas mal de peines depuis de nombreuses années et avec lequel, j'ai pu évoluer au grès du développement dans de nombreux domaines.
J'ai commencé cette refonte par un travail sur un tout nouveau moteur 2D ( ou fausse 3D vue de dessus ... ) utilisant les APIS DirectX pour une meilleure stabilité, vitesse et fluidité. Par ailleurs, j'ai eu d'excellent retour quand au comportement du moteur sur diverses machines ( système windows 7, XP 32 & 64b )

Au cours de l'évolution de ce moteur, j'ai rédigé le fondement d'un nouveau type de jeu tactique qui garde les fondements du jeu de rôle ( au travers de certaine règles AD&D et du monde Heroic Fantasy ... ) se basant sur un gameplay "hybride" à savoir, du temps réel et du tour par tour.

C'est à dire que le joueur pourra à tout moment mettre le jeu en pause, pour pouvoir réfléchir à l'action à mener, utiliser des items dans son inventaire, etc ...
L'essentiel des commandes se fera au clavier. Les touches fléchées pour se déplacer, et quelques touches qui sont encore à définir pour l'ensemble des actions.
La souris ne sera pas mis de coté, car on pourra activer certain pouvoir et interagir avec l'interface.


Etat du projet

Voici donc le résumé en image du projet dans son état actuel :

Ecran No1
Image
Le moteur de génération de carte ( bloc de forêts )

Ecran No2
Image
Notre avatar lancant un sort ...

Ecran No3
Image
Le menu principal.

Vidéo rapide de présentation :
[flash(425,350)]http://www.youtube.com/v/LEFsD918hhE[/flash]
Vidéo mettant en exergue le moteur de pathfinding ( avec gestion des obstacles ), sur la poursuite des unités vers leur cible : Notre avatar !

Objectif

L'objectif est de poursuivre l'aventure de ce fabuleux projet qu'était Rol'An'Go ( fabuleux pas dans le sens de la réalisation, mais du concept, avis objectif ... ^^ ), de modifier radicalement le type de gameplay au travers d'un jeu original et plaisant à jouer !

Ce qu'il y a de nouveau ?!
C'est simple. Le joueur n'aura plus les 4 ou 5 aventuriers à gérer de la version originale, mais un seul et unique !
Il faudra qu'il choisisse son avatar, définisse sa classe, sa race ainsi que son équipement.

Au départ, bien sûr, il n'y aura pas grand chose de folichon ... C'est au fil des différentes arènes que son avatar gagnera en expérience, en puissance et améliora son équipement.http://www.purebasic.fr/french/posting. ... =2&t=12831#

Les Arènes seront en fait, des cartes ( pour le moment en extérieur ), avec un nombre et un type défini de créature à combattre ( Type Bête, humanoide, magie, tir à distance, etc ... )

De nombreux bonus seront dispatchés ainsi que de nombreux pièges ...
L'issue d'une arène sera la liquidation de l'intégralité des créature de la carte. Mais aussi, d'un objet à retrouver, princesse à sauver, etc ...
Il "pourra" être possible de recruter des héros pour seconder son avatar. Ce héros sera autonome et ne pourra être gérer par le joueur. Je réfléchis quand à un menu tactique pour celui ci ...

Je précise que tout ceci n'a pas été encore codé, j'en suis pour le moment au travail du moteur et je rajoute au fur et à mesure les couches tout autour du noyau ... Mais je souhaite garantir un noyau le plus performant possible et ne pas tomber dans les même erreurs que mon premier Opus ( le noyau était complètement à la ramasse et les couches, même si s'améliorant dans le temps, ne pouvait rattrapé un noyau buggé et lent au possible ... )

Le jeu sera réservé aux joueurs solitaires ... Pour un mode multijoueur, attendre une autre vie ou bien la création d'une équipe pour mes "Studios Vétéa" ^^ !!

Voici donc, les grandes lignes du concept de Rol'An'Go ARENA ! :)

Diffusion et Forum

Vous trouverez ici la version actuelle de la démo - Jeu : https://dl.dropbox.com/u/108143465/Rol%27An%27Go%20ARENA%20D%C3%A9mo.exe

Mode d'emploi :

Les déplacements de votre avatar :
===========================
Elle met en scène un personnage que vous pourrez déplacer avec les touches suivantes :
Z = Haut
S = Bas
Q = Gauche
D = Droit
Escape = Quitter la démo
Pour lancer un sort, utilisez le bouton gauche de votre souris !
Le générateur de cartes :
===================
La démo vous proposera de tester deux modes de génération de cartes :
1/ Mode tout aléatoire ( avec gestion des espacements entre les éléments. )
2/ Mode par bloc de forêts pour un meilleur réalisme du rendu.
Le Mode Démo Normal :
===================
Ce mode vous permettra de vous amusez à viser quelques unités en jeu ( dont un boss ... )
Dés qu'une unité est touchée, elle cherchera à aller vous toucher et repartira se promener sur la carte ...
Le Mode Générateur de Carte :
========================
Dans ce mode la, vous ne pourrez que déplacer votre avatar !
Pour relancer une autre génération, appuyez sur la touche "R" !

D'autres événements et effets seront prochainement implantés !

Voici ici le code source dans son état actuel, pour ceux ou celles désirant en savoir plus sur mes algorithmes "maisons" ainsi que sur les APIS DX utilisés et dans un soucis de partage pour la communauté : https://dl.dropbox.com/u/108143465/Travaux%20DirectX%20VB6%20Code.rar
De nombreux commentaires sont présents, mon code est beaucoup plus "clair" qu'auparavant, quoique ... ^^ !
( Il s'agit de Visual Basic 6 ! En VB.Net, je ne sais pas si la compilation fonctionnera, je ne garantis rien ... )

En ce qui concerne le site et le forum, rien n'a été décidé et réalisé encore ... Il subsiste bien sur, le site de l'original (http://www.rolango.fr avec déja plus de 5000 visites ! ^^ ) mais je souhaite vraiment changer de design et refondre un site beaucoup plus lisible et clair .. Le problème, c'est que ne connais rien au développement de site Web ( celui ci a été crée avec un générateur de création de site propre à LWS, LWS Creator ... ) donc ce n'est pas la priorité pour le moment ... Je m'occuperai de cela quand le projet aura une réelle et nette avancée ! :)

Le forum, c'est celui du post !

Les dernières avancées

Voici une liste non exhaustive des avancées et des fonctions gérées par mon moteur et du fait, des avancées du jeu :

Gestion des actions offensives :
*/ Pour le moment, la seule action que votre personnage puisse faire, c'est de lancer une boule de feu.
*/ Pour lancer la boule de feu, appuyer sur la touche CTRL de gauche.
*/ Un son sera émit lors du lancer de la boule.
*/ Si la boule atteint un obstacle, son de collision.
*/ Tant que la boule ne sort pas de la carte OU la boule ne touche pas un obstacle, le personnage ne peut lancer une 2ème boule.
*/ Seuls les éléments du décors sont gérés en tant qu'obstacle.
*/ Animation du projectile en cours de déplacement.
*/ Animation lors d'une collision avec un obstacle.
*/ Le personnage ne peut lancer son sort qu'à l'arrêt.
*/ Aprés le lancer du sort, le personnage peut continuer à se déplacer.
*/ La gestion des avants plan et arrière plans : Grace à un algorithme "maison" qui récupère toutes les coordonnées Y des éléments de la carte ( hormis les éléments en hauteur maxi genre oiseau, papillon .. ), on traite par ordre croissant ces coordonnées, on stocke leur ID respective et on affiche l'ID qui à la plus grande coordonnée Y à l'écran jusqu'à la plus petite !
L'effet est, certes classique pour ce genre de jeu, mais réaliste ... et le challenge l'était tout autant ! ^^


Autres travaux :
*/ Gestion améliorée des ombrages des éléments
*/ Optimisation de la vitesse du moteur ( tourne sur mon misérable NetBook Asus 1000H ... ), optimisation des routines de traitement.
*/ Ajout de quelques éléments de décor et personnage ( Juste pour éprouvé le moteur ... Vu la rapidité, on peut mettre le paquet !! ), je précise que ces éléments ont été ajouté "à la main" dans le code, cela ne vient pas, pour le moment, de l'éditeur ...
*/ Optimisation de l'affichage en calculant juste ce qu'il y a affiché sur la fenêtre et non sur la totalité de la carte ... Un gain appréciable en performance !
*/ Zoom
*/ Gestion de la caméra sur 2 axes
*/ Animations de sprites
*/ Déplacement de sprites
*/ Gestion des ombres des sprites
*/ Gestion de l'arrière plan - premier plan.
*/ Gestion Hardware de la souris ( j'y suis arrivé enfin ! )
*/ Gestion amélioré de l'animation des sprites ( une fonction dédiée ... )

*/ Gestion du générateur de cartes
*/ Gestion des fichier .INI

etc ...

Voici en gros, tous les travaux réalisés !! Il en reste encore beaucoup à faire ... Je vous ferai part de tout cela en temps et en heure ! :)

Le mot de la fin ...

Merci de votre attention et d'avoir lu cette présentation jusqu'au bout ! :)

Tous les retours sont et seront les bienvenues quand aux remarques, critiques et comportement du moteur - Jeu sur vos machines !

A bientôt ! :)

Cordialement.

V.
Fred
Site Admin
Messages : 2652
Inscription : mer. 21/janv./2004 11:03

Re: Migration de mon projet de Jeu Rol'An'Go VB6 vers PureBa

Message par Fred »

Je ne veux pas être rabat-joie, mais si ton jeu est 100% en VB6, il n'y a rien à faire dans ce forum qui je le rappelle est dédié au PureBasic, je ferme le topic.
Verrouillé