Projet Jeu Dungeon Keeper 3

Généralités sur la programmation 3D
Avatar de l’utilisateur
Atlante
Messages : 337
Inscription : mer. 29/juin/2011 18:35
Localisation : Paris

Projet Jeu Dungeon Keeper 3

Message par Atlante »

Bonjour,

Je suis un grand fan de Dungeon Keeper (bullfrog 97-99), ce jeu est en abandonware et cela fait plus de dix ans que l'on attend le 3 et rien.
Je souhaiterai donc créer le 3 non officiel afin de reunir une communauté autour et pourquoi pas être l'élément déclencheur. On a le droit de rêver ^^

Maintenant que PB s'est doté d'une 3d abordable, je me sens tout à fait capable de reussir.
Mais il y a quelques points que je souhaiterai aborder avec vous afin d'avoir vos retours :

Les couches du jeu :

; MAP 200 *200
;
; Couche 0 : terrain (afin de pas mettre l'eau dans du vide par exemple)
; Couche 1 : terre, eau, lave
; Couche 2 : sol ( neutre, couleur d'une faction)
; Couche 3 : Murs, gisements, salles, pieges, portes ...
; Couche 4 : objets (ors, pieges à poser, livres de sorts, bonus)
; Couche 5 : personnages
; Couche 6 : Lumières, effets 3d

Je vais utiliser les listes avec des structures.

-----------------------------------------------------------------------------
Petite question :
Quelle taille me conseillez vous pour les planes :?
X=2 Y=3 Z =2
Je n'ai pas envie de créer un monde taille fourmiz ;)

------------------------------------------------------------------------------
Ce que je sais faire :
- Mettre une texture differente sur chaque face d'un cube par exemple. (merci comtois)

ce que je pense savoir faire :
- IA (j'ai des idées)

Ce que je ne sais pas faire :

- Créer l'image pour le terrain ( il faut que le terrain soit plat partout sauf où il y a de l'eau et de la lave).
- Les shaders (pas important pour le moment)


-----------------------------------------------------------------------------

Donc ce projet est abordable, il faut que je me concentre sur un éditeur de map.
Je suis en attente de vos retours avant de me lancer tête baissée.

Cordialement.
Atlante
Modérateur
Config : Intel I5 4670K, Nvidia Geforce GTX 1060, 16go RAM, SSD 256go, DD 2000go
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Projet Jeu Dungeon Keeper 3

Message par Ar-S »

Je suis pas du tout doué pour la programmation de jeu (et pour la 2D/3D en générale). D'autres pourront te conseiller mieux que moi.
Mais je suis près à t'aider dans d'autres domaines (interface, bruitages...) car je suis un ultrafan des prods Bulfrog (je joue encore a Dungeon Keeper 2 sur pc et que de souvenirs avec des perles comme syndicate à l'époque sur Amiga).
Donc n'hésite pas.
~~~~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
Avatar de l’utilisateur
Atlante
Messages : 337
Inscription : mer. 29/juin/2011 18:35
Localisation : Paris

Re: Projet Jeu Dungeon Keeper 3

Message par Atlante »

merci Ar-S ;)
Je te tiens au courant.

Bon personne pour me dire si mes couches sont cohérentes.

Et j'aurai besoin d'aide sur ces deux points, car je commence l'éditeur de carte :
- Mettre une texture differente sur chaque face d'un cube par exemple.
- Créer l'image pour le terrain ( il faut que le terrain soit plat partout sauf où il y a de l'eau et de la lave).
Merci
Modérateur
Config : Intel I5 4670K, Nvidia Geforce GTX 1060, 16go RAM, SSD 256go, DD 2000go
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Re: Projet Jeu Dungeon Keeper 3

Message par comtois »

voila un exemple pour le cube , ou alors tu utilises un éditeur 3D.

Code : Tout sélectionner

#CameraSpeed = 5

IncludeFile "Screen3DRequester.pb"

Define.f KeyX, KeyY, MouseX, MouseY

Define.f x, y, z, nx, ny, nz, u, v
Define.l Co
Define.w t1, t2, t3

If InitEngine3D()
  
  Add3DArchive("Data/Textures", #PB_3DArchive_FileSystem)
  
  InitSprite()
  InitKeyboard()
  InitMouse()
  
  If Screen3DRequester()
    
   
    
    CreateMesh(0)
    
    Restore Cube
    For k=0 To 5
      
      AddSubMesh()
      For i = 0 To 3
        Read.f  x : Read.f  y : Read.f  z
        Read.f nx : Read.f ny : Read.f nz 
        Read.l Co : Co = $FFFFFF
        Read.f u : Read.f v
        AddMeshVertex(x, y, z)
        MeshVertexNormal(nx, ny, nz) 
        MeshVertexColor(Co)
        MeshVertexTextureCoordinate(u, v)
      Next i

      AddMeshFace(2, 1, 0)
      AddMeshFace(3, 2, 0)      

    Next
    
    FinishMesh()
    NormalizeMesh(0) 
        
    UpdateMeshBoundingBox(0)
    
    For i = 0 To 5
      CreateTexture(i, 256, 256)
      StartDrawing(TextureOutput(i))
      Box(0, 0, 256, 256, Random($FFFFFF))
      StopDrawing()
      CreateMaterial(i, TextureID(i))
      ;MaterialAmbientColor(i, #PB_Material_AmbientColors)
    Next
        
    For i = 0 To 5
      SetMeshMaterial(0, MaterialID(i), i)
    Next 
  
    CreateEntity(0, MeshID(0), #PB_Material_None)
    ScaleEntity(0, 140, 140, 140)
    
    CreateCamera(0, 0, 0, 100, 100)
    CameraLocate(0, 0, 0, 1000)
    
    CreateLight(0, RGB(255,255,255), 300, 600, 100)
    AmbientColor(RGB(80, 80, 80))
    
    Repeat
      Screen3DEvents()
      
      If ExamineKeyboard()
        
        If KeyboardPushed(#PB_Key_Left)
          KeyX = -#CameraSpeed 
        ElseIf KeyboardPushed(#PB_Key_Right)
          KeyX = #CameraSpeed 
        Else
          KeyX = 0
        EndIf
        
        If KeyboardPushed(#PB_Key_Up)
          KeyY = -#CameraSpeed 
        ElseIf KeyboardPushed(#PB_Key_Down)
          KeyY = #CameraSpeed 
        Else
          KeyY = 0
        EndIf
        
      EndIf
      
      If ExamineMouse()
        MouseX = -(MouseDeltaX()/10)*#CameraSpeed/2
        MouseY = -(MouseDeltaY()/10)*#CameraSpeed/2
      EndIf
      
      RotateEntity(0, 1, 1, 1, #PB_Relative)
      
      RotateCamera(0, MouseY, MouseX, RollZ, #PB_Relative)
      MoveCamera  (0, KeyX, 0, KeyY)
      
      RenderWorld()
      Screen3DStats()      
      FlipBuffers()
    Until KeyboardPushed(#PB_Key_Escape) Or Quit = 1
  EndIf
  
Else
  MessageRequester("Error", "The 3D Engine can't be initialized",0)
EndIf

End

DataSection
Cube:  
;Dessus 0 à 3
Data.f -0.5,0.5,-0.5
Data.f 0,1,0
Data.l 0
Data.f 0,0

Data.f 0.5,0.5,-0.5
Data.f 0,1,0
Data.l 0
Data.f 0,1

Data.f 0.5,0.5,0.5
Data.f 0,1,0
Data.l 0
Data.f 1,1

Data.f -0.5,0.5,0.5
Data.f 0,1,0
Data.l 0
Data.f 1,0

;Dessous 4 à 7
Data.f -0.5,-0.5,0.5
Data.f 0,-1,0
Data.l 0
Data.f 0,0

Data.f 0.5,-0.5,0.5
Data.f 0,-1,0
Data.l 0
Data.f 0,1

Data.f 0.5,-0.5,-0.5
Data.f 0,-1,0
Data.l 0
Data.f 1,1

Data.f -0.5,-0.5,-0.5
Data.f 0,-1,0
Data.l 0
Data.f 1,0

;Devant 8 à 11
Data.f -0.5,0.5,0.5
Data.f 0,0,1
Data.l 0
Data.f 0,0

Data.f 0.5,0.5,0.5
Data.f 0,0,1
Data.l 0
Data.f 0,1

Data.f 0.5,-0.5,0.5
Data.f 0,0,1
Data.l 0
Data.f 1,1

Data.f -0.5,-0.5,0.5
Data.f 0,0,1
Data.l 0
Data.f 1,0

;Derrière 12 à 15
Data.f 0.5,0.5,-0.5
Data.f 0,0,-1
Data.l 0
Data.f 0,0

Data.f -0.5,0.5,-0.5
Data.f 0,0,-1
Data.l 0
Data.f 0,1

Data.f -0.5,-0.5,-0.5
Data.f 0,0,-1
Data.l 0
Data.f 1,1

Data.f 0.5,-0.5,-0.5
Data.f 0,0,-1
Data.l 0
Data.f 1,0

;Cote gauche 16 à 19
Data.f -0.5,0.5,-0.5
Data.f -1,0,0
Data.l 0
Data.f 0,0

Data.f -0.5,0.5,0.5
Data.f -1,0,0
Data.l 0
Data.f 0,1

Data.f -0.5,-0.5,0.5
Data.f -1,0,0
Data.l 0
Data.f 1,1

Data.f -0.5,-0.5,-0.5
Data.f -1,0,0
Data.l 0
Data.f 1,0

;Cote droit 20 à 23
Data.f 0.5,0.5,0.5
Data.f 1,0,0
Data.l 0
Data.f 0,0

Data.f 0.5,0.5,-0.5
Data.f 1,0,0
Data.l 0
Data.f 0,1

Data.f 0.5,-0.5,-0.5
Data.f 1,0,0
Data.l 0
Data.f 1,1

Data.f 0.5,-0.5,0.5
Data.f 1,0,0
Data.l 0
Data.f 1,0
EndDataSection
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
Atlante
Messages : 337
Inscription : mer. 29/juin/2011 18:35
Localisation : Paris

Re: Projet Jeu Dungeon Keeper 3

Message par Atlante »

Merci comtois ;)
Super ce code.
Modérateur
Config : Intel I5 4670K, Nvidia Geforce GTX 1060, 16go RAM, SSD 256go, DD 2000go
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: Projet Jeu Dungeon Keeper 3

Message par blendman »

Je ne connais pas Dungeon keeper, donc difficile de voir ce que tu veux faire :).

Mais sinon, l'IA ne me semble pas le plus compliqué, il faut juste créer une structure d'ennemi adéquate, avec par exemple un type pour les ennemis, ou créer plusieurs structures, au choix (1 par type d'ennemi par exemple).

Concernant les shaders, il y a un manque au niveau des exemples.
On peut voir comment faire un shader de type métal (avec envmap), mais c'est tout.
Par contre, il y a quelques codes qui fonctionnent sur cette rubrique-ci, mais tous les codes ne marchent plus.
Donc, si tu les corriges n'hésites pas à les poster ;).

EDIT : allez, hop, un sublime shader d'ocean :
http://www.purebasic.fr/english/viewtop ... 12&t=48204
Avatar de l’utilisateur
Atlante
Messages : 337
Inscription : mer. 29/juin/2011 18:35
Localisation : Paris

Re: Projet Jeu Dungeon Keeper 3

Message par Atlante »

merci blendman. J'ai regardé rapidement, et cela semble quand même complexe.
Modérateur
Config : Intel I5 4670K, Nvidia Geforce GTX 1060, 16go RAM, SSD 256go, DD 2000go
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: Projet Jeu Dungeon Keeper 3

Message par blendman »

le shader ocean ?
ouip, c'est du haut niveau déjà :)

Sinon, avec le moteur MP3D, on peut faire de la 3D (en pure) et les shaders sont "plus faciles" à créer et à utiliser je trouve.
En plus, ce moteur est vraiment très bon et une fabuleuse alternative aux fonctions du pure.
jbernard13
Messages : 1501
Inscription : dim. 18/avr./2004 15:04
Localisation : sud de la france

Re: Projet Jeu Dungeon Keeper 3

Message par jbernard13 »

Bonne chance Atlante pour ton projet
Jbernard13
Répondre