Editor de personnage Votre avis m'interesse
Publié : mar. 15/janv./2008 9:53
J'ai dans l'idée de créer un Editeur de jeu de platforme. Mais avant d'attaquer l'éditeur de carte (j'en ai déjà fait un que je reprendrais), je me suis dit que ça pourrait être pratique de faire un éditeur de personnage générique. Que ce soit pour le personnage qu'on dirige ou bien les monstres.
En gros il s'agit d'un éditeur ou vous pouvez assembler les sprites pour créer les animations du personnage.
Un personnage est fait de plusieurs animations. Pour chaque animation on doit determiner le type d'animation : Stop, marche, saute etc...
Pour chaque image d'une animation on peut déterminer Un delta X et un Delta Y par rapport a l'image précédente.
On détermine aussi des "Check Pixels" (j'ai pas trouvé mieux comme nom)
Ce sont des points part exemple a mettre sous les pieds pour vérifier si il y a du sol, ou bien des points devant le personnage pour vérifier si il y a un mur.
Que pensez vous de mon idée ?
A votre avis comment faut-il structurer ces données ?
voici a quoi ressemblera l'éditeur :
En gros il s'agit d'un éditeur ou vous pouvez assembler les sprites pour créer les animations du personnage.
Un personnage est fait de plusieurs animations. Pour chaque animation on doit determiner le type d'animation : Stop, marche, saute etc...
Pour chaque image d'une animation on peut déterminer Un delta X et un Delta Y par rapport a l'image précédente.
On détermine aussi des "Check Pixels" (j'ai pas trouvé mieux comme nom)
Ce sont des points part exemple a mettre sous les pieds pour vérifier si il y a du sol, ou bien des points devant le personnage pour vérifier si il y a un mur.
Que pensez vous de mon idée ?
A votre avis comment faut-il structurer ces données ?
voici a quoi ressemblera l'éditeur :
Code : Tout sélectionner
;Character editor
;- Window Constants
;
Enumeration
#Main
EndEnumeration
;- MenuBar Constants
;
Enumeration
#M_Menu
EndEnumeration
Enumeration
#M_Load
#M_Save
EndEnumeration
;- Gadget Constants
;
Enumeration
#G_Txt_Chara
#G_CharaName
#G_ListAnim
#G_AddAnim
#G_DelAnim
#G_Sprite
#G_Slide
#G_AddSprite
#G_DelSprite
#G_Type
#G_Play
#G_Mode
#G_Txt_DeltaX
#G_Txt_DeltaY
#G_DeltaX
#G_DeltaY
#G_CheckPixel
#G_AddCheck
#G_DelCheck
#G_CheckTypeFloor
#G_CheckTypeWall
#G_CheckTypeOther
EndEnumeration
Procedure Open_Main()
If OpenWindow(#Main, 216, 0, 690, 377, "Characters Editor", #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
If CreateMenu(#M_Menu, WindowID(#Main))
MenuTitle("Files")
MenuItem(#M_Load, "Load")
MenuItem(#M_Save, "Save")
EndIf
If CreateGadgetList(WindowID(#Main))
TextGadget(#G_Txt_Chara, 10, 10, 70, 20, "Characters")
StringGadget(#G_CharaName, 80, 10, 130, 20, "")
;-
ListIconGadget(#G_ListAnim, 10, 60, 200, 290, "Animation", 195)
ButtonGadget(#G_AddAnim, 10, 40, 100, 20, "Add Animation")
ButtonGadget(#G_DelAnim, 110, 40, 100, 20, "Del Animation")
Frame3DGadget(#G_Sprite, 250, 50, 250, 250, "Sprite[0/0]")
TrackBarGadget(#G_Slide, 250, 300, 250, 30, 0, 10, #PB_TrackBar_Ticks)
ButtonGadget(#G_AddSprite, 250, 30, 70, 20, "Add Sprite")
ButtonGadget(#G_DelSprite, 320, 30, 70, 20, "Delete Sprite")
ComboBoxGadget(#G_Type, 250, 10, 250, 200)
AddGadgetItem(#G_Type,-1,"Right Stop");
AddGadgetItem(#G_Type,-1,"Right Walk");
AddGadgetItem(#G_Type,-1,"Right Low Jump");
AddGadgetItem(#G_Type,-1,"Right Jump");
AddGadgetItem(#G_Type,-1,"Right Long Jump");
AddGadgetItem(#G_Type,-1,"Right Pick up Floor Item");
AddGadgetItem(#G_Type,-1,"Up Climb ladder");
AddGadgetItem(#G_Type,-1,"Up Climb Rope");
AddGadgetItem(#G_Type,-1,"Up Climb Stair");
ButtonGadget(#G_Play, 450, 30, 50, 20, "Play")
ButtonGadget(#G_Mode, 390, 30, 60, 20, "Mode")
TextGadget(#G_Txt_DeltaX, 250, 330, 50, 20, "Delta X :")
TextGadget(#G_Txt_DeltaY, 390, 330, 50, 20, "Delta Y :")
StringGadget(#G_DeltaX, 300, 330, 60, 20, "0", #PB_String_Numeric)
StringGadget(#G_DeltaY, 440, 330, 60, 20, "0", #PB_String_Numeric)
;-
ListIconGadget(#G_CheckPixel, 540, 30, 140, 160, "Animation", 195)
ButtonGadget(#G_AddCheck, 540, 10, 70, 20, "Add Check")
ButtonGadget(#G_DelCheck, 610, 10, 70, 20, "Delete Check")
OptionGadget(#G_CheckTypeFloor, 570, 190, 100, 20, "Floor")
OptionGadget(#G_CheckTypeWall, 570, 210, 100, 20, "Wall")
OptionGadget(#G_CheckTypeOther, 570, 230, 100, 20, "Other")
EndIf
EndIf
EndProcedure
;-Characters
Open_Main()
Repeat
EventID = WaitWindowEvent()
If EventID = #PB_Event_CloseWindow ; If the user has pressed on the close button
Quit = 1
EndIf
Until Quit = 1
End ; All the opened windows are closed automatically by PureBasic